{"version":3,"sources":["webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/downshift/dist/downshift.esm.js","webpack:///./transfer/components/homepage/autocomplete/multi-autocomplete-input.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/react-window-infinite-loader/dist/index.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/memoize-one/dist/memoize-one.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/react-window/dist/index.esm.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete-utils.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete-tab-menu/autocompleteMenu.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete-tab-menu/autocompleteTabMenu.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete-tab-menu/index.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete-input.js","webpack:///./transfer/components/homepage/autocomplete/autocomplete.js","webpack:///./transfer/components/homepage/autocomplete/index.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/react-text-input-inline/dist/index.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/lottie-react/build/index.umd.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/lottie-web/build/player/lottie.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./transfer/components/search-consent-overpanel/network-illustration.svg","webpack:///./transfer/components/search-consent-overpanel/high-five.svg","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-accordion/dist/@paypalcorp/pp-react-accordion.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-animated-pictogram/dist/@paypalcorp/pp-react-animated-pictogram.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-appbadge/dist/@paypalcorp/pp-react-appbadge.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-banner/dist/@paypalcorp/pp-react-banner.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-coach-tip/dist/@paypalcorp/pp-react-coach-tip.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-country-input/dist/@paypalcorp/pp-react-country-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-masked-text-input/dist/@paypalcorp/pp-react-masked-text-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-credit-card-input/dist/@paypalcorp/pp-react-credit-card-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-table/dist/@paypalcorp/pp-react-table.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-currency-input/dist/@paypalcorp/pp-react-currency-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-data-table/dist/@paypalcorp/pp-react-data-table.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-date-input/dist/@paypalcorp/pp-react-date-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-focus-flow/dist/@paypalcorp/pp-react-focus-flow.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-hero-currency/dist/@paypalcorp/pp-react-hero-currency.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-horizontal-scroll/dist/@paypalcorp/pp-react-horizontal-scroll.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-overflow-menu/dist/@paypalcorp/pp-react-overflow-menu.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/TransitionGroup.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/config.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/Transition.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/node_modules/react-transition-group/esm/utils/reflow.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-panel-slider/dist/@paypalcorp/pp-react-panel-slider.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-phone-input/dist/@paypalcorp/pp-react-phone-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-password-input/dist/@paypalcorp/pp-react-password-input.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-physical-card/dist/@paypalcorp/pp-react-physical-card.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-pill/dist/@paypalcorp/pp-react-pill.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-progress-meter/dist/@paypalcorp/pp-react-progress-meter.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-progress-stepper/dist/@paypalcorp/pp-react-progress-stepper.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-toast/dist/@paypalcorp/pp-react-toast.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-error-view/dist/@paypalcorp/pp-react-error-view.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react/dist/@paypalcorp/pp-react.esm.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-tabs/dist/@paypalcorp/pp-react-tabs.esm.js","webpack:///./experiments/web-increase-top-contacts.js","webpack:////home/jenkins/agent/workspace/rAlWnROk32481EutLuZS/node_modules/@paypalcorp/pp-react-segmented-controller/dist/@paypalcorp/pp-react-segmented-controller.esm.js","webpack:///./transfer/components/homepage/next-button.js","webpack:///./transfer/components/search-consent-overpanel/search-consent-utils.js","webpack:///./experiments/showFullSearchPrompt.js","webpack:///./transfer/components/search-consent-overpanel/typing/styled-input.js","webpack:///./transfer/components/search-consent-overpanel/typing/wrapper.js","webpack:///./transfer/components/search-consent-overpanel/typing/icon.js","webpack:///./transfer/components/search-consent-overpanel/typing/index.js","webpack:///./transfer/components/search-consent-overpanel/availability.js","webpack:///./transfer/components/search-consent-overpanel/typing-and-availability.js","webpack:///./transfer/components/search-consent-overpanel/search-consent.js","webpack:///./transfer/components/search-consent-overpanel/search-consent-overpanel.js","webpack:///./transfer/components/search-consent-overpanel/index.js","webpack:///./transfer/components/unilateral-recipient-choice/unilateral-recipient-choice-overpanel.js","webpack:///./transfer/components/unilateral-recipient-choice/index.js","webpack:///./transfer/components/homepage/autocomplete/svg/emailIcon.svg","webpack:///./transfer/components/homepage/autocomplete/svg/phoneIcon.svg","webpack:///./experiments/searchContactCompressedLayout.js","webpack:///./transfer/components/search/searchContactRow.js","webpack:///./experiments/contact-search-input-active.js"],"names":["statusDiv","document","getElementById","statuses","setStatus","status","isSameAsLast","length","concat","div","createElement","setAttribute","Object","assign","style","border","clip","height","margin","overflow","padding","position","width","body","appendChild","getStatusDiv","lastChild","removeChild","firstChild","filter","Boolean","forEach","statusItem","index","display","childDiv","textContent","getStatusChildDiv","idCounter","cbToCb","cb","noop","getClosestScrollParent","findParent","finder","node","rootNode","parentNode","scrollTop","documentElement","bind","scrollHeight","clientHeight","isOrContainsNode","parent","child","contains","composeEventHandlers","_len2","arguments","fns","Array","_key2","event","_len3","args","_key3","some","fn","apply","undefined","preventDownshiftDefault","defaultPrevented","generateId","String","firstDefined","_len4","_key4","find","a","unwrapArray","arg","defaultValue","isArray","isDOMElement","element","nodeName","type","getElementProps","props","attributes","requiredProp","fnName","propName","Error","stateKeys","pickState","state","result","k","hasOwnProperty","normalizeArrowKey","key","keyCode","indexOf","classCallCheck","instance","Constructor","TypeError","_extends","target","i","source","prototype","call","obj","keys","possibleConstructorReturn","self","ReferenceError","_Component","Downshift","this","_len","_key","_this","_initialiseProps","getState","highlightedIndex","defaultHighlightedIndex","isOpen","defaultIsOpen","inputValue","defaultInputValue","selectedItem","defaultSelectedItem","itemToString","id","subClass","superClass","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","inherits","_this2","stateToMerge","reduce","isControlledProp","getItemCount","itemCount","items","getItemNodeFromIndex","environment","getItemId","scrollHighlightedItemIntoView","scrollParent","scrollParentStyles","getComputedStyle","scrollParentRect","getBoundingClientRect","scrollParentBorderTopWidth","parseInt","borderTopWidth","bordersWidth","borderBottomWidth","scrollParentTop","top","nodeRect","bottom","nodeTop","scrollIntoView","_rootNode","moveHighlightedIndex","amount","otherStateToSet","changeHighlightedIndex","setHighlightedIndex","moveAmount","itemsLastIndex","baseIndex","newIndex","getStateAndHelpers","_getState2","getRootProps","getButtonProps","getToggleButtonProps","getLabelProps","getInputProps","getItemProps","openMenu","closeMenu","toggleMenu","selectItem","selectItemAtIndex","selectHighlightedItem","clearSelection","clearItems","reset","setItemCount","unsetItemCount","setState","internalSetState","componentDidMount","_this3","_isMounted","onMouseDown","isMouseDown","onMouseUp","targetInDownshift","activeElementInDownshift","activeElement","stateChangeTypes","mouseUp","onOuterClick","onTouchStart","touchStart","addEventListener","cleanup","removeEventListener","componentDidUpdate","prevProps","prevState","selectedItemChanged","controlledPropUpdatedSelectedItem","current","prev","avoidScrolling","updateStatus","componentWillUnmount","render","children","called","refKey","suppressRefError","_ref","refKeySpecified","isComposite","validateGetRootPropsCalledCorrectly","cloneElement","defaultProps","getA11yStatusMessage","highlightedItem","resultCount","previousResultCount","onStateChange","onInputValueChange","onUserAction","onChange","onSelect","prevItem","item","window","stateReducer","stateToSet","breakingChanges","unknown","itemMouseEnter","keyDownArrowUp","keyDownArrowDown","keyDownEscape","keyDownEnter","clickItem","blurInput","changeInput","keyDownSpaceButton","clickButton","blurButton","time","timeoutId","_this4","input","count","resetInputOnSelection","itemIndex","isItemSelected","onChangeArg","onStateChangeArg","isStateToSetFunction","newStateToSet","nextState","nextFullState","rootRef","_babelHelpers$extends","_ref2","_ref3","_ref3$suppressRefErro","_ref2$refKey","rest","keyDownHandlers","ArrowDown","preventDefault","shiftKey","ArrowUp","Enter","itemNode","hasAttribute","Escape","buttonKeyDownHandlers","_ref4","onClick","onKeyDown","onBlur","_getState3","enabledEventHandlers","button_handleClick","button_handleKeyDown","button_handleBlur","eventHandlers","disabled","role","focus","setTimeout","blurTarget","inputId","htmlFor","_ref6","_ref5","onInput","onChangeKey","_getState4","input_handleChange","input_handleKeyDown","input_handleBlur","autoComplete","downshiftButtonIsActive","dataset","toggle","_enabledEventHandlers","_ref7","onMouseMove","_ref7$item","push","onSelectKey","_ref8","_ref9","clearTimeout","default","resetIdCounter","sysColorBackgroundMediumContrast","sysColorBackgroundHighContrast","sysColorStructureFocus","_PAYPAL_THEME","callAll","styles","StyleSheet","wrapper","alignSelf","maxHeight","overflowY","overflowX","verticalAlign","cursor","flexWrap","borderRadius","backgroundColor","backgroundClip","outline","boxSizing","floatingLabelStyles","textInput","flex","float","placeholder","left","zIndex","WebkitUserSelect","MozUserSelect","msUserSelect","OUserSelect","userSelect","floatLabel","WebkitTransform","MozTransform","msTransform","OTransform","transform","_objectSpread","boxShadow","color","PRIMARY_TEXT_FONT_FAMILY","fontSize","lineHeight","fontWeight","background","Wrapper","glamorous","textAlign","minHeight","focused","SearchIconContainer","inputClasses","classnames","css","wrapperClasses","MultiAutoCompleteInput","React","Component","_defineProperty","downshift","scrollToInput","selectedItemIndex","scrollToSelectedItem","inputWrapper","el","getElementsByClassName","offsetTop","renderSelectedItem","onKeyUp","inputProps","handleSelectedItemSelection","tabIndex","handleWrapperClick","_SearchIcon","size","ReactFlipMove","className","map","maxWidth","selected","onSelectItem","PlaceholderInput","innerRef","c","name","label","autoCapitalize","autoCorrect","createClass","defineProperties","descriptor","defineProperty","protoProps","staticProps","_PureComponent","InfiniteLoader","_temp","getPrototypeOf","_lastRenderedStartIndex","_lastRenderedStopIndex","_memoizedUnloadedRanges","_onItemsRendered","visibleStartIndex","visibleStopIndex","_ensureRowsLoaded","_setRef","listRef","_listRef","autoReload","onItemsRendered","ref","startIndex","stopIndex","_props","isItemLoaded","_props$minimumBatchSi","minimumBatchSize","_props$threshold","threshold","unloadedRanges","rangeStartIndex","rangeStopIndex","_index","potentialStopIndex","Math","min","max","_index2","_index3","scanForUnloadedRanges","startOrStop","_loadUnloadedRanges","loadMoreItems","loadMoreRows","_loop","promise","then","lastRenderedStartIndex","lastRenderedStopIndex","isRangeVisible","resetAfterIndex","_getItemStyleCache","forceUpdate","safeIsNaN","Number","isNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","now","performance","Date","cancelTimeout","timeoutID","cancelAnimationFrame","requestTimeout","callback","delay","start","requestAnimationFrame","tick","cachedRTLResult","getRTLOffsetType","recalculate","outerDiv","outerStyle","direction","innerDiv","innerStyle","scrollLeft","defaultItemKey$1","data","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","List","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","overscanStartIndex","overscanStopIndex","_callOnScroll","onScroll","_getItemStyle","_this$props","itemSize","layout","itemStyleCache","_offset","isHorizontal","isRtl","offsetHorizontal","right","_","__","___","_onScrollHorizontal","_event$currentTarget","currentTarget","clientWidth","scrollWidth","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","_outerRefSetter","outerRef","_resetIsScrolling","getDerivedStateFromProps","nextProps","validateSharedProps$1","_proto","scrollTo","scrollToItem","align","_this$props2","_callPropsCallbacks","_this$props3","_this$state","_this$props4","innerElementType","innerTagName","itemData","_this$props4$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","estimatedTotalSize","WebkitOverflowScrolling","willChange","pointerEvents","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props5","overscanCount","_this$state3","overscanBackward","overscanForward","getItemMetadata$1","instanceProps","itemMetadataMap","lastMeasuredIndex","offset","itemMetadata","findNearestItemBinarySearch$1","high","low","middle","floor","currentOffset","findNearestItemExponentialSearch$1","interval","estimatedItemSize","totalSizeOfMeasuredItems","VariableSizeList","maxOffset","minOffset","round","findNearestItem$1","shouldForceUpdate","i18n","content","filterContacts","excludeRecipients","contacts","recipients","filteredContacts","itemsPrep","directContacts","nonDirectContacts","isSearchingPeers","hasNextPage","showSearchError","isPeopleSearch","isMgm","contactTitle","AUTOCOMPLETE_ITEM_TYPE","TITLE","globalTitle","isBizSearchTreatment","searchErrorMessage","MESSAGE","sameRecipientMessage","noSearchedContactsMessage","searchEndMessage","emailMessage","PHONE_OR_EMAIL","phoneMessage","yourContacts","peopleOnPaypal","isInputEmail","isEmail","isInputPhone","isPhone","hasSelected","TITLE_SIZE","hasSearchContactCompactLayout","AUTOCOMPLETE_ITEM_SIZE","TITLE_SM","ITEM_SIZE","ITEM_SM","ITEM","getItemSizes","isLoadingPeers","itemSizes","singleLoadedItem","isPhoneOrEmail","MenuDiv","marginTop","isWebIncreaseTopContacts","SEARCH_INPUT_WIDTH","searchInputWithSmallAndSmaller","smallAndSmaller","isRequestFlow","enterAnimation","from","opacity","to","leaveAnimation","iconProp","marginRight","glamorousIcon","svg","emailIcon","phoneIcon","RowContainer","justifyContent","alignItems","extraPadding","renderItemContent","Fragment","SPINNER","_BodyText","strong","AvatarContainer","MenuItem","itemType","TURNON","EmailIcon","PhoneIcon","renderMenuContent","isLoading","isSearching","panelId","renderItem","b","paddingTop","itemContent","phoneOrEmailMessage","includes","isTitle","getRow","tabProps","tabPanelProps","renderError","setTabIndex","useState","CSSTransitionGroup","transitionName","transitionEnterTimeout","transitionLeaveTimeout","data-test","duration","_Tabs","selectedTabIdx","tabs","panelProp","loadNextPage","getLoaderProps","itemsToRender","_LoadingSpinner","variableSizeListWidth","ContactAvatar","AutoCompleteInput","Div","_SearchInput","AutoComplete","setSelectedItemIndex","isAndroid","inputCharCode","inputLastChar","substr","charCodeAt","multi","handleEnter","actualKey","handleDelimiter","handleBackspace","handleArrowLeft","handleArrowRight","submitItem","isInputValid","removeSelectedItem","shouldSubmitOnEnter","submit","isLoadPeople","dispatch","types","PEERS","LOADING_PEERS","direct","include","bizDirect","nonDirect","pageNumber","nonDirectPageNumber","LOADING_BUSINESSES","bizNonDirect","bizNonDirectPageNumber","query","identifier","PRODUCT_FLOWS","REQUEST","SEND","unifiedActions","res","RETRIEVED_PEERS","catch","SEARCH_ERROR","renderBeforeInput","renderInput","renderAfterInput","renderMenu","showButtonControls","isLoadingBusinesses","bizDirectContacts","bizNonDirectContacts","nonDirectTotalPages","bizNonDirectTotalPages","_objectWithoutProperties","_excluded","hasNextBusinessPage","searchedItems","menuTab","PEOPLE","PEOPLE_PANEL_ID","BUSINESS","BUSINESS_PANEL_ID","e","handleKeyDown","handleKeyUp","_excluded2","AutoCompleteMenu","connect","multiRecipient","server","autocomplete","exports","_createClass","_react","_react2","_interopRequireDefault","_propTypes2","_browserWurfl2","_ppReact","__esModule","_classCallCheck","_possibleConstructorReturn","PAYPAL_THEME","COLORS","STYLES","tableLayout","borderColor","WebkitTransition","MozTransition","msTransition","OTransition","transition","hasValue","TextInput","hovered","handleMouseOver","onMouseOver","handleMouseOut","onMouseOut","handleFocus","onFocus","_timeoutID","helpText","handleBlur","focusIn","_input","renderClearInput","canShowClearInput","_inherits","wrapperDataAttributes","_props$styles","_props$innerRef","IS_VX","textInputStyles","labelStyles","dir","inputStyles","handlers","readOnly","BodyText","textOverflow","whiteSpace","propTypes","string","isRequired","object","bool","number","maxLength","minLength","pattern","required","oneOfType","func","lottie","_interopDefaultLegacy","lottie__default","React__default","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","hint","prim","Symbol","toPrimitive","_toPrimitive","_toPropertyKey","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_slicedToArray","arr","_arrayWithHoles","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","return","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","toString","slice","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","_excluded$1","useLottie","animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","assetsPath","rendererSettings","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","useRef","animationContainer","useEffect","onUnmount","_a","forcedConfigs","destroy","config","container","loadAnimation","currentRawFrame","setSegment","resetSegments","listeners","handler","listener","deregisterList","deregister","View","play","stop","pause","setSpeed","speed","goToAndStop","isFrame","goToAndPlay","setDirection","playSegments","segments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","animationContainerRef","animationItem","useInitInteractivity","wrapperRef","mode","actions","handleCursor","mouseMoveHandler","mouseOutHandler","assignedSegment","scrollHandler","_container$getBoundin","currentPercent","innerHeight","action","visibility","frames","frameToGo","ceil","firstFrame","isPaused","_y","cursorX","cursorY","_container$getBoundin2","x","y","pos","xPercent","yPercent","ev","clientX","clientY","useLottieInteractivity","lottieObj","get","_b","_c","interactivity","lottieProps","_useLottie","factory","navigator","global","module","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","resume","setRate","rateValue","createAudio","assetPath","Howl","src","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","userAgent","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","random","abs","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","s","v","r","g","f","p","q","t","RGBtoHSV","d","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","_workerSelf","setupWorker","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","JSON","parse","stringify","ks","it","checkVersion","minimum","animVersionString","animVersion","split","minimumVersion","checkText","iterateLayers","textLayer","documentData","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","errorCallback","XMLHttpRequest","onreadystatechange","readyState","open","join","error","send","completeData","payload","animation","process","onError","createProcess","processId","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","_cbs","callbacks","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","_markers","markers","_marker","markerData","tm","dr","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","frameRate","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","animType","RendererClass","globalData","defs","setProjectInterface","autoloadSegments","setupAnimation","lastIndexOf","fileName","trigger","setData","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","init","end","pendingFrame","setLoop","isLooping","getPath","getAssetData","hide","show","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","searchAnimations","standalone","animElements","lenAnims","getElementsByTagName","innerText","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","str","replace","beziers","bezEasing","BezierEasing","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","fStyle","fWeight","toLowerCase","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","other","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","surrogateModifiers","setUpNode","font","family","fontFamily","fontVariant","fontStyle","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","def","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","getCodePoint","codePoint","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","BLACK_FLAG_CODE_POINT","found","ch","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","console","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","createFilter","filId","skipCoordinates","fil","createAlphaToLuminanceFilter","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","startdenom","significance","ARC4","keylen","me","S","copy","mixkey","seed","smear","stringseed","tostring","options","shortseed","flatten","typ","entropy","nodecrypto","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","SHAPE","_typeof$1","ExpressionManager","fetch","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","__webpack_amd_options__","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","tokens","sysSpaceXs","sysSpaceLg","focusStyles","_textStyles","textBody","headingSm","offsetFocusAfter","headerPaddingRight","base","row","bodyClose","bodyOpen","header","getHeaderFont","horizontalOffset","verticalOffset","svgIcon","Accordion","_ref$name","headerSize","accordionRows","Children","accordionName","rowNumber","_styles","AccordionRow","_ref$heading","headerClassName","contentClassName","iconClassName","_ref$isOpen","_ref$headerSize","_useState","setShowState","bodyCSSVal","svgIconCSSVal","rowId","contentId","LottieContainer","sysSizePictogramLg","focusAfter","stateFocusBorderWidthInner","stateFocusBorderColorInner","animatedPictogram","handleAnimation","_lottieRef$current","_lottieRef$current2","componentProps","KeyCode","IS_ENTER","IS_SPACEBAR","ownKeys$1","_objectSpread$1","AwardAchievedPictogram","meta","tc","CollectDonationsPictogram","DiscountsPictogram","EarnCashBackPictogram","HighFivePictogram","ManageRiskPictogram","screenReader","ios","android","getImageSources","currentLocale","cdnHost","localeFormat","locale","ios_white","Appbadge","platform","_ref$locale","imageClassName","_ref$cdnHost","imageCssVal","imgsource","alt","sysBorderThicknessNormal","sysSpaceTiny","sysSpaceSm","sysColorErrorMain","sysColorErrorContrast","sysColorErrorMainActive","sysColorWarningMain","sysColorWarningMainActive","sysColorWarningContrast","sysColorSpecialtyMain","sysColorSpecialtyMainActive","sysColorSpecialtyContrast","sysBorderThicknessFocusOutline","sysSpaceJumbo","sysSpaceMd","textTitle","getColorMap","bgColor","activeBgColor","getBanner","_getColorMap","getTextColor","fullWidth","leftSideIcon","rightSideIcon","subText","_templateObject$1","_templateObject2$1","_templateObject3$1","_templateObject4$1","_templateObject5$1","_templateObject6$1","_templateObject7$1","_templateObject8$1","_templateObject10","Banner","_styles$getBanner","_styles$getTextColor","_styles$getTextColor2","_styles$fullWidth","_ref$id","titleClassName","subTitleClassName","_ref$title","_ref$type","specialtyIcon","bannerCssVal","titleCssVal","subTextCssVal","subTextContent","titleRef","rtl","setRtl","titleElm","computedStyle","StatusIcon","critical","warning","specialty","ClickIcon","bannerContent","lg","commonProps","componentTypeProps","as","containerElm","styles$1","sysBorderRadiusSm","sysColorBackgroundSurface","sysSpaceXl","sysSizeIconXs","sysSizePointerWidthLg","sysSizeTapTargetSm","_utilStyles","caretStyles","elevationStyles","textCaption","caption","positionCoachTip","coachtipCaretVerticalOffset","positionTopLeft","positionTop","positionShiftLeft","positionTopCenter","positionCenter","positionTopRight","positionShiftRight","positionLeft","positionRight","positionBottomLeft","positionBottom","positionBottomCenter","positionBottomRight","coachtipHeaderCloseBtnMarginCalc","coachtipHeaderCloseBtnSpacingCalc","level3","headerText","noHeaderContentText","footer","footerLabel","footerButtonContainer","footerButton","contentText","closeButton","myref","CoachTip","_styles$positionCoach","_ref$text","_ref$caretPos","caretPos","prevButtonText","nextButtonText","onPrevButtonClick","onNextButtonClick","paginationText","targetElementId","targetElementRef","containerRef","onClose","_ref$closeButtonLabel","closeButtonLabel","headerTextClassName","contentTextClassName","paginationTextClassName","prevButtonClassName","nextButtonClassName","caretWidth","caretHeight","rootFontSize","caretOffset","caretSpaceHorizontal","coachTipRef","focusableEls","initialWidth","setShow","refreshCoachtip","coachTip","targetEl","coachTipMaxWidthPx","coachTipMaxWidth","coachTipWindowPos","coachTipWindow","windowEl","innerWidth","getWindowBoundary","targetLeft","targetWidth","caretCenterToCorner","availableLeftSpace","availableRightSpace","targetElWidth","targetElHeight","scrollX","pageXOffset","scrollY","pageYOffset","offsetLeft","spacingOffset","moveDown","moveUp","shiftLeft","shiftRight","shiftCenter","_containerElm","containerPos","positionSelf","initializeCoachTip","rootFontSizePx","getPropertyValue","getCaretDimensions","coachTipCssVal","buttonType","svgIconComponent","footerButtons","tertiary","coachTipElement","createPortal","CountryInput","_ref$label","_ref$countryList","countryList","onOpen","_ref$onFocus","sheetWrapperClassName","intlContext","filterProps","country","displayNamesObj","countryCode","optionLabel","optionRest","select","decoration","getDisplayNamesObject","_defineProperties","_setPrototypeOf","_getPrototypeOf","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","Super","NewTarget","_superPropBase","_get","receiver","desc","set","_set","isStrict","ChangeDetails","details","inserted","rawInserted","skip","tailShift","isString","DIRECTION","forceDirection","escapeRegExp","normalizePrepare","prep","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","insertedCount","removedCount","ContinuousTailDetails","tail","masked","aggregate","_appendPlaceholder","beforePos","shiftChar","IMask","opts","InputMask","Masked","_update","DEFAULTS","isInitialized","withValueRefresh","resolve","doCommit","doParse","doFormat","extractInput","raw","isComplete","fromPos","toPos","appendTo","flags","checkTail","consistentState","_normalizePrepare","doPrepare","_normalizePrepare2","_appendCharRaw","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","appendTail","_beforeTailState","ci","_appendChar","eager","_appendEager","_refreshing","rawInput","rawInputValue","_isolated","prepare","validate","commit","format","deleteCount","removeDirection","oldRawValue","tailPos","extractTail","nearestInputPos","remove","valLength","tval","typedValue","EMPTY_VALUES","maskedClass","RegExp","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","Function","MaskedFunction","createMask","MaskedClass","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","blockOpts","isFilled","isOptional","placeholderChar","unmaskedValue","lazy","_this$masked","_this$masked2","_this$masked3","minPos","maxPos","boundPos","_this$masked4","_this$parent","PatternFixedDefinition","isFixed","isUnmasking","_isRawInput","char","isResolved","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","extend","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","ok","_blockStartPos","block","pushState","bindBlock","_this$block","_pushLeft","_pushRight","_this5","_this6","_Masked","_super","search","_excluded$2","definitions","_rebuildMask","_maskedBlocks","unmaskingBlock","optionalBlock","blocks","bNames","bName","sort","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","_flags$_beforeTailSta","_flags$_beforeTailSta2","_block","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","bDetails","accVal","_block2","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","pushRightBeforeInput","popState","pushLeftBeforeInput","pushRightBeforeFilled","pushLeftBeforeRequired","pushLeftBeforeFilled","pushRightBeforeRequired","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_MaskedPattern","fromStr","padStart","toStr","sameCharsCount","repeat","minstr","maxstr","match","padEnd","autofix","nextVal","_this$boundaries","boundaries","_this$boundaries2","_get2","firstNonZero","_matchFrom","_this$boundaries3","_this$boundaries4","GET_DEFAULT_BLOCKS","Y","getFullYear","getMonth","getDate","bk","date","isDateExist","_str$split2","day","month","year","_unsafeSelectionStart","_unsafeSelectionEnd","selectionStart","selectionEnd","_unsafeSelect","HTMLMaskElement","_MaskElement","_handlers","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","rootElement","setSelectionRange","_toggleEventHandler","EVENTS_MAP","selectionChange","drop","click","HTMLContenteditableMaskElement","_HTMLMaskElement","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","setEnd","removeAllRanges","addRange","_excluded$3","isContentEditable","tagName","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","updateOptions","updateControl","typedValueEquals","bindEvents","unbindEvents","_cursorChanging","_changingCursorPos","isActive","_selection","newUnmaskedValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","_delayUpdateCursor","_abortUpdateCursor","_fireEvent","_inputEvent","hIndex","removed","updateCursor","stopPropagation","_unbindEvents","_updateRegExps","allowNegative","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","parts","noSepCh","_removeThousandsSeparators","prepCh","extendOnSeparators","_separatorsCount","_this$_adjustRangeWit","_adjustRangeWithSeparators","_this$_adjustRangeWit2","prevBeforeTailValue","prevBeforeTailSeparatorsCount","_separatorsCountFromSlice","appendDetails","_insertThousandsSeparators","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","_findSeparatorAround","separatorAroundToPos","_this$_adjustRangeWit3","_this$_adjustRangeWit4","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_excluded$4","MaskType","Range","MaskedTextInput","_ref$maskOptions","maskOptions","onAccept","internalRef","inputRef","maskedRef","elm","on","_masked","off","dateMaskOptions","CreditCardInputUtils","useCreditCardInput","_ref$initialCardNumbe","initialCardNumberDetails","_ref$initialCvvDetail","initialCvvDetails","_ref$initialExpiratio","initialExpirationDetails","onCardNumberChange","onCvvChange","onExpirationChange","cvvNumber","setCvvNumber","_useState3","errorText","_useState4","cvvNumberError","_setCvvNumberError","_useState5","helperText","_useState6","cvvNumberHelper","_setCvvNumberHelper","_useState7","_useState8","cardDate","setCardDate","_useState9","_useState10","cardDateError","_setCardDateError","_useState11","_useState12","cardDateHelper","_setCardDateHelper","_useState13","_useState14","cardNumber","setCardNumber","_useState15","_useState16","cardNumberError","_setCardNumberError","_useState17","_useState18","cardNumberHelper","_setCardNumberHelper","_useState19","rightIcon","_useState20","cardIcon","_setCardIcon","_useState21","tooltipOptions","imageElement","_useState22","tooltipIcon","_setTooltipIcon","_useState23","_useState24","tooltipText","_setTooltipText","_useState25","maskValue","_useState26","cardNumberMask","_setCardNumberMask","_useState27","_useState28","cvvNumberMask","_setCvvNumberMask","handleChange","unmaskedVal","field","setCardNumberMask","setCvvNumberMask","setTooltipIcon","icon","setCardIcon","setTooltipText","setCardNumberError","setCvvNumberError","setCardDateError","setCvvNumberHelper","setCardDateHelper","setCardNumberHelper","cardNumberDetails","cvvDetails","expirationDetails","sysSizeIconMd","cvvImg","numberInputRTL","_templateObject11","_templateObject12","_templateObject13","_templateObject14","_templateObject15","_templateObject16","_templateObject17","_templateObject18","_templateObject19","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_templateObject33","_templateObject34","_templateObject35","_templateObject36","_templateObject37","_templateObject38","_templateObject39","_templateObject40","_templateObject41","_templateObject42","_templateObject43","_templateObject44","_templateObject45","_templateObject46","_templateObject47","_templateObject48","_templateObject49","_templateObject50","_templateObject51","_templateObject52","_templateObject53","_templateObject54","_templateObject55","_templateObject56","_templateObject57","_templateObject58","_templateObject59","_templateObject60","_templateObject61","CreditCardInput","_ref$cdnDomain","cdnDomain","cardNumberField","inputMode","inputClassName","form","xs","imagePosition","CurrencyInput","suffix","_ref$currencyType","currencyType","_getCurrencyMaskOptio","currencyMaskOptions","intlCurrencyPrefix","intlCurrencySuffix","computedValue","_computedValue$split","_computedValue$split2","wholePart","fractionalPart","fractionValue","mediaQuery","sysBorderRadiusLg","sysElevationBlurBase","sysColorBackgroundMain","sysColorStructureBorderHighContrast","sysColorSelectedRangeMain","sysColorSelectedRangeContrast","sysSizeTapTargetDefault","sysSizeMediaMd","bodyStrong","titleStrong","responsiveTableBase","summaryWrapper","fixedFirstColumn","thead","tbody","tfoot","rowBase","rowSelected","rowResponsive","rowHeading","rowFooting","rowSummaryItem","rowSummaryAdjust","rowSummaryTotal","cellBase","cellResponsive","headRowCell","footerRowCell","dataHeaderCell","summaryHeaderCell","summaryFooterCell","stickyRowHeader","stickyRowFooter","stickyColHeading","cellHeading","legacyTh","tableBase","legacyTableBase","scrollContext","scrollContextTable","filterLevel1","level1Horizontal","fixedFirstColumnTable","mobileGridZones","zone_hidden","zone_a1","zone_a2","zone_a3","zone_a12","zone_a23","zone_a123","zone_b1","zone_b2","zone_b3","zone_b12","zone_b23","zone_b123","zone_ab1","zone_ab2","zone_ab3","zone_ab12","zone_ab23","zone_ab123","columnRemaining","columnStart","columnEnd","columnCenter","getAlignment","mobileWidth","widthStr","mobileAlign","customWidth","normalCell","utilityCell","summaryHeadingCell","summaryItemCell","summaryAdjustCell","summaryTotalCell","DEFAULT_TABLE_CONTEXT","tableType","isResponsive","isSticky","PPTableContext","ResponsiveTable","_ref$fixedFirstColumn","isLegacy","tableStyles","tableCss","wrapperCss","Provider","TableSection","tableContext","sticky","_props$as","classes","newTableContext","section","TableBody","TableHead","TableFoot","TableCaption","TableRow","isSelected","rowCss","ownKeys$2","_objectSpread$2","stickableFooters","Set","TableCell","_context$section","_tableStyles$getAlign","_tableStyles$customWi","_tableStyles$mobileWi","_tableStyles$mobileAl","styleSet","headerContext","isFirst","mobile","claimsRemainingSpace","_props$span","isHeader","_props$align","sectionCss","cellCss","headerRow","stickyColHeader","footerRow","has","placement","cellProps","colSpan","TableHeadingCell","ownKeys$3","_objectSpread$3","Table","_ref$scroll","scroll","isFullWidth","_ref$isLegacy","cssVal","renderTable","sysSizePictogramSm","sysSizeCircleLg","sysBorderRadiusInteractive","sysColorPrimaryMain","sysColorStructureScrim","mdBreakpoint","flexContainer","settingsIcon","interactiveCellCheckbox","interactiveCellCheckboxDisabled","emptyTableLabel","infoBlock","infoBlockMessage","infoBlockAction","infoBlockDecoration","iconMessage","seeMoreBlock","headerButton","currentlySortedByIcon","tableLoading","spinnerBlock","spinnerOverlay","TableHeader$1","memo","checkboxElm","columns","columnOrder","isInteractive","_ref$toggleAllLabel","toggleAllLabel","selectedRows","rows","interactiveCellContentClassName","onSelection","onSort","sortInProgress","settings","rowIds","acc","isUnselectable","checkboxElmCSSVal","isAnythingChecked","allChecked","checked","evt","renderColumnHeader","isLast","sortButtonLabel","sortDirection","isSortCurrent","contents","handleClick","SortIcon","hiddenLabel","btnState","_align","screenReaderText","hasContent","cellContext","scope","headerElms","TableBody$1","loadingProps","renderCells","columnName","cellAs","renderCellContent","_columns$columnName","renderInteractiveCellContent","rowElms","updatedSelection","cellElms","EmptyBlock","buttonLabel","buttonRef","message","isError","buttonAction","processing","button","secondary","errorMsg","retryButtonLabel","onRetry","retryButtonRef","loadingText","emptyMsg","cols","entries","findIndex","deprecationCheck","deprecatedItems","DataTable","_ref3$rows","_ref3$columns","_ref3$description","_ref3$isLoading","_ref3$loadingStateLab","loadingStateLabel","_ref3$isInteractive","_ref3$selectedRows","seeMoreProps","order","visibleCols","_cols$col","spinnerElm","TableComponent","colCount","backToTopLabel","onBackToTopClick","errorRow","seeMoreButton","backToTopButton","closest","firstCell","querySelector","getClientRects","firstRow","iconComponent","doCompare","DataTableUtils","sortCompare","DataTableSortMenu","selectedIndex","_ref$triggerLabel","triggerLabel","setOpen","IconComponent","_data$value","SummaryHeadingRow","subContext","cells","SummaryItemRows","itemRows","rIndex","SummaryRows","adjustmentRows","SummaryTable","adjustments","totals","_ref7$description","_ref7$isLoading","tableProps","sysColorPrimaryMainHover","sysBorderThicknessEmphasis","sysColorSelectedMain","sysSizeIconLg","sysSizeTapTargetXs","sysSizeFieldLg","sysTypographyCaptionSize","sysColorSelectedContrast","calendarContainerOffset","getDateDimensions","dateSize","calendarTrigger","calendarContainerStyle","level2","calendarContainer","calendarContainerLeft","calendarContainerRight","calendarNav","calendarNavButtonPrev","calendarNavButtonNext","calendarNavButtonsNotFocusable","calendarNavButtonsHidden","tableFullWidth","calendarTable","calendarCellInRange","calendarCellRangeStart","calendarCellRangeEnd","calendarDate","calendarDateInRange","calendarDateNotCurrent","calendarDateDisabled","calendarDateToday","calendarDateSelected","calendarDueDate","calendarDueDateSelected","calendarDueDateIconContainer","calendarDueDateIcon","legend","legendItem","legendKey","dueDateLegendKey","wrapperContainer","CalendarContainer","isCalendarVisible","calendarTriggerRef","wrapperContainerRef","onShowCalendar","_ref$calendarInSheet","calendarInSheet","isMobile","setMobile","calendarPosition","setCalendarPosition","handleKey","IS_ESC","handleOutsideClick","handleResize","_containerRef$current","_containerRef$current2","_isMobile","calendarTriggerPos","windowWidth","calculatedSpace","parseFloat","wrapperContainerPos","getCalendarBoundary","behavior","onCloseComplete","noCloseButton","skipFormFocus","DEFAULT_MASK_OPTIONS","localTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","defaultParseDate","defaultFormatDate","CalendarRange","DateInput","calendar","selectedDate","parseDate","formatDate","_ref2$formatterSkelet","formatterSkeleton","sheetContainerRef","prevVal","_maskOptions","dateTimeFormatter","formatToParts","separator","getDateMaskOptions","_useMemo","_formatDate","_parseDate","getFormatters","handleComplete","handleAccept","svgElementRef","MONTH_NAMES","DAY_NAMES","sun","mon","tue","wed","thu","fri","sat","getFormattedDateFromParts","defaultFormatToParts","isDateInRange","rangeCompletionDate","START","END","isDateEqual","providedDate","isDateRangeStart","isDateRangeEnd","areMonthsEqual","date1","date2","Calendar","monthNames","dayNames","firstDayOfWeek","_ref2$prevMonthLabel","prevMonthLabel","_ref2$nextMonthLabel","nextMonthLabel","isFocusable","dateAs","calendarFrom","calendarTo","navClassName","tableClassName","dateClassName","dueDate","_ref2$legendSelectedD","legendSelectedDateLabel","_ref2$legendDueDateLa","legendDueDateLabel","_ref2$legendTodayLabe","legendTodayLabel","isDateDisabled","onMonthChange","_currentDate","currentDate","setCurrentDate","isRTL","setRTL","_firstDayOfWeek","worldReadyObj","weekInfo","firstDay","getFirstDayOfWeek","_monthNames","dayDisplayNames","_dayNames","getNames","_formatToParts","getFormatter","renderDateButton","dateInfo","isDisabled","isToday","isRangeStart","isRangeEnd","isDue","inCurrentMonth","inRange","shouldApplySelectedStyles","formattedDate","currentMonth","daysOfWeek","firstDOWIndex","getDaysOfWeek","isPrevHidden","isNextHidden","calendarRange","dates","startMonth","startYear","firstday","getDay","firstDayIndex","todayDate","today","setDate","_dateObj","getDatesForMonth","dateRows","shouldApplyRangeStyles","isDueDateVisible","isSelectedDateDisabled","isRangeCompletionDateDisabled","dateCols","_dates","allowInRange","formattedCurrentDate","setMonth","prevDate","nextDate","headerFlexBasis","headerContent","headerAction","headerTitle","headerClose","headerLogo","headerScrolled","FocusFlow","_ref$closeButtonProps","closeButtonProps","containerClassName","contentContainerRef","showLogo","headerScroll","setHeaderScroll","closeButtonRef","refContent","contentRef","actionZoneRef","idBase","handleScroll","newHeaderScroll","focusableActionEl","titleContentCss","closeButtonTag","titleContentZone","closeButtonZone","actionZone","sysSizeIndicatorMd","sysTypographyFieldLabelSmLineHeight","cursorPosition","blinker","animateCursor","centerAlign","baseNoFocus","errorTextSpacing","viewCenter","focusedView","focusEntered","focusImplied","focusImpliedDefault","entered","impliedDefault","editIcon","HeroCurrency","_ref$onBlur","_ref$onKeyDown","_ref$value","showEditIcon","_ref$align","setEntered","implied","setImplied","computedRef","currencyParts","decimal","inputFocused","parseDisplay","currencySymbol","setInputFocus","containerCss","successText","viewCss","enteredCss","impliedCss","inputCss","computedUnmaskedValue","replaceAll","IS_SIDE_NAVIGATION","tabindex","sysSizeIndicatorLg","sysColorUnselectedMain","peekWidth","mobileItemMargin","itemMargin","ppuiEaseInOut","variables","itemList","buttonNavigation","level1","buttonPrevious","buttonNext","itemListDesktop","pageContainer","page","dots","dot","dotSelected","getFlexBasisItems","isMobileBreakpoint","numOfVisibleItems","hasFixedSizeItems","getContainerWidth","pageWidth","_createForOfIteratorHelper","allowArrayLike","F","normalCompletion","didErr","step","_e2","HorizontalScrollMobile","_ref$items","itemClassName","onItemListScroll","onInit","baseRef","itemListRef","visibleItemIdsRef","baseElm","itemWidth","baseElmWidth","peekOffset","resizeObserver","ResizeObserver","observe","disconnect","itemObserver","IntersectionObserver","_step2","_iterator2","_entry","isIntersecting","_id","getAttribute","_step","_iterator","entry","ItemList","_excluded3","itemElements","_styles$getFlexBasisI","flexBasisStyles","HorizontalScroll","log","showMobileHScroll","setShowMobileHScroll","mql","matchMedia","hasHover","matches","currentPage","prevPageLabel","nextPageLabel","onPageChange","_rest","HorizontalScrollDesktop","autoAdvance","advanceInterval","Dots","numOfPages","dotElements","dotStyles","_styles$getContainerW","_styles$getContainerW2","_ref2$items","_ref2$numOfVisibleIte","_ref2$prevPageLabel","_ref2$nextPageLabel","_ref2$currentPage","_ref2$autoAdvance","_ref2$advanceInterval","savedCallback","scrollPanel","pageContainerRef","setNumOfPages","isAutoAdvance","setIsAutoAdvance","setPageWidth","viewObserver","hasBeenVisibleRef","autoAdvanceComplete","newNumOfPages","itemListScrollWidth","pageContainerWidth","_newNumOfPages","stopAutoAdvance","handleIntersection","nextPage","panel","hscroll","stopObserving","unobserve","renderPreviousButton","inverse","renderNextButton","renderDots","pageOffset","pageStyle","sysColorBackgroundSurfaceHover","sysColorBackgroundSurfaceActive","overflowMenuBase","keyboardActive","btnActive","listItem","OverflowMenu","_ref$ariaLabel","_ref$options","triggerClassName","theme","focusedIndex","setFocusedIndex","listItemCss","optionList","optValue","_ref2$href","otherProps","getWrapperCurrent","handleClickOutside","setFocus","menuItems","getActiveIndex","IS_ARROW_UP","IS_ARROW_DOWN","IS_TAB","triggerCss","detail","targetName","targetValue","namedTarget","createContext","getChildMapping","mapFn","mapper","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","enter","_React$Component","TransitionGroup","handleExited","contextValue","isMounting","firstRender","mounted","appear","currentChildMapping","childFactory","TransitionGroupContext","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","nextStatus","cancelNextCallback","getTimeouts","timeout","mounting","nodeRef","findDOMNode","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","cancel","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","only","contextType","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","sysMotionDurationArrive","defaultEasing","defaultDurationMs","Panel","_ref$as","Tag","PanelStyles","doAnimation","easing","player","animate","getDirection","oldId","newId","getComputedDirection","PanelSlider","durationProp","easingProp","activeScreenId","_activeScreenId$curre","_activeScreenId$curre2","PasswordInput","_props$isHidden","isHidden","hideToggleLabel","onToggleHide","inputElm","typeProp","iconButtonLabel","sysSizeMediaXs","telephoneInputRtlStyles","combined","menuWidth","menu","thumbnail","menuList","menuButton","menuButtonContent","affordance","menuContainer","VAR_LENGTH_COUNTRIES_FIXED_LINE","VAR_LENGTH_COUNTRIES_MOBILE","DEFAULT_PATTERN","getPhoneFormat","phoneRegion","formatType","providedCountryCode","providedPhoneFormat","isPhoneMetaDataLoaded","phoneFormatter","phoneType","phoneExampleGenerator","exampleGenerator","feature","region","exampleNumberObj","generate","nationalNumber","phoneNumberFormat","formattedNumber","phoneNumber","varLengthCountries","patternLength","optionalDigits","PhoneCodeDropdown","countryOptions","flagId","codeId","renderButtonContent","selectedOption","opt","countryPhoneCode","countryName","PhoneInputWithMenu","_ref$countryOptions","_ref$inputLabel","inputLabel","_ref$menuLabel","menuLabel","menuId","menuClassName","_ref$mobile","onPhoneCodeChange","phoneCode","_ref$showUnselect","showUnselect","_ref$unselectLabel","unselectLabel","optionText","optionCode","optionPattern","optionCountryRegion","optionCountryName","menuOptions","hasFocus","phoneFormat","phoneParts","countryRegion","optionValue","primaryText","constructOptionProps","currentMask","selectedCountry","selectedPhoneCode","_evt$target","_evt$target$value","generatedFlagId","generatedCodeId","phoneDropdownMenuCSS","dropdownEl","menuContainerClassName","menuListClassName","menuButtonClassName","sheetClassName","inputEl","combinedInputCSS","PhoneInput","_ref$formatType","codePrefix","codeSuffix","PhysicalCard","pillStyles","pill","captionStrong","pillLabel","buttonSpace","pillTray","pillTrayScroller","Color","Pill","_ref$dismissButtonLab","dismissButtonLabel","onDismiss","PillTray","_pillStyles","Size","blue","Accent1","magenta","Accent2","green","Accent3","purple","Accent4","sysColorAccent1Contrast","sysColorAccent1Main","sysColorAccent2Contrast","sysColorAccent2Main","sysColorAccent3Contrast","sysColorAccent3Main","sysColorAccent4Contrast","sysColorAccent4Main","sysColorBackgroundAlt","sysColorSystemContrast","sysSizeCircleMd","sysSizeCircleXl","sysSizeIndicatorSm","sysSizeIndicatorXs","sysSizeIconSm","textCaptionStrong","circleProgressMeterSize","circleProgressMeterBorderSize","circleProgressMeterSmSize","circleProgressMeterSmBorderSize","circleProgressMeterPadding","progressIndicatorCircleStrokeWidth","progressIndicatorCircleSmStrokeWidth","colorMapContrast","Map","colorMapAccent","getProgressMeterHeightStyles","getColorStyles","isSizeSmall","SMALL","getProgressMeterColorStyles","meterColor","getStrokeColorStyles","inverseLabel","inverseLabelSteps","inverseLabelTitle","steps","labelSteps","labelTitle","sizeSm","sizeSmLabel","sizeSmLabelSteps","sizeSmLabelTitle","sizeSmInverseLabelSteps","sizeSmInverseLabelTitle","circleBase","circleInner","circleInnerImage","circle","inner","progressIndicator","toFixed","progressIndicatorSizeSm","innerImage","circleRadiusSvg","getCircleRadius","getDashOffsetStyles","maxDashOffset","dashOffset","getIconWrapStyles","sizeValue","util","ProgressMeter","_styles$util","_styles$util$isSizeSm","_styles$linear","_styles$linear2","_styles$linear3","_styles$linear4","_styles$linear5","_styles$linear5$getPr","_styles$linear6","_styles$linear7","_styles$linear8","_styles$linear9","_styles$linear10","_styles$linear11","_styles$linear12","_styles$linear13","_styles$linear14","_styles$linear15","_styles$linear16","_ref$max","_ref$inverse","computedColor","progressMeterStyles","stepsStyles","titleStyles","CircleProgressMeter","_styles$circle","_styles$circle$getCir","_styles$circle2","_styles$circle3","_styles$circle4","_styles$circle5","_styles$circle6","_styles$circle7","_styles$circle7$getDa","_styles$circle8","_styles$util2","_styles$util2$getColo","_styles$circle9","_styles$circle10","_props$max","_props$value","baseStyles","iconStyles","circleInnerStyles","viewBox","xmlns","IconProgressMeter","_styles$util3","_styles$util3$isSizeS","_styles$circle11","_styles$circle11$getI","iconSize","LARGE","ImageProgressMeter","_styles$circle12","imageSrc","sysColorPrimaryContrast","sysColorStructureDivider","sysColorSuccessMain","sysBorderThicknessFocus","bgColorMap","success","cancelled","markerFn","iconFn","verticalStyles","itemContentWithoutDescription","successMarker","warningMarker","cancelledMarker","criticalMarker","cancelledIcon","criticalIcon","warningIcon","successIcon","defaultIcon","numeric","numericDefault","numericSuccess","ProgressStepper","childrenMap","_ref$showDescription","showDescription","desktopVariant","isCurrentDetected","statusQueue","_child$props","isCurrent","isDescriptionEnabled","currentStep","Step","_ref$isDescriptionEna","_ref$isNumeric","isNumeric","mapping","statusName","nextStatusName","itemContentCSS","markerCSS","iconCSS","sysColorSystemMain","sysColorSuccessContrast","sysMotionDurationDepart","verticalExitPosition","fadeIn","fadeOut","Toast","_ref$message","_ref$isSuccess","isSuccess","_ref$duration","showState","startY","startX","toastRef","autoHideTimer","handleClose","handleTouchStart","firstTouch","changedTouches","pageY","pageX","toast","containerCSSVal","toastCSSVal","onAnimationEnd","onTouchEnd","endTouch","endX","endY","xDiff","yDiff","sysSizeMediaSm","lineClamping","wrapperStyles","fullScreenBase","fullScreenWrapperStyles","subTitleStyles","buttonWrapperStyles","primaryButtonStyles","ErrorView","_ref$subTitle","subTitle","primaryButtonOptions","tertiaryButtonOptions","_ref$fullScreen","fullScreen","clampAtLine","_primaryButtonOptions","sysMotionDurationAction","sysSizeFieldSm","sysColorPrimaryMainActive","slideTo","textBodyStrong","tabPaddingLeft","noDisplay","blockDisplay","tabWrapperBase","tabsWrapper","tabsCenter","tabsBtn","tabsSelectedBtn","tabsScrollBtn","tabsScrollBtnLeft","tabsScrollBtnRight","tabsScrollBtnVisible","tabsArrowIcon","tabContent","tabContentFocus","animateToDirection","hideBtn","tabContentVisible","tabContentHidden","navBackground","Tab","_styles$animateToDire","tabIdx","tabGroupId","tabStyles","tabId","isRunningOnIEorEdge","getRefCurrent","myRef","Tabs","_ref$tabs","tabClassName","tabsWrapperClassName","_ref$scrollLeftLabel","scrollLeftLabel","_ref$scrollRightLabel","scrollRightLabel","keepAlive","lazyLoad","addBackgroundColor","navEleRef","containerEleRef","prevSelectedTabIdxRef","isTabsFocusedRef","focusedIdxRef","overflowDir","setOverflowDir","getSelectedTabIdx","determineOverflow","nav","_scroll","navRight","tabsRight","navLeft","tabsLeft","Event","dispatchEvent","offsetFocus","tabDomItems","keyHandler","IS_ARROW_LEFT","IS_ARROW_RIGHT","handleFocusOut","newFocusedItem","relatedTarget","parentElement","scrollButtons","btnHeight","selectedId","tabContentItem","blur","tabIdxClicked","scrollAmount","slideTimer","leftScrollCssVal","rightScrollCssVal","animateDirection","tabItems","tab","otherTabProps","LEFT","RIGHT","toArray","_panel","idx","visible","tabPanel","otherIconButtonAttr","prevFocusedItem","TabPanel","_ref$visible","hasMouseClickFocus","mouseFocus","updateMouseFocus","hasRendered","tabContentStyles","hasClickFocus","pxp","sysElevationLevel1Yoffset","sysMotionDurationHover","tabWrapBaseStyles","tabTitleStyles","SegmentedControllerTab","segmentedControllerId","SegmentedControllerTabs","keyIdentifier","SegmentedControllerPanel","panelContentStyles","staticBasicStyles","disabledStyles","NextButton","shouldStyleDisable","allOtherProps","_Button","classNames","aria-disabled","getSuggestedId","suggestedSlugs","preferred_id_available","preferred_id","suggested_ids","shouldShowConsent","consentType","searchTrackingDetails","impression_url","hasShowFullSearchPromptTrmt","StyledInput","textRendering","wordSpacing","textTransform","textIndent","textShadow","newStyles","isFocused","isBadInput","CDN_HOST_NAME","serverProps","spin","Icon","backgroundSize","backgroundRepeat","modifiedStyles","isTyping","isAvailable","grabStore","shouldShowLessCharErrorMsg","backgroundImage","Typing","updateSlug","debouncedSlugCheck","createTimeout","checkSlugAvailability","toggleBadInput","showError","slugValue","data-testid","spellCheck","isSlugAvailable","MessageContainer","Availability","completionStats","empty","reason","reasonForNo","FlipMove","Button","marginBottom","TypingAndAvailability","showSuccess","PPME","CREATE_PROFILE","post","CREATED_PROFILE","Actions","createSlug","updatePrivacySettings","isOldppMeUser","trackConsentClick","submitSlugCreation","suggestions","unavailable_reason_code","buttonKey","data-test-id","html","termsAndConditionsHref","privacyUrl","Container","isHalfConsent","IconContainer","isHighFive","TextContainer","Link","SearchConsent","slug","editSlugDetails","UPDATE_PROFILE","patch","UPDATED_PROFILE","addSearchConsentRedirectUrl","isPreFlow","CONSENT_TYPE","PROVIDE_ADDITIONAL_NETWORK_ID_CONSENT","UPGRADE_NETWORK_ID","networkIllustrationSvg","highFiveSvg","translationKey","SuccessCheckmark","shouldShowCheckmark","ppme","InlineSVG","H1","createLink","user","overpanels","SearchConsentOverpanel","closeOverpanel","shouldShowSearchConsent","hasShownSearchConsent","shouldShowErrorOverpanel","a11yTitle","Overpanel","toggleSearchConsentOverpanel","updateHasShownSearchConsentOverpanel","hasShown","showUnilateralRecipientChoiceOverpanel","unilateralRecipientChoice","handleSubmit","trackUnilateralRecipientChoiceCancel","toggleUnilateralRecipientChoiceOverpanel","UnilateralRecipientChoice","UnilateralRecipientChoiceOverpanel","flexDirection","InfoContainer","initial","SearchContactRow","thumbnailUrl","firstName","lastName","alternateFullName","imageUrl","firstInitial","lastInitial","isBusiness","getAvatarColor","_CaptionText","shouldContactSearchInputBeAutofocus"],"mappings":"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","file":"default~request-page~request-preview~send-page.esm.js","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n// istanbul ignore next\nvar statusDiv = typeof document === 'undefined' ? null : document.getElementById('a11y-status-message');\n\nvar statuses = [];\n\nfunction setStatus(status) {\n var isSameAsLast = statuses[statuses.length - 1] === status;\n if (isSameAsLast) {\n statuses = [].concat(statuses, [status]);\n } else {\n statuses = [status];\n }\n var div = getStatusDiv();\n\n // Remove previous children\n while (div.lastChild) {\n div.removeChild(div.firstChild);\n }\n\n statuses.filter(Boolean).forEach(function (statusItem, index) {\n div.appendChild(getStatusChildDiv(statusItem, index));\n });\n}\n\nfunction getStatusChildDiv(status, index) {\n var display = index === statuses.length - 1 ? 'block' : 'none';\n\n var childDiv = document.createElement('div');\n childDiv.style.display = display;\n childDiv.textContent = status;\n\n return childDiv;\n}\n\nfunction getStatusDiv() {\n if (statusDiv) {\n return statusDiv;\n }\n statusDiv = document.createElement('div');\n statusDiv.setAttribute('id', 'a11y-status-message');\n statusDiv.setAttribute('role', 'status');\n statusDiv.setAttribute('aria-live', 'assertive');\n statusDiv.setAttribute('aria-relevant', 'additions text');\n Object.assign(statusDiv.style, {\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n width: '1px'\n });\n document.body.appendChild(statusDiv);\n return statusDiv;\n}\n\nvar idCounter = 0;\n\n/**\n * Accepts a parameter and returns it if it's a function\n * or a noop function if it's not. This allows us to\n * accept a callback, but not worry about it if it's not\n * passed.\n * @param {Function} cb the callback\n * @return {Function} a function\n */\nfunction cbToCb(cb) {\n return typeof cb === 'function' ? cb : noop;\n}\nfunction noop() {}\n\nfunction findParent(finder, node, rootNode) {\n if (node !== null && node !== rootNode.parentNode) {\n if (finder(node)) {\n if (node === document.body && node.scrollTop === 0) {\n // in chrome body.scrollTop always return 0\n return document.documentElement;\n }\n return node;\n } else {\n return findParent(finder, node.parentNode, rootNode);\n }\n } else {\n return null;\n }\n}\n\n/**\n * Get the closest element that scrolls\n * @param {HTMLElement} node - the child element to start searching for scroll parent at\n * @param {HTMLElement} rootNode - the root element of the component\n * @return {HTMLElement} the closest parentNode that scrolls\n */\nvar getClosestScrollParent = findParent.bind(null, function (node) {\n return node.scrollHeight > node.clientHeight;\n});\n\n/**\n * Scroll node into view if necessary\n * @param {HTMLElement} node - the element that should scroll into view\n * @param {HTMLElement} rootNode - the root element of the component\n * @param {Boolean} alignToTop - align element to the top of the visible area of the scrollable ancestor\n */\n// eslint-disable-next-line complexity\nfunction scrollIntoView(node, rootNode) {\n var scrollParent = getClosestScrollParent(node, rootNode);\n if (scrollParent === null) {\n return;\n }\n var scrollParentStyles = getComputedStyle(scrollParent);\n var scrollParentRect = scrollParent.getBoundingClientRect();\n var scrollParentBorderTopWidth = parseInt(scrollParentStyles.borderTopWidth, 10);\n var scrollParentBorderBottomWidth = parseInt(scrollParentStyles.borderBottomWidth, 10);\n var bordersWidth = scrollParentBorderTopWidth + scrollParentBorderBottomWidth;\n var scrollParentTop = scrollParentRect.top + scrollParentBorderTopWidth;\n var nodeRect = node.getBoundingClientRect();\n\n if (nodeRect.top < 0 && scrollParentRect.top < 0) {\n scrollParent.scrollTop += nodeRect.top;\n return;\n }\n\n if (nodeRect.top < 0) {\n // the item is above the viewport and the parent is not above the viewport\n scrollParent.scrollTop += nodeRect.top - scrollParentTop;\n return;\n }\n\n if (nodeRect.top > 0 && scrollParentRect.top < 0) {\n if (scrollParentRect.bottom > 0 && nodeRect.bottom + bordersWidth > scrollParentRect.bottom) {\n // the item is below scrollable area\n scrollParent.scrollTop += nodeRect.bottom - scrollParentRect.bottom + bordersWidth;\n }\n // item and parent top are on different sides of view top border (do nothing)\n return;\n }\n\n var nodeOffsetTop = nodeRect.top + scrollParent.scrollTop;\n var nodeTop = nodeOffsetTop - scrollParentTop;\n if (nodeTop < scrollParent.scrollTop) {\n // the item is above the scrollable area\n scrollParent.scrollTop = nodeTop;\n } else if (nodeTop + nodeRect.height + bordersWidth > scrollParent.scrollTop + scrollParentRect.height) {\n // the item is below the scrollable area\n scrollParent.scrollTop = nodeTop + nodeRect.height - scrollParentRect.height + bordersWidth;\n }\n // the item is within the scrollable area (do nothing)\n}\n\n/**\n * @param {HTMLElement} parent the parent node\n * @param {HTMLElement} child the child node\n * @return {Boolean} whether the parent is the child or the child is in the parent\n */\nfunction isOrContainsNode(parent, child) {\n return parent === child || parent.contains(child);\n}\n\n/**\n * Simple debounce implementation. Will call the given\n * function once after the time given has passed since\n * it was last called.\n * @param {Function} fn the function to call after the time\n * @param {Number} time the time to wait\n * @return {Function} the debounced function\n */\nfunction debounce(fn, time) {\n var timeoutId = void 0;\n return wrapper;\n function wrapper() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(function () {\n timeoutId = null;\n fn.apply(undefined, args);\n }, time);\n }\n}\n\n/**\n * This is intended to be used to compose event handlers.\n * They are executed in order until one of them sets\n * `event.preventDownshiftDefault = true`.\n * @param {Function} fns the event handler functions\n * @return {Function} the event handler to add to an element\n */\nfunction composeEventHandlers() {\n for (var _len2 = arguments.length, fns = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n\n return function (event) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return fns.some(function (fn) {\n fn && fn.apply(undefined, [event].concat(args));\n // TODO: remove everything after the || in the next breaking change\n return event.preventDownshiftDefault || event.defaultPrevented;\n });\n };\n}\n\n/**\n * This generates a unique ID for an instance of Downshift\n * @return {String} the unique ID\n */\nfunction generateId() {\n return String(idCounter++);\n}\n\n/**\n * Resets idCounter to 0. Used for SSR.\n */\nfunction resetIdCounter() {\n idCounter = 0;\n}\n\n/**\n * Returns the first argument that is not undefined\n * @param {...*} args the arguments\n * @return {*} the defined value\n */\nfunction firstDefined() {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return args.find(function (a) {\n return typeof a !== 'undefined';\n });\n}\n\n// eslint-disable-next-line complexity\nfunction getA11yStatusMessage(_ref) {\n var isOpen = _ref.isOpen,\n highlightedItem = _ref.highlightedItem,\n selectedItem = _ref.selectedItem,\n resultCount = _ref.resultCount,\n previousResultCount = _ref.previousResultCount,\n itemToString = _ref.itemToString;\n\n if (!isOpen) {\n if (selectedItem) {\n return itemToString(selectedItem);\n } else {\n return '';\n }\n }\n\n if (!resultCount) {\n return 'No results.';\n } else if (!highlightedItem || resultCount !== previousResultCount) {\n return resultCount + ' ' + (resultCount === 1 ? 'result is' : 'results are') + ' available, use up and down arrow keys to navigate.';\n }\n return itemToString(highlightedItem);\n}\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array\n * otherwise returns the argument\n * @param {*} arg the maybe-array\n * @param {*} defaultValue the value if arg is falsey not defined\n * @return {*} the arg or it's first item\n */\nfunction unwrapArray(arg, defaultValue) {\n arg = Array.isArray(arg) ? /* istanbul ignore next (preact) */arg[0] : arg;\n if (!arg && defaultValue) {\n return defaultValue;\n } else {\n return arg;\n }\n}\n\n/**\n * @param {Object} element (P)react element\n * @return {Boolean} whether it's a DOM element\n */\nfunction isDOMElement(element) {\n /* istanbul ignore if */\n if (element.nodeName) {\n // then this is preact\n return typeof element.nodeName === 'string';\n } else {\n // then we assume this is react\n return typeof element.type === 'string';\n }\n}\n\n/**\n * @param {Object} element (P)react element\n * @return {Object} the props\n */\nfunction getElementProps(element) {\n // props for react, attributes for preact\n return element.props || /* istanbul ignore next (preact) */element.attributes;\n}\n\n/**\n * Throws a helpful error message for required properties. Useful\n * to be used as a default in destructuring or object params.\n * @param {String} fnName the function name\n * @param {String} propName the prop name\n */\nfunction requiredProp(fnName, propName) {\n throw new Error('The property \"' + propName + '\" is required in \"' + fnName + '\"');\n}\n\nvar stateKeys = ['highlightedIndex', 'inputValue', 'isOpen', 'selectedItem', 'type'];\n/**\n * @param {Object} state The state object\n * @return {Object} State that is relevant to downshift\n */\nfunction pickState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var result = {};\n stateKeys.forEach(function (k) {\n if (state.hasOwnProperty(k)) {\n result[k] = state[k];\n }\n });\n return result;\n}\n\n/**\n * Normalizes the 'key' property of a KeyboardEvent in IE/Edge\n * @param {Object} event a KeyboardEvent object\n * @return {String} keyboard key\n */\nfunction normalizeArrowKey(event) {\n var key = event.key,\n keyCode = event.keyCode;\n /* istanbul ignore next (ie) */\n\n if (keyCode >= 37 && keyCode <= 40 && key.indexOf('Arrow') !== 0) {\n return 'Arrow' + key;\n }\n return key;\n}\n\n/**\n * Simple check if the value passed is object literal\n * @param {*} obj any things\n * @return {Boolean} whether it's object literal\n */\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar _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\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/* eslint camelcase:0 */\n\nvar Downshift = function (_Component) {\n inherits(Downshift, _Component);\n\n function Downshift() {\n classCallCheck(this, Downshift);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args)));\n\n _initialiseProps.call(_this);\n\n var state = _this.getState({\n highlightedIndex: _this.props.defaultHighlightedIndex,\n isOpen: _this.props.defaultIsOpen,\n inputValue: _this.props.defaultInputValue,\n selectedItem: _this.props.defaultSelectedItem\n });\n if (state.selectedItem != null) {\n state.inputValue = _this.props.itemToString(state.selectedItem);\n }\n _this.state = state;\n _this.id = _this.props.id || 'downshift-' + generateId();\n return _this;\n }\n // itemCount can be changed asynchronously\n // from within downshift (so it can't come from a prop)\n // this is why we store it as an instance and use\n // getItemCount rather than just use items.length\n // (to support windowing + async)\n\n\n /**\n * Gets the state based on internal state or props\n * If a state value is passed via props, then that\n * is the value given, otherwise it's retrieved from\n * stateToMerge\n *\n * This will perform a shallow merge of the given state object\n * with the state coming from props\n * (for the controlled component scenario)\n * This is used in state updater functions so they're referencing\n * the right state regardless of where it comes from.\n *\n * @param {Object} stateToMerge defaults to this.state\n * @return {Object} the state\n */\n Downshift.prototype.getState = function getState() {\n var _this2 = this;\n\n var stateToMerge = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n\n return Object.keys(stateToMerge).reduce(function (state, key) {\n state[key] = _this2.isControlledProp(key) ? _this2.props[key] : stateToMerge[key];\n return state;\n }, {});\n };\n\n /**\n * This determines whether a prop is a \"controlled prop\" meaning it is\n * state which is controlled by the outside of this component rather\n * than within this component.\n * @param {String} key the key to check\n * @return {Boolean} whether it is a controlled controlled prop\n */\n\n\n Downshift.prototype.isControlledProp = function isControlledProp(key) {\n return this.props[key] !== undefined;\n };\n\n Downshift.prototype.getItemCount = function getItemCount() {\n // things read better this way. They're in priority order:\n // 1. `this.itemCount`\n // 2. `this.props.itemCount`\n // 3. `this.items.length`\n /* eslint-disable no-negated-condition */\n if (this.itemCount != null) {\n return this.itemCount;\n } else if (this.props.itemCount !== undefined) {\n return this.props.itemCount;\n } else {\n return this.items.length;\n }\n /* eslint-enable no-negated-condition */\n };\n\n Downshift.prototype.getItemNodeFromIndex = function getItemNodeFromIndex(index) {\n return this.props.environment.document.getElementById(this.getItemId(index));\n };\n\n Downshift.prototype.scrollHighlightedItemIntoView = function scrollHighlightedItemIntoView() {\n /* istanbul ignore else (react-native) */\n {\n var node = this.getItemNodeFromIndex(this.getState().highlightedIndex);\n scrollIntoView(node, this._rootNode);\n }\n };\n\n Downshift.prototype.moveHighlightedIndex = function moveHighlightedIndex(amount, otherStateToSet) {\n if (this.getState().isOpen) {\n this.changeHighlightedIndex(amount, otherStateToSet);\n } else {\n this.setHighlightedIndex(undefined, _extends({ isOpen: true }, otherStateToSet));\n }\n };\n\n // eslint-disable-next-line complexity\n\n\n Downshift.prototype.changeHighlightedIndex = function changeHighlightedIndex(moveAmount, otherStateToSet) {\n var itemsLastIndex = this.getItemCount() - 1;\n if (itemsLastIndex < 0) {\n return;\n }\n\n var _getState = this.getState(),\n highlightedIndex = _getState.highlightedIndex;\n\n var baseIndex = highlightedIndex;\n if (baseIndex === null) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n var newIndex = baseIndex + moveAmount;\n if (newIndex < 0) {\n newIndex = itemsLastIndex;\n } else if (newIndex > itemsLastIndex) {\n newIndex = 0;\n }\n this.setHighlightedIndex(newIndex, otherStateToSet);\n };\n\n // any piece of our state can live in two places:\n // 1. Uncontrolled: it's internal (this.state)\n // We will call this.setState to update that state\n // 2. Controlled: it's external (this.props)\n // We will call this.props.onStateChange to update that state\n //\n // In addition, we'll call this.props.onChange if the\n // selectedItem is changed.\n\n\n Downshift.prototype.getStateAndHelpers = function getStateAndHelpers() {\n var _getState2 = this.getState(),\n highlightedIndex = _getState2.highlightedIndex,\n inputValue = _getState2.inputValue,\n selectedItem = _getState2.selectedItem,\n isOpen = _getState2.isOpen;\n\n var itemToString = this.props.itemToString;\n var id = this.id;\n var getRootProps = this.getRootProps,\n getButtonProps = this.getButtonProps,\n getToggleButtonProps = this.getToggleButtonProps,\n getLabelProps = this.getLabelProps,\n getInputProps = this.getInputProps,\n getItemProps = this.getItemProps,\n openMenu = this.openMenu,\n closeMenu = this.closeMenu,\n toggleMenu = this.toggleMenu,\n selectItem = this.selectItem,\n selectItemAtIndex = this.selectItemAtIndex,\n selectHighlightedItem = this.selectHighlightedItem,\n setHighlightedIndex = this.setHighlightedIndex,\n clearSelection = this.clearSelection,\n clearItems = this.clearItems,\n reset = this.reset,\n setItemCount = this.setItemCount,\n unsetItemCount = this.unsetItemCount,\n setState = this.internalSetState;\n\n return {\n // prop getters\n getRootProps: getRootProps,\n getButtonProps: getButtonProps,\n getToggleButtonProps: getToggleButtonProps,\n getLabelProps: getLabelProps,\n getInputProps: getInputProps,\n getItemProps: getItemProps,\n\n // actions\n reset: reset,\n openMenu: openMenu,\n closeMenu: closeMenu,\n toggleMenu: toggleMenu,\n selectItem: selectItem,\n selectItemAtIndex: selectItemAtIndex,\n selectHighlightedItem: selectHighlightedItem,\n setHighlightedIndex: setHighlightedIndex,\n clearSelection: clearSelection,\n clearItems: clearItems,\n setItemCount: setItemCount,\n unsetItemCount: unsetItemCount,\n setState: setState,\n\n //props\n itemToString: itemToString,\n\n //derived\n id: id,\n\n // state\n highlightedIndex: highlightedIndex,\n inputValue: inputValue,\n isOpen: isOpen,\n selectedItem: selectedItem\n };\n };\n\n //////////////////////////// ROOT\n\n //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ROOT\n\n //////////////////////////// BUTTON\n\n // TODO: remove this in 2.0.0 and just call it `getToggleButtonProps`\n\n\n //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ BUTTON\n\n /////////////////////////////// LABEL\n\n //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ LABEL\n\n /////////////////////////////// INPUT\n\n //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INPUT\n\n /////////////////////////////// ITEM\n Downshift.prototype.getItemId = function getItemId(index) {\n return this.id + '-item-' + index;\n };\n //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ITEM\n\n Downshift.prototype.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n // the _isMounted property is because we have `updateStatus` in a `debounce`\n // and we don't want to update the status if the component has been umounted\n this._isMounted = true;\n /* istanbul ignore if (react-native) */\n {\n // this.isMouseDown helps us track whether the mouse is currently held down.\n // This is useful when the user clicks on an item in the list, but holds the mouse\n // down long enough for the list to disappear (because the blur event fires on the input)\n // this.isMouseDown is used in the blur handler on the input to determine whether the blur event should\n // trigger hiding the menu.\n var onMouseDown = function () {\n _this3.isMouseDown = true;\n };\n var onMouseUp = function (event) {\n var document = _this3.props.environment.document;\n\n _this3.isMouseDown = false;\n var targetInDownshift = _this3._rootNode && isOrContainsNode(_this3._rootNode, event.target);\n var activeElementInDownshift = _this3._rootNode && isOrContainsNode(_this3._rootNode, document.activeElement);\n if (!targetInDownshift && !activeElementInDownshift && _this3.getState().isOpen) {\n _this3.reset({ type: Downshift.stateChangeTypes.mouseUp }, function () {\n return _this3.props.onOuterClick(_this3.getStateAndHelpers());\n });\n }\n };\n // Touching an element in iOS gives focus and hover states, but touching out of\n // the element will remove hover, and persist the focus state, resulting in the\n // blur event not being triggered.\n var onTouchStart = function (event) {\n var targetInDownshift = _this3._rootNode && isOrContainsNode(_this3._rootNode, event.target);\n if (!targetInDownshift && _this3.getState().isOpen) {\n _this3.reset({ type: Downshift.stateChangeTypes.touchStart }, function () {\n return _this3.props.onOuterClick(_this3.getStateAndHelpers());\n });\n }\n };\n\n this.props.environment.addEventListener('mousedown', onMouseDown);\n this.props.environment.addEventListener('mouseup', onMouseUp);\n this.props.environment.addEventListener('touchstart', onTouchStart);\n\n this.cleanup = function () {\n _this3._isMounted = false;\n _this3.props.environment.removeEventListener('mousedown', onMouseDown);\n _this3.props.environment.removeEventListener('mouseup', onMouseUp);\n _this3.props.environment.removeEventListener('touchstart', onTouchStart);\n };\n }\n };\n\n Downshift.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.isControlledProp('selectedItem') && this.props.selectedItemChanged(prevProps.selectedItem, this.props.selectedItem)) {\n this.internalSetState({\n type: Downshift.stateChangeTypes.controlledPropUpdatedSelectedItem,\n inputValue: this.props.itemToString(this.props.selectedItem)\n });\n }\n\n var current = this.props.highlightedIndex === undefined ? this.state : this.props;\n var prev = prevProps.highlightedIndex === undefined ? prevState : prevProps;\n\n if (current.highlightedIndex !== prev.highlightedIndex && !this.avoidScrolling) {\n this.scrollHighlightedItemIntoView();\n }\n\n this.updateStatus();\n };\n\n Downshift.prototype.componentWillUnmount = function componentWillUnmount() {\n this.cleanup(); // avoids memory leak\n };\n\n // eslint-disable-next-line complexity\n\n\n Downshift.prototype.render = function render() {\n var children = unwrapArray(this.props.render || this.props.children, noop);\n // because the items are rerendered every time we call the children\n // we clear this out each render and\n this.clearItems();\n // we reset this so we know whether the user calls getRootProps during\n // this render. If they do then we don't need to do anything,\n // if they don't then we need to clone the element they return and\n // apply the props for them.\n this.getRootProps.called = false;\n this.getRootProps.refKey = undefined;\n this.getRootProps.suppressRefError = undefined;\n // we do something similar for getLabelProps\n this.getLabelProps.called = false;\n // and something similar for getInputProps\n this.getInputProps.called = false;\n var element = unwrapArray(children(this.getStateAndHelpers()));\n if (!element) {\n return null;\n }\n if (this.getRootProps.called) {\n if (!this.getRootProps.suppressRefError) {\n validateGetRootPropsCalledCorrectly(element, this.getRootProps);\n }\n return element;\n } else if (isDOMElement(element)) {\n // they didn't apply the root props, but we can clone\n // this and apply the props ourselves\n return React.cloneElement(element, this.getRootProps(getElementProps(element)));\n } else {\n // they didn't apply the root props, but they need to\n // otherwise we can't query around the autocomplete\n throw new Error('downshift: If you return a non-DOM element, you must use apply the getRootProps function');\n }\n };\n\n return Downshift;\n}(Component);\n\nDownshift.defaultProps = {\n defaultHighlightedIndex: null,\n defaultSelectedItem: null,\n defaultInputValue: '',\n defaultIsOpen: false,\n getA11yStatusMessage: getA11yStatusMessage,\n itemToString: function itemToString(i) {\n if (i == null) {\n return '';\n }\n if (process.env.NODE_ENV !== 'production' && isPlainObject(i)) {\n //eslint-disable-next-line no-console\n console.warn('downshift: An object was passed to the default implementation of `itemToString`. You should probably provide your own `itemToString` implementation. Please refer to the `itemToString` API documentation.', 'The object that was passed:', i);\n }\n return String(i);\n },\n onStateChange: function onStateChange() {},\n onInputValueChange: function onInputValueChange() {},\n onUserAction: function onUserAction() {},\n onChange: function onChange() {},\n onSelect: function onSelect() {},\n onOuterClick: function onOuterClick() {},\n selectedItemChanged: function selectedItemChanged(prevItem, item) {\n return prevItem !== item;\n },\n environment: typeof window === 'undefined' /* istanbul ignore next (ssr) */\n ? {} : window,\n stateReducer: function stateReducer(state, stateToSet) {\n return stateToSet;\n },\n breakingChanges: {}\n};\nDownshift.stateChangeTypes = {\n unknown: '__autocomplete_unknown__',\n mouseUp: '__autocomplete_mouseup__',\n itemMouseEnter: '__autocomplete_item_mouseenter__',\n keyDownArrowUp: '__autocomplete_keydown_arrow_up__',\n keyDownArrowDown: '__autocomplete_keydown_arrow_down__',\n keyDownEscape: '__autocomplete_keydown_escape__',\n keyDownEnter: '__autocomplete_keydown_enter__',\n clickItem: '__autocomplete_click_item__',\n blurInput: '__autocomplete_blur_input__',\n changeInput: '__autocomplete_change_input__',\n keyDownSpaceButton: '__autocomplete_keydown_space_button__',\n clickButton: '__autocomplete_click_button__',\n blurButton: '__autocomplete_blur_button__',\n controlledPropUpdatedSelectedItem: '__autocomplete_controlled_prop_updated_selected_item__',\n touchStart: '__autocomplete_touchstart__'\n};\n\nvar _initialiseProps = function () {\n var _this4 = this;\n\n this.input = null;\n this.items = [];\n this.itemCount = null;\n this.previousResultCount = 0;\n\n this.setItemCount = function (count) {\n return _this4.itemCount = count;\n };\n\n this.unsetItemCount = function () {\n return _this4.itemCount = null;\n };\n\n this.setHighlightedIndex = function () {\n var highlightedIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this4.props.defaultHighlightedIndex;\n var otherStateToSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n otherStateToSet = pickState(otherStateToSet);\n _this4.internalSetState(_extends({ highlightedIndex: highlightedIndex }, otherStateToSet));\n };\n\n this.clearSelection = function (cb) {\n _this4.internalSetState({\n selectedItem: null,\n inputValue: '',\n isOpen: false\n }, cb);\n };\n\n this.selectItem = function (item, otherStateToSet, cb) {\n otherStateToSet = pickState(otherStateToSet);\n _this4.internalSetState(_extends({\n isOpen: false,\n highlightedIndex: _this4.props.defaultHighlightedIndex,\n selectedItem: item,\n inputValue: _this4.isControlledProp('selectedItem') && _this4.props.breakingChanges.resetInputOnSelection ? _this4.props.defaultInputValue : _this4.props.itemToString(item)\n }, otherStateToSet), cb);\n };\n\n this.selectItemAtIndex = function (itemIndex, otherStateToSet, cb) {\n var item = _this4.items[itemIndex];\n if (item == null) {\n return;\n }\n _this4.selectItem(item, otherStateToSet, cb);\n };\n\n this.selectHighlightedItem = function (otherStateToSet, cb) {\n return _this4.selectItemAtIndex(_this4.getState().highlightedIndex, otherStateToSet, cb);\n };\n\n this.internalSetState = function (stateToSet, cb) {\n var isItemSelected = void 0,\n onChangeArg = void 0;\n\n var onStateChangeArg = {};\n var isStateToSetFunction = typeof stateToSet === 'function';\n\n // we want to call `onInputValueChange` before the `setState` call\n // so someone controlling the `inputValue` state gets notified of\n // the input change as soon as possible. This avoids issues with\n // preserving the cursor position.\n // See https://github.com/paypal/downshift/issues/217 for more info.\n if (!isStateToSetFunction && stateToSet.hasOwnProperty('inputValue')) {\n _this4.props.onInputValueChange(stateToSet.inputValue, _extends({}, _this4.getStateAndHelpers(), stateToSet));\n }\n return _this4.setState(function (state) {\n state = _this4.getState(state);\n var newStateToSet = isStateToSetFunction ? stateToSet(state) : stateToSet;\n\n // Your own function that could modify the state that will be set.\n newStateToSet = _this4.props.stateReducer(state, newStateToSet);\n\n // checks if an item is selected, regardless of if it's different from\n // what was selected before\n // used to determine if onSelect and onChange callbacks should be called\n isItemSelected = newStateToSet.hasOwnProperty('selectedItem');\n // this keeps track of the object we want to call with setState\n var nextState = {};\n // this is just used to tell whether the state changed\n var nextFullState = {};\n // we need to call on change if the outside world is controlling any of our state\n // and we're trying to update that state. OR if the selection has changed and we're\n // trying to update the selection\n if (isItemSelected && newStateToSet.selectedItem !== state.selectedItem) {\n onChangeArg = newStateToSet.selectedItem;\n }\n newStateToSet.type = newStateToSet.type || Downshift.stateChangeTypes.unknown;\n\n Object.keys(newStateToSet).forEach(function (key) {\n // onStateChangeArg should only have the state that is\n // actually changing\n if (state[key] !== newStateToSet[key]) {\n onStateChangeArg[key] = newStateToSet[key];\n }\n // the type is useful for the onStateChangeArg\n // but we don't actually want to set it in internal state.\n // this is an undocumented feature for now... Not all internalSetState\n // calls support it and I'm not certain we want them to yet.\n // But it enables users controlling the isOpen state to know when\n // the isOpen state changes due to mouseup events which is quite handy.\n if (key === 'type') {\n return;\n }\n nextFullState[key] = newStateToSet[key];\n // if it's coming from props, then we don't care to set it internally\n if (!_this4.isControlledProp(key)) {\n nextState[key] = newStateToSet[key];\n }\n });\n\n // if stateToSet is a function, then we weren't able to call onInputValueChange\n // earlier, so we'll call it now that we know what the inputValue state will be.\n if (isStateToSetFunction && newStateToSet.hasOwnProperty('inputValue')) {\n _this4.props.onInputValueChange(newStateToSet.inputValue, _extends({}, _this4.getStateAndHelpers(), newStateToSet));\n }\n\n return nextState;\n }, function () {\n // call the provided callback if it's a callback\n cbToCb(cb)();\n\n // only call the onStateChange and onChange callbacks if\n // we have relevant information to pass them.\n var hasMoreStateThanType = Object.keys(onStateChangeArg).length > 1;\n if (hasMoreStateThanType) {\n _this4.props.onStateChange(onStateChangeArg, _this4.getStateAndHelpers());\n }\n\n if (isItemSelected) {\n _this4.props.onSelect(stateToSet.selectedItem, _this4.getStateAndHelpers());\n }\n\n if (onChangeArg !== undefined) {\n _this4.props.onChange(onChangeArg, _this4.getStateAndHelpers());\n }\n // this is currently undocumented and therefore subject to change\n // We'll try to not break it, but just be warned.\n _this4.props.onUserAction(onStateChangeArg, _this4.getStateAndHelpers());\n });\n };\n\n this.rootRef = function (node) {\n return _this4._rootNode = node;\n };\n\n this.getRootProps = function () {\n var _babelHelpers$extends;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$suppressRefErro = _ref3.suppressRefError,\n suppressRefError = _ref3$suppressRefErro === undefined ? false : _ref3$suppressRefErro;\n\n var _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === undefined ? 'ref' : _ref2$refKey,\n rest = objectWithoutProperties(_ref2, ['refKey']);\n\n // this is used in the render to know whether the user has called getRootProps.\n // It uses that to know whether to apply the props automatically\n _this4.getRootProps.called = true;\n _this4.getRootProps.refKey = refKey;\n _this4.getRootProps.suppressRefError = suppressRefError;\n return _extends((_babelHelpers$extends = {}, _babelHelpers$extends[refKey] = _this4.rootRef, _babelHelpers$extends), rest);\n };\n\n this.keyDownHandlers = {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n var amount = event.shiftKey ? 5 : 1;\n this.moveHighlightedIndex(amount, {\n type: Downshift.stateChangeTypes.keyDownArrowDown\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n var amount = event.shiftKey ? -5 : -1;\n this.moveHighlightedIndex(amount, {\n type: Downshift.stateChangeTypes.keyDownArrowUp\n });\n },\n Enter: function Enter(event) {\n if (this.getState().isOpen) {\n event.preventDefault();\n var itemIndex = this.getState().highlightedIndex;\n var item = this.items[itemIndex];\n var itemNode = this.getItemNodeFromIndex(itemIndex);\n if (item == null || itemNode && itemNode.hasAttribute('disabled')) {\n return;\n }\n this.selectHighlightedItem({\n type: Downshift.stateChangeTypes.keyDownEnter\n });\n }\n },\n Escape: function Escape(event) {\n event.preventDefault();\n this.reset({ type: Downshift.stateChangeTypes.keyDownEscape });\n }\n };\n this.buttonKeyDownHandlers = _extends({}, this.keyDownHandlers, {\n ' ': function _(event) {\n event.preventDefault();\n this.toggleMenu({ type: Downshift.stateChangeTypes.keyDownSpaceButton });\n }\n });\n\n this.getToggleButtonProps = function () {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var onClick = _ref4.onClick,\n onKeyDown = _ref4.onKeyDown,\n onBlur = _ref4.onBlur,\n rest = objectWithoutProperties(_ref4, ['onClick', 'onKeyDown', 'onBlur']);\n\n var _getState3 = _this4.getState(),\n isOpen = _getState3.isOpen;\n\n var enabledEventHandlers = {\n onClick: composeEventHandlers(onClick, _this4.button_handleClick),\n onKeyDown: composeEventHandlers(onKeyDown, _this4.button_handleKeyDown),\n onBlur: composeEventHandlers(onBlur, _this4.button_handleBlur)\n };\n var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n return _extends({\n type: 'button',\n role: 'button',\n 'aria-label': isOpen ? 'close menu' : 'open menu',\n 'aria-expanded': isOpen,\n 'aria-haspopup': true,\n 'data-toggle': true\n }, eventHandlers, rest);\n };\n\n this.getButtonProps = this.getToggleButtonProps;\n\n this.button_handleKeyDown = function (event) {\n var key = normalizeArrowKey(event);\n if (_this4.buttonKeyDownHandlers[key]) {\n _this4.buttonKeyDownHandlers[key].call(_this4, event);\n }\n };\n\n this.button_handleClick = function (event) {\n event.preventDefault();\n // handle odd case for Safari and Firefox which\n // don't give the button the focus properly.\n /* istanbul ignore if (can't reasonably test this) */\n if (_this4.props.environment.document.activeElement === _this4.props.environment.document.body) {\n event.target.focus();\n }\n // to simplify testing components that use downshift, we'll not wrap this in a setTimeout\n // if the NODE_ENV is test. With the proper build system, this should be dead code eliminated\n // when building for production and should therefore have no impact on production code.\n if (process.env.NODE_ENV === 'test') {\n _this4.toggleMenu({ type: Downshift.stateChangeTypes.clickButton });\n } else {\n // Ensure that toggle of menu occurs after the potential blur event in iOS\n setTimeout(function () {\n return _this4.toggleMenu({ type: Downshift.stateChangeTypes.clickButton });\n });\n }\n };\n\n this.button_handleBlur = function (event) {\n var blurTarget = event.target; // Save blur target for comparison with activeElement later\n // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not body element\n setTimeout(function () {\n if (!_this4.isMouseDown && (_this4.props.environment.document.activeElement == null || _this4.props.environment.document.activeElement.id !== _this4.inputId) && _this4.props.environment.document.activeElement !== blurTarget // Do nothing if we refocus the same element again (to solve issue in Safari on iOS)\n ) {\n _this4.reset({ type: Downshift.stateChangeTypes.blurButton });\n }\n });\n };\n\n this.getLabelProps = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _this4.getLabelProps.called = true;\n if (_this4.getInputProps.called && props.htmlFor && props.htmlFor !== _this4.inputId) {\n throw new Error('downshift: You provided the htmlFor of \"' + props.htmlFor + '\" for your label, but the id of your input is \"' + _this4.inputId + '\". You must either remove the id from your input or set the htmlFor of the label equal to the input id.');\n }\n _this4.inputId = firstDefined(_this4.inputId, props.htmlFor, _this4.id + '-input');\n return _extends({}, props, {\n htmlFor: _this4.inputId\n });\n };\n\n this.getInputProps = function () {\n var _ref6;\n\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var onKeyDown = _ref5.onKeyDown,\n onBlur = _ref5.onBlur,\n onChange = _ref5.onChange,\n onInput = _ref5.onInput,\n rest = objectWithoutProperties(_ref5, ['onKeyDown', 'onBlur', 'onChange', 'onInput']);\n\n _this4.getInputProps.called = true;\n if (_this4.getLabelProps.called && rest.id && rest.id !== _this4.inputId) {\n throw new Error('downshift: You provided the id of \"' + rest.id + '\" for your input, but the htmlFor of your label is \"' + _this4.inputId + '\". You must either remove the id from your input or set the htmlFor of the label equal to the input id.');\n }\n _this4.inputId = firstDefined(_this4.inputId, rest.id, _this4.id + '-input');\n var onChangeKey = void 0;\n /* istanbul ignore next (preact) */\n onChangeKey = 'onChange';\n\n var _getState4 = _this4.getState(),\n inputValue = _getState4.inputValue,\n isOpen = _getState4.isOpen,\n highlightedIndex = _getState4.highlightedIndex;\n\n var eventHandlers = rest.disabled ? {} : (_ref6 = {}, _ref6[onChangeKey] = composeEventHandlers(onChange, onInput, _this4.input_handleChange), _ref6.onKeyDown = composeEventHandlers(onKeyDown, _this4.input_handleKeyDown), _ref6.onBlur = composeEventHandlers(onBlur, _this4.input_handleBlur), _ref6);\n return _extends({\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-expanded': isOpen,\n 'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this4.getItemId(highlightedIndex) : null,\n autoComplete: 'off',\n value: inputValue\n }, eventHandlers, rest, {\n id: _this4.inputId\n });\n };\n\n this.input_handleKeyDown = function (event) {\n var key = normalizeArrowKey(event);\n if (key && _this4.keyDownHandlers[key]) {\n _this4.keyDownHandlers[key].call(_this4, event);\n }\n };\n\n this.input_handleChange = function (event) {\n _this4.internalSetState({\n type: Downshift.stateChangeTypes.changeInput,\n isOpen: true,\n inputValue: event.target.value\n });\n };\n\n this.input_handleBlur = function () {\n // Need setTimeout, so that when the user presses Tab, the activeElement is the next focused element, not the body element\n setTimeout(function () {\n var downshiftButtonIsActive = _this4.props.environment.document.activeElement.dataset.toggle && _this4._rootNode && _this4._rootNode.contains(_this4.props.environment.document.activeElement);\n if (!_this4.isMouseDown && !downshiftButtonIsActive) {\n _this4.reset({ type: Downshift.stateChangeTypes.blurInput });\n }\n });\n };\n\n this.getItemProps = function () {\n var _enabledEventHandlers;\n\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var onMouseMove = _ref7.onMouseMove,\n onMouseDown = _ref7.onMouseDown,\n onClick = _ref7.onClick,\n index = _ref7.index,\n _ref7$item = _ref7.item,\n item = _ref7$item === undefined ? requiredProp('getItemProps', 'item') : _ref7$item,\n rest = objectWithoutProperties(_ref7, ['onMouseMove', 'onMouseDown', 'onClick', 'index', 'item']);\n\n if (index === undefined) {\n _this4.items.push(item);\n index = _this4.items.indexOf(item);\n } else {\n _this4.items[index] = item;\n }\n\n var onSelectKey = 'onClick';\n\n var enabledEventHandlers = (_enabledEventHandlers = {\n // onMouseMove is used over onMouseEnter here. onMouseMove\n // is only triggered on actual mouse movement while onMouseEnter\n // can fire on DOM changes, interrupting keyboard navigation\n onMouseMove: composeEventHandlers(onMouseMove, function () {\n if (index === _this4.getState().highlightedIndex) {\n return;\n }\n _this4.setHighlightedIndex(index, {\n type: Downshift.stateChangeTypes.itemMouseEnter\n });\n\n // We never want to manually scroll when changing state based\n // on `onMouseMove` because we will be moving the element out\n // from under the user which is currently scrolling/moving the\n // cursor\n _this4.avoidScrolling = true;\n setTimeout(function () {\n return _this4.avoidScrolling = false;\n }, 250);\n }),\n onMouseDown: composeEventHandlers(onMouseDown, function (event) {\n // This prevents the activeElement from being changed\n // to the item so it can remain with the current activeElement\n // which is a more common use case.\n event.preventDefault();\n })\n }, _enabledEventHandlers[onSelectKey] = composeEventHandlers(onClick, function () {\n _this4.selectItemAtIndex(index, {\n type: Downshift.stateChangeTypes.clickItem\n });\n }), _enabledEventHandlers);\n\n var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n\n return _extends({\n id: _this4.getItemId(index)\n }, eventHandlers, rest);\n };\n\n this.clearItems = function () {\n _this4.items = [];\n };\n\n this.reset = function () {\n var otherStateToSet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var cb = arguments[1];\n\n otherStateToSet = pickState(otherStateToSet);\n _this4.internalSetState(function (_ref8) {\n var selectedItem = _ref8.selectedItem;\n return _extends({\n isOpen: false,\n highlightedIndex: _this4.props.defaultHighlightedIndex,\n inputValue: _this4.props.itemToString(selectedItem)\n }, otherStateToSet);\n }, cbToCb(cb));\n };\n\n this.toggleMenu = function () {\n var otherStateToSet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var cb = arguments[1];\n\n otherStateToSet = pickState(otherStateToSet);\n _this4.internalSetState(function (_ref9) {\n var isOpen = _ref9.isOpen;\n\n return _extends({ isOpen: !isOpen }, otherStateToSet);\n }, function () {\n var _getState5 = _this4.getState(),\n isOpen = _getState5.isOpen;\n\n if (isOpen) {\n // highlight default index\n _this4.setHighlightedIndex(undefined, otherStateToSet);\n }\n cbToCb(cb)();\n });\n };\n\n this.openMenu = function (cb) {\n _this4.internalSetState({ isOpen: true }, cbToCb(cb));\n };\n\n this.closeMenu = function (cb) {\n _this4.internalSetState({ isOpen: false }, cbToCb(cb));\n };\n\n this.updateStatus = debounce(function () {\n if (!_this4._isMounted) {\n return;\n }\n var state = _this4.getState();\n var item = _this4.items[state.highlightedIndex];\n var resultCount = _this4.getItemCount();\n var status = _this4.props.getA11yStatusMessage(_extends({\n itemToString: _this4.props.itemToString,\n previousResultCount: _this4.previousResultCount,\n resultCount: resultCount,\n highlightedItem: item\n }, state));\n _this4.previousResultCount = resultCount;\n /* istanbul ignore else (react-native) */\n setStatus(status);\n }, 200);\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Downshift.propTypes = {\n children: PropTypes.func,\n render: PropTypes.func,\n defaultHighlightedIndex: PropTypes.number,\n defaultSelectedItem: PropTypes.any,\n defaultInputValue: PropTypes.string,\n defaultIsOpen: PropTypes.bool,\n getA11yStatusMessage: PropTypes.func,\n itemToString: PropTypes.func,\n onChange: PropTypes.func,\n onSelect: PropTypes.func,\n onStateChange: PropTypes.func,\n onInputValueChange: PropTypes.func,\n onUserAction: PropTypes.func,\n onOuterClick: PropTypes.func,\n selectedItemChanged: PropTypes.func,\n stateReducer: PropTypes.func,\n itemCount: PropTypes.number,\n id: PropTypes.string,\n environment: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n document: PropTypes.shape({\n getElementById: PropTypes.func,\n activeElement: PropTypes.any,\n body: PropTypes.any\n })\n }),\n // things we keep in state for uncontrolled components\n // but can accept as props for controlled components\n /* eslint-disable react/no-unused-prop-types */\n selectedItem: PropTypes.any,\n isOpen: PropTypes.bool,\n inputValue: PropTypes.string,\n highlightedIndex: PropTypes.number,\n breakingChanges: PropTypes.shape({\n resetInputOnSelection: PropTypes.bool\n })\n /* eslint-enable */\n} : void 0;\n\nfunction validateGetRootPropsCalledCorrectly(element, _ref) {\n var refKey = _ref.refKey;\n\n var refKeySpecified = refKey !== 'ref';\n var isComposite = !isDOMElement(element);\n if (isComposite && !refKeySpecified) {\n throw new Error('downshift: You returned a non-DOM element. You must specify a refKey in getRootProps');\n } else if (!isComposite && refKeySpecified) {\n throw new Error('downshift: You returned a DOM element. You should not specify a refKey in getRootProps. You specified \"' + refKey + '\"');\n }\n if (!getElementProps(element)[refKey]) {\n throw new Error('downshift: You must apply the ref prop \"' + refKey + '\" from getRootProps onto your root element.');\n }\n}\n\n/*\n * Fix importing in typescript after rollup compilation\n * https://github.com/rollup/rollup/issues/1156\n * https://github.com/Microsoft/TypeScript/issues/13017#issuecomment-268657860\n */\nDownshift.default = Downshift;\nDownshift.resetIdCounter = resetIdCounter;\n\nexport default Downshift;\n","/**\n * input component for multi autocomplete\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport ReactFlipMove from 'react-flip-move'\nimport { PAYPAL_THEME, SearchIcon } from '@paypalcorp/pp-react'\nimport PlaceholderInput from '@paypalcorp/react-text-input-inline'\nimport { StyleSheet, css } from 'lib/paypalphrodite'\nimport glamorous from 'glamorous'\n\nimport { PRIMARY_TEXT_FONT_FAMILY } from '../../../../lib/styles/styles'\nconst {\n sysColorBackgroundMediumContrast,\n sysColorBackgroundHighContrast,\n sysColorStructureFocus,\n} = PAYPAL_THEME\nconst callAll = (...fns) => (...args) => fns.forEach(fn => fn && fn(...args))\n\nconst styles = StyleSheet.create({\n wrapper: {\n alignSelf: 'start',\n width: '100%',\n display: 'flex',\n position: 'relative',\n maxHeight: '109px',\n overflowY: 'auto',\n overflowX: 'hidden',\n verticalAlign: 'top',\n padding: '7px 6px 12px 6px',\n cursor: 'text',\n flexWrap: 'wrap',\n borderRadius: 0,\n '::-webkit-scrollbar-track': {\n margin: '1rem 0',\n },\n '::-webkit-scrollbar-thumb': {\n backgroundColor: '#a1a1a1',\n border: '3px solid rgba(0, 0, 0, 0)',\n backgroundClip: 'padding-box',\n borderRadius: '9999rem',\n },\n '::-webkit-scrollbar': {\n width: '0.75rem',\n },\n },\n input: {\n outline: 0,\n boxSizing: 'content-box',\n height: '43px',\n },\n})\n\nconst floatingLabelStyles = {\n textInput: {\n flex: '1 1 content',\n height: 37,\n float: 'left',\n margin: 'initial',\n display: 'block',\n },\n\n placeholder: {\n padding: '0 18px 0 0',\n boxSizing: 'border-box',\n position: 'relative',\n top: 13,\n left: 6,\n zIndex: 1,\n\n WebkitUserSelect: 'none',\n MozUserSelect: 'none',\n msUserSelect: 'none',\n OUserSelect: 'none',\n userSelect: 'none',\n },\n\n floatLabel: {\n WebkitTransform: 'translate(1px, -9px) scale(0.75)', // NOSONAR\n MozTransform: 'translate(1px, -9px) scale(0.75)',\n msTransform: 'translate(1px, -9px) scale(0.75)',\n OTransform: 'translate(1px, -9px) scale(0.75)',\n transform: 'translate(1px, -9px) scale(0.75)',\n },\n\n input: {\n position: 'absolute',\n top: 11,\n height: '27px',\n padding: '0 6px',\n border: 'none',\n outline: 0,\n borderRadius: 0,\n boxShadow: 'none',\n color: sysColorBackgroundHighContrast,\n ...PRIMARY_TEXT_FONT_FAMILY,\n fontSize: '1.125rem',\n lineHeight: '1.5rem',\n fontWeight: 'normal',\n background: 'rgb(255 255 255 / 0%)',\n },\n}\n\nconst Wrapper = glamorous.div(\n {\n padding: '0 0.5rem 0 1.5rem',\n maxHeight: 111,\n color: '#2c2e2f',\n borderRadius: '2rem',\n border: `1px solid ${sysColorBackgroundMediumContrast}`,\n backgroundColor: '#fff',\n fontSize: '0.9375rem',\n lineHeight: '1.4em',\n textAlign: 'left',\n display: 'flex',\n minHeight: '4rem',\n },\n ({ focused }) => {\n return (\n focused && {\n border: `1px solid ${sysColorStructureFocus}`,\n boxShadow: `0 0 0 2px ${sysColorStructureFocus}, 0 0 0 0.4375rem rgb(16 114 235 / 16%)`,\n }\n )\n }\n)\n\nconst SearchIconContainer = glamorous.div({\n alignSelf: 'start',\n margin: '1.25rem 0 0 0',\n color: sysColorBackgroundMediumContrast,\n})\n\nconst inputClasses = classnames(css(styles.input))\nconst wrapperClasses = classnames('vx_form-group', css(styles.wrapper))\n\nexport default class MultiAutoCompleteInput extends React.Component {\n static propTypes = {\n renderSelectedItem: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n selectedItemIndex: PropTypes.number.isRequired,\n handleSelectedItemSelection: PropTypes.func.isRequired,\n downshift: PropTypes.object.isRequired,\n onKeyDown: PropTypes.func,\n onKeyUp: PropTypes.func,\n inputProps: PropTypes.object,\n }\n\n componentDidUpdate(prevProps, prevState) {\n // If the user deleted a selected recipient, scroll back down to the input.\n if (\n prevProps.downshift.selectedItem.length <\n this.props.downshift.selectedItem.length\n ) {\n this.scrollToInput()\n }\n\n // If the user focused a selected recipient, scroll to that recipient.\n if (prevProps.selectedItemIndex !== this.props.selectedItemIndex) {\n this.scrollToSelectedItem()\n }\n }\n\n scrollToInput() {\n const inputWrapper = document.getElementById('recipientAutoCompleteWrapper')\n if (inputWrapper) {\n inputWrapper.scrollTop = inputWrapper.scrollHeight\n }\n }\n\n scrollToSelectedItem() {\n const inputWrapper = document.getElementById('recipientAutoCompleteWrapper')\n if (inputWrapper && this.props.selectedItemIndex > -1) {\n const el = inputWrapper.getElementsByClassName(\n 'autocompleteSelectedItem'\n )[this.props.selectedItemIndex]\n if (el) {\n inputWrapper.scrollTop = el.offsetTop - inputWrapper.offsetTop\n }\n }\n }\n\n handleWrapperClick = () => {\n if (this.textInput) {\n this.textInput.focus()\n }\n }\n\n render() {\n const {\n downshift,\n renderSelectedItem,\n selectedItemIndex,\n onKeyDown,\n onKeyUp,\n inputProps,\n handleSelectedItemSelection,\n } = this.props\n const { getInputProps, selectedItem } = downshift\n const { placeholder = '', style = {} } = inputProps\n\n return (\n \n \n \n \n\n \n {selectedItem.map((item, index) => (\n \n {renderSelectedItem({\n item,\n index,\n selected: selectedItemIndex === index,\n onSelectItem: callAll(\n this.handleWrapperClick,\n handleSelectedItemSelection\n ),\n })}\n \n ))}\n\n (this.textInput = c),\n name: 'multi-autocomplete-input',\n className: inputClasses,\n styles: floatingLabelStyles,\n label: placeholder,\n autoCapitalize: 'none',\n autoCorrect: 'off',\n 'aria-autocomplete': 'both',\n ...inputProps,\n })}\n />\n \n \n )\n }\n}\n","import { PureComponent } from 'react';\n\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction isRangeVisible(_ref) {\n var lastRenderedStartIndex = _ref.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref.lastRenderedStopIndex,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n\nfunction scanForUnloadedRanges(_ref) {\n var isItemLoaded = _ref.isItemLoaded,\n itemCount = _ref.itemCount,\n minimumBatchSize = _ref.minimumBatchSize,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n var unloadedRanges = [];\n\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n var loaded = isItemLoaded(_index);\n\n if (!loaded) {\n rangeStopIndex = _index;\n if (rangeStartIndex === null) {\n rangeStartIndex = _index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n\n rangeStartIndex = rangeStopIndex = null;\n }\n }\n\n // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), itemCount - 1);\n\n for (var _index2 = rangeStopIndex + 1; _index2 <= potentialStopIndex; _index2++) {\n if (!isItemLoaded(_index2)) {\n rangeStopIndex = _index2;\n } else {\n break;\n }\n }\n\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n }\n\n // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n if (unloadedRanges.length) {\n while (unloadedRanges[1] - unloadedRanges[0] + 1 < minimumBatchSize && unloadedRanges[0] > 0) {\n var _index3 = unloadedRanges[0] - 1;\n\n if (!isItemLoaded(_index3)) {\n unloadedRanges[0] = _index3;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar InfiniteLoader = function (_PureComponent) {\n inherits(InfiniteLoader, _PureComponent);\n\n function InfiniteLoader() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, InfiniteLoader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = InfiniteLoader.__proto__ || Object.getPrototypeOf(InfiniteLoader)).call.apply(_ref, [this].concat(args))), _this), _this._lastRenderedStartIndex = -1, _this._lastRenderedStopIndex = -1, _this._memoizedUnloadedRanges = [], _this._onItemsRendered = function (_ref2) {\n var visibleStartIndex = _ref2.visibleStartIndex,\n visibleStopIndex = _ref2.visibleStopIndex;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!isInteger(visibleStartIndex) || !isInteger(visibleStopIndex)) {\n console.warn('Invalid onItemsRendered signature; please refer to InfiniteLoader documentation.');\n }\n\n if (typeof _this.props.loadMoreRows === 'function') {\n console.warn('InfiniteLoader \"loadMoreRows\" prop has been renamed to \"loadMoreItems\".');\n }\n }\n\n _this._lastRenderedStartIndex = visibleStartIndex;\n _this._lastRenderedStopIndex = visibleStopIndex;\n\n _this._ensureRowsLoaded(visibleStartIndex, visibleStopIndex);\n }, _this._setRef = function (listRef) {\n _this._listRef = listRef;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(InfiniteLoader, [{\n key: 'resetloadMoreItemsCache',\n value: function resetloadMoreItemsCache() {\n var autoReload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this._memoizedUnloadedRanges = [];\n\n if (autoReload) {\n this._ensureRowsLoaded(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n if (this._listRef == null) {\n console.warn('Invalid list ref; please refer to InfiniteLoader documentation.');\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n onItemsRendered: this._onItemsRendered,\n ref: this._setRef\n });\n }\n }, {\n key: '_ensureRowsLoaded',\n value: function _ensureRowsLoaded(startIndex, stopIndex) {\n var _props = this.props,\n isItemLoaded = _props.isItemLoaded,\n itemCount = _props.itemCount,\n _props$minimumBatchSi = _props.minimumBatchSize,\n minimumBatchSize = _props$minimumBatchSi === undefined ? 10 : _props$minimumBatchSi,\n _props$threshold = _props.threshold,\n threshold = _props$threshold === undefined ? 15 : _props$threshold;\n\n\n var unloadedRanges = scanForUnloadedRanges({\n isItemLoaded: isItemLoaded,\n itemCount: itemCount,\n minimumBatchSize: minimumBatchSize,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(itemCount - 1, stopIndex + threshold)\n });\n\n // Avoid calling load-rows unless range has changed.\n // This shouldn't be strictly necessary, but is maybe nice to do.\n if (this._memoizedUnloadedRanges.length !== unloadedRanges.length || this._memoizedUnloadedRanges.some(function (startOrStop, index) {\n return unloadedRanges[index] !== startOrStop;\n })) {\n this._memoizedUnloadedRanges = unloadedRanges;\n this._loadUnloadedRanges(unloadedRanges);\n }\n }\n }, {\n key: '_loadUnloadedRanges',\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n // loadMoreRows was renamed to loadMoreItems in v1.0.3; will be removed in v2.0\n var loadMoreItems = this.props.loadMoreItems || this.props.loadMoreRows;\n\n var _loop = function _loop(i) {\n var startIndex = unloadedRanges[i];\n var stopIndex = unloadedRanges[i + 1];\n var promise = loadMoreItems(startIndex, stopIndex);\n if (promise != null) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: startIndex,\n stopIndex: stopIndex\n })) {\n // Handle an unmount while promises are still in flight.\n if (_this2._listRef == null) {\n return;\n }\n\n // Resize cached row sizes for VariableSizeList,\n // otherwise just re-render the list.\n if (typeof _this2._listRef.resetAfterIndex === 'function') {\n _this2._listRef.resetAfterIndex(startIndex, true);\n } else {\n // HACK reset temporarily cached item styles to force PureComponent to re-render.\n // This is pretty gross, but I'm okay with it for now.\n // Don't judge me.\n if (typeof _this2._listRef._getItemStyleCache === 'function') {\n _this2._listRef._getItemStyleCache(-1);\n }\n _this2._listRef.forceUpdate();\n }\n }\n });\n }\n };\n\n for (var i = 0; i < unloadedRanges.length; i += 2) {\n _loop(i);\n }\n }\n }]);\n return InfiniteLoader;\n}(PureComponent);\n\nexport default InfiniteLoader;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n var start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (size === -1 || recalculate) {\n var div = document.createElement('div');\n var style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n document.body.appendChild(div);\n size = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n var columnIndex = _ref.columnIndex,\n data = _ref.data,\n rowIndex = _ref.rowIndex;\n return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount =\n /*#__PURE__*/\n new WeakSet();\n devWarningsOverscanRowsColumnsCount =\n /*#__PURE__*/\n new WeakSet();\n devWarningsTagName =\n /*#__PURE__*/\n new WeakSet();\n }\n}\n\nfunction createGridComponent(_ref2) {\n var _class, _temp;\n\n var getColumnOffset = _ref2.getColumnOffset,\n getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n getColumnWidth = _ref2.getColumnWidth,\n getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n getRowHeight = _ref2.getRowHeight,\n getRowOffset = _ref2.getRowOffset,\n getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n initInstanceProps = _ref2.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref2.validateProps;\n return _temp = _class =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(Grid, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function Grid(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_assertThisInitialized(_this)));\n _this._resetIsScrollingTimeoutId = null;\n _this._outerRef = void 0;\n _this.state = {\n instance: _assertThisInitialized(_assertThisInitialized(_this)),\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward'\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n return _this.props.onItemsRendered({\n overscanColumnStartIndex: overscanColumnStartIndex,\n overscanColumnStopIndex: overscanColumnStopIndex,\n overscanRowStartIndex: overscanRowStartIndex,\n overscanRowStopIndex: overscanRowStopIndex,\n visibleColumnStartIndex: visibleColumnStartIndex,\n visibleColumnStopIndex: visibleColumnStopIndex,\n visibleRowStartIndex: visibleRowStartIndex,\n visibleRowStopIndex: visibleRowStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n horizontalScrollDirection: horizontalScrollDirection,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n verticalScrollDirection: verticalScrollDirection,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (rowIndex, columnIndex) {\n var _this$props = _this.props,\n columnWidth = _this$props.columnWidth,\n direction = _this$props.direction,\n rowHeight = _this$props.rowHeight;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n var key = rowIndex + \":\" + columnIndex;\n var style;\n\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n\n var isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : _offset,\n right: isRtl ? _offset : undefined,\n top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScroll = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientHeight = _event$currentTarget.clientHeight,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n var calculatedScrollLeft = scrollLeft;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1);\n });\n };\n\n return _this;\n }\n\n Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = Grid.prototype;\n\n _proto.scrollTo = function scrollTo(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(function (prevState) {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n return null;\n }\n\n return {\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(_ref4) {\n var _ref4$align = _ref4.align,\n align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex;\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n height = _this$props2.height,\n rowCount = _this$props2.rowCount,\n width = _this$props2.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n var scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n\n var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n this.scrollTo({\n scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n initialScrollLeft = _this$props3.initialScrollLeft,\n initialScrollTop = _this$props3.initialScrollTop;\n\n if (this._outerRef != null) {\n var outerRef = this._outerRef;\n\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var direction = this.props.direction;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollTop = _this$state2.scrollTop,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n var outerRef = this._outerRef;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n columnCount = _this$props4.columnCount,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n rowCount = _this$props4.rowCount,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling;\n\n var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n columnStartIndex = _this$_getHorizontalR[0],\n columnStopIndex = _this$_getHorizontalR[1];\n\n var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n rowStartIndex = _this$_getVerticalRan[0],\n rowStopIndex = _this$_getVerticalRan[1];\n\n var items = [];\n\n if (columnCount > 0 && rowCount) {\n for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n items.push(createElement(children, {\n columnIndex: _columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({\n columnIndex: _columnIndex,\n data: itemData,\n rowIndex: _rowIndex\n }),\n rowIndex: _rowIndex,\n style: this._getItemStyle(_rowIndex, _columnIndex)\n }));\n }\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props5 = this.props,\n columnCount = _this$props5.columnCount,\n onItemsRendered = _this$props5.onItemsRendered,\n onScroll = _this$props5.onScroll,\n rowCount = _this$props5.rowCount;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n _overscanRowStartIndex = _this$_getVerticalRan2[0],\n _overscanRowStopIndex = _this$_getVerticalRan2[1],\n _visibleRowStartIndex = _this$_getVerticalRan2[2],\n _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n }\n }\n\n if (typeof onScroll === 'function') {\n var _this$state3 = this.state,\n _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n _scrollLeft = _this$state3.scrollLeft,\n _scrollTop = _this$state3.scrollTop,\n _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n }\n }; // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n\n\n _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n var _this$props6 = this.props,\n columnCount = _this$props6.columnCount,\n overscanColumnCount = _this$props6.overscanColumnCount,\n overscanColumnsCount = _this$props6.overscanColumnsCount,\n overscanCount = _this$props6.overscanCount,\n rowCount = _this$props6.rowCount;\n var _this$state4 = this.state,\n horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n isScrolling = _this$state4.isScrolling,\n scrollLeft = _this$state4.scrollLeft;\n var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n var _this$props7 = this.props,\n columnCount = _this$props7.columnCount,\n overscanCount = _this$props7.overscanCount,\n overscanRowCount = _this$props7.overscanRowCount,\n overscanRowsCount = _this$props7.overscanRowsCount,\n rowCount = _this$props7.rowCount;\n var _this$state5 = this.state,\n isScrolling = _this$state5.isScrolling,\n verticalScrollDirection = _this$state5.verticalScrollDirection,\n scrollTop = _this$state5.scrollTop;\n var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return Grid;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false\n }, _temp;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n var children = _ref5.children,\n direction = _ref5.direction,\n height = _ref5.height,\n innerTagName = _ref5.innerTagName,\n outerTagName = _ref5.outerTagName,\n overscanColumnsCount = _ref5.overscanColumnsCount,\n overscanCount = _ref5.overscanCount,\n overscanRowsCount = _ref5.overscanRowsCount,\n width = _ref5.width;\n var instance = _ref6.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n if (typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n }\n\n if (typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n var rowCount = _ref.rowCount;\n var rowMetadataMap = _ref2.rowMetadataMap,\n estimatedRowHeight = _ref2.estimatedRowHeight,\n lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n\n if (lastMeasuredRowIndex >= 0) {\n var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n var columnCount = _ref3.columnCount;\n var columnMetadataMap = _ref4.columnMetadataMap,\n estimatedColumnWidth = _ref4.estimatedColumnWidth,\n lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n\n if (lastMeasuredColumnIndex >= 0) {\n var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = props.columnWidth;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = props.rowHeight;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n var itemMetadataMap, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var size = itemType === 'column' ? props.width : props.height;\n var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n};\n\nvar VariableSizeGrid =\n/*#__PURE__*/\ncreateGridComponent({\n getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n return getItemMetadata('column', props, index, instanceProps).offset;\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n return findNearestItem('column', props, instanceProps, scrollLeft);\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n var columnCount = props.columnCount,\n width = props.width;\n var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n var maxOffset = scrollLeft + width;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n return instanceProps.columnMetadataMap[index].size;\n },\n getEstimatedTotalHeight: getEstimatedTotalHeight,\n getEstimatedTotalWidth: getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getRowOffset: function getRowOffset(props, index, instanceProps) {\n return getItemMetadata('row', props, index, instanceProps).offset;\n },\n getRowHeight: function getRowHeight(props, index, instanceProps) {\n return instanceProps.rowMetadataMap[index].size;\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n return findNearestItem('row', props, instanceProps, scrollTop);\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n var rowCount = props.rowCount,\n height = props.height;\n var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n var maxOffset = scrollTop + height;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref5 = props,\n estimatedColumnWidth = _ref5.estimatedColumnWidth,\n estimatedRowHeight = _ref5.estimatedRowHeight;\n var instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {}\n };\n\n instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n columnIndex: columnIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n rowIndex: rowIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterIndices = function (_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex,\n _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n }\n\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n } // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref7) {\n var columnWidth = _ref7.columnWidth,\n rowHeight = _ref7.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n } else if (typeof rowHeight !== 'function') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection =\n /*#__PURE__*/\n new WeakSet();\n devWarningsTagName$1 =\n /*#__PURE__*/\n new WeakSet();\n }\n}\n\nfunction createListComponent(_ref) {\n var _class, _temp;\n\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _temp = _class =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(List, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function List(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_assertThisInitialized(_this)));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_assertThisInitialized(_this)),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n var style;\n\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var isRtl = direction === 'rtl';\n var offsetHorizontal = isHorizontal ? _offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? _offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n\n return _this;\n }\n\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = List.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n\n var itemCount = this.props.itemCount;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1));\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props2 = this.props,\n direction = _this$props2.direction,\n initialScrollOffset = _this$props2.initialScrollOffset,\n layout = _this$props2.layout;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n layout = _this$props3.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemCount = _this$props4.itemCount,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey$1 : _this$props4$itemKey,\n layout = _this$props4.layout,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n\n var items = [];\n\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n }; // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n\n\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props5 = this.props,\n itemCount = _this$props5.itemCount,\n overscanCount = _this$props5.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _temp;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n\n break;\n\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n var _ref = props,\n itemSize = _ref.itemSize;\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n instanceProps.lastMeasuredIndex = index;\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n var itemCount = props.itemCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n var itemCount = _ref2.itemCount;\n var itemMetadataMap = _ref3.itemMetadataMap,\n estimatedItemSize = _ref3.estimatedItemSize,\n lastMeasuredIndex = _ref3.lastMeasuredIndex;\n var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredIndex >= itemCount) {\n lastMeasuredIndex = itemCount - 1;\n }\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList =\n/*#__PURE__*/\ncreateListComponent({\n getItemOffset: function getItemOffset(props, index, instanceProps) {\n return getItemMetadata$1(props, index, instanceProps).offset;\n },\n getItemSize: function getItemSize(props, index, instanceProps) {\n return instanceProps.itemMetadataMap[index].size;\n },\n getEstimatedTotalSize: getEstimatedTotalSize,\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n return findNearestItem$1(props, instanceProps, offset);\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n itemCount = props.itemCount,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n var maxOffset = scrollOffset + size;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < itemCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref4 = props,\n estimatedItemSize = _ref4.estimatedItemSize;\n var instanceProps = {\n itemMetadataMap: {},\n estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n lastMeasuredIndex: -1\n };\n\n instance.resetAfterIndex = function (index, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref5) {\n var itemSize = _ref5.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeGrid =\n/*#__PURE__*/\ncreateGridComponent({\n getColumnOffset: function getColumnOffset(_ref, index) {\n var columnWidth = _ref.columnWidth;\n return index * columnWidth;\n },\n getColumnWidth: function getColumnWidth(_ref2, index) {\n var columnWidth = _ref2.columnWidth;\n return columnWidth;\n },\n getRowOffset: function getRowOffset(_ref3, index) {\n var rowHeight = _ref3.rowHeight;\n return index * rowHeight;\n },\n getRowHeight: function getRowHeight(_ref4, index) {\n var rowHeight = _ref4.rowHeight;\n return rowHeight;\n },\n getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n var rowCount = _ref5.rowCount,\n rowHeight = _ref5.rowHeight;\n return rowHeight * rowCount;\n },\n getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n var columnCount = _ref6.columnCount,\n columnWidth = _ref6.columnWidth;\n return columnWidth * columnCount;\n },\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n var columnCount = _ref7.columnCount,\n columnWidth = _ref7.columnWidth,\n width = _ref7.width;\n var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n var rowHeight = _ref8.rowHeight,\n height = _ref8.height,\n rowCount = _ref8.rowCount;\n var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n var columnWidth = _ref9.columnWidth,\n columnCount = _ref9.columnCount;\n return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n var columnWidth = _ref10.columnWidth,\n columnCount = _ref10.columnCount,\n width = _ref10.width;\n var left = startIndex * columnWidth;\n var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n ));\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n var rowHeight = _ref11.rowHeight,\n rowCount = _ref11.rowCount;\n return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n var rowHeight = _ref12.rowHeight,\n rowCount = _ref12.rowCount,\n height = _ref12.height;\n var top = startIndex * rowHeight;\n var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref13) {\n var columnWidth = _ref13.columnWidth,\n rowHeight = _ref13.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n }\n\n if (typeof rowHeight !== 'number') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeList =\n/*#__PURE__*/\ncreateListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n for (var attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n\n for (var _attribute in next) {\n if (prev[_attribute] !== next[_attribute]) {\n return true;\n }\n }\n\n return false;\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n var prevStyle = prevProps.style,\n prevRest = _objectWithoutPropertiesLoose(prevProps, [\"style\"]);\n\n var nextStyle = nextProps.style,\n nextRest = _objectWithoutPropertiesLoose(nextProps, [\"style\"]);\n\n return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { VariableSizeGrid, VariableSizeList, FixedSizeGrid, FixedSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","import content from 'pp-react-l10n'\nimport {\n AUTOCOMPLETE_ITEM_SIZE,\n AUTOCOMPLETE_ITEM_TYPE,\n} from '../../../constants'\nimport {\n isPhone,\n isEmail,\n isPhoneOrEmail,\n} from '../../../../../../shared/validators'\nimport { isBizSearchTreatment } from '../../../../experiments/bizSearch'\nimport { hasSearchContactCompactLayout } from '../../../../experiments/searchContactCompressedLayout'\n\nconst i18n = content('transfer/page/recipient')\n\nconst filterContacts = (excludeRecipients, contacts, recipients) => {\n let filteredContacts = contacts\n if (excludeRecipients && recipients.length > 0) {\n filteredContacts = excludeRecipients(contacts, recipients)\n }\n return filteredContacts\n}\n\n// prepare for the items to be displayed in autocomplete-menu\n// Two possible lists can be displayed: 1. Your contact and 2. People on PayPal\nexport const itemsPrep = ({\n directContacts = [],\n nonDirectContacts = [],\n inputValue = '',\n isSearchingPeers = false,\n excludeRecipients,\n recipients = [],\n hasNextPage = false,\n showSearchError = false,\n isPeopleSearch = true,\n isMgm = false,\n}) => {\n let items = []\n if (isSearchingPeers) {\n // return nothing when it's still searching\n return items\n }\n\n // used to render the contents of diferent types of items in the search result.\n const contactTitle = {\n id: i18n('autocomplete.yourContacts'),\n content: i18n('autocomplete.yourContacts'),\n type: AUTOCOMPLETE_ITEM_TYPE.TITLE,\n }\n let globalTitle = {\n id: i18n('autocomplete.peopleOnPaypal'),\n content: i18n('autocomplete.peopleOnPaypal'),\n type: AUTOCOMPLETE_ITEM_TYPE.TITLE,\n }\n\n if (isBizSearchTreatment()) {\n globalTitle = isPeopleSearch\n ? {\n id: i18n('autocomplete.morePeopleOnPaypal'),\n content: i18n('autocomplete.morePeopleOnPaypal'),\n type: AUTOCOMPLETE_ITEM_TYPE.TITLE,\n }\n : {\n id: i18n('autocomplete.moreBusinessesOnPaypal'),\n content: i18n('autocomplete.moreBusinessesOnPaypal'),\n type: AUTOCOMPLETE_ITEM_TYPE.TITLE,\n }\n }\n\n const searchErrorMessage = {\n id: i18n('autocomplete.searchError'),\n content: i18n('autocomplete.searchError'),\n type: AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n }\n const sameRecipientMessage = {\n id: i18n('autocomplete.sameRecipient'),\n content: i18n('autocomplete.sameRecipient'),\n type: AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n }\n const noSearchedContactsMessage = {\n id: i18n('autocomplete.noSearchedContacts'),\n content: i18n('autocomplete.noSearchedContacts', { inputValue }),\n type: AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n }\n const searchEndMessage = {\n id: i18n('autocomplete.searchEndMessage'),\n content: i18n('autocomplete.searchEndMessage'),\n type: AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n }\n const emailMessage = {\n id: 'emailMessage',\n content: 'emailMessage',\n type: AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL,\n }\n const phoneMessage = {\n id: 'phoneMessage',\n content: 'phoneMessage',\n type: AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL,\n }\n\n if (showSearchError) {\n return [searchErrorMessage]\n }\n\n // to exclude selected recipients in request flow.\n let yourContacts = filterContacts(\n excludeRecipients,\n directContacts,\n recipients\n )\n yourContacts = yourContacts.map((item, index) => ({\n ...item,\n position: index,\n }))\n\n let peopleOnPaypal = filterContacts(\n excludeRecipients,\n nonDirectContacts,\n recipients\n )\n peopleOnPaypal = peopleOnPaypal.map((item, index) => ({\n ...item,\n position: index,\n }))\n\n const isInputEmail = isEmail(inputValue)\n const isInputPhone = isPhone(inputValue)\n\n // handle search results of your contacts, show nothing if no matched result\n if (yourContacts.length > 0) {\n items = items.concat([contactTitle, ...yourContacts])\n if (isInputEmail || isInputPhone) {\n return items\n }\n }\n\n // handle search results of people on paypal\n if (peopleOnPaypal.length > 0 && !isMgm) {\n items = items.concat([globalTitle, ...peopleOnPaypal])\n if (!hasNextPage && !isInputEmail && !isInputPhone) {\n // if there is no more items to be loaded,\n // we shows a corresponding message in the end\n items.push(searchEndMessage)\n }\n } else if (items.length > 0 && !isInputEmail && !isInputPhone && !isMgm) {\n // search results include your contacts but not people on paypal\n // we also shows a corresponding message in the end\n items = items.concat([globalTitle, searchEndMessage])\n }\n\n const hasSelected =\n yourContacts.length !== directContacts.length ||\n peopleOnPaypal.length !== nonDirectContacts.length\n if (items.length === 0) {\n // If there is no search result for both your contacts and people on paypal\n if (hasSelected) {\n items = [sameRecipientMessage]\n } else if (isInputEmail) {\n items = [emailMessage]\n } else if (isInputPhone) {\n items = [phoneMessage]\n } else {\n items = [noSearchedContactsMessage]\n }\n }\n return items\n}\n\nconst TITLE_SIZE = hasSearchContactCompactLayout()\n ? AUTOCOMPLETE_ITEM_SIZE.TITLE_SM\n : AUTOCOMPLETE_ITEM_SIZE.TITLE\n\nconst ITEM_SIZE = hasSearchContactCompactLayout()\n ? AUTOCOMPLETE_ITEM_SIZE.ITEM_SM\n : AUTOCOMPLETE_ITEM_SIZE.ITEM\n\n// return an array of item sizes for VariableSizeList (react window)\nexport const getItemSizes = (items, isLoadingPeers = false) => {\n let itemSizes = []\n const singleLoadedItem = items.length === 1 && !isLoadingPeers\n if (singleLoadedItem) {\n itemSizes = [AUTOCOMPLETE_ITEM_SIZE.ITEM] // use full size for 1 item\n } else {\n itemSizes = items.map(item => {\n return item.type === AUTOCOMPLETE_ITEM_TYPE.TITLE ? TITLE_SIZE : ITEM_SIZE\n })\n }\n if (isLoadingPeers) {\n // a placeholder for spinner\n itemSizes.push(ITEM_SIZE)\n }\n return itemSizes\n}\n\nexport const getLoaderProps = ({\n hasNextPage,\n items,\n isLoading,\n loadNextPage,\n}) => {\n // when there are more items to be loaded,\n // itemCount is increased by 1 to create a placeholder for loading spinner\n const itemCount = hasNextPage ? items.length + 1 : items.length\n\n // Only load 1 page of items at a time.\n // Pass an empty callback to InfiniteLoader in case it asks to load more than once.\n const loadMoreItems = isLoading ? () => {} : loadNextPage\n // Every row is loaded except for our loading indicator row.\n const isItemLoaded = index => !hasNextPage || index < items.length\n // getSize is a function to handle different sizes of items in the display results\n const itemSizes = getItemSizes(items, isLoading)\n\n return { itemCount, loadMoreItems, isItemLoaded, itemSizes }\n}\n\n/**\n * Implementation for status message. Only added when menu is open.\n * Will specify if there are result(s) found.\n *\n * @param {Object} param the downshift state and other relevant properties\n * @return {String} the a11y status message\n */\nexport function getA11yStatusMessage({\n isOpen,\n resultCount,\n previousResultCount,\n inputValue,\n}) {\n if (!isOpen) {\n return ''\n }\n\n if (resultCount !== previousResultCount) {\n if (resultCount === 1 && !isPhoneOrEmail(inputValue)) {\n // There would be an error message if no results found.\n return i18n('autocomplete.a11y.noResults')\n }\n return i18n('autocomplete.a11y.resultsFound')\n }\n\n return ''\n}\n","// @flow\n/**\n * Dropdown menu for autocomplete\n */\nimport React from 'react'\nimport { CSSTransitionGroup } from 'react-transition-group'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { VariableSizeList } from 'react-window'\nimport glamorous from 'glamorous'\nimport ReactFlipMove from 'react-flip-move'\nimport { LoadingSpinner, BodyText } from '@paypalcorp/pp-react'\nimport classnames from 'classnames'\nimport content from 'pp-react-l10n'\nimport {\n smallAndSmaller,\n searchInputWithSmallAndSmaller,\n} from '../../../../../lib/styles/media-queries'\nimport glamorousIcon from '../../../../../lib/glamorous-icon'\nimport emailIcon from '../svg/emailIcon.svg'\nimport phoneIcon from '../svg/phoneIcon.svg'\nimport { getItemSizes } from '../autocomplete-utils'\nimport {\n AUTOCOMPLETE_ITEM_TYPE,\n AUTOCOMPLETE_ITEM_SIZE,\n} from '../../../../constants'\nimport ContactAvatar from 'transfer/components/contactAvatar'\nimport { isWebIncreaseTopContacts } from 'experiments/web-increase-top-contacts'\nimport { SEARCH_INPUT_WIDTH } from '../../../../../../../lib/constants'\n\nconst i18n = content('transfer/page/recipient')\n\nconst itemHighlightedClassName = 'p2p-autocomplete-item-highlighted'\nconst itemRootClassName = 'p2p-autocomplete-root'\nconst MenuDiv = glamorous.div(\n {\n position: 'absolute',\n maxHeight: '350px',\n marginTop: 10,\n borderRadius: '0.75rem',\n overflowY: 'auto',\n zIndex: 10,\n width: isWebIncreaseTopContacts() ? SEARCH_INPUT_WIDTH : 500,\n backgroundColor: 'white',\n boxShadow:\n '0 0 0.5rem rgba(0, 0, 0, 0.04), 0 0.125rem 1.125rem rgba(0, 0, 0, 0.1);',\n\n [`& .${itemRootClassName}`]: {\n cursor: 'pointer',\n color: '#2c2e2f',\n position: 'relative',\n },\n [`& .${itemHighlightedClassName}`]: {\n background: '#f1f8fc',\n },\n [isWebIncreaseTopContacts()\n ? searchInputWithSmallAndSmaller\n : smallAndSmaller]: {\n width: 'unset',\n left: 'calc(1% + 24px)',\n right: 'calc(1% + 24px)',\n },\n },\n ({ isRequestFlow }) => {\n return { marginTop: isRequestFlow ? 2 : 0 }\n }\n)\n\nconst enterAnimation = {\n from: {\n transform: 'scale(.95)',\n opacity: 0,\n },\n to: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nconst leaveAnimation = {\n from: {\n transform: 'scale(1)',\n opacity: 1,\n },\n to: {\n transform: 'scale(.95)',\n opacity: 0,\n },\n}\n\nconst iconProp = {\n height: 40,\n width: 40,\n marginRight: 15,\n '& svg': { height: 48, width: 48 },\n}\nconst EmailIcon = glamorousIcon(iconProp)\nEmailIcon.defaultProps = { svg: emailIcon }\nconst PhoneIcon = glamorousIcon(iconProp)\nPhoneIcon.defaultProps = { svg: phoneIcon }\n\nconst RowContainer = glamorous.div(\n {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n height: '100%',\n padding: '0 1rem',\n },\n ({ extraPadding }) => {\n if (extraPadding) {\n return { padding: '0 1.5625rem' }\n }\n }\n)\n\nconst renderItemContent = (type, children) => {\n return (\n <>\n {type === AUTOCOMPLETE_ITEM_TYPE.SPINNER ? (\n {children}\n ) : (\n \n \n {children}\n \n \n )}\n \n )\n}\n\nconst AvatarContainer = glamorous.div({ marginRight: '1rem' })\n\n// getRow return a function used to display an item in VariableSizeList\nconst getRow = ({\n itemsToRender,\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n // eslint-disable-next-line\n}) => ({ index, style }) => {\n // When current index is greater than or equal to the current length of items,\n // we show a spinner (still fetching)\n if (index >= itemsToRender.length) {\n return (\n \n {renderItemContent(\n AUTOCOMPLETE_ITEM_TYPE.SPINNER,\n \n )}\n \n )\n }\n // Needs to store different types of items in an array to use react-window\n const item = itemsToRender[index]\n let itemContent = {}\n const phoneOrEmailMessage = isRequestFlow\n ? `${i18n('autocomplete.requestFrom')} ${inputValue}`\n : `${i18n('autocomplete.sendTo')} ${inputValue}`\n\n switch (item.type) {\n case AUTOCOMPLETE_ITEM_TYPE.TITLE:\n case AUTOCOMPLETE_ITEM_TYPE.TURNON:\n case AUTOCOMPLETE_ITEM_TYPE.MESSAGE:\n itemContent = renderItemContent(item.type, item.content)\n break\n case AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL:\n itemContent = (\n \n \n \n \n {phoneOrEmailMessage}\n \n )\n break\n default:\n itemContent = renderItem(item, index, inputValue)\n }\n\n return (\n \n {itemContent}\n \n )\n}\n\ntype Props = {\n items: [],\n renderItem: ({}, index: number, inputValue?: string) => any,\n renderError: ({}) => any,\n downshift: Object,\n loadNextPage?: ({}) => any,\n hasNextPage?: boolean,\n isSearchingPeers?: boolean,\n isLoadingPeers?: boolean,\n isRequestFlow?: boolean,\n}\nexport default function AutoCompleteMenu({\n items,\n renderItem,\n renderError,\n downshift,\n loadNextPage,\n hasNextPage,\n isSearchingPeers,\n isLoadingPeers,\n isRequestFlow,\n}: Props) {\n const { isOpen, highlightedIndex, getItemProps, inputValue } = downshift\n if (renderError) {\n return renderError(downshift)\n }\n if (!isOpen) {\n return null\n }\n if (!inputValue) {\n return null\n }\n\n const itemsToRender = items\n if (!itemsToRender.length) {\n return (\n \n
\n {!isLoadingPeers && !isSearchingPeers\n ? renderItemContent(\n AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n i18n('autocomplete.noSearchedContacts', { inputValue })\n )\n : renderItemContent(\n AUTOCOMPLETE_ITEM_TYPE.SPINNER,\n \n )}\n
\n
\n )\n }\n\n // when there are more items to be loaded,\n // itemCount is increased by 1 to create a placeholder for loading spinner\n const itemCount = hasNextPage\n ? itemsToRender.length + 1\n : itemsToRender.length\n\n // Only load 1 page of items at a time.\n // Pass an empty callback to InfiniteLoader in case it asks to load more than once.\n const loadMoreItems = isLoadingPeers ? () => {} : loadNextPage\n // Every row is loaded except for our loading indicator row.\n const isItemLoaded = index => !hasNextPage || index < itemsToRender.length\n // getSize is a function to handle different sizes of items in the display results\n const itemSizes = getItemSizes(itemsToRender, isLoadingPeers)\n\n const variableSizeListWidth = isWebIncreaseTopContacts()\n ? SEARCH_INPUT_WIDTH\n : 500\n return (\n \n \n \n \n {({ onItemsRendered, ref }) => (\n 5 ? 340 : itemSizes.reduce((a, b) => a + b, 0)\n }\n itemCount={itemCount}\n onItemsRendered={onItemsRendered}\n itemSize={index => itemSizes[index]}\n ref={ref}\n >\n {getRow({\n itemsToRender,\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n })}\n \n )}\n \n \n \n \n )\n}\n","// @flow\n/**\n * Dropdown menu for autocomplete\n */\nimport React, { useState } from 'react'\nimport { CSSTransitionGroup } from 'react-transition-group'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { VariableSizeList } from 'react-window'\nimport glamorous from 'glamorous'\nimport ReactFlipMove from 'react-flip-move'\nimport classnames from 'classnames'\nimport content from 'pp-react-l10n'\nimport { Tabs } from '@paypalcorp/pp-react'\nimport { css } from 'lib/paypalphrodite'\nimport styles from '../../../loader.styles'\nimport { smallAndSmaller } from '../../../../../lib/styles/media-queries'\nimport glamorousIcon from '../../../../../lib/glamorous-icon'\nimport emailIcon from '../svg/emailIcon.svg'\nimport phoneIcon from '../svg/phoneIcon.svg'\nimport { getLoaderProps } from '../autocomplete-utils'\nimport { AUTOCOMPLETE_ITEM_TYPE } from '../../../../constants'\n\nconst i18n = content('transfer/page/recipient')\n\nconst itemHighlightedClassName = 'p2p-autocomplete-item-highlighted'\nconst itemRootClassName = 'p2p-autocomplete-root'\nconst MenuDiv = glamorous.div({\n position: 'absolute',\n maxHeight: '350px',\n marginTop: 10,\n borderRadius: 5,\n overflowY: 'auto',\n zIndex: 10,\n width: '500px',\n backgroundColor: 'white',\n boxShadow: '2px 4px 10px rgba(0, 0, 0, 0.15)',\n\n [`& .${itemRootClassName}`]: {\n cursor: 'pointer',\n color: '#2c2e2f',\n position: 'relative',\n },\n [`& .${itemHighlightedClassName}`]: {\n background: '#f1f8fc',\n },\n [smallAndSmaller]: {\n width: 'unset',\n left: 'calc(1% + 24px)',\n right: 'calc(1% + 24px)',\n },\n})\n\nconst enterAnimation = {\n from: {\n transform: 'scale(.95)',\n opacity: 0,\n },\n to: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nconst leaveAnimation = {\n from: {\n transform: 'scale(1)',\n opacity: 1,\n },\n to: {\n transform: 'scale(.95)',\n opacity: 0,\n },\n}\n\nconst MenuItem = glamorous.div(\n {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n fontSize: '15px',\n height: '100%',\n },\n ({ itemType }) => {\n switch (itemType) {\n case AUTOCOMPLETE_ITEM_TYPE.TURNON:\n return {\n padding: '30px 25px',\n color: '#0070BA',\n fontWeight: 'bold',\n }\n case AUTOCOMPLETE_ITEM_TYPE.SPINNER:\n return {\n padding: '22px 10px',\n }\n case AUTOCOMPLETE_ITEM_TYPE.MESSAGE:\n return {\n padding: '0 25px',\n }\n case AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL:\n return {\n padding: '20px 15px',\n }\n case AUTOCOMPLETE_ITEM_TYPE.TITLE:\n return {\n background: '#f5fbfe',\n padding: '15px 25px',\n fontWeight: 'bold',\n }\n default:\n return {}\n }\n }\n)\n\nconst iconProp = {\n height: 40,\n width: 40,\n marginRight: 15,\n '& svg': { height: 48, width: 48 },\n}\nconst EmailIcon = glamorousIcon(iconProp)\nEmailIcon.defaultProps = { svg: emailIcon }\nconst PhoneIcon = glamorousIcon(iconProp)\nPhoneIcon.defaultProps = { svg: phoneIcon }\n\nconst renderItemContent = (type, children) => {\n return {children}\n}\n\n// getRow return a function used to display an item in VariableSizeList\nconst getRow = ({\n items,\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n // eslint-disable-next-line\n}) => ({ index, style }) => {\n // When current index is greater than or equal to the current length of items,\n // we show a spinner (still fetching)\n if (index >= items.length) {\n return (\n \n
\n
\n )\n }\n // Needs to store different types of items in an array to use react-window\n const item = items[index]\n let itemContent = {}\n const phoneOrEmailMessage = isRequestFlow\n ? `${i18n('autocomplete.requestFrom')} ${inputValue}`\n : `${i18n('autocomplete.sendTo')} ${inputValue}`\n\n switch (item.type) {\n case AUTOCOMPLETE_ITEM_TYPE.TITLE:\n case AUTOCOMPLETE_ITEM_TYPE.TURNON:\n case AUTOCOMPLETE_ITEM_TYPE.MESSAGE:\n itemContent = renderItemContent(item.type, item.content)\n break\n case AUTOCOMPLETE_ITEM_TYPE.PHONE_OR_EMAIL:\n if (item.content === 'emailMessage') {\n itemContent = (\n \n {phoneOrEmailMessage}\n \n )\n } else {\n itemContent = (\n \n {phoneOrEmailMessage}\n \n )\n }\n break\n default:\n itemContent = renderItem(item, index, inputValue)\n }\n\n return (\n \n {itemContent}\n \n )\n}\n\nconst renderMenuContent = ({\n items,\n isLoading,\n isSearching,\n panelId,\n isItemLoaded,\n itemCount,\n loadMoreItems,\n itemSizes,\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n}) => {\n if (!items.length) {\n return !isLoading && !isSearching\n ? renderItemContent(\n AUTOCOMPLETE_ITEM_TYPE.MESSAGE,\n i18n('autocomplete.noSearchedContacts', { inputValue })\n )\n : renderItemContent(\n AUTOCOMPLETE_ITEM_TYPE.SPINNER,\n
\n )\n }\n\n return (\n
\n \n {({ onItemsRendered, ref }) => (\n 4 ? 280 : itemSizes.reduce((a, b) => a + b, 0)}\n itemCount={itemCount}\n onItemsRendered={onItemsRendered}\n itemSize={index => itemSizes[index]}\n ref={ref}\n >\n {getRow({\n items,\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n })}\n \n )}\n \n
\n )\n}\n\ntype Props = {\n tabProps: [],\n tabPanelProps: [],\n renderItem: ({}, index: number, inputValue?: string) => any,\n renderError: ({}) => any,\n downshift: Object,\n isRequestFlow?: boolean,\n}\nexport default function AutoCompleteTabMenu({\n tabProps,\n tabPanelProps,\n renderItem,\n renderError,\n downshift,\n isRequestFlow,\n}: Props) {\n const { isOpen, highlightedIndex, getItemProps, inputValue } = downshift\n const [tabIndex, setTabIndex] = useState(0)\n\n if (renderError) {\n return renderError(downshift)\n }\n if (!isOpen) {\n return null\n }\n if (!inputValue) {\n return null\n }\n\n return (\n \n \n \n {\n event.preventDefault()\n setTabIndex(index)\n }}\n >\n {tabPanelProps.map(panelProp => {\n return renderMenuContent({\n ...panelProp,\n ...getLoaderProps({\n ...panelProp,\n }),\n getItemProps,\n isRequestFlow,\n inputValue,\n renderItem,\n highlightedIndex,\n })\n })}\n \n \n \n \n )\n}\n","import AutoCompleteMenu from './autocompleteMenu'\nimport AutoCompleteTabMenu from './autocompleteTabMenu'\nimport { isBizSearchTreatment } from '../../../../../experiments/bizSearch'\n\nconst Component = isBizSearchTreatment()\n ? AutoCompleteTabMenu\n : AutoCompleteMenu\nexport default Component\n","// @flow\n/**\n * Input component for (single) autocomplete\n */\nimport React from 'react'\nimport { Div } from 'glamorous'\nimport { SearchInput } from '@paypalcorp/pp-react'\n\ntype Props = {\n downshift: Object,\n inputProps: Object,\n onKeyDown: () => void,\n onKeyUp: () => void,\n}\nconst AutoCompleteInput = ({\n downshift,\n inputProps,\n onKeyDown,\n onKeyUp,\n}: Props) => {\n const { getInputProps } = downshift\n const { placeholder = '', style = {} } = inputProps\n\n return (\n
\n \n
\n )\n}\n\nexport default AutoCompleteInput\n","/**\n * using downshift. This component can be used both as single autocomplete\n * or multi autocomplete\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport Downshift from 'downshift'\nimport content from 'pp-react-l10n'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport MultiAutoCompleteInput from './multi-autocomplete-input'\nimport AutoCompleteMenu from './autocomplete-tab-menu'\nimport AutoCompleteInput from './autocomplete-input'\nimport * as unifiedActions from '../../../actions/unified-actions'\nimport { itemsPrep, getA11yStatusMessage } from './autocomplete-utils'\nimport {\n ActionTypes as types,\n AUTOCOMPLETE_MENU_TAB as menuTab,\n} from '../../../constants'\nimport { PRODUCT_FLOWS } from '../../../../../../lib/constants'\nimport { isBizSearchTreatment } from '../../../../experiments/bizSearch'\n\nconst i18n = content('transfer/page/recipient')\n\nexport class AutoComplete extends React.Component {\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n // For directory search\n directContacts: PropTypes.array,\n nonDirectContacts: PropTypes.array,\n recipients: PropTypes.array,\n isSearchingPeers: PropTypes.bool,\n isLoadingPeers: PropTypes.bool,\n nonDirectPageNumber: PropTypes.number,\n nonDirectTotalPages: PropTypes.number,\n excludeRecipients: PropTypes.func,\n showSearchError: PropTypes.bool,\n filter: PropTypes.func,\n // For Biz name search\n isLoadingBusinesses: PropTypes.bool,\n bizDirectContacts: PropTypes.array,\n bizNonDirectContacts: PropTypes.array,\n bizNonDirectPageNumber: PropTypes.number,\n bizNonDirectTotalPages: PropTypes.number,\n // item rendering in dropdown menu\n renderItem: PropTypes.func.isRequired,\n // props that can apply to directly\n inputProps: PropTypes.object,\n // unique key for items\n itemIdProp: PropTypes.string,\n showButtonControls: PropTypes.bool,\n // error rendering\n renderError: PropTypes.func,\n renderBeforeInput: PropTypes.func,\n // custom input rendering; a default input component is provided\n renderInput: PropTypes.func,\n renderAfterInput: PropTypes.func,\n // custom dropdown menu rendering; a default component is provided\n renderMenu: PropTypes.func,\n onChange: PropTypes.func,\n onStateChange: PropTypes.func,\n inputValue: PropTypes.string,\n submit: PropTypes.func, // called to submit on enter\n shouldSubmitOnEnter: PropTypes.bool,\n isInputValid: PropTypes.bool,\n itemToString: PropTypes.func,\n\n // props for multi autocomplete\n multi: PropTypes.bool,\n selectedItem: PropTypes.array,\n renderSelectedItem: PropTypes.func,\n removeSelectedItem: PropTypes.func,\n submitItem: PropTypes.func, // called when an item is selected\n isAndroid: PropTypes.bool, // by default if no value is supplied it will be false,\n isMgm: PropTypes.bool,\n }\n\n state = {\n selectedItemIndex: -1,\n }\n\n static defaultProps = {\n multi: false,\n filter: () => {},\n shouldSubmitOnEnter: true,\n isAndroid: false,\n renderBeforeInput: () => null,\n renderAfterInput: () => null,\n renderInput: ({ multi, ...props }) =>\n multi ? (\n \n ) : (\n \n ),\n renderMenu: props => ,\n submit: () => {},\n inputProps: {},\n itemToString: () => {},\n showSearchError: false,\n }\n\n handleSelectedItemSelection = (item, index) => {\n this.setSelectedItemIndex(index)\n }\n\n handleKeyUp = (event, highlightedIndex) => {\n // Android phone keyboard throws 229 keycode for all keys,\n // Therefore, this is a workaround for android to handle various keys in keyup event\n if (this.props.isAndroid) {\n const value = this.props.inputValue\n let inputCharCode = null\n let inputLastChar = null\n if (value) {\n // Extract the last character from the input value and get character code for that character\n inputLastChar = value.substr(value.length - 1)\n inputCharCode = inputLastChar.charCodeAt(0)\n }\n if (!this.props.multi) {\n // Enter is the only key that can be identified by event.key code\n if (event.key === 'Enter') {\n return this.handleEnter(event, highlightedIndex)\n }\n return\n }\n\n let actualKey = null\n\n switch (inputCharCode) {\n // Character Code for comma\n case 44:\n actualKey = 'Delimiter'\n break\n // Character code for semicolon\n case 59:\n actualKey = 'Delimiter'\n break\n default:\n if (event.key === 'Enter') {\n actualKey = event.key\n } else if (inputLastChar) {\n actualKey = inputLastChar\n } else {\n // If none of the character codes match, we default to Backspace\n // This is done as backspace cannot be detected in any other way\n actualKey = 'Backspace'\n }\n break\n }\n\n switch (actualKey) {\n case 'Enter':\n return this.handleEnter(event, highlightedIndex)\n case ',':\n case ';':\n case 'Delimiter':\n return this.handleDelimiter(event)\n case 'Backspace':\n return this.handleBackspace(event)\n default:\n return this.setState({ selectedItemIndex: -1 })\n }\n }\n }\n\n handleKeyDown = (event, highlightedIndex) => {\n if (!this.props.isAndroid) {\n if (!this.props.multi) {\n if (event.key === 'Enter') {\n return this.handleEnter(event, highlightedIndex)\n }\n return\n }\n\n // Some browsers don't support `;` or `,` in `event.key` property, so\n // default to `event.keyCode`.\n const actualKey =\n event.keyCode === 186 || event.keyCode === 188 ? 'Delimiter' : event.key\n\n switch (actualKey) {\n case 'ArrowLeft':\n return this.handleArrowLeft(event)\n case 'ArrowRight':\n return this.handleArrowRight(event)\n case 'Escape':\n return this.setState({ selectedItemIndex: -1 })\n case 'Enter':\n return this.handleEnter(event, highlightedIndex)\n case ',':\n case ';':\n case 'Delimiter':\n return this.handleDelimiter(event)\n case 'Backspace':\n return this.handleBackspace(event)\n default:\n return this.setState({ selectedItemIndex: -1 })\n }\n }\n }\n\n handleArrowLeft = event => {\n // Focus the previous selected recipient.\n this.setSelectedItemIndex(this.state.selectedItemIndex - 1)\n }\n\n handleArrowRight = event => {\n // Focus the next selected recipient.\n this.setSelectedItemIndex(this.state.selectedItemIndex + 1)\n }\n\n /**\n * Called when the user wants to submit a typed-out recipient.\n */\n handleDelimiter = event => {\n const { inputValue, submitItem, isInputValid } = this.props\n if (inputValue && isInputValid) {\n event.preventDefault()\n submitItem(event)\n }\n }\n\n handleBackspace = event => {\n const { selectedItem, inputValue, removeSelectedItem } = this.props\n const { selectedItemIndex } = this.state\n\n // If an item is selected, delete it.\n if (selectedItemIndex !== -1) {\n const index = selectedItemIndex\n this.setState({ selectedItemIndex: -1 })\n removeSelectedItem(selectedItem[index], index)\n return false\n }\n\n // If no input value and there are selected items, focus\n // the last selected item.\n if (selectedItem.length && !inputValue) {\n this.setSelectedItemIndex(selectedItem.length - 1)\n return false\n }\n }\n\n handleEnter = (event, highlightedIndex) => {\n const {\n selectedItem,\n inputValue,\n submitItem,\n shouldSubmitOnEnter,\n submit,\n } = this.props\n\n if (!this.props.multi) {\n if (inputValue && this.props.isInputValid && highlightedIndex === null) {\n event.preventDefault()\n return shouldSubmitOnEnter && submit(event)\n }\n return\n }\n // if there's not anything currently typed in, we should try to submit the page\n if (!inputValue && selectedItem.length) {\n event.preventDefault()\n return shouldSubmitOnEnter && submit(event)\n }\n\n // Submit the valid typed-out recipient when no item is selected in dropdown.\n if (inputValue && this.props.isInputValid && highlightedIndex === null) {\n event.preventDefault()\n return submitItem(event)\n }\n // when hitting enter on a dropdown item, downshift will handle that\n }\n\n setSelectedItemIndex = index => {\n // Do nothing if there is a typed-out recipient or there are no selected recipients.\n const { inputValue, selectedItem } = this.props\n if (inputValue || !selectedItem.length) {\n return\n }\n\n this.setState(prevState => {\n // Wrap index around.\n if (index < 0) {\n index = selectedItem.length - 1\n } else if (index >= selectedItem.length) {\n index = 0\n }\n return { selectedItemIndex: index }\n })\n }\n\n loadNextPage = (isLoadPeople = true) => () => {\n const { dispatch, excludeRecipients } = this.props\n const isRequestFlow = !!excludeRecipients\n let data = {}\n if (isLoadPeople) {\n dispatch({ type: types.PEERS.LOADING_PEERS })\n data = {\n direct: {\n include: false,\n },\n bizDirect: {\n include: false,\n },\n nonDirect: {\n include: true,\n pageNumber: this.props.nonDirectPageNumber,\n },\n }\n } else {\n dispatch({ type: types.PEERS.LOADING_BUSINESSES })\n data = {\n direct: {\n include: false,\n },\n bizDirect: {\n include: false,\n },\n bizNonDirect: {\n include: true,\n pageNumber: this.props.bizNonDirectPageNumber,\n },\n }\n }\n data.query = this.props.inputValue\n data.identifier = isRequestFlow ? PRODUCT_FLOWS.REQUEST : PRODUCT_FLOWS.SEND\n\n const response = unifiedActions.retrievePeersDebounced(data)\n response\n .then(res => {\n if (isLoadPeople) {\n dispatch(unifiedActions.receivedLoadedPeers(res))\n } else {\n dispatch(unifiedActions.receivedLoadedBusinesses(res))\n }\n\n dispatch({ type: types.PEERS.RETRIEVED_PEERS })\n })\n .catch(() => {\n dispatch({ type: types.PEERS.SEARCH_ERROR })\n })\n }\n\n render() {\n const {\n renderBeforeInput,\n renderInput,\n renderAfterInput,\n renderMenu,\n renderSelectedItem,\n renderItem,\n inputProps,\n renderError,\n showButtonControls,\n multi,\n excludeRecipients,\n directContacts,\n nonDirectContacts,\n recipients,\n isSearchingPeers,\n isLoadingPeers,\n showSearchError,\n isLoadingBusinesses,\n bizDirectContacts,\n bizNonDirectContacts,\n nonDirectPageNumber,\n nonDirectTotalPages,\n bizNonDirectPageNumber,\n bizNonDirectTotalPages,\n isMgm,\n ...rest\n } = this.props\n\n rest.getA11yStatusMessage = getA11yStatusMessage\n\n const { selectedItemIndex } = this.state\n const hasNextPage = nonDirectPageNumber <= nonDirectTotalPages\n\n const hasNextBusinessPage = bizNonDirectPageNumber <= bizNonDirectTotalPages\n\n return (\n \n {downshift => {\n const { highlightedIndex, inputValue } = downshift\n const searchedItems = itemsPrep({\n directContacts,\n nonDirectContacts,\n inputValue,\n isSearchingPeers,\n excludeRecipients,\n recipients,\n hasNextPage,\n showSearchError,\n isPeopleSearch: true,\n isMgm,\n })\n\n const tabProps = [\n {\n id: menuTab.PEOPLE,\n panelId: menuTab.PEOPLE_PANEL_ID,\n label: i18n('autocomplete.people'),\n },\n {\n id: menuTab.BUSINESS,\n panelId: menuTab.BUSINESS_PANEL_ID,\n label: i18n('autocomplete.businesses'),\n },\n ]\n\n const tabPanelProps = [\n {\n id: menuTab.PEOPLE,\n panelId: menuTab.PEOPLE_PANEL_ID,\n items: itemsPrep({\n directContacts,\n nonDirectContacts,\n inputValue,\n isSearchingPeers,\n excludeRecipients,\n recipients,\n hasNextPage,\n showSearchError,\n isPeopleSearch: true,\n }),\n isLoading: isLoadingPeers,\n isSearching: isSearchingPeers,\n hasNextPage: hasNextPage,\n loadNextPage: this.loadNextPage(),\n },\n {\n id: menuTab.BUSINESS,\n panelId: menuTab.BUSINESS_PANEL_ID,\n items: itemsPrep({\n directContacts: bizDirectContacts,\n nonDirectContacts: bizNonDirectContacts,\n inputValue,\n isSearchingPeers,\n excludeRecipients,\n recipients,\n hasNextPage: hasNextBusinessPage,\n showSearchError,\n isPeopleSearch: false,\n }),\n isLoading: isLoadingBusinesses,\n isSearching: isSearchingPeers,\n hasNextPage: hasNextBusinessPage,\n loadNextPage: this.loadNextPage(false),\n },\n ]\n\n return (\n
\n
\n {renderBeforeInput(downshift)}\n {renderInput({\n downshift,\n multi,\n renderSelectedItem,\n selectedItemIndex,\n inputProps,\n showButtonControls,\n onKeyDown: e => this.handleKeyDown(e, highlightedIndex),\n onKeyUp: e => this.handleKeyUp(e, highlightedIndex),\n handleSelectedItemSelection: this.handleSelectedItemSelection,\n })}\n {renderAfterInput(downshift)}\n
\n {isBizSearchTreatment()\n ? renderMenu({\n downshift,\n tabProps,\n tabPanelProps,\n renderItem,\n renderError,\n isRequestFlow: !!excludeRecipients,\n })\n : renderMenu({\n downshift,\n renderItem,\n renderError,\n items: searchedItems,\n loadNextPage: this.loadNextPage(),\n isSearchingPeers,\n isLoadingPeers,\n hasNextPage,\n isRequestFlow: !!excludeRecipients,\n })}\n
\n )\n }}\n
\n )\n }\n}\n\nexport default connect(({ contacts, multiRecipient, server }) => ({\n recipients: multiRecipient.recipients,\n directContacts: contacts.directContacts,\n nonDirectContacts: contacts.nonDirectContacts,\n isSearchingPeers: contacts.isSearchingPeers,\n isLoadingPeers: contacts.isLoadingPeers,\n nonDirectPageNumber: contacts.nonDirectPageNumber,\n nonDirectTotalPages: contacts.nonDirectTotalPages,\n showSearchError: contacts.showSearchError,\n isLoadingBusinesses: contacts.isLoadingBusinesses,\n bizDirectContacts: contacts.bizDirectContacts,\n bizNonDirectContacts: contacts.bizNonDirectContacts,\n bizNonDirectPageNumber: contacts.bizNonDirectPageNumber,\n bizNonDirectTotalPages: contacts.bizNonDirectTotalPages,\n isMgm: server.isMgm,\n}))(AutoComplete)\n","import autocomplete from './autocomplete'\n\nexport default autocomplete\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _browserWurfl = require('browser-wurfl');\n\nvar _browserWurfl2 = _interopRequireDefault(_browserWurfl);\n\nvar _ppReact = require('@paypalcorp/pp-react');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n * The TextInput component with floating label capability\n *\n * Floating Label design pattern\n * http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels\n * http://bradfrost.com/blog/post/float-label-pattern/\n */\n\nvar sysColorBackgroundMediumContrast = _ppReact.PAYPAL_THEME.sysColorBackgroundMediumContrast;\n\n\nvar COLORS = {\n blue: '#0070ba',\n gray: '#6c7378'\n};\n\nvar STYLES = {\n textInput: {\n width: '100%',\n height: 'auto',\n padding: 0,\n margin: '10px 0',\n position: 'relative',\n display: 'table',\n tableLayout: 'fixed'\n },\n\n placeholder: {\n padding: 0,\n position: 'absolute',\n top: 16,\n left: 12,\n cursor: 'text'\n },\n\n input: {\n width: '100%',\n height: 50,\n padding: 10,\n margin: 0,\n display: 'table-cell',\n boxSizing: 'border-box',\n border: '1px solid',\n borderColor: COLORS.gray,\n borderRadius: 5,\n background: '#fff',\n fontSize: 15,\n lineHeight: '20px',\n\n WebkitTransition: 'all 0.25s ease-in-out',\n MozTransition: 'all 0.25s ease-in-out',\n msTransition: 'all 0.25s ease-in-out',\n OTransition: 'all 0.25s ease-in-out',\n transition: 'all 0.25s ease-in-out'\n }\n\n /**\n * Check if value actually has a value (not undefined, not null, not empty string)\n * @param {String|Number} value the input value\n * @return {Boolean} if the value actually has some value\n */\n};var hasValue = function hasValue(value) {\n return value !== undefined && value !== null && value !== '';\n};\n\nvar TextInput = function (_Component) {\n _inherits(TextInput, _Component);\n\n function TextInput() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, TextInput);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = TextInput.__proto__ || Object.getPrototypeOf(TextInput)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n hovered: false,\n focused: false,\n floatLabel: hasValue(_this.props.value),\n placeholder: ''\n\n /**\n * Clear the timeout when we're about to unmount\n */\n }, _this.handleMouseOver = function (event) {\n _this.props.onMouseOver(event);\n _this.setState(function () {\n return { hovered: true };\n });\n }, _this.handleMouseOut = function (event) {\n _this.props.onMouseOut(event);\n _this.setState(function () {\n return { hovered: false };\n });\n }, _this.handleFocus = function (event) {\n _this.props.onFocus(event);\n _this.setState(function () {\n return {\n focused: true\n };\n });\n\n // wait until the label floating up animation is done before we show the placeholder\n _this._timeoutID = setTimeout(function () {\n if (_this.state.floatLabel && !!_this.props.label) {\n _this.setState(function (state, props) {\n return { placeholder: props.helpText };\n });\n }\n }, 150);\n }, _this.handleBlur = function (event) {\n _this.props.onBlur(event);\n _this.setState(function () {\n return {\n focused: false,\n placeholder: ''\n };\n });\n }, _this.focusIn = function () {\n setTimeout(function () {\n return _this._input.focus();\n }, 0);\n }, _this.renderClearInput = function () {\n if (_browserWurfl2.default.canShowClearInput && hasValue()) {\n return _react2.default.createElement('div', { className: 'clearInput icon-close-small', onClick: _this.focusIn });\n }\n\n return null;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(TextInput, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.clearTimeout(this._timeoutID);\n }\n\n /**\n * Decide if we should float the label if the value has changed\n * @param {Object} props the next props\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // strip out custom props and only get the props an can consume\n var _props = this.props,\n className = _props.className,\n helpText = _props.helpText,\n wrapperDataAttributes = _props.wrapperDataAttributes,\n _props$styles = _props.styles,\n styles = _props$styles === undefined ? {} : _props$styles,\n _props$innerRef = _props.innerRef,\n innerRef = _props$innerRef === undefined ? function () {} : _props$innerRef,\n inputProps = _objectWithoutProperties(_props, ['className', 'helpText', 'wrapperDataAttributes', 'styles', 'innerRef']);\n\n var IS_VX = !!(className && className.includes('vx_'));\n\n // text input wrapper styles\n var textInputStyles = _extends({}, IS_VX ? { position: 'relative' } : STYLES.textInput, styles.textInput);\n\n // add the floated label styles if the label sholuld be floated\n var labelStyles = _extends({}, STYLES.placeholder, styles.placeholder);\n\n // if dir is rtl, flip the position of the placeholder\n if (this.props.dir === 'rtl') {\n labelStyles = _extends({}, labelStyles, { left: 'auto', right: 12 });\n }\n\n // move the actual inuput down when the label is floated\n // change the border color based on if the text input should be highlighted\n var borderColor = this.state.hovered || this.state.focused ? COLORS.blue : COLORS.gray;\n var inputStyles = {};\n if (!IS_VX) {\n inputStyles = _extends({}, inputStyles, STYLES.input);\n }\n inputStyles = _extends({}, inputStyles, {\n padding: 12,\n borderColor: borderColor\n }, styles.input);\n\n // decide if we should handle events when input is readonly\n var handlers = !this.props.readOnly && {\n onMouseOver: this.handleMouseOver,\n onMouseOut: this.handleMouseOut,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n };\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: className,\n style: textInputStyles\n }, wrapperDataAttributes),\n _react2.default.createElement(\n 'label',\n {\n htmlFor: this.props.id,\n style: this.props.value ? _extends({}, labelStyles, {\n opacity: 0\n }) : labelStyles\n },\n _react2.default.createElement(\n _ppReact.BodyText,\n {\n style: {\n color: sysColorBackgroundMediumContrast,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n }\n },\n this.props.label\n )\n ),\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(c) {\n _this2._input = c;\n innerRef(c);\n },\n placeholder: this.state.placeholder,\n 'aria-label': this.props.label,\n style: inputStyles\n }, handlers)),\n this.renderClearInput()\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(props, state) {\n return {\n floatLabel: hasValue(props.value) || state.focused\n };\n }\n\n /**\n * Float the label on focus\n */\n\n\n /**\n * Don't float the label on blur, but keep it floated if there's an input value\n */\n\n\n /**\n * Renders the clear input button for touch devices not on IE>10 where -ms-clear is used\n * @return {ReactElement} clear input button\n */\n\n }]);\n\n return TextInput;\n}(_react.Component);\n\nTextInput.propTypes = {\n className: _propTypes2.default.string,\n label: _propTypes2.default.string,\n helpText: _propTypes2.default.string,\n\n type: _propTypes2.default.string,\n name: _propTypes2.default.string.isRequired,\n id: _propTypes2.default.string.isRequired,\n wrapperDataAttributes: _propTypes2.default.object,\n\n autoComplete: _propTypes2.default.string,\n dir: _propTypes2.default.string,\n disabled: _propTypes2.default.bool,\n max: _propTypes2.default.number,\n maxLength: _propTypes2.default.number,\n min: _propTypes2.default.number,\n minLength: _propTypes2.default.number,\n pattern: _propTypes2.default.string,\n readOnly: _propTypes2.default.bool,\n required: _propTypes2.default.bool,\n\n value: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n onMouseOver: _propTypes2.default.func,\n onMouseOut: _propTypes2.default.func,\n onFocus: _propTypes2.default.func,\n onBlur: _propTypes2.default.func,\n onChange: _propTypes2.default.func,\n\n styles: _propTypes2.default.object, // override for STYLES object\n innerRef: _propTypes2.default.func\n};\nTextInput.defaultProps = {\n type: 'text',\n readOnly: false,\n onMouseOver: function onMouseOver() {},\n onMouseOut: function onMouseOut() {},\n onFocus: function onFocus() {},\n onBlur: function onBlur() {},\n onChange: function onChange() {},\n styles: {}\n};\nexports.default = TextInput;","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lottie-web'), require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'lottie-web', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global[\"lottie-react\"] = {}, global.Lottie, global.React));\n})(this, (function (exports, lottie, React) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var lottie__default = /*#__PURE__*/_interopDefaultLegacy(lottie);\n var React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n }\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\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 return obj;\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n }\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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 return target;\n }\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _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 function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n }\n\n var _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\n var useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = React.useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = React.useRef();\n var animationContainer = React.useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie__default[\"default\"].loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n React.useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n React.useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n React.useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n React.useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React__default[\"default\"].createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n };\n\n // helpers\n function getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n }\n function getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n }\n var useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n React.useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n };\n var useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n };\n\n var _excluded = [\"style\", \"interactivity\"];\n var Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n React.useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n };\n\n Object.defineProperty(exports, 'LottiePlayer', {\n enumerable: true,\n get: function () { return lottie__default[\"default\"]; }\n });\n exports[\"default\"] = Lottie;\n exports.useLottie = useLottie;\n exports.useLottieInteractivity = useLottieInteractivity;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=index.umd.js.map\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = \"763FA0C3-1650-473A-8E43-E6749EC593B8Created with sketchtool.\"","module.exports = \"C94BE40F-0F78-4193-B270-DC119F6ECCA0Created with sketchtool.\"","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo, useState, useEffect } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math } from 'polished';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { utilStyles } from '@paypalcorp/pp-react-utils';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport { ChevronUpIcon, ChevronDownIcon } from '@paypalcorp/pp-react-icons';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceXs = tokens.sysSpaceXs,\n sysSpaceLg = tokens.sysSpaceLg,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysColorBackgroundHighContrast = tokens.sysColorBackgroundHighContrast;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n headingSm = _textStyles.headingSm,\n title = _textStyles.title;\n\n var offsetFocusAfter = focusStyles.offsetFocusAfter;\n var headerPaddingRight = math(\"\".concat(sysSpaceLg, \" * 3.25\"));\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: accordion_base;\\n width: 100%;\\n border-collapse: collapse;\\n \"])));\n var row = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: row;\\n border: none;\\n \"])));\n var body = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: body;\\n display: none;\\n padding: 0 \", \" \", \";\\n padding-top: \", \";\\n text-align: left;\\n \", \";\\n p {\\n margin: 0;\\n }\\n\\n [dir='rtl'] & {\\n text-align: right;\\n }\\n \"])), sysSpaceLg, sysSpaceLg, sysSpaceXs, textBody({\n color: sysColorBackgroundHighContrast\n }));\n var bodyClose = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: body_close;\\n display: none;\\n \"])));\n var bodyOpen = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: body_open;\\n display: block;\\n \"])));\n\n var getHeaderFont = function (size) {\n if (size === 'small') return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), title({\n color: sysColorBackgroundHighContrast\n }));\n return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), headingSm({\n color: sysColorBackgroundHighContrast\n }));\n };\n\n var header = function (size) {\n return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: header;\\n cursor: pointer;\\n word-break: break-word;\\n padding: \", \" \", \" \", \" \", \";\\n position: relative;\\n background: none;\\n border: none;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n text-align: start;\\n \", \";\\n\\n &:focus {\\n outline: none;\\n &:after {\\n \", \"\\n }\\n }\\n\\n &[aria-expanded='true'] {\\n &:before {\\n transform: rotateX(180deg);\\n }\\n }\\n\\n [dir='rtl'] & {\\n padding: \", \" \", \" \", \" \", \";\\n text-align: right;\\n }\\n \"])), sysSpaceLg, headerPaddingRight, sysSpaceLg, sysSpaceLg, getHeaderFont(size), offsetFocusAfter({\n radius: sysSpaceXs,\n horizontalOffset: '0rem',\n verticalOffset: '0rem'\n }), sysSpaceLg, sysSpaceLg, sysSpaceLg, headerPaddingRight);\n };\n\n var svgIcon = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: svg_icon;\\n color: \", \";\\n position: absolute;\\n right: \", \";\\n\\n [dir='rtl'] & {\\n left: \", \";\\n right: auto;\\n }\\n \"])), sysColorBackgroundMediumContrast, sysSpaceLg, sysSpaceLg);\n return {\n base: base,\n row: row,\n body: body,\n bodyOpen: bodyOpen,\n bodyClose: bodyClose,\n header: header,\n svgIcon: svgIcon\n };\n}\n\nvar _excluded = [\"name\", \"className\", \"children\", \"headerSize\"];\n\nvar Accordion = function (_ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'Accordion' : _ref$name,\n className = _ref.className,\n children = _ref.children,\n headerSize = _ref.headerSize,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var accordionRows = React.Children.map(children, function (child, index) {\n return React.cloneElement(child, {\n accordionName: name,\n rowNumber: index + 1,\n headerSize: headerSize\n });\n });\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(\"div\", _extends({\n css: _styles.base,\n className: className,\n \"data-ppui-info\": \"accordion_3.4.7\"\n }, rest), accordionRows);\n};\n\nvar _excluded$1 = [\"accordionName\", \"heading\", \"rowNumber\", \"className\", \"headerClassName\", \"contentClassName\", \"iconClassName\", \"isOpen\", \"onClick\", \"children\", \"headerSize\"];\n\nvar AccordionRow = function (_ref) {\n var accordionName = _ref.accordionName,\n _ref$heading = _ref.heading,\n heading = _ref$heading === void 0 ? 'Heading' : _ref$heading,\n rowNumber = _ref.rowNumber,\n className = _ref.className,\n headerClassName = _ref.headerClassName,\n contentClassName = _ref.contentClassName,\n iconClassName = _ref.iconClassName,\n _ref$isOpen = _ref.isOpen,\n isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,\n onClick = _ref.onClick,\n children = _ref.children,\n _ref$headerSize = _ref.headerSize,\n headerSize = _ref$headerSize === void 0 ? 'large' : _ref$headerSize,\n rest = _objectWithoutProperties(_ref, _excluded$1);\n\n var _useState = useState(isOpen),\n _useState2 = _slicedToArray(_useState, 2),\n show = _useState2[0],\n setShowState = _useState2[1];\n\n var handleClick = function (event) {\n if (onClick) {\n onClick(event, parseInt(rowNumber, 10), !show);\n }\n\n setShowState(!show);\n };\n\n useEffect(function () {\n setShowState(isOpen);\n }, [isOpen]); // If theme is not directly provided, get from themeContext\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var bodyCSSVal = [_styles.body, show && _styles.bodyOpen];\n var svgIconCSSVal = [_styles.svgIcon];\n var rowId = \"\".concat(accordionName, \"-row\").concat(rowNumber);\n var contentId = \"\".concat(accordionName, \"-content\").concat(rowNumber);\n return jsx(\"div\", {\n css: _styles.row,\n className: className,\n \"data-ppui\": \"true\"\n }, jsx(\"button\", _extends({\n type: \"button\",\n id: rowId,\n css: _styles.header(headerSize),\n className: headerClassName,\n \"data-row\": rowNumber,\n \"aria-expanded\": show,\n \"aria-controls\": contentId,\n onClick: function (e) {\n return handleClick(e);\n }\n }, rest, {\n \"data-ppui\": \"true\"\n }), heading, show ? jsx(ChevronUpIcon, {\n size: \"sm\",\n css: svgIconCSSVal,\n className: iconClassName,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }) : jsx(ChevronDownIcon, {\n size: \"sm\",\n css: svgIconCSSVal,\n className: iconClassName,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n })), jsx(\"div\", {\n id: contentId,\n css: bodyCSSVal,\n \"aria-labelledby\": rowId,\n role: \"region\",\n className: contentClassName,\n \"data-ppui\": \"true\"\n }, children));\n};\n\nexport { Accordion, AccordionRow, styles as accordionStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { useMemo, useRef } from 'react';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport Lottie from 'lottie-react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { utilStyles, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\n\nvar _templateObject;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles;\n\n var sysSizePictogramLg = tokens.sysSizePictogramLg;\n var focusAfter = focusStyles.focusAfter,\n stateFocusBorderWidthInner = focusStyles.stateFocusBorderWidthInner,\n stateFocusBorderColorInner = focusStyles.stateFocusBorderColorInner;\n var animatedPictogram = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: animated_pictogram;\\n height: \", \";\\n width: \", \";\\n position: relative;\\n\\n &:focus {\\n outline: none;\\n &:after {\\n \", \"\\n }\\n }\\n \"])), sysSizePictogramLg, sysSizePictogramLg, focusAfter({\n width: '100%',\n height: '100%',\n border: \"\".concat(stateFocusBorderWidthInner, \" solid \").concat(stateFocusBorderColorInner)\n }));\n return {\n animatedPictogram: animatedPictogram\n };\n}\n\nvar _excluded = [\"animationData\", \"className\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar LottieContainer = function (_ref) {\n var animationData = _ref.animationData,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var isPaused = useRef(false);\n var lottieRef = useRef();\n\n var handleAnimation = function () {\n if (isPaused.current) {\n var _lottieRef$current;\n\n // @ts-ignore\n // eslint-disable-next-line no-unused-expressions\n (_lottieRef$current = lottieRef.current) === null || _lottieRef$current === void 0 ? void 0 : _lottieRef$current.play();\n } else {\n var _lottieRef$current2;\n\n // @ts-ignore\n // eslint-disable-next-line no-unused-expressions\n (_lottieRef$current2 = lottieRef.current) === null || _lottieRef$current2 === void 0 ? void 0 : _lottieRef$current2.pause();\n }\n\n isPaused.current = !isPaused.current;\n };\n\n var componentProps = _objectSpread({\n className: className,\n animationData: animationData,\n lottieRef: lottieRef,\n onKeyDown: function keyHandler(event) {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(event.key || event.keyCode);\n\n if (KeyCode.IS_ENTER || KeyCode.IS_SPACEBAR) {\n event.preventDefault();\n handleAnimation();\n }\n },\n onClick: handleAnimation,\n css: _styles.animatedPictogram,\n loop: true,\n 'data-ppui-info': ''\n }, rest);\n\n return jsx(Lottie, _extends({}, componentProps, {\n \"data-ppui\": \"true\"\n }));\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar AwardAchievedPictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'award-achieved'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '4.8.0',\n meta: {\n g: 'LottieFiles AE 3.1.1',\n a: '',\n k: '',\n d: '',\n tc: ''\n },\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '002 Award Achieved - Revolve',\n ddd: 0,\n assets: [],\n layers: [{\n ddd: 0,\n ind: 2,\n ty: 4,\n nm: 'Mask 2',\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100.635, 82.728, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [40.64, 40.64, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0]],\n o: [[0, 0], [0, 0]],\n v: [[27.75, -4], [-13.5, 47]],\n c: false\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'st',\n c: {\n a: 0,\n k: [1, 0, 0, 1],\n ix: 3\n },\n o: {\n a: 0,\n k: 100,\n ix: 4\n },\n w: {\n a: 0,\n k: 16,\n ix: 5\n },\n lc: 1,\n lj: 1,\n ml: 4,\n bm: 0,\n nm: 'Stroke 1',\n mn: 'ADBE Vector Graphic - Stroke',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Shape 2',\n np: 3,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0]],\n o: [[0, 0], [0, 0]],\n v: [[-3.75, 47.5], [-33, 21.25]],\n c: false\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'st',\n c: {\n a: 0,\n k: [1, 0, 0, 1],\n ix: 3\n },\n o: {\n a: 0,\n k: 100,\n ix: 4\n },\n w: {\n a: 0,\n k: 16,\n ix: 5\n },\n lc: 1,\n lj: 1,\n ml: 4,\n bm: 0,\n nm: 'Stroke 1',\n mn: 'ADBE Vector Graphic - Stroke',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Shape 1',\n np: 3,\n cix: 2,\n bm: 0,\n ix: 2,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'tm',\n s: {\n a: 0,\n k: 100,\n ix: 1\n },\n e: {\n a: 1,\n k: [{\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 75,\n s: [100]\n }, {\n t: 85,\n s: [0]\n }],\n ix: 2\n },\n o: {\n a: 0,\n k: 0,\n ix: 3\n },\n m: 2,\n ix: 3,\n nm: 'Trim Paths 1',\n mn: 'ADBE Vector Filter - Trim',\n hd: false\n }],\n ip: 75,\n op: 297,\n st: 37,\n bm: 0\n }, {\n ddd: 0,\n ind: 3,\n ty: 4,\n nm: 'Check 2',\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [99.681, 91.825, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [142.098, 142.098, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0.347, -0.43], [0, 0], [0.427, 0.38], [0, 0], [-0.367, 0.413], [0, 0], [-0.413, -0.367], [0, 0], [-0.359, 0.444], [0, 0], [-0.43, -0.347]],\n o: [[0.43, 0.347], [0, 0], [-0.359, 0.444], [0, 0], [-0.413, -0.367], [0, 0], [0.367, -0.413], [0, 0], [0.427, 0.38], [0, 0], [0.347, -0.43], [0, 0]],\n v: [[9.268, -6.648], [9.418, -5.241], [-1.137, 7.837], [-2.58, 7.956], [-9.305, 1.974], [-9.388, 0.563], [-7.971, -1.03], [-6.559, -1.113], [-3.073, 1.988], [-1.63, 1.868], [6.203, -7.837], [7.609, -7.987]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.188235309077, 0.529411764706, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 75,\n op: 295,\n st: 82,\n bm: 0\n }, {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Mask 3',\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100.635, 82.728, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [40.64, 40.64, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0]],\n o: [[0, 0], [0, 0]],\n v: [[-33, 21.25], [-3.75, 47.5]],\n c: false\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'st',\n c: {\n a: 0,\n k: [1, 0, 0, 1],\n ix: 3\n },\n o: {\n a: 0,\n k: 100,\n ix: 4\n },\n w: {\n a: 0,\n k: 16,\n ix: 5\n },\n lc: 1,\n lj: 1,\n ml: 4,\n bm: 0,\n nm: 'Stroke 1',\n mn: 'ADBE Vector Graphic - Stroke',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Shape 1',\n np: 3,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0]],\n o: [[0, 0], [0, 0]],\n v: [[-13.5, 47], [27.75, -4]],\n c: false\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'st',\n c: {\n a: 0,\n k: [1, 0, 0, 1],\n ix: 3\n },\n o: {\n a: 0,\n k: 100,\n ix: 4\n },\n w: {\n a: 0,\n k: 16,\n ix: 5\n },\n lc: 1,\n lj: 1,\n ml: 4,\n bm: 0,\n nm: 'Stroke 1',\n mn: 'ADBE Vector Graphic - Stroke',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Shape 2',\n np: 3,\n cix: 2,\n bm: 0,\n ix: 2,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'tm',\n s: {\n a: 1,\n k: [{\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 55,\n s: [0]\n }, {\n t: 65,\n s: [100]\n }],\n ix: 1\n },\n e: {\n a: 0,\n k: 100,\n ix: 2\n },\n o: {\n a: 0,\n k: 0,\n ix: 3\n },\n m: 2,\n ix: 3,\n nm: 'Trim Paths 1',\n mn: 'ADBE Vector Filter - Trim',\n hd: false\n }],\n ip: -77,\n op: 76,\n st: 26,\n bm: 0\n }, {\n ddd: 0,\n ind: 5,\n ty: 4,\n nm: 'Check 3',\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [99.681, 91.825, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [142.098, 142.098, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0.347, -0.43], [0, 0], [0.427, 0.38], [0, 0], [-0.367, 0.413], [0, 0], [-0.413, -0.367], [0, 0], [-0.359, 0.444], [0, 0], [-0.43, -0.347]],\n o: [[0.43, 0.347], [0, 0], [-0.359, 0.444], [0, 0], [-0.413, -0.367], [0, 0], [0.367, -0.413], [0, 0], [0.427, 0.38], [0, 0], [0.347, -0.43], [0, 0]],\n v: [[9.268, -6.648], [9.418, -5.241], [-1.137, 7.837], [-2.58, 7.956], [-9.305, 1.974], [-9.388, 0.563], [-7.971, -1.03], [-6.559, -1.113], [-3.073, 1.988], [-1.63, 1.868], [6.203, -7.837], [7.609, -7.987]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.188235309077, 0.529411764706, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: -75,\n op: 78,\n st: -24,\n bm: 0\n }, {\n ddd: 0,\n ind: 8,\n ty: 4,\n nm: 'Shape Layer 3',\n parent: 9,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [-0.948, 2.586, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [-1.375, 3.75, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [68.966, 68.966, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 1,\n k: [{\n i: {\n x: 0.25,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 55,\n s: [{\n i: [[0, 0], [0, 0], [-26.5, 0], [-28, 0]],\n o: [[0, 0], [0, 0], [27.75, 0], [28, 0]],\n v: [[42.75, -11.75], [-45.5, -11.75], [-17.25, 19.25], [15, 19]],\n c: true\n }]\n }, {\n i: {\n x: 0.25,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 70,\n s: [{\n i: [[0, 0], [0, 0], [-26.5, 0], [-28, 0]],\n o: [[0, 0], [0, 0], [27.75, 0], [28, 0]],\n v: [[25.25, -11.75], [-28.016, -12], [-1.75, 19], [-0.516, 19]],\n c: true\n }]\n }, {\n t: 85,\n s: [{\n i: [[0, 0], [0, 0], [-26.5, 0], [-28, 0]],\n o: [[0, 0], [0, 0], [27.75, 0], [28, 0]],\n v: [[42.75, -11.75], [-45.5, -11.75], [-17.25, 19.25], [15, 19]],\n c: true\n }]\n }],\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'st',\n c: {\n a: 0,\n k: [0.980392216701, 0.972549079446, 0.960784373564, 1],\n ix: 3\n },\n o: {\n a: 0,\n k: 100,\n ix: 4\n },\n w: {\n a: 0,\n k: 7,\n ix: 5\n },\n lc: 2,\n lj: 2,\n bm: 0,\n nm: 'Stroke 1',\n mn: 'ADBE Vector Graphic - Stroke',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Shape 1',\n np: 3,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: -59,\n op: 280,\n st: -59,\n bm: 0\n }, {\n ddd: 0,\n ind: 9,\n ty: 4,\n nm: 'Layer 2',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [98.937, 161.341, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [-0.722, 42.5, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [147.32, 147.32, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 1,\n k: [{\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 55,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-0.042, -0.006], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [0.107, 0.08], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-20.555, -20.306], [-17.25, -23.611], [-0.668, -23.611], [15.806, -23.611], [19.111, -20.306], [19.111, -10.389], [10.258, 16.031], [4.548, 32.937], [-5.992, 32.937], [-11.702, 16.031], [-20.555, -10.389]],\n c: true\n }]\n }, {\n i: {\n x: 0.25,\n y: 1\n },\n o: {\n x: 0.81,\n y: 0\n },\n t: 66,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [0, -0.092], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [0, 0.08], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-18.831, -20.306], [-15.525, -23.611], [-0.69, -23.266], [14.082, -23.611], [17.387, -20.306], [17.387, -10.389], [8.534, 16.031], [2.824, 33.017], [-4.268, 32.937], [-9.977, 16.031], [-18.831, -10.389]],\n c: true\n }]\n }, {\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 74,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [0, -0.092], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [0, 0.08], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-18.831, -20.306], [-15.525, -23.611], [-0.69, -23.266], [14.082, -23.611], [17.387, -20.306], [17.387, -10.389], [8.534, 16.031], [2.824, 33.017], [-4.268, 32.937], [-9.977, 16.031], [-18.831, -10.389]],\n c: true\n }]\n }, {\n t: 85,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-0.042, -0.006], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [0.107, 0.08], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-20.555, -20.306], [-17.25, -23.611], [-0.668, -23.611], [15.806, -23.611], [19.111, -20.306], [19.111, -10.389], [10.258, 16.031], [4.548, 32.937], [-5.992, 32.937], [-11.702, 16.031], [-20.555, -10.389]],\n c: true\n }]\n }],\n ix: 2\n },\n nm: 'Path 3',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392217636, 0.972549080849, 0.960784375668, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 1,\n k: [{\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 55,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-2.064, -3.135], [1.826, 0], [0, 0], [-1.004, 1.525], [-6.402, 0.88], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [6.402, 0.88], [1.004, 1.525], [0, 0], [-1.826, 0], [2.064, -3.135], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-20.555, -20.306], [-17.25, -23.611], [-0.379, -23.611], [15.806, -23.611], [19.111, -20.306], [19.111, -10.389], [10.258, 16.031], [4.548, 32.937], [18.121, 39.397], [15.806, 42.5], [-17.25, 42.5], [-19.565, 39.397], [-5.992, 32.937], [-11.702, 16.031], [-20.555, -10.389]],\n c: true\n }]\n }, {\n i: {\n x: 0.25,\n y: 1\n },\n o: {\n x: 0.81,\n y: 0\n },\n t: 66,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-2.064, -3.135], [1.826, 0], [0, 0], [-1.004, 1.525], [-6.402, 0.88], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [6.402, 0.88], [1.004, 1.525], [0, 0], [-1.826, 0], [2.064, -3.135], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-18.831, -20.306], [-15.525, -23.611], [-0.517, -23.266], [14.082, -23.611], [17.387, -20.306], [17.387, -10.389], [8.534, 16.031], [2.824, 32.937], [17.949, 39.31], [15.634, 42.414], [-17.077, 42.414], [-19.392, 39.31], [-4.268, 32.937], [-9.977, 16.031], [-18.831, -10.389]],\n c: true\n }]\n }, {\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 74,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-2.064, -3.135], [1.826, 0], [0, 0], [-1.004, 1.525], [-6.402, 0.88], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [6.402, 0.88], [1.004, 1.525], [0, 0], [-1.826, 0], [2.064, -3.135], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-18.831, -20.306], [-15.525, -23.611], [-0.517, -23.266], [14.082, -23.611], [17.387, -20.306], [17.387, -10.389], [8.534, 16.031], [2.824, 32.937], [17.949, 39.31], [15.634, 42.414], [-17.077, 42.414], [-19.392, 39.31], [-4.268, 32.937], [-9.977, 16.031], [-18.831, -10.389]],\n c: true\n }]\n }, {\n t: 85,\n s: [{\n i: [[0, 0], [-1.826, 0], [0, 0], [0, 0], [0, -1.826], [0, 0], [6.466, -9.652], [0.525, -5.58], [-2.064, -3.135], [1.826, 0], [0, 0], [-1.004, 1.525], [-6.402, 0.88], [2.784, 5.531], [0, 0]],\n o: [[0, -1.826], [0, 0], [0, 0], [1.826, 0], [0, 0], [0, 0], [-2.784, 5.531], [6.402, 0.88], [1.004, 1.525], [0, 0], [-1.826, 0], [2.064, -3.135], [-0.525, -5.58], [-7.436, -12.755], [0, 0]],\n v: [[-20.555, -20.306], [-17.25, -23.611], [-0.379, -23.611], [15.806, -23.611], [19.111, -20.306], [19.111, -10.389], [10.258, 16.031], [4.548, 32.937], [18.121, 39.397], [15.806, 42.5], [-17.25, 42.5], [-19.565, 39.397], [-5.992, 32.937], [-11.702, 16.031], [-20.555, -10.389]],\n c: true\n }]\n }],\n ix: 2\n },\n nm: 'Path 3',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.188235297799, 0.529411792755, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 2',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 2',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 2,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: -59,\n op: 280,\n st: -59,\n bm: 0\n }, {\n ddd: 0,\n ind: 10,\n ty: 4,\n nm: 'Layer 1',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [98.936, 91.773, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [147.32, 147.32, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-20.864, 0], [0, -20.864], [20.864, 0], [0, 20.864]],\n o: [[20.864, 0], [0, 20.864], [-20.864, 0], [0, -20.864]],\n v: [[0, -37.778], [37.778, 0], [0, 37.778], [-37.778, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.439215686275, 0.878431372549, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: -59,\n op: 280,\n st: -59,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\nvar CollectDonationsPictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'collect-donations'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '4.8.0',\n meta: {\n g: 'LottieFiles AE 3.1.1',\n a: '',\n k: '',\n d: '',\n tc: ''\n },\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '004 Collect Donations - Revolve',\n ddd: 1,\n assets: [],\n layers: [{\n ddd: 0,\n ind: 2,\n ty: 3,\n nm: 'NULL CONTROL',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 0,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100, 98.73, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [60, 60, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [114.3, 114.3, 100],\n ix: 6\n }\n },\n ao: 0,\n ip: 0,\n op: 126,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 3,\n ty: 3,\n nm: 'Null 1027',\n parent: 2,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 0,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [60, 60, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [50, 50, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [130, 130, 100],\n ix: 6\n }\n },\n ao: 0,\n ip: 0,\n op: 126,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Layer 8',\n parent: 7,\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-29.056, -21.25], [29.056, -21.25], [33.056, -17.25], [33.056, 17.25], [29.056, 21.25], [-29.056, 21.25], [-33.056, 17.25], [-33.056, -17.25]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-38.5, -7.083], [38.5, -7.083], [42.5, -3.083], [42.5, 3.083], [38.5, 7.083], [-38.5, 7.083], [-42.5, 3.083], [-42.5, -3.083]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, -14],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 2',\n np: 1,\n cix: 2,\n bm: 0,\n ix: 2,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 267,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 5,\n ty: 4,\n nm: 'Layer 6',\n parent: 8,\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 1').transform.opacity;\"\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-0.066, 0.161], [-11.244, 0], [6.647, -15.338], [7.343, 0], [6.023, 13.902], [-13.809, 0], [-0.885, -2.141]],\n o: [[0.885, -2.141], [13.809, 0], [-5.986, 13.94], [-7.343, 0], [-6.647, -15.338], [11.241, 0], [0.066, 0.161]],\n v: [[0.18, -19.127], [15.976, -28.333], [30.593, 1.889], [0, 28.333], [-30.593, 1.889], [-15.976, -28.333], [-0.18, -19.127]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [1, 1, 1, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 267,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 6,\n ty: 4,\n nm: 'Layer 5',\n parent: 7,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [-0.003, 6.788, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0.552, 0], [0, 0], [0, 0.552], [0, 0], [-0.552, 0], [0, 0], [0, -0.552]],\n o: [[0, 0.552], [0, 0], [-0.552, 0], [0, 0], [0, -0.552], [0, 0], [0.552, 0], [0, 0]],\n v: [[18.889, 1.066], [17.889, 2.066], [-17.889, 2.066], [-18.889, 1.066], [-18.889, -1.066], [-17.889, -2.066], [17.889, -2.066], [18.889, -1.066]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 267,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 7,\n ty: 4,\n nm: 'Layer 2',\n parent: 3,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [53.366, 71.25, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-29.056, -21.25], [29.056, -21.25], [33.056, -17.25], [33.056, 17.25], [29.056, 21.25], [-29.056, 21.25], [-33.056, 17.25], [-33.056, -17.25]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 1,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-38.5, -7.083], [38.5, -7.083], [42.5, -3.083], [42.5, 3.083], [38.5, 7.083], [-38.5, 7.083], [-42.5, 3.083], [-42.5, -3.083]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, -14.156],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 2',\n np: 1,\n cix: 2,\n bm: 0,\n ix: 2,\n mn: 'ADBE Vector Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }],\n ip: 0,\n op: 267,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 8,\n ty: 4,\n nm: 'Layer 1',\n parent: 3,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 1,\n k: [{\n i: {\n x: [0.833],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 65,\n s: [15]\n }, {\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.167],\n y: [0]\n },\n t: 69,\n s: [-76]\n }, {\n t: 80,\n s: [15]\n }],\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 358.027, 0],\n ix: 7\n },\n p: {\n a: 1,\n k: [{\n i: {\n x: 0.833,\n y: 0.111\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 65,\n s: [54.6, 66, 0],\n to: [0, 0, 0],\n ti: [0, 0, 0]\n }, {\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.167,\n y: 0.129\n },\n t: 69,\n s: [54.6, 66.667, 0],\n to: [0, 0, 0],\n ti: [0, 0, 0]\n }, {\n i: {\n x: 0.25,\n y: 0.25\n },\n o: {\n x: 1,\n y: 1\n },\n t: 80,\n s: [54.6, 54, 0],\n to: [0, 0, 0],\n ti: [0, 0, 0]\n }, {\n i: {\n x: 0,\n y: 1\n },\n o: {\n x: 0.75,\n y: 0\n },\n t: 84,\n s: [54.6, 54, 0],\n to: [0, 0, 0],\n ti: [0, 0, 0]\n }, {\n t: 95,\n s: [54.61, 66, 0]\n }],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 28.333, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [101.043, 100, 98.968],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-0.066, 0.161], [-11.244, 0], [6.647, -15.338], [7.343, 0], [6.023, 13.902], [-13.809, 0], [-0.885, -2.141]],\n o: [[0.885, -2.141], [13.809, 0], [-5.986, 13.94], [-7.343, 0], [-6.647, -15.338], [11.241, 0], [0.066, 0.161]],\n v: [[0.18, -19.127], [15.976, -28.333], [30.593, 1.889], [0, 28.333], [-30.593, 1.889], [-15.976, -28.333], [-0.18, -19.127]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [1, 0.611764729023, 0.666666686535, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 267,\n st: 0,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\nvar DiscountsPictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'discounts'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '5.9.0',\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '014 Discounts - Glide 2',\n ddd: 0,\n assets: [{\n id: 'comp_0',\n nm: '014 Discounts - Glide',\n fr: 25,\n layers: [{\n ddd: 0,\n ind: 1,\n ty: 3,\n nm: 'Null 1254',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 0,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [50, 50, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [127, 127, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 3,\n ty: 4,\n nm: 'Layer 13',\n parent: 8,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [0.5, -23.919, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, -2.209], [2.209, 0], [0, 2.209]],\n o: [[2.209, 0], [0, 2.209], [-2.209, 0], [0, -2.209]],\n v: [[0, -4], [4, 0], [0, 4], [-4, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392158031, 0.972549021244, 0.960784316063, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Layer 12',\n parent: 8,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [-7.793, -0.083, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 2.209], [2.209, 0], [0, -2.209]],\n o: [[2.209, 0], [0, -2.209], [-2.209, 0], [0, 2.209]],\n v: [[0, 4], [4, 0], [0, -4], [-4, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 5,\n ty: 4,\n nm: 'Layer 11',\n parent: 8,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [8.25, 15.874, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 2.209], [2.209, 0], [0, -2.209]],\n o: [[2.209, 0], [0, -2.209], [-2.209, 0], [0, 2.209]],\n v: [[0, 4], [4, 0], [0, -4], [-4, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 6,\n ty: 4,\n nm: 'Layer 10',\n parent: 8,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [0, 7.831, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0.391, -0.391], [0, 0], [-0.391, -0.391], [0, 0], [-0.391, 0.391], [0, 0], [0.391, 0.391], [0, 0]],\n o: [[0, 0], [-0.391, 0.391], [0, 0], [0.391, 0.391], [0, 0], [0.391, -0.391], [0, 0], [-0.391, -0.391]],\n v: [[8.775, -11.25], [-11.25, 8.775], [-11.25, 10.189], [-10.189, 11.25], [-8.775, 11.25], [11.25, -8.775], [11.25, -10.189], [10.189, -11.25]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 7,\n ty: 4,\n nm: 'Layer 7',\n parent: 8,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [0.5, 7.809, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-11.046, 0], [0, -11.046], [11.046, 0], [0, 11.046]],\n o: [[11.046, 0], [0, 11.046], [-11.046, 0], [0, -11.046]],\n v: [[0, -20], [20, 0], [0, 20], [-20, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392158031, 0.972549021244, 0.960784316063, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 8,\n ty: 4,\n nm: 'Layer 1',\n parent: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 1,\n k: [{\n i: {\n x: [0.833],\n y: [1.096]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 87,\n s: [0]\n }, {\n i: {\n x: [0.833],\n y: [0.965]\n },\n o: {\n x: [0.167],\n y: [0.035]\n },\n t: 98,\n s: [-12]\n }, {\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.167],\n y: [-0.096]\n },\n t: 106,\n s: [12]\n }, {\n t: 117,\n s: [0]\n }],\n ix: 10\n },\n p: {\n a: 0,\n k: [49.929, 18.727, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, -24.231, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [135.2, 135.2, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 2.209], [0, 0], [-1.131, 0.739], [0, 0], [-0.665, -0.434], [0, 0], [0, -1.351], [0, 0], [2.209, 0], [0, 0]],\n o: [[0, 0], [0, -1.351], [0, 0], [0.665, -0.434], [0, 0], [1.131, 0.739], [0, 0], [0, 2.209], [0, 0], [-2.209, 0]],\n v: [[-28, 31.806], [-28, -15.743], [-26.187, -19.093], [-1.094, -35.48], [1.094, -35.48], [26.187, -19.093], [28, -15.743], [28, 31.806], [24, 35.806], [-24, 35.806]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }]\n }],\n layers: [{\n ddd: 0,\n ind: 1,\n ty: 0,\n nm: '014 Discounts - Glide',\n refId: 'comp_0',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [100, 100, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [125, 125, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n w: 200,\n h: 200,\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\nvar EarnCashBackPictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'earn-cash-back'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '4.8.0',\n meta: {\n g: 'LottieFiles AE 3.1.1',\n a: '',\n k: '',\n d: '',\n tc: ''\n },\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '005 Earn Cashback - Revolve',\n ddd: 1,\n assets: [],\n layers: [{\n ddd: 1,\n ind: 2,\n ty: 4,\n nm: 'Layer 12',\n parent: 13,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 1,\n k: [{\n i: {\n x: 0.667,\n y: 1\n },\n o: {\n x: 0.333,\n y: 0\n },\n t: 46,\n s: [-38.263, -25.25, 0],\n to: [6.377, 0, 0],\n ti: [-6.377, 0, 0]\n }, {\n t: 56,\n s: [-0.002, -25.25, 0]\n }],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 1.312, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n x: \"var $bm_rt;\\nvar amp, freq, decay, n, t, v;\\ntry {\\n amp = $bm_div(effect('Scale - Overshoot')('ADBE Slider Control-0001'), 2.5), freq = $bm_div(effect('Scale - Bounce')('ADBE Slider Control-0001'), 20), decay = $bm_div(effect('Scale - Friction')('ADBE Slider Control-0001'), 20), n = 0, 0 < numKeys && (n = nearestKey(time).index, key(n).time > time && n--), t = 0 === n ? 0 : $bm_sub(time, key(n).time), $bm_rt = 0 < n ? (v = velocityAtTime($bm_sub(key(n).time, $bm_div(thisComp.frameDuration, 10))), $bm_sum(value, $bm_div($bm_mul($bm_mul($bm_div(v, 100), amp), Math.sin($bm_mul($bm_mul($bm_mul(freq, t), 2), Math.PI))), Math.exp($bm_mul(decay, t))))) : value;\\n} catch (e$$4) {\\n $bm_rt = value = value;\\n}\"\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 9,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0], [-0.131, -0.094], [-0.161, -0.025], [0, 0], [-0.166, -0.194], [0.012, -0.254], [0.185, -0.162], [0, 0], [0.051, -0.152], [-0.025, -0.158], [0, 0], [0.149, -0.218], [0.261, -0.053], [0.194, 0.099], [0, 0], [0.163, 0], [0.145, -0.074], [0, 0], [0.253, 0.079], [0.126, 0.23], [-0.035, 0.213], [0, 0], [0.051, 0.152], [0.116, 0.112], [0, 0], [0, 0.26], [-0.184, 0.187], [-0.204, 0.027], [0, 0], [-0.133, 0.094], [-0.074, 0.144], [0, 0], [-0.169, 0.113], [-0.204, 0], [-0.169, -0.113], [-0.075, -0.187]],\n o: [[0, 0], [0.073, 0.143], [0.131, 0.094], [0, 0], [0.256, 0.03], [0.166, 0.194], [-0.017, 0.243], [0, 0], [-0.116, 0.112], [-0.051, 0.152], [0, 0], [0.048, 0.258], [-0.148, 0.218], [-0.216, 0.034], [0, 0], [-0.145, -0.074], [-0.163, 0], [0, 0], [-0.237, 0.117], [-0.253, -0.079], [-0.101, -0.191], [0, 0], [0.025, -0.158], [-0.051, -0.152], [0, 0], [-0.184, -0.187], [0, -0.26], [0.146, -0.143], [0, 0], [0.162, -0.023], [0.133, -0.094], [0, 0], [0.075, -0.187], [0.169, -0.113], [0.204, 0], [0.169, 0.113], [0, 0]],\n v: [[0.943, -9.44], [3.378, -4.419], [3.689, -4.057], [4.132, -3.876], [9.727, -3.073], [10.384, -2.725], [10.624, -2.029], [10.308, -1.396], [6.232, 2.49], [5.976, 2.892], [5.936, 3.364], [6.894, 8.857], [6.737, 9.599], [6.099, 10.022], [5.467, 9.922], [0.474, 7.331], [0.005, 7.218], [-0.464, 7.331], [-5.467, 9.922], [-6.232, 9.982], [-6.823, 9.5], [-6.925, 8.877], [-5.967, 3.384], [-6.007, 2.912], [-6.262, 2.51], [-10.339, -1.376], [-10.625, -2.074], [-10.339, -2.772], [-9.799, -3.033], [-4.204, -3.836], [-3.754, -4.015], [-3.439, -4.379], [-0.953, -9.4], [-0.578, -9.861], [-0.005, -10.035], [0.568, -9.861], [0.943, -9.4]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 62,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 3,\n ty: 4,\n nm: 'Layer 11',\n parent: 13,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 1,\n k: [{\n i: {\n x: [0.667],\n y: [1]\n },\n o: {\n x: [0.167],\n y: [0.167]\n },\n t: 53,\n s: [0]\n }, {\n t: 62,\n s: [213]\n }],\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 1,\n k: [{\n i: {\n x: 0.667,\n y: 1\n },\n o: {\n x: 0.333,\n y: 0\n },\n t: 46,\n s: [-38.263, -25.25, 0],\n to: [6.377, 0, 0],\n ti: [-6.377, 0, 0]\n }, {\n t: 56,\n s: [-0.002, -25.25, 0]\n }],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 1.312, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n x: \"var $bm_rt;\\nvar amp, freq, decay, n, t, v;\\ntry {\\n amp = $bm_div(effect('Scale - Overshoot')('ADBE Slider Control-0001'), 2.5), freq = $bm_div(effect('Scale - Bounce')('ADBE Slider Control-0001'), 20), decay = $bm_div(effect('Scale - Friction')('ADBE Slider Control-0001'), 20), n = 0, 0 < numKeys && (n = nearestKey(time).index, key(n).time > time && n--), t = 0 === n ? 0 : $bm_sub(time, key(n).time), $bm_rt = 0 < n ? (v = velocityAtTime($bm_sub(key(n).time, $bm_div(thisComp.frameDuration, 10))), $bm_sum(value, $bm_div($bm_mul($bm_mul($bm_div(v, 100), amp), Math.sin($bm_mul($bm_mul($bm_mul(freq, t), 2), Math.PI))), Math.exp($bm_mul(decay, t))))) : value;\\n} catch (e$$4) {\\n $bm_rt = value = value;\\n}\"\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 9,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0], [-0.131, -0.094], [-0.161, -0.025], [0, 0], [-0.166, -0.194], [0.012, -0.254], [0.185, -0.162], [0, 0], [0.051, -0.152], [-0.025, -0.158], [0, 0], [0.149, -0.218], [0.261, -0.053], [0.194, 0.099], [0, 0], [0.163, 0], [0.145, -0.074], [0, 0], [0.253, 0.079], [0.126, 0.23], [-0.035, 0.213], [0, 0], [0.051, 0.152], [0.116, 0.112], [0, 0], [0, 0.26], [-0.184, 0.187], [-0.204, 0.027], [0, 0], [-0.133, 0.094], [-0.074, 0.144], [0, 0], [-0.169, 0.113], [-0.204, 0], [-0.169, -0.113], [-0.075, -0.187]],\n o: [[0, 0], [0.073, 0.143], [0.131, 0.094], [0, 0], [0.256, 0.03], [0.166, 0.194], [-0.017, 0.243], [0, 0], [-0.116, 0.112], [-0.051, 0.152], [0, 0], [0.048, 0.258], [-0.148, 0.218], [-0.216, 0.034], [0, 0], [-0.145, -0.074], [-0.163, 0], [0, 0], [-0.237, 0.117], [-0.253, -0.079], [-0.101, -0.191], [0, 0], [0.025, -0.158], [-0.051, -0.152], [0, 0], [-0.184, -0.187], [0, -0.26], [0.146, -0.143], [0, 0], [0.162, -0.023], [0.133, -0.094], [0, 0], [0.075, -0.187], [0.169, -0.113], [0.204, 0], [0.169, 0.113], [0, 0]],\n v: [[0.943, -9.44], [3.378, -4.419], [3.689, -4.057], [4.132, -3.876], [9.727, -3.073], [10.384, -2.725], [10.624, -2.029], [10.308, -1.396], [6.232, 2.49], [5.976, 2.892], [5.936, 3.364], [6.894, 8.857], [6.737, 9.599], [6.099, 10.022], [5.467, 9.922], [0.474, 7.331], [0.005, 7.218], [-0.464, 7.331], [-5.467, 9.922], [-6.232, 9.982], [-6.823, 9.5], [-6.925, 8.877], [-5.967, 3.384], [-6.007, 2.912], [-6.262, 2.51], [-10.339, -1.376], [-10.625, -2.074], [-10.339, -2.772], [-9.799, -3.033], [-4.204, -3.836], [-3.754, -4.015], [-3.439, -4.379], [-0.953, -9.4], [-0.578, -9.861], [-0.005, -10.035], [0.568, -9.861], [0.943, -9.4]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 46,\n op: 62,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 4,\n ty: 4,\n nm: 'Layer 6',\n parent: 13,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 1,\n k: [{\n i: {\n x: 0.667,\n y: 1\n },\n o: {\n x: 0.333,\n y: 0\n },\n t: 35,\n s: [-0.002, -25.25, 0],\n to: [6.087, 0, 0],\n ti: [-6.087, 0, 0]\n }, {\n t: 45,\n s: [36.52, -25.25, 0]\n }],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 1.312, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6,\n x: \"var $bm_rt;\\nvar amp, freq, decay, n, t, v;\\ntry {\\n amp = $bm_div(effect('Scale - Overshoot')('ADBE Slider Control-0001'), 2.5), freq = $bm_div(effect('Scale - Bounce')('ADBE Slider Control-0001'), 20), decay = $bm_div(effect('Scale - Friction')('ADBE Slider Control-0001'), 20), n = 0, 0 < numKeys && (n = nearestKey(time).index, key(n).time > time && n--), t = 0 === n ? 0 : $bm_sub(time, key(n).time), $bm_rt = 0 < n ? (v = velocityAtTime($bm_sub(key(n).time, $bm_div(thisComp.frameDuration, 10))), $bm_sum(value, $bm_div($bm_mul($bm_mul($bm_div(v, 100), amp), Math.sin($bm_mul($bm_mul($bm_mul(freq, t), 2), Math.PI))), Math.exp($bm_mul(decay, t))))) : value;\\n} catch (e$$4) {\\n $bm_rt = value = value;\\n}\"\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 9,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 0], [-0.131, -0.094], [-0.161, -0.025], [0, 0], [-0.166, -0.194], [0.012, -0.254], [0.185, -0.162], [0, 0], [0.051, -0.152], [-0.025, -0.158], [0, 0], [0.149, -0.218], [0.261, -0.053], [0.194, 0.099], [0, 0], [0.163, 0], [0.145, -0.074], [0, 0], [0.253, 0.079], [0.126, 0.23], [-0.035, 0.213], [0, 0], [0.051, 0.152], [0.116, 0.112], [0, 0], [0, 0.26], [-0.184, 0.187], [-0.204, 0.027], [0, 0], [-0.133, 0.094], [-0.074, 0.144], [0, 0], [-0.169, 0.113], [-0.204, 0], [-0.169, -0.113], [-0.075, -0.187]],\n o: [[0, 0], [0.073, 0.143], [0.131, 0.094], [0, 0], [0.256, 0.03], [0.166, 0.194], [-0.017, 0.243], [0, 0], [-0.116, 0.112], [-0.051, 0.152], [0, 0], [0.048, 0.258], [-0.148, 0.218], [-0.216, 0.034], [0, 0], [-0.145, -0.074], [-0.163, 0], [0, 0], [-0.237, 0.117], [-0.253, -0.079], [-0.101, -0.191], [0, 0], [0.025, -0.158], [-0.051, -0.152], [0, 0], [-0.184, -0.187], [0, -0.26], [0.146, -0.143], [0, 0], [0.162, -0.023], [0.133, -0.094], [0, 0], [0.075, -0.187], [0.169, -0.113], [0.204, 0], [0.169, 0.113], [0, 0]],\n v: [[0.943, -9.44], [3.378, -4.419], [3.689, -4.057], [4.132, -3.876], [9.727, -3.073], [10.384, -2.725], [10.624, -2.029], [10.308, -1.396], [6.232, 2.49], [5.976, 2.892], [5.936, 3.364], [6.894, 8.857], [6.737, 9.599], [6.099, 10.022], [5.467, 9.922], [0.474, 7.331], [0.005, 7.218], [-0.464, 7.331], [-5.467, 9.922], [-6.232, 9.982], [-6.823, 9.5], [-6.925, 8.877], [-5.967, 3.384], [-6.007, 2.912], [-6.262, 2.51], [-10.339, -1.376], [-10.625, -2.074], [-10.339, -2.772], [-9.799, -3.033], [-4.204, -3.836], [-3.754, -4.015], [-3.439, -4.379], [-0.953, -9.4], [-0.578, -9.861], [-0.005, -10.035], [0.568, -9.861], [0.943, -9.4]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 45,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 5,\n ty: 4,\n nm: 'Layer 10',\n parent: 13,\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-19.611, -42.5], [19.611, -42.5], [23.611, -38.5], [23.611, 38.5], [19.611, 42.5], [-19.611, 42.5], [-23.611, 38.5], [-23.611, -38.5]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 6,\n ty: 4,\n nm: 'Layer 8',\n parent: 11,\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.opacity;\"\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 4').transform.xRotation;\"\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 4').transform.orientation;\"\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 12,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-9.128, 0], [0, -9.128], [9.128, 0], [0, 9.128]],\n o: [[9.128, 0], [0, 9.128], [-9.128, 0], [0, -9.128]],\n v: [[0, -16.528], [16.528, 0], [0, 16.528], [-16.528, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803929925, 0.392156898975, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 7,\n ty: 4,\n nm: 'Layer 13',\n parent: 12,\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.opacity;\"\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [-0.75, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 12,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-9.128, 0], [0, -9.128], [9.128, 0], [0, 9.128]],\n o: [[9.128, 0], [0, 9.128], [-9.128, 0], [0, -9.128]],\n v: [[0, -16.528], [16.528, 0], [0, 16.528], [-16.528, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.329411774874, 0, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 9,\n ty: 4,\n nm: 'Layer 9',\n parent: 13,\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-19.611, -42.5], [19.611, -42.5], [23.611, -38.5], [23.611, 38.5], [19.611, 42.5], [-19.611, 42.5], [-23.611, 38.5], [-23.611, -38.5]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 10,\n ty: 4,\n nm: 'Layer 7',\n parent: 12,\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.opacity;\"\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.xRotation;\"\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.orientation;\"\n },\n p: {\n a: 0,\n k: [0, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-33.778, -21.25], [33.778, -21.25], [37.778, -17.25], [37.778, 17.25], [33.778, 21.25], [-33.778, 21.25], [-37.778, 17.25], [-37.778, -17.25]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392217636, 0.972549080849, 0.960784375668, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 11,\n ty: 4,\n nm: 'Layer 4',\n parent: 12,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11,\n x: \"var $bm_rt;\\n$bm_rt = thisComp.layer('Layer 2').transform.opacity;\"\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [-0.75, 0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n ef: [{\n ty: 28,\n nm: 'Set Matte',\n np: 8,\n mn: 'ADBE Set Matte3',\n ix: 1,\n en: 1,\n ef: [{\n ty: 10,\n nm: 'Take Matte From Layer',\n mn: 'ADBE Set Matte3-0001',\n ix: 1,\n v: {\n a: 0,\n k: 12,\n ix: 1\n }\n }, {\n ty: 7,\n nm: 'Use For Matte',\n mn: 'ADBE Set Matte3-0002',\n ix: 2,\n v: {\n a: 0,\n k: 4,\n ix: 2\n }\n }, {\n ty: 7,\n nm: 'Invert Matte',\n mn: 'ADBE Set Matte3-0003',\n ix: 3,\n v: {\n a: 0,\n k: 0,\n ix: 3\n }\n }, {\n ty: 7,\n nm: 'If Layer Sizes Differ',\n mn: 'ADBE Set Matte3-0004',\n ix: 4,\n v: {\n a: 0,\n k: 1,\n ix: 4\n }\n }, {\n ty: 7,\n nm: 'Composite Matte with Original',\n mn: 'ADBE Set Matte3-0005',\n ix: 5,\n v: {\n a: 0,\n k: 1,\n ix: 5\n }\n }, {\n ty: 7,\n nm: 'Premultiply Matte Layer',\n mn: 'ADBE Set Matte3-0006',\n ix: 6,\n v: {\n a: 0,\n k: 1,\n ix: 6\n }\n }]\n }],\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-9.128, 0], [0, -9.128], [9.128, 0], [0, 9.128]],\n o: [[9.128, 0], [0, 9.128], [-9.128, 0], [0, -9.128]],\n v: [[0, -16.528], [16.528, 0], [0, 16.528], [-16.528, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.329411774874, 0, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 12,\n ty: 4,\n nm: 'Layer 2',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 1,\n k: [{\n i: {\n x: 0.16,\n y: 1\n },\n o: {\n x: 0.84,\n y: 0\n },\n t: 18,\n s: [127.028, 112.416, 0],\n to: [3.493, 0, 0],\n ti: [-3.493, 0, 0]\n }, {\n i: {\n x: 0.16,\n y: 0.16\n },\n o: {\n x: 0.84,\n y: 0.84\n },\n t: 29,\n s: [147.983, 112.416, 0],\n to: [0, 0, 0],\n ti: [0, 0, 0]\n }, {\n i: {\n x: 0.16,\n y: 1\n },\n o: {\n x: 0.84,\n y: 0\n },\n t: 37,\n s: [147.983, 112.416, 0],\n to: [-3.492, 0, 0],\n ti: [3.492, 0, 0]\n }, {\n t: 48,\n s: [127.028, 112.416, 0]\n }],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 1,\n k: [{\n i: {\n x: [0.833, 0.833, 0.833],\n y: [1, 1, 1]\n },\n o: {\n x: [0.75, 0.75, 0.75],\n y: [0, 0, 0]\n },\n t: 20,\n s: [146.05, 146.05, 146.05]\n }, {\n i: {\n x: [0.25, 0.25, 0.25],\n y: [1, 1, 1]\n },\n o: {\n x: [0.167, 0.167, 0.167],\n y: [0, 0, 0]\n },\n t: 26,\n s: [146.05, 3.81, 146.05]\n }, {\n t: 32,\n s: [146.05, 146.05, 146.05]\n }],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-33.778, -21.25], [33.778, -21.25], [37.778, -17.25], [37.778, 17.25], [33.778, 21.25], [-33.778, 21.25], [-37.778, 17.25], [-37.778, -17.25]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.435294121504, 0.768627464771, 0, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 1,\n ind: 13,\n ty: 4,\n nm: 'Layer 1',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n rx: {\n a: 0,\n k: 0,\n ix: 8\n },\n ry: {\n a: 0,\n k: 0,\n ix: 9\n },\n rz: {\n a: 0,\n k: 0,\n ix: 10\n },\n or: {\n a: 0,\n k: [0, 0, 0],\n ix: 7\n },\n p: {\n a: 0,\n k: [92.542, 95.174, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [146.05, 146.05, 146.05],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.209, 0], [0, 0], [0, -2.209], [0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0]],\n o: [[0, 0], [2.209, 0], [0, 0], [0, 2.209], [0, 0], [-2.209, 0], [0, 0], [0, -2.209]],\n v: [[-19.611, -42.5], [19.611, -42.5], [23.611, -38.5], [23.611, 38.5], [19.611, 42.5], [-19.611, 42.5], [-23.611, 38.5], [-23.611, -38.5]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\nvar HighFivePictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'high-five'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '4.8.0',\n meta: {\n g: 'LottieFiles AE 3.3.6',\n a: '',\n k: '',\n d: '',\n tc: ''\n },\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '007 High Five - Swipe',\n ddd: 0,\n assets: [],\n layers: [{\n ddd: 0,\n ind: 2,\n ty: 4,\n nm: 'Layer 7',\n parent: 4,\n td: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [-55.769, 138.462, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [-55.769, 138.462, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.729, 15.575], [-9.224, 52.024], [-9.888, 3.083], [-7.428, -7.746], [-1.105, 1.533], [-0.666, -1.164], [-2.541, -2.093], [-1.533, 6.031], [-9.445, 0.752], [-4.718, -10.097], [-1.07, -3.904], [-0.861, 2.944], [-11.639, -0.479], [-2.529, -11.05], [0.936, -5.517], [0.675, -3.826], [-0.441, -0.181], [-0.248, 0.573], [-0.358, 0.51], [-8.979, -0.101], [2.865, -16.495], [5.193, -29.353], [0.923, -5.354], [-2.983, 2.919], [-10.023, -9.403], [8.864, -10.23], [2.73, -2.914], [23.265, -25.731], [25.821, -3.708], [20.872, 12.853], [8.452, 21.429], [0.292, 0.438], [0.485, 1.537]],\n o: [[9.12, -52.042], [1.82, -10.264], [10.206, -3.182], [0.31, 0.323], [0.598, 1.203], [1.5, 2.622], [1.157, -6.127], [2.497, -9.823], [11.941, -0.951], [1.256, 2.688], [0.927, -4.14], [3.213, -10.986], [11.401, 0.469], [1.308, 5.715], [-0.65, 3.83], [0.441, 0.181], [0.159, -0.612], [0.245, -0.565], [5.181, -7.392], [16.157, 0.182], [-5.102, 29.369], [-0.947, 5.35], [3.59, -2.657], [9.833, -9.624], [9.762, 9.157], [-2.613, 3.016], [-23.72, 25.32], [-17.447, 19.296], [-24.304, 3.49], [-19.736, -12.153], [-0.292, -0.438], [-0.358, -1.577], [-4.792, -15.17]],\n v: [[-131.085, 39.52], [-103.458, -116.559], [-85.908, -136.995], [-59.298, -129.698], [-57.638, -129.128], [-55.831, -125.526], [-51.759, -117.451], [-48.219, -135.813], [-27.167, -154.025], [-0.858, -139.471], [1.849, -129.959], [4.148, -140.089], [29.463, -157.905], [52.914, -138.229], [52.04, -121.562], [50.019, -110.083], [51.343, -109.54], [51.838, -111.366], [52.828, -112.951], [74.147, -124.085], [98.583, -93.444], [83.013, -5.382], [80.24, 10.68], [89.602, 1.989], [124.802, 1.659], [126.476, 36.519], [118.33, 45.302], [47.277, 121.36], [-16.755, 156.828], [-84.549, 142.622], [-126.292, 91.767], [-127.167, 90.454], [-128.258, 85.728]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392217636, 0.980392217636, 0.980392217636, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 3,\n ty: 4,\n nm: 'Layer 6',\n parent: 5,\n tt: 1,\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [63.462, 119.231, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [63.462, 119.231, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[5.771, 14.721], [19.381, 49.152], [10.303, 1.056], [5.74, -9.068], [1.387, 1.282], [0.421, -1.273], [2.074, -2.557], [2.702, 5.606], [9.406, -1.141], [2.616, -10.833], [0.273, -4.039], [1.429, 2.714], [11.312, -2.783], [0.282, -11.332], [-2.014, -5.221], [-1.422, -3.615], [0.397, -0.265], [0.357, 0.512], [0.452, 0.429], [8.779, -1.884], [-6.087, -15.596], [-10.925, -27.735], [-1.969, -5.064], [3.504, 2.268], [7.954, -11.207], [-10.72, -8.263], [-3.255, -2.314], [-27.916, -20.593], [-26.043, 1.499], [-17.901, 16.746], [-4.024, 22.682], [-0.199, 0.487], [-0.17, 1.603]],\n o: [[-19.282, -49.19], [-3.824, -9.698], [-10.634, -1.09], [-0.24, 0.379], [-0.347, 1.298], [-0.949, 2.868], [-2.352, -5.774], [-4.4, -9.131], [-11.892, 1.442], [-0.697, 2.884], [-1.731, -3.873], [-5.333, -10.128], [-11.08, 2.726], [-0.146, 5.861], [1.398, 3.625], [-0.397, 0.265], [-0.277, -0.568], [-0.353, -0.505], [-6.547, -6.215], [-15.798, 3.39], [10.838, 27.769], [1.991, 5.055], [-4.046, -1.89], [-11.549, -7.477], [-7.747, 10.915], [3.161, 2.436], [28.28, 20.1], [20.934, 15.443], [24.513, -1.411], [16.926, -15.834], [0.199, -0.487], [0.037, -1.617], [1.681, -15.82]],\n v: [[127.965, 15.65], [69.864, -131.822], [48.602, -148.362], [23.974, -135.921], [22.46, -135.032], [21.406, -131.143], [19.02, -122.419], [11.9, -139.711], [-12.352, -153.376], [-35.243, -133.882], [-36.005, -124.022], [-40.271, -133.493], [-68.623, -145.921], [-87.695, -121.975], [-83.525, -105.815], [-79.262, -94.967], [-80.452, -94.172], [-81.301, -95.863], [-82.586, -97.219], [-105.692, -103.894], [-123.55, -69.007], [-90.786, 14.203], [-84.875, 29.394], [-95.778, 22.736], [-130.341, 29.41], [-125.052, 63.908], [-115.323, 70.896], [-30.569, 131.312], [39.235, 153.344], [102.853, 125.946], [133.653, 67.808], [134.25, 66.347], [134.379, 61.498]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392158031, 0.972549021244, 0.960784316063, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Layer 4',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 1,\n k: [{\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 69,\n s: [0]\n }, {\n i: {\n x: [0.25],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 80,\n s: [-11.688]\n }, {\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 88,\n s: [-11.688]\n }, {\n t: 99,\n s: [0]\n }],\n ix: 10\n },\n p: {\n a: 0,\n k: [104.282, 129.579, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [-55.769, 138.462, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [31.303, 31.303, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-2.729, 15.575], [-9.224, 52.024], [-9.888, 3.083], [-7.428, -7.746], [-1.105, 1.533], [-0.666, -1.164], [-2.541, -2.093], [-1.533, 6.031], [-9.445, 0.752], [-4.718, -10.097], [-1.07, -3.904], [-0.861, 2.944], [-11.639, -0.479], [-2.529, -11.05], [0.936, -5.517], [0.675, -3.826], [-0.441, -0.181], [-0.248, 0.573], [-0.358, 0.51], [-8.979, -0.101], [2.865, -16.495], [5.193, -29.353], [0.923, -5.354], [-2.983, 2.919], [-10.023, -9.403], [8.864, -10.23], [2.73, -2.914], [23.265, -25.731], [25.821, -3.708], [20.872, 12.853], [8.452, 21.429], [0.292, 0.438], [0.485, 1.537]],\n o: [[9.12, -52.042], [1.82, -10.264], [10.206, -3.182], [0.31, 0.323], [0.598, 1.203], [1.5, 2.622], [1.157, -6.127], [2.497, -9.823], [11.941, -0.951], [1.256, 2.688], [0.927, -4.14], [3.213, -10.986], [11.401, 0.469], [1.308, 5.715], [-0.65, 3.83], [0.441, 0.181], [0.159, -0.612], [0.245, -0.565], [5.181, -7.392], [16.157, 0.182], [-5.102, 29.369], [-0.947, 5.35], [3.59, -2.657], [9.833, -9.624], [9.762, 9.157], [-2.613, 3.016], [-23.72, 25.32], [-17.447, 19.296], [-24.304, 3.49], [-19.736, -12.153], [-0.292, -0.438], [-0.358, -1.577], [-4.792, -15.17]],\n v: [[-131.085, 39.52], [-103.458, -116.559], [-85.908, -136.995], [-59.298, -129.698], [-57.638, -129.128], [-55.831, -125.526], [-51.759, -117.451], [-48.219, -135.813], [-27.167, -154.025], [-0.858, -139.471], [1.849, -129.959], [4.148, -140.089], [29.463, -157.905], [52.914, -138.229], [52.04, -121.562], [50.019, -110.083], [51.343, -109.54], [51.838, -111.366], [52.828, -112.951], [74.147, -124.085], [98.583, -93.444], [83.013, -5.382], [80.24, 10.68], [89.602, 1.989], [124.802, 1.659], [126.476, 36.519], [118.33, 45.302], [47.277, 121.36], [-16.755, 156.828], [-84.549, 142.622], [-126.292, 91.767], [-127.167, 90.454], [-128.258, 85.728]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [1, 0.819607853889, 0.250980407, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 5,\n ty: 4,\n nm: 'Layer 5',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 1,\n k: [{\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 69,\n s: [0]\n }, {\n i: {\n x: [0.25],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 80,\n s: [11.212]\n }, {\n i: {\n x: [0],\n y: [1]\n },\n o: {\n x: [0.75],\n y: [0]\n },\n t: 88,\n s: [11.212]\n }, {\n t: 99,\n s: [0]\n }],\n ix: 10\n },\n p: {\n a: 0,\n k: [98.126, 151.086, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [63.462, 119.231, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [31.303, 31.303, 100],\n ix: 6\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[5.771, 14.721], [19.381, 49.152], [10.303, 1.056], [5.74, -9.068], [1.387, 1.282], [0.421, -1.273], [2.074, -2.557], [2.702, 5.606], [9.406, -1.141], [2.616, -10.833], [0.273, -4.039], [1.429, 2.714], [11.312, -2.783], [0.282, -11.332], [-2.014, -5.221], [-1.422, -3.615], [0.397, -0.265], [0.357, 0.512], [0.452, 0.429], [8.779, -1.884], [-6.087, -15.596], [-10.925, -27.735], [-1.969, -5.064], [3.504, 2.268], [7.954, -11.207], [-10.72, -8.263], [-3.255, -2.314], [-27.916, -20.593], [-26.043, 1.499], [-17.901, 16.746], [-4.024, 22.682], [-0.199, 0.487], [-0.17, 1.603]],\n o: [[-19.282, -49.19], [-3.824, -9.698], [-10.634, -1.09], [-0.24, 0.379], [-0.347, 1.298], [-0.949, 2.868], [-2.352, -5.774], [-4.4, -9.131], [-11.892, 1.442], [-0.697, 2.884], [-1.731, -3.873], [-5.333, -10.128], [-11.08, 2.726], [-0.146, 5.861], [1.398, 3.625], [-0.397, 0.265], [-0.277, -0.568], [-0.353, -0.505], [-6.547, -6.215], [-15.798, 3.39], [10.838, 27.769], [1.991, 5.055], [-4.046, -1.89], [-11.549, -7.477], [-7.747, 10.915], [3.161, 2.436], [28.28, 20.1], [20.934, 15.443], [24.513, -1.411], [16.926, -15.834], [0.199, -0.487], [0.037, -1.617], [1.681, -15.82]],\n v: [[127.965, 15.65], [69.864, -131.822], [48.602, -148.362], [23.974, -135.921], [22.46, -135.032], [21.406, -131.143], [19.02, -122.419], [11.9, -139.711], [-12.352, -153.376], [-35.243, -133.882], [-36.005, -124.022], [-40.271, -133.493], [-68.623, -145.921], [-87.695, -121.975], [-83.525, -105.815], [-79.262, -94.967], [-80.452, -94.172], [-81.301, -95.863], [-82.586, -97.219], [-105.692, -103.894], [-123.55, -69.007], [-90.786, 14.203], [-84.875, 29.394], [-95.778, 22.736], [-130.341, 29.41], [-125.052, 63.908], [-115.323, 70.896], [-30.569, 131.312], [39.235, 153.344], [102.853, 125.946], [133.653, 67.808], [134.25, 66.347], [134.379, 61.498]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.356862745098, 0.733333333333, 0.988235294118, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\nvar ManageRiskPictogram = function (props) {\n var componentProps = _objectSpread$1({\n 'aria-label': 'manage-risk'\n }, props);\n\n return /*#__PURE__*/React.createElement(LottieContainer, _extends({}, componentProps, {\n animationData: {\n v: '5.9.0',\n fr: 25,\n ip: 0,\n op: 251,\n w: 200,\n h: 200,\n nm: '008 Manage Risk - Spin 2',\n ddd: 0,\n assets: [{\n id: 'comp_0',\n nm: '008 Manage Risk - Spin',\n fr: 25,\n layers: [{\n ddd: 0,\n ind: 2,\n ty: 4,\n nm: 'Layer 3',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [99.999, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [144.018, 144.018, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[0, 0], [0, 3.496], [5.216, 0], [0, -5.216], [-2.823, -1.633], [0, 0], [-2.608, 0], [0, 2.608]],\n o: [[2.823, -1.633], [0, -5.216], [-5.216, 0], [0, 3.496], [0, 0], [0, 2.608], [2.608, 0], [0, 0]],\n v: [[4.722, 3.459], [9.444, -4.722], [0, -14.167], [-9.444, -4.722], [-4.722, 3.459], [-4.722, 9.444], [0, 14.167], [4.722, 9.444]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0, 0.109803922474, 0.392156869173, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 294,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 3,\n ty: 4,\n nm: 'Layer 1',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [99.998, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [144.018, 144.018, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[-13.692, 0], [0, -13.692], [13.692, 0], [0, 13.692]],\n o: [[13.692, 0], [0, 13.692], [-13.692, 0], [0, -13.692]],\n v: [[0, -24.792], [24.792, 0], [0, 24.792], [-24.792, 0]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 1',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.980392158031, 0.972549021244, 0.960784316063, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 294,\n st: 0,\n bm: 0\n }, {\n ddd: 0,\n ind: 4,\n ty: 4,\n nm: 'Layer 2',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 1,\n k: [{\n i: {\n x: [0.37],\n y: [1]\n },\n o: {\n x: [0.167],\n y: [0.167]\n },\n t: 10,\n s: [0]\n }, {\n i: {\n x: [0.37],\n y: [1]\n },\n o: {\n x: [0.63],\n y: [0]\n },\n t: 15,\n s: [-16.283]\n }, {\n t: 36,\n s: [180]\n }],\n ix: 10\n },\n p: {\n a: 0,\n k: [100, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [0, 0, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [144.018, 144.018, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n shapes: [{\n ty: 'gr',\n it: [{\n ind: 0,\n ty: 'sh',\n ix: 1,\n ks: {\n a: 0,\n k: {\n i: [[1.665, 0.748], [0, 0], [0.237, 0.573], [0.442, 0.439], [0.578, 0.238], [0.626, 0], [0, 0], [0.578, -0.238], [0.442, -0.439], [0.237, -0.573], [-0.003, -0.619], [0, 0], [1.472, -1.013], [0, 0], [1.195, -0.309], [0.64, -1.043], [0, 0], [-0.328, -1.203], [-1.088, -0.63], [0, 0], [0, -0.907], [0, -0.88], [0, 0], [0.328, -1.203], [-0.619, -1.085], [0, 0], [-0.497, -0.376], [-0.605, -0.159], [-0.62, 0.083], [-0.54, 0.311], [0, 0], [-1.619, -0.763], [0, 0], [-0.237, -0.573], [-0.442, -0.439], [-0.578, -0.238], [-0.626, 0], [0, 0], [-0.578, 0.238], [-0.442, 0.439], [-0.237, 0.573], [0.004, 0.619], [0, 0], [-1.472, 1.013], [0, 0], [-1.195, 0.319], [-0.632, 1.052], [0, 0], [-0.084, 0.613], [0.161, 0.597], [0.38, 0.491], [0.542, 0.309], [0, 0], [0, 0.88], [0, 0.88], [0, 0], [-0.38, 0.491], [-0.161, 0.597], [0.084, 0.613], [0.315, 0.534], [0, 0], [0.497, 0.376], [0.605, 0.159], [0.62, -0.083], [0.54, -0.311], [0, 0]],\n o: [[0, 0], [0.003, -0.619], [-0.237, -0.573], [-0.442, -0.439], [-0.578, -0.238], [0, 0], [-0.626, 0], [-0.578, 0.238], [-0.442, 0.439], [-0.237, 0.573], [0, 0], [-1.619, 0.763], [0, 0], [-1.075, -0.6], [-1.195, 0.309], [0, 0], [-0.619, 1.085], [0.328, 1.203], [0, 0], [0, 0.88], [0, 0.907], [0, 0], [-1.088, 0.63], [-0.328, 1.203], [0, 0], [0.313, 0.535], [0.497, 0.376], [0.604, 0.159], [0.62, -0.083], [0, 0], [1.472, 1.013], [0, 0], [-0.003, 0.619], [0.237, 0.573], [0.442, 0.439], [0.578, 0.238], [0, 0], [0.626, 0], [0.578, -0.238], [0.442, -0.439], [0.237, -0.573], [0, 0], [1.619, -0.763], [0, 0], [1.082, 0.595], [1.195, -0.319], [0, 0], [0.315, -0.534], [0.084, -0.613], [-0.161, -0.597], [-0.38, -0.491], [0, 0], [0, -0.88], [0, -0.88], [0, 0], [0.542, -0.309], [0.38, -0.491], [0.161, -0.597], [-0.084, -0.613], [0, 0], [-0.313, -0.535], [-0.497, -0.376], [-0.605, -0.159], [-0.62, 0.083], [0, 0], [-1.516, -1.01]],\n v: [[14.285, -29.774], [14.285, -37.778], [13.93, -39.583], [12.902, -41.115], [11.357, -42.14], [9.532, -42.5], [-9.531, -42.5], [-11.356, -42.14], [-12.901, -41.115], [-13.93, -39.583], [-14.284, -37.778], [-14.284, -29.774], [-18.928, -27.106], [-25.841, -31.028], [-29.38, -31.482], [-32.24, -29.374], [-41.772, -13.073], [-42.226, -9.503], [-40.017, -6.643], [-33.212, -2.695], [-33.212, -0.027], [-33.212, 2.641], [-40.125, 6.563], [-42.334, 9.423], [-41.88, 12.993], [-32.24, 29.321], [-31.014, 30.7], [-29.345, 31.509], [-27.49, 31.624], [-25.733, 31.028], [-18.82, 27.106], [-14.176, 29.774], [-14.176, 37.778], [-13.822, 39.583], [-12.793, 41.115], [-11.248, 42.14], [-9.423, 42.5], [9.64, 42.5], [11.465, 42.14], [13.01, 41.115], [14.038, 39.583], [14.393, 37.778], [14.393, 29.774], [19.037, 27.106], [25.949, 31.028], [29.5, 31.459], [32.349, 29.321], [41.854, 13.02], [42.457, 11.283], [42.341, 9.45], [41.522, 7.802], [40.126, 6.59], [33.213, 2.641], [33.213, -0.027], [33.213, -2.695], [40.126, -6.617], [41.522, -7.828], [42.341, -9.477], [42.457, -11.309], [41.854, -13.046], [32.349, -29.374], [31.122, -30.753], [29.454, -31.563], [27.599, -31.678], [25.841, -31.081], [19.064, -27.133]],\n c: true\n },\n ix: 2\n },\n nm: 'Path 2',\n mn: 'ADBE Vector Shape - Group',\n hd: false\n }, {\n ty: 'fl',\n c: {\n a: 0,\n k: [0.35686275363, 0.733333349228, 0.988235294819, 1],\n ix: 4\n },\n o: {\n a: 0,\n k: 100,\n ix: 5\n },\n r: 1,\n bm: 0,\n nm: 'Fill 1',\n mn: 'ADBE Vector Graphic - Fill',\n hd: false\n }, {\n ty: 'tr',\n p: {\n a: 0,\n k: [0, 0],\n ix: 2\n },\n a: {\n a: 0,\n k: [0, 0],\n ix: 1\n },\n s: {\n a: 0,\n k: [100, 100],\n ix: 3\n },\n r: {\n a: 0,\n k: 0,\n ix: 6\n },\n o: {\n a: 0,\n k: 100,\n ix: 7\n },\n sk: {\n a: 0,\n k: 0,\n ix: 4\n },\n sa: {\n a: 0,\n k: 0,\n ix: 5\n },\n nm: 'Transform'\n }],\n nm: 'Group 1',\n np: 2,\n cix: 2,\n bm: 0,\n ix: 1,\n mn: 'ADBE Vector Group',\n hd: false\n }],\n ip: 0,\n op: 294,\n st: 0,\n bm: 0\n }]\n }],\n layers: [{\n ddd: 0,\n ind: 1,\n ty: 0,\n nm: '008 Manage Risk - Spin',\n refId: 'comp_0',\n sr: 1,\n ks: {\n o: {\n a: 0,\n k: 100,\n ix: 11\n },\n r: {\n a: 0,\n k: 0,\n ix: 10\n },\n p: {\n a: 0,\n k: [100, 100, 0],\n ix: 2,\n l: 2\n },\n a: {\n a: 0,\n k: [100, 100, 0],\n ix: 1,\n l: 2\n },\n s: {\n a: 0,\n k: [125, 125, 100],\n ix: 6,\n l: 2\n }\n },\n ao: 0,\n w: 200,\n h: 200,\n ip: 0,\n op: 251,\n st: 0,\n bm: 0\n }],\n markers: []\n },\n \"data-ppui\": \"true\"\n }));\n};\n\nexport { AwardAchievedPictogram, CollectDonationsPictogram, DiscountsPictogram, EarnCashBackPictogram, HighFivePictogram, ManageRiskPictogram };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { utilStyles } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2, _templateObject3;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var _utilStyles = utilStyles(tokens),\n screenReader = _utilStyles.screenReader;\n\n var appbadgeHeight = '2.5rem';\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: appbadge_base;\\n line-height: 0;\\n \"])));\n var ios = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: ios;\\n height: \", \";\\n width: \", \";\\n vertical-align: bottom;\\n \"])), appbadgeHeight, '7.5rem');\n var android = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: android;\\n height: \", \";\\n width: \", \";\\n vertical-align: bottom;\\n \"])), appbadgeHeight, '8.4375rem');\n return {\n base: base,\n ios: ios,\n android: android,\n screenReader: screenReader\n };\n}\n\nvar _excluded = [\"url\", \"platform\", \"locale\", \"className\", \"imageClassName\", \"cdnHost\", \"children\"];\nvar DEFAULT_LOCALE = 'en-US'; //@ts-ignore\n\nvar getImageSources = function (currentLocale, cdnHost) {\n var localeFormat = currentLocale.toString().replace('-', '_');\n return {\n locale: localeFormat,\n ios: \"https://\".concat(cdnHost, \"/appbadges/badges/\").concat(localeFormat, \"/ios.svg\"),\n ios_white: \"https://\".concat(cdnHost, \"/appbadges/badges/\").concat(localeFormat, \"/ios_white.svg\"),\n android: \"https://\".concat(cdnHost, \"/appbadges/badges/\").concat(localeFormat, \"/android-no-padding.svg\")\n };\n};\n\nvar Appbadge = function (_ref) {\n var url = _ref.url,\n platform = _ref.platform,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? DEFAULT_LOCALE : _ref$locale,\n className = _ref.className,\n imageClassName = _ref.imageClassName,\n _ref$cdnHost = _ref.cdnHost,\n cdnHost = _ref$cdnHost === void 0 ? 'www.paypalobjects.com' : _ref$cdnHost,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!url) {\n console.warn('Required prop `url` is missing.');\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var imageCssVal = platform === \"android\" ? _styles.android : _styles.ios;\n var image = useMemo(function () {\n return getImageSources(locale, cdnHost);\n }, [locale]); //@ts-ignore\n\n var imgsource = image[platform];\n return jsx(\"a\", _extends({\n href: url,\n css: _styles.base,\n className: className,\n \"data-ppui-info\": \"appbadge_2.2.8\"\n }, rest), jsx(\"span\", {\n css: _styles.screenReader,\n \"data-ppui\": \"true\"\n }, children), jsx(\"img\", {\n alt: platform,\n css: imageCssVal,\n className: imageClassName,\n src: imgsource,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }));\n};\n\nexport { Appbadge, styles as appBadgeStyles, getImageSources };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, useRef, useState, useEffect } from 'react';\nimport { Row, Col, Container } from '@paypalcorp/pp-react-grid';\nimport { utilStyles, uniqueId, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { CriticalIcon, WarningIcon, CausesIcon, ArrowLeftIcon, ArrowRightIcon } from '@paypalcorp/pp-react-icons';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysSpaceTiny = tokens.sysSpaceTiny,\n sysSpaceSm = tokens.sysSpaceSm,\n sysColorErrorMain = tokens.sysColorErrorMain,\n sysColorErrorContrast = tokens.sysColorErrorContrast,\n sysColorErrorMainActive = tokens.sysColorErrorMainActive,\n sysColorWarningMain = tokens.sysColorWarningMain,\n sysColorWarningMainActive = tokens.sysColorWarningMainActive,\n sysColorWarningContrast = tokens.sysColorWarningContrast,\n sysColorSpecialtyMain = tokens.sysColorSpecialtyMain,\n sysColorSpecialtyMainActive = tokens.sysColorSpecialtyMainActive,\n sysColorSpecialtyContrast = tokens.sysColorSpecialtyContrast,\n sysBorderThicknessFocusOutline = tokens.sysBorderThicknessFocusOutline,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceJumbo = tokens.sysSpaceJumbo,\n sysSpaceMd = tokens.sysSpaceMd;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n textTitle = _textStyles.title;\n\n var offsetFocusAfter = focusStyles.offsetFocusAfter;\n /**\n * Get the color based on the type of banner\n * @param type string\n * @returns object\n *\n */\n\n var getColorMap = function (type) {\n var bgColor = sysColorSpecialtyMain;\n var activeBgColor = sysColorSpecialtyMainActive;\n var textColor = sysColorSpecialtyContrast;\n\n if (type === 'critical') {\n bgColor = sysColorErrorMain;\n activeBgColor = sysColorErrorMainActive;\n textColor = sysColorErrorContrast;\n } else if (type === 'warning') {\n bgColor = sysColorWarningMain;\n activeBgColor = sysColorWarningMainActive;\n textColor = sysColorWarningContrast;\n }\n\n return {\n bgColor: bgColor,\n activeBgColor: activeBgColor,\n textColor: textColor\n };\n };\n /**\n * Get the styles for the banner\n * @param type string\n * @returns SerializedStyles\n *\n */\n\n\n var getBanner = function (type) {\n var _getColorMap = getColorMap(type),\n bgColor = _getColorMap.bgColor,\n activeBgColor = _getColorMap.activeBgColor;\n\n return css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: \", \";\\n background-color: \", \";\\n &:active {\\n background-color: \", \";\\n }\\n \"])), type, bgColor, activeBgColor);\n };\n /**\n * Get the styles for the banner text\n * @param type string\n * @returns SerializedStyles\n *\n */\n\n\n var getTextColor = function (type) {\n var _getColorMap2 = getColorMap(type),\n textColor = _getColorMap2.textColor;\n\n var label = \"text_\".concat(type);\n return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: \", \";\\n color: \", \";\\n \"])), label, textColor);\n }; // Base Class for banner\n\n\n var base = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: banner_base;\\n box-sizing: border-box;\\n padding: \", \" \", \";\\n border-width: \", \";\\n position: relative;\\n width: 100%;\\n cursor: pointer;\\n display: block;\\n text-decoration: none;\\n outline: \", \" solid transparent;\\n &:focus {\\n &:after {\\n \", \"\\n }\\n }\\n \"])), sysSpaceMd, sysSpaceLg, sysBorderThicknessNormal, sysBorderThicknessNormal, offsetFocusAfter({\n horizontalOffset: sysBorderThicknessFocusOutline,\n verticalOffset: sysBorderThicknessFocusOutline\n }));\n\n var fullWidth = function (type) {\n var _getColorMap3 = getColorMap(type),\n bgColor = _getColorMap3.bgColor;\n\n return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: banner_full_width;\\n position: relative;\\n &:before {\\n content: '';\\n position: absolute;\\n background-color: \", \";\\n margin: 0 -50vw;\\n inset: 0 50%;\\n }\\n \"])), bgColor);\n };\n\n var title = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: banner_title;\\n \", \";\\n text-align: left;\\n max-width: 100%;\\n width: 100%;\\n display: flex;\\n [dir='rtl'] & {\\n text-align: right;\\n }\\n \"])), textTitle());\n var leftSideIcon = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: icon_left;\\n margin-right: \", \";\\n margin-top: \", \";\\n [dir='rtl'] & {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n \"])), sysSpaceSm, sysSpaceTiny, sysSpaceSm);\n var rightSideIcon = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: icon_right;\\n margin-right: 0;\\n margin-left: auto;\\n margin-top: \", \";\\n [dir='rtl'] & {\\n margin-left: 0;\\n margin-right: auto;\\n }\\n \"])), sysSpaceTiny);\n var subText = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: subtext;\\n \", \"\\n display: flex;\\n padding: 0 \", \";\\n text-align: left;\\n [dir='rtl'] & {\\n margin-right: 0;\\n text-align: right;\\n }\\n \"])), textBody(), sysSpaceJumbo);\n return {\n getBanner: getBanner,\n getTextColor: getTextColor,\n base: base,\n fullWidth: fullWidth,\n title: title,\n leftSideIcon: leftSideIcon,\n rightSideIcon: rightSideIcon,\n subText: subText\n };\n}\n\nvar _excluded = [\"id\", \"className\", \"titleClassName\", \"subTitleClassName\", \"title\", \"type\", \"specialtyIcon\", \"subText\", \"href\", \"fullWidth\", \"onClick\", \"children\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar Banner = function (_ref) {\n var _styles$getBanner, _styles$getTextColor, _styles$getTextColor2, _styles$fullWidth;\n\n var _ref$id = _ref.id,\n id = _ref$id === void 0 ? uniqueId('Banner_') : _ref$id,\n className = _ref.className,\n titleClassName = _ref.titleClassName,\n subTitleClassName = _ref.subTitleClassName,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? 'default' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'critical' : _ref$type,\n specialtyIcon = _ref.specialtyIcon,\n subText = _ref.subText,\n href = _ref.href,\n fullWidth = _ref.fullWidth,\n onClick = _ref.onClick,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var bannerCssVal = [_styles.base, type && ((_styles$getBanner = _styles.getBanner) === null || _styles$getBanner === void 0 ? void 0 : _styles$getBanner.call(_styles, type))];\n var titleCssVal = [_styles.title, type && ((_styles$getTextColor = _styles.getTextColor) === null || _styles$getTextColor === void 0 ? void 0 : _styles$getTextColor.call(_styles, type))];\n var subTextCssVal = [_styles.subText, type && ((_styles$getTextColor2 = _styles.getTextColor) === null || _styles$getTextColor2 === void 0 ? void 0 : _styles$getTextColor2.call(_styles, type))];\n var subTextContent = subText && jsx(\"div\", {\n css: subTextCssVal,\n className: subTitleClassName,\n \"data-ppui\": \"true\"\n }, ' ', subText);\n var titleRef = useRef(null);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n rtl = _useState2[0],\n setRtl = _useState2[1];\n\n useEffect(function () {\n var titleElm = titleRef.current;\n var computedStyle = window.getComputedStyle(titleElm);\n setRtl(computedStyle && computedStyle.direction === 'rtl');\n }, []);\n var StatusIcon = {\n critical: CriticalIcon,\n warning: WarningIcon,\n specialty: specialtyIcon || CausesIcon\n }[type];\n /* istanbul ignore next */\n\n var ClickIcon = rtl ? ArrowLeftIcon : ArrowRightIcon;\n var bannerContent = jsx(Row, {\n \"data-ppui\": \"true\"\n }, jsx(Col, {\n lg: 12,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: titleCssVal,\n className: titleClassName,\n ref: titleRef,\n \"data-ppui\": \"true\"\n }, jsx(StatusIcon, {\n css: _styles.leftSideIcon,\n size: \"sm\",\n \"data-ppui\": \"true\"\n }), title, jsx(ClickIcon, {\n css: _styles.rightSideIcon,\n size: \"sm\",\n \"data-ppui\": \"true\"\n })), subTextContent));\n var commonProps = {\n className: className,\n css: bannerCssVal,\n 'data-ppui-info': ''\n };\n\n var componentTypeProps = _objectSpread({\n id: id,\n tabIndex: 0,\n role: 'button',\n onClick: onClick,\n onKeyDown: function keyHandler(event) {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(event.key || event.keyCode);\n\n if (KeyCode.IS_ENTER || KeyCode.IS_SPACEBAR) {\n event.preventDefault();\n onClick(event);\n }\n }\n }, commonProps);\n\n if (href) {\n componentTypeProps = _objectSpread({\n as: 'a',\n href: href\n }, commonProps);\n }\n\n var containerElm = jsx(Container, _extends({}, componentTypeProps, rest, {\n \"data-ppui\": \"true\"\n }), bannerContent);\n return fullWidth ? jsx(\"div\", {\n css: (_styles$fullWidth = _styles.fullWidth) === null || _styles$fullWidth === void 0 ? void 0 : _styles$fullWidth.call(_styles, type),\n \"data-ppui\": \"true\"\n }, containerElm) : containerElm;\n};\n\nexport { Banner, styles as bannerStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useRef, useState, useLayoutEffect, useMemo } from 'react';\nimport { Button } from '@paypalcorp/pp-react-buttons';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { CloseIcon } from '@paypalcorp/pp-react-icons';\nimport ReactDOM from 'react-dom';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math } from 'polished';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { utilStyles, ZINDEX_COACHTIP, uniqueId } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;\nfunction styles(tokens) {\n var sysSpaceXl = tokens.sysSpaceXl,\n sysSizePointerWidthLg = tokens.sysSizePointerWidthLg;\n\n var _utilStyles = utilStyles(tokens),\n caretStyles = _utilStyles.caretStyles;\n\n var coachtipCaretVerticalOffset = math(\"\".concat(sysSizePointerWidthLg, \"/2\"));\n var positionTopLeft = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: position_top_left;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionTop(coachtipCaretVerticalOffset), caretStyles.positionShiftLeft(sysSpaceXl));\n var positionTopCenter = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: position_top_center;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionTop(coachtipCaretVerticalOffset), caretStyles.positionCenter(sysSizePointerWidthLg));\n var positionTopRight = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: position_top_right;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionTop(coachtipCaretVerticalOffset), caretStyles.positionShiftRight(sysSpaceXl));\n var positionLeft = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: position_left;\\n \", \";\\n \"])), caretStyles.positionLeft(coachtipCaretVerticalOffset));\n var positionRight = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: position_right;\\n \", \";\\n \"])), caretStyles.positionRight(coachtipCaretVerticalOffset));\n var positionBottomLeft = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: position_bottom_left;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionBottom(coachtipCaretVerticalOffset), caretStyles.positionShiftLeft(sysSpaceXl));\n var positionBottomCenter = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: position_bottom_center;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionBottom(coachtipCaretVerticalOffset), caretStyles.positionCenter(sysSizePointerWidthLg));\n var positionBottomRight = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: position_bottom_right;\\n \", \";\\n \", \";\\n \"])), caretStyles.positionBottom(coachtipCaretVerticalOffset), caretStyles.positionShiftRight(sysSpaceXl));\n return {\n positionCoachTip: function positionCoachTip(position) {\n return {\n 'top-left': positionTopLeft,\n 'top-center': positionTopCenter,\n 'top-right': positionTopRight,\n left: positionLeft,\n right: positionRight,\n 'bottom-left': positionBottomLeft,\n 'bottom-center': positionBottomCenter,\n 'bottom-right': positionBottomRight\n }[position];\n }\n };\n}\n\nvar _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4$1, _templateObject5$1, _templateObject6$1, _templateObject7$1, _templateObject8$1, _templateObject9, _templateObject10;\nfunction styles$1(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusSm = tokens.sysBorderRadiusSm,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceXl = tokens.sysSpaceXl,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSizeIconXs = tokens.sysSizeIconXs,\n sysSizePointerWidthLg = tokens.sysSizePointerWidthLg,\n sysSizeTapTargetSm = tokens.sysSizeTapTargetSm;\n\n var _utilStyles = utilStyles(tokens),\n caretStyles = _utilStyles.caretStyles,\n elevationStyles = _utilStyles.elevationStyles;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n textCaption = _textStyles.caption,\n title = _textStyles.title;\n\n var _caretPosStyles = styles(tokens),\n positionCoachTip = _caretPosStyles.positionCoachTip; // Calc variables:\n\n\n var coachtipHeaderCloseBtnMarginCalc = math(\"(\".concat(sysSizeTapTargetSm, \" - \").concat(sysSizeIconXs, \")/2\"));\n var coachtipHeaderCloseBtnSpacingCalc = math(\"(\".concat(coachtipHeaderCloseBtnMarginCalc, \" + \").concat(sysSizeIconXs, \")/2\"));\n var base = css(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral([\"\\n label: coach-tip_base;\\n display: none;\\n position: absolute;\\n background-color: \", \";\\n max-width: \", \";\\n padding: \", \";\\n border-radius: \", \";\\n z-index: \", \";\\n \", \";\\n \", \"\\n &:focus {\\n outline: none;\\n }\\n \"])), sysColorBackgroundSurface, '20rem', sysSpaceXl, sysBorderRadiusSm, ZINDEX_COACHTIP, caretStyles.base(sysSizePointerWidthLg), elevationStyles.level3);\n var header = css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral([\"\\n label: header;\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n \"])));\n var headerText = css(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteral([\"\\n label: header_text;\\n \", \";\\n display: inline-block;\\n margin-bottom: \", \";\\n max-width: calc(100% - \", \");\\n \"])), title(), sysSpaceMd, coachtipHeaderCloseBtnSpacingCalc);\n var noHeaderContentText = css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral([\"\\n label: no_header;\\n display: inline-block;\\n max-width: calc(100% - \", \");\\n \"])), coachtipHeaderCloseBtnSpacingCalc);\n var footer = css(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteral([\"\\n label: footer;\\n display: flex;\\n align-items: center;\\n margin-top: \", \";\\n \"])), sysSpaceMd);\n var footerLabel = css(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteral([\"\\n label: footer_label;\\n \", \";\\n display: inline-block;\\n flex: 1 1 auto;\\n \"])), textCaption());\n var footerButtonContainer = css(_templateObject7$1 || (_templateObject7$1 = _taggedTemplateLiteral([\"\\n label: footer_button_container;\\n display: inline-block;\\n \"])));\n var footerButton = css(_templateObject8$1 || (_templateObject8$1 = _taggedTemplateLiteral([\"\\n label: footer_button;\\n margin-left: \", \";\\n [dir='rtl'] & {\\n margin-left: 0;\\n margin-right: \", \";\\n }\\n \"])), sysSpaceXl, sysSpaceXl);\n var contentText = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: text;\\n \", \";\\n \"])), textBody());\n var closeButton = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: close_button;\\n margin-top: -\", \";\\n margin-right: -\", \";\\n padding: \", \";\\n z-index: 1;\\n [dir='rtl'] & {\\n margin-right: 0;\\n margin-left: -\", \";\\n }\\n \"])), sysSpaceMd, sysSpaceMd, sysSpaceXs, sysSpaceMd);\n return {\n base: base,\n header: header,\n headerText: headerText,\n contentText: contentText,\n noHeaderContentText: noHeaderContentText,\n footer: footer,\n footerLabel: footerLabel,\n footerButtonContainer: footerButtonContainer,\n footerButton: footerButton,\n closeButton: closeButton,\n positionCoachTip: positionCoachTip\n };\n}\n\nvar _excluded = [\"id\", \"headerText\", \"text\", \"caretPos\", \"prevButtonText\", \"nextButtonText\", \"onPrevButtonClick\", \"onNextButtonClick\", \"paginationText\", \"targetElementId\", \"targetElementRef\", \"containerRef\", \"isOpen\", \"onClose\", \"className\", \"closeButtonLabel\", \"headerTextClassName\", \"contentTextClassName\", \"paginationTextClassName\", \"prevButtonClassName\", \"nextButtonClassName\"];\n\nvar getRefCurrent = function (myref) {\n return (\n /* istanbul ignore next */\n myref && myref.current ? myref.current : null\n );\n};\n\nvar CoachTip = function (_ref) {\n var _styles$positionCoach;\n\n var _ref$id = _ref.id,\n id = _ref$id === void 0 ? uniqueId('CoachTip_') : _ref$id,\n headerText = _ref.headerText,\n _ref$text = _ref.text,\n text = _ref$text === void 0 ? 'default' : _ref$text,\n _ref$caretPos = _ref.caretPos,\n caretPos = _ref$caretPos === void 0 ? 'bottom-left' : _ref$caretPos,\n prevButtonText = _ref.prevButtonText,\n nextButtonText = _ref.nextButtonText,\n onPrevButtonClick = _ref.onPrevButtonClick,\n onNextButtonClick = _ref.onNextButtonClick,\n paginationText = _ref.paginationText,\n targetElementId = _ref.targetElementId,\n targetElementRef = _ref.targetElementRef,\n containerRef = _ref.containerRef,\n _ref$isOpen = _ref.isOpen,\n isOpen = _ref$isOpen === void 0 ? true : _ref$isOpen,\n onClose = _ref.onClose,\n className = _ref.className,\n _ref$closeButtonLabel = _ref.closeButtonLabel,\n closeButtonLabel = _ref$closeButtonLabel === void 0 ? 'close coach tip' : _ref$closeButtonLabel,\n headerTextClassName = _ref.headerTextClassName,\n contentTextClassName = _ref.contentTextClassName,\n paginationTextClassName = _ref.paginationTextClassName,\n prevButtonClassName = _ref.prevButtonClassName,\n nextButtonClassName = _ref.nextButtonClassName,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!targetElementId) {\n console.warn('Required prop targetElementId missing.');\n }\n\n var coachTipRef = useRef();\n var focusableEls = document.querySelectorAll('a, button, textarea, input, select');\n var initialWidth = useRef();\n var caretWidth;\n var caretHeight;\n var rootFontSize;\n var caretOffset;\n var caretSpaceHorizontal;\n\n var _useState = useState(isOpen),\n _useState2 = _slicedToArray(_useState, 2),\n show = _useState2[0],\n setShow = _useState2[1];\n /* istanbul ignore next */\n\n\n var getCaretDimensions = function () {\n var coachTip = getRefCurrent(coachTipRef);\n\n if (coachTip) {\n var rootFontSizePx = window && window.getComputedStyle(document.body).getPropertyValue('font-size') || '16px';\n rootFontSize = parseInt(rootFontSizePx.split('px')[0], 10);\n caretWidth = 0.9375 * rootFontSize; // 15\n\n caretHeight = 0.5625 * rootFontSize; // 9\n\n caretOffset = 0.25 * rootFontSize; // 4 between caret and tooltip icon\n\n caretSpaceHorizontal = 1.5 * rootFontSize; // 24 from caret to tooltip edge\n }\n };\n /* istanbul ignore next */\n\n\n var getWindowBoundary = function () {\n var coachTipWindow = getRefCurrent(containerRef);\n\n if (coachTipWindow) {\n var pos = coachTipWindow.getBoundingClientRect();\n return {\n windowEl: coachTipWindow,\n top: pos.top,\n right: pos.right,\n bottom: pos.bottom,\n left: pos.left\n };\n }\n\n return {\n windowEl: window,\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0\n };\n };\n\n var\n /* istanbul ignore next */\n positionSelf = function (coachTip, targetEl, width, height) {\n if (coachTip && targetEl) {\n var targetElWidth = targetEl.offsetWidth;\n var targetElHeight = targetEl.offsetHeight; // start from targetEl position then move accordingly\n\n var scrollX = window.scrollX || window.pageXOffset;\n var scrollY = window.scrollY || window.pageYOffset;\n var offsetLeft = targetEl.getBoundingClientRect().left + scrollX;\n var offsetTop = targetEl.getBoundingClientRect().top + scrollY;\n var spacingOffset = caretSpaceHorizontal + caretWidth / 2;\n var moveDown = offsetTop + targetElHeight + caretHeight + caretOffset;\n var moveUp = offsetTop - height - caretHeight - caretOffset;\n var shiftLeft = offsetLeft - spacingOffset + targetElWidth / 2;\n var shiftRight = offsetLeft - width + spacingOffset + targetElWidth / 2;\n var shiftCenter = offsetLeft - width / 2 + targetElWidth / 2;\n /* istanbul ignore next */\n\n switch (caretPos) {\n case 'top-left':\n offsetLeft = shiftLeft;\n offsetTop = moveDown;\n break;\n\n case 'top-center':\n offsetLeft = shiftCenter;\n offsetTop = moveDown;\n break;\n\n case 'top-right':\n offsetLeft = shiftRight;\n offsetTop = moveDown;\n break;\n\n case 'left':\n offsetLeft = offsetLeft + targetElWidth + caretWidth + caretOffset;\n offsetTop = offsetTop - height / 2 + targetElHeight / 2;\n break;\n\n case 'right':\n offsetLeft = offsetLeft - width - caretWidth - caretOffset;\n offsetTop = offsetTop - height / 2 + targetElHeight / 2;\n break;\n\n case 'bottom-right':\n offsetLeft = shiftRight;\n offsetTop = moveUp;\n break;\n\n case 'bottom-center':\n offsetLeft = shiftCenter;\n offsetTop = moveUp;\n break;\n\n default:\n // 'bottom-left':\n offsetLeft = shiftLeft;\n offsetTop = moveUp;\n }\n\n var _containerElm = getRefCurrent(containerRef);\n\n if (_containerElm) {\n var containerPos = _containerElm.getBoundingClientRect();\n\n var scrollTop = _containerElm.scrollTop;\n var scrollLeft = _containerElm.scrollLeft;\n offsetTop = offsetTop - containerPos.top + scrollTop - scrollY;\n offsetLeft = offsetLeft - containerPos.left + scrollLeft - scrollX;\n }\n\n coachTip.style.top = \"\".concat(offsetTop, \"px\");\n coachTip.style.left = \"\".concat(offsetLeft, \"px\");\n }\n }; // Coach Tip can be narrower than the max width depending on where it is positioned,\n // (e.g. if position close to right of window it will be narrow and tall, therefore,\n // its width must determined before positioning since Coach Tip's width is used in\n // positioning calcs.\n\n /* istanbul ignore next */\n\n\n var refreshCoachtip = function () {\n var coachTip = getRefCurrent(coachTipRef);\n var targetEl = targetElementRef ? getRefCurrent(targetElementRef) : document.getElementById(targetElementId);\n\n if (coachTip && targetEl) {\n var coachTipMaxWidthPx = getComputedStyle(coachTip, 'style').maxWidth;\n var coachTipMaxWidth = parseInt(coachTipMaxWidthPx.split('px')[0], 10) || 320;\n var coachTipWindowPos = getWindowBoundary();\n var targetLeft = targetEl.getBoundingClientRect().left;\n var targetWidth = targetEl.offsetWidth;\n var caretCenterToCorner = caretSpaceHorizontal + caretWidth / 2; // Update display property here instead of css to\n // get coach tip height/width to avoid page scroll\n\n coachTip.style.display = 'inline-block';\n var availableSpace;\n var maxWidth;\n /* istanbul ignore next */\n\n switch (caretPos) {\n case 'top-left':\n case 'bottom-left':\n availableSpace = coachTipWindowPos.right - targetLeft - targetWidth / 2;\n maxWidth = availableSpace + caretCenterToCorner;\n break;\n\n case 'top-right':\n case 'bottom-right':\n availableSpace = targetLeft + targetWidth / 2;\n maxWidth = availableSpace + caretCenterToCorner;\n break;\n\n case 'top-center':\n case 'bottom-center':\n // find shorter side\n var availableLeftSpace = targetLeft + targetWidth / 2;\n var availableRightSpace = coachTipWindowPos.right - targetLeft - targetWidth / 2;\n availableSpace = availableLeftSpace > availableRightSpace ? availableRightSpace : availableLeftSpace;\n maxWidth = availableSpace * 2;\n break;\n\n case 'right':\n availableSpace = targetLeft;\n maxWidth = availableSpace - caretOffset - caretWidth;\n break;\n\n case 'left':\n availableSpace = coachTipWindowPos.right - targetLeft - targetWidth;\n maxWidth = availableSpace - caretOffset - caretWidth;\n break;\n\n default:\n maxWidth = coachTipMaxWidth;\n }\n\n var width = maxWidth < initialWidth.current ? maxWidth : initialWidth.current;\n var height = coachTip.offsetHeight;\n positionSelf(coachTip, targetEl, width, height);\n }\n };\n\n var initializeCoachTip = function () {\n var coachTip = getRefCurrent(coachTipRef);\n /* istanbul ignore next */\n\n if (coachTip) {\n initialWidth.current = coachTip.getBoundingClientRect().width || 320;\n getCaretDimensions();\n coachTip.focus();\n }\n };\n\n useLayoutEffect(function () {\n initializeCoachTip();\n window.addEventListener('resize', refreshCoachtip);\n return function () {\n window.removeEventListener('resize', refreshCoachtip);\n\n if (focusableEls.length > 0) {\n var initFocus = focusableEls[0];\n initFocus.focus();\n }\n };\n }, []);\n useLayoutEffect(function () {\n setShow(isOpen);\n\n if (isOpen) {\n refreshCoachtip();\n }\n\n return function () {};\n }, [isOpen, headerText, text, nextButtonText, prevButtonText, paginationText]);\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles$1(tokens);\n }, [tokens]);\n\n var coachTipCssVal = [_styles.base, (_styles$positionCoach = _styles.positionCoachTip) === null || _styles$positionCoach === void 0 ? void 0 : _styles$positionCoach.call(_styles, caretPos)];\n var closeButton = jsx(\"span\", {\n css: _styles.closeButton,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, _extends({}, {\n buttonType: 'tertiary',\n size: 'sm',\n svgIconComponent: CloseIcon\n }, {\n onClick: function handleClose(e) {\n if (onClose) {\n onClose(e);\n } else {\n setShow(false);\n }\n /* istanbul ignore next */\n\n\n if (focusableEls.length > 0) {\n var nextFocus = focusableEls[0];\n nextFocus.focus();\n }\n },\n \"data-ppui\": \"true\"\n }), closeButtonLabel));\n var footerButtons = jsx(\"div\", {\n css: _styles.footerButtonContainer,\n \"data-ppui\": \"true\"\n }, prevButtonText && jsx(Button, {\n tertiary: true,\n css: _styles.footerButton,\n className: prevButtonClassName,\n onClick: onPrevButtonClick,\n \"data-ppui\": \"true\"\n }, prevButtonText), nextButtonText && jsx(Button, {\n tertiary: true,\n css: _styles.footerButton,\n className: nextButtonClassName,\n onClick: onNextButtonClick,\n \"data-ppui\": \"true\"\n }, nextButtonText));\n var label = jsx(\"div\", {\n css: _styles.footerLabel,\n className: paginationTextClassName,\n \"data-ppui\": \"true\"\n }, paginationText);\n var coachTipElement = jsx(\"div\", _extends({\n css: coachTipCssVal,\n className: className,\n id: id,\n ref: coachTipRef,\n role: \"dialog\",\n \"aria-hidden\": !show,\n tabIndex: 0,\n \"data-ppui-info\": \"coach-tip_2.6.8\"\n }, rest), function header() {\n if (headerText) {\n return jsx(\"div\", {\n css: _styles.header,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: _styles.headerText,\n className: headerTextClassName,\n \"data-ppui\": \"true\"\n }, headerText), closeButton);\n }\n\n return jsx(\"div\", {\n css: _styles.header,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: [_styles.contentText, _styles.noHeaderContentText],\n className: contentTextClassName,\n \"data-ppui\": \"true\"\n }, text), closeButton);\n }(), headerText && jsx(\"div\", {\n css: _styles.contentText,\n className: contentTextClassName,\n \"data-ppui\": \"true\"\n }, text), (paginationText || prevButtonText || nextButtonText) && jsx(\"div\", {\n css: _styles.footer,\n \"data-ppui\": \"true\"\n }, paginationText && label, footerButtons));\n var containerElm = containerRef && containerRef.current;\n return show && ReactDOM.createPortal(coachTipElement, containerElm || document.body);\n};\n\nexport { CoachTip, styles$1 as coachTipStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useContext } from 'react';\nimport { Combobox } from '@paypalcorp/pp-react-combobox';\nimport { IntlContext } from '@paypalcorp/pp-react-intl';\nimport { Flag } from '@paypalcorp/pp-react-flag';\n\nvar _excluded = [\"name\", \"value\", \"label\", \"countryList\", \"onOpen\", \"onChange\", \"onFocus\", \"sheetWrapperClassName\"],\n _excluded2 = [\"countryCode\", \"label\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar CountryInput = function (_ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'default' : _ref$name,\n value = _ref.value,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? 'Country or region' : _ref$label,\n _ref$countryList = _ref.countryList,\n countryList = _ref$countryList === void 0 ? [] : _ref$countryList,\n onOpen = _ref.onOpen,\n onChange = _ref.onChange,\n _ref$onFocus = _ref.onFocus,\n onFocus = _ref$onFocus === void 0 ? null : _ref$onFocus,\n sheetWrapperClassName = _ref.sheetWrapperClassName,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!countryList || !(countryList === null || countryList === void 0 ? void 0 : countryList.length)) {\n console.warn('Required prop `countryList` is missing.');\n }\n\n var intlContext = useContext(IntlContext);\n var options;\n\n var filterProps = function (country, displayNamesObj) {\n var countryCode = country.countryCode,\n optionLabel = country.label,\n optionRest = _objectWithoutProperties(country, _excluded2); // istanbul ignore next\n\n\n return _objectSpread({\n label: optionLabel || displayNamesObj && displayNamesObj.select(countryCode),\n value: countryCode,\n decoration: /*#__PURE__*/React.createElement(Flag, {\n countryCode: countryCode,\n size: \"md\",\n \"data-ppui\": \"true\"\n })\n }, optionRest);\n };\n /* istanbul ignore else */\n\n\n if (!intlContext || !intlContext.getDisplayNamesObject) {\n options = countryList.map(function (country) {\n return filterProps(country, null);\n });\n } else {\n var displayNamesObj = intlContext.getDisplayNamesObject({\n type: 'region'\n });\n options = countryList.map(function (country) {\n return filterProps(country, displayNamesObj);\n });\n }\n\n return /*#__PURE__*/React.createElement(Combobox, _extends({\n name: name,\n value: value,\n options: options,\n label: label,\n onOpen: onOpen,\n onChange: onChange,\n onFocus: onFocus,\n sheetWrapperClassName: sheetWrapperClassName,\n \"data-ppui-info\": \"country-input_2.4.15\"\n }, rest));\n};\n\nexport { CountryInput };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties$1 from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef, useRef, useEffect } from 'react';\nimport { TextInput } from '@paypalcorp/pp-react-text-input';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\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 _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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : 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 ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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 _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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 _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nvar ChangeDetails = /*#__PURE__*/function () {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n function ChangeDetails(details) {\n _classCallCheck(this, ChangeDetails);\n\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n\n\n _createClass(ChangeDetails, [{\n key: \"aggregate\",\n value: function aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n /** Total offset considering all changes */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.tailShift + this.inserted.length;\n }\n }]);\n\n return ChangeDetails;\n}();\n\n/** Checks if value is string */\n\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\n\nvar DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/** */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n\n default:\n return direction;\n }\n}\n/** Escapes regular expression control chars */\n\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction normalizePrepare(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) {\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n }\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n\n return false;\n}\n\n/** Provides details of changing input */\n\nvar ActionDetails = /*#__PURE__*/function () {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n _classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n /**\n Start changing position\n @readonly\n */\n\n\n _createClass(ActionDetails, [{\n key: \"startChangePos\",\n get: function get() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n /**\n Inserted symbols count\n @readonly\n */\n\n }, {\n key: \"insertedCount\",\n get: function get() {\n return this.cursorPos - this.startChangePos;\n }\n /**\n Inserted symbols\n @readonly\n */\n\n }, {\n key: \"inserted\",\n get: function get() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n /**\n Removed symbols count\n @readonly\n */\n\n }, {\n key: \"removedCount\",\n get: function get() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n /**\n Removed symbols\n @readonly\n */\n\n }, {\n key: \"removed\",\n get: function get() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n /**\n Unchanged head symbols\n @readonly\n */\n\n }, {\n key: \"head\",\n get: function get() {\n return this.value.substring(0, this.startChangePos);\n }\n /**\n Unchanged tail symbols\n @readonly\n */\n\n }, {\n key: \"tail\",\n get: function get() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n /**\n Remove direction\n @readonly\n */\n\n }, {\n key: \"removeDirection\",\n get: function get() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right\n\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) && // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n\n return ActionDetails;\n}();\n\n/** Provides details of continuous extracted tail */\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n function ContinuousTailDetails() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, ContinuousTailDetails);\n\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n _createClass(ContinuousTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"extend\",\n value: function extend(tail) {\n this.value += String(tail);\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }, {\n key: \"unshift\",\n value: function unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n var shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (!this.value.length) return '';\n var shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n }]);\n\n return ContinuousTailDetails;\n}();\n\n/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\n/** Supported mask type */\n\n/** Provides common masking stuff */\nvar Masked = /*#__PURE__*/function () {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */\n // $FlowFixMe no ideas\n\n /** Transforms value before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing in the end of editing */\n\n /** Format typed value to string */\n\n /** Parse strgin to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n function Masked(opts) {\n _classCallCheck(this, Masked);\n\n this._value = '';\n\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n this.isInitialized = true;\n }\n /** Sets and applies new options */\n\n\n _createClass(Masked, [{\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n if (!Object.keys(opts).length) return; // $FlowFixMe\n\n this.withValueRefresh(this._update.bind(this, opts));\n }\n /**\n Sets new options\n @protected\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n Object.assign(this, opts);\n }\n /** Mask state */\n\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this.value\n };\n },\n set: function set(state) {\n this._value = state._value;\n }\n /** Resets value */\n\n }, {\n key: \"reset\",\n value: function reset() {\n this._value = '';\n }\n /** */\n\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(value) {\n this.resolve(value);\n }\n /** Resolve new value */\n\n }, {\n key: \"resolve\",\n value: function resolve(value) {\n this.reset();\n this.append(value, {\n input: true\n }, '');\n this.doCommit();\n return this.value;\n }\n /** */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.doParse(this.value);\n },\n set: function set(value) {\n this.value = this.doFormat(value);\n }\n /** Value that includes raw user input */\n\n }, {\n key: \"rawInputValue\",\n get: function get() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n },\n set: function set(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n /** */\n\n }, {\n key: \"isFilled\",\n get: function get() {\n return this.isComplete;\n }\n /** Finds nearest input position in direction */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n /** Extracts value in range considering flags */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n /** Extracts tail in range */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n /** Appends tail */\n // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n /** Appends char */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n /** Appends char */\n\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n var consistentState = this.state;\n var details;\n\n var _normalizePrepare = normalizePrepare(this.doPrepare(ch, flags));\n\n var _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2);\n\n ch = _normalizePrepare2[0];\n details = _normalizePrepare2[1];\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n if (details.inserted) {\n var consistentTail;\n var appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n var beforeTailState = this.state;\n\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length);\n }\n\n var tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString(); // not ok, try shift\n\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n } // if ok, rollback state after tail\n\n\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n } // revert all if something went wrong\n\n\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n\n return details;\n }\n /** Appends optional placeholder at end */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n return new ChangeDetails();\n }\n /** Appends optional eager placeholder at end */\n\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return new ChangeDetails();\n }\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n var details = new ChangeDetails();\n var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state;\n\n for (var ci = 0; ci < str.length; ++ci) {\n details.aggregate(this._appendChar(str[ci], flags, checkTail));\n } // append tail but aggregate only tailShift\n\n\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n if (this.eager && flags !== null && flags !== void 0 && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n return details;\n }\n /** */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n /** Calls function and reapplies current value */\n\n }, {\n key: \"withValueRefresh\",\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n var rawInput = this.rawInputValue;\n var value = this.value;\n var ret = fn();\n this.rawInputValue = rawInput; // append lost trailing chars at end\n\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n\n delete this._refreshing;\n return ret;\n }\n /** */\n\n }, {\n key: \"runIsolated\",\n value: function runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n var state = this.state;\n var ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n /**\n Prepares string before mask processing\n @protected\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n /**\n Validates if value is acceptable\n @protected\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n /**\n Does additional processing in the end of editing\n @protected\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n /** */\n\n }, {\n key: \"doFormat\",\n value: function doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n /** */\n\n }, {\n key: \"doParse\",\n value: function doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n /** */\n\n }, {\n key: \"splice\",\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n input: true\n };\n var tailPos = start + deleteCount;\n var tail = this.extractTail(tailPos);\n var oldRawValue;\n\n if (this.eager) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n\n var startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !this.eager ? DIRECTION.NONE : removeDirection);\n var details = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n }).aggregate(this.remove(startChangePos));\n\n if (this.eager && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n var valLength;\n\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n\n return details.aggregate(this.append(inserted, flags, tail));\n }\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return this.mask === mask;\n }\n }, {\n key: \"typedValueEquals\",\n value: function typedValueEquals(value) {\n var tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue);\n }\n }]);\n\n return Masked;\n}();\nMasked.DEFAULTS = {\n format: function format(v) {\n return v;\n },\n parse: function parse(v) {\n return v;\n }\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n } // $FlowFixMe\n\n\n if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n if (mask instanceof IMask.Masked) return mask.constructor; // $FlowFixMe\n\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n\n return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n var mask = opts.mask; // $FlowFixMe\n\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n var MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nvar _excluded = [\"mask\"];\nvar DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternInputDefinition(opts) {\n _classCallCheck(this, PatternInputDefinition);\n\n var mask = opts.mask,\n blockOpts = _objectWithoutProperties(opts, _excluded);\n\n this.masked = createMask({\n mask: mask\n });\n Object.assign(this, blockOpts);\n }\n\n _createClass(PatternInputDefinition, [{\n key: \"reset\",\n value: function reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.masked.unmaskedValue;\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.isFilled) return new ChangeDetails();\n var state = this.masked.state; // simulate input\n\n var details = this.masked._appendChar(ch, flags);\n\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n }, {\n key: \"append\",\n value: function append() {\n var _this$masked;\n\n // TODO probably should be done via _appendChar\n return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return new ChangeDetails();\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$masked2;\n\n return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n }\n }, {\n key: \"appendTail\",\n value: function appendTail() {\n var _this$masked3;\n\n return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this.value.length;\n var boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this$masked4, _this$parent;\n\n return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this.masked.doCommit();\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n },\n set: function set(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n }]);\n\n return PatternInputDefinition;\n}();\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternFixedDefinition(opts) {\n _classCallCheck(this, PatternFixedDefinition);\n\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n\n _createClass(PatternFixedDefinition, [{\n key: \"value\",\n get: function get() {\n return this._value;\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.isUnmasking ? this.value : '';\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._isRawInput = false;\n this._value = '';\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n }, {\n key: \"isFilled\",\n get: function get() {\n return Boolean(this._value);\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details = new ChangeDetails();\n if (this._value) return details;\n var appended = this.char === ch;\n var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !this.eager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._value) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n var details = this._appendChar(str[0], flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {}\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }]);\n\n return PatternFixedDefinition;\n}();\n\nvar _excluded$1 = [\"chunks\"];\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n /** */\n function ChunksTailDetails() {\n var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n this.from = from;\n }\n\n _createClass(ChunksTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.chunks.map(String).join('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"extend\",\n value: function extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n var lastChunk = this.chunks[this.chunks.length - 1];\n var extendLast = lastChunk && ( // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n var firstTailChunk;\n\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n } // if tail chunk still has value\n\n\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n var tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n var details = new ChangeDetails();\n\n for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n var chunk = this.chunks[ci];\n\n var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n var stop = chunk.stop;\n var chunkBlock = void 0;\n\n if (stop != null && ( // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n var tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted; // get not inserted chars\n\n var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n chunks: this.chunks.map(function (c) {\n return c.state;\n }),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n },\n set: function set(state) {\n var chunks = state.chunks,\n props = _objectWithoutProperties(state, _excluded$1);\n\n Object.assign(this, props);\n this.chunks = chunks.map(function (cstate) {\n var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n chunk.state = cstate;\n return chunk;\n });\n }\n }, {\n key: \"unshift\",\n value: function unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n var chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n var ci = 0;\n\n while (ci < this.chunks.length) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.unshift(chunkShiftPos);\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (!this.chunks.length) return '';\n var ci = this.chunks.length - 1;\n\n while (0 <= ci) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.shift();\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }]);\n\n return ChunksTailDetails;\n}();\n\nvar PatternCursor = /*#__PURE__*/function () {\n function PatternCursor(masked, pos) {\n _classCallCheck(this, PatternCursor);\n\n this.masked = masked;\n this._log = [];\n\n var _ref = masked._mapPosToBlock(pos) || (pos < 0 ? // first\n {\n index: 0,\n offset: 0\n } : // last\n {\n index: this.masked._blocks.length,\n offset: 0\n }),\n offset = _ref.offset,\n index = _ref.index;\n\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n\n _createClass(PatternCursor, [{\n key: \"block\",\n get: function get() {\n return this.masked._blocks[this.index];\n }\n }, {\n key: \"pos\",\n get: function get() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n },\n set: function set(s) {\n Object.assign(this, s);\n }\n }, {\n key: \"pushState\",\n value: function pushState() {\n this._log.push(this.state);\n }\n }, {\n key: \"popState\",\n value: function popState() {\n var s = this._log.pop();\n\n this.state = s;\n return s;\n }\n }, {\n key: \"bindBlock\",\n value: function bindBlock() {\n if (this.block) return;\n\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n }, {\n key: \"_pushLeft\",\n value: function _pushLeft(fn) {\n this.pushState();\n\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) {\n var _this$block;\n\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n }, {\n key: \"_pushRight\",\n value: function _pushRight(fn) {\n this.pushState();\n\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n }, {\n key: \"pushLeftBeforeFilled\",\n value: function pushLeftBeforeFilled() {\n var _this = this;\n\n return this._pushLeft(function () {\n if (_this.block.isFixed || !_this.block.value) return;\n _this.offset = _this.block.nearestInputPos(_this.offset, DIRECTION.FORCE_LEFT);\n if (_this.offset !== 0) return true;\n });\n }\n }, {\n key: \"pushLeftBeforeInput\",\n value: function pushLeftBeforeInput() {\n var _this2 = this;\n\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(function () {\n if (_this2.block.isFixed) return;\n _this2.offset = _this2.block.nearestInputPos(_this2.offset, DIRECTION.LEFT);\n return true;\n });\n }\n }, {\n key: \"pushLeftBeforeRequired\",\n value: function pushLeftBeforeRequired() {\n var _this3 = this;\n\n return this._pushLeft(function () {\n if (_this3.block.isFixed || _this3.block.isOptional && !_this3.block.value) return;\n _this3.offset = _this3.block.nearestInputPos(_this3.offset, DIRECTION.LEFT);\n return true;\n });\n }\n }, {\n key: \"pushRightBeforeFilled\",\n value: function pushRightBeforeFilled() {\n var _this4 = this;\n\n return this._pushRight(function () {\n if (_this4.block.isFixed || !_this4.block.value) return;\n _this4.offset = _this4.block.nearestInputPos(_this4.offset, DIRECTION.FORCE_RIGHT);\n if (_this4.offset !== _this4.block.value.length) return true;\n });\n }\n }, {\n key: \"pushRightBeforeInput\",\n value: function pushRightBeforeInput() {\n var _this5 = this;\n\n return this._pushRight(function () {\n if (_this5.block.isFixed) return; // const o = this.offset;\n\n _this5.offset = _this5.block.nearestInputPos(_this5.offset, DIRECTION.NONE); // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n\n return true;\n });\n }\n }, {\n key: \"pushRightBeforeRequired\",\n value: function pushRightBeforeRequired() {\n var _this6 = this;\n\n return this._pushRight(function () {\n if (_this6.block.isFixed || _this6.block.isOptional && !_this6.block.value) return; // TODO check |[*]XX_\n\n _this6.offset = _this6.block.nearestInputPos(_this6.offset, DIRECTION.NONE);\n return true;\n });\n }\n }]);\n\n return PatternCursor;\n}();\n\n/** Masking by RegExp */\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedRegExp, _Masked);\n\n var _super = _createSuper(MaskedRegExp);\n\n function MaskedRegExp() {\n _classCallCheck(this, MaskedRegExp);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRegExp, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n if (opts.mask) opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n\n _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedRegExp;\n}(Masked);\nIMask.MaskedRegExp = MaskedRegExp;\n\nvar _excluded$2 = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {boolean} opts.lazy\n*/\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedPattern, _Masked);\n\n var _super = _createSuper(MaskedPattern);\n\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Show placeholder only when needed */\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MaskedPattern);\n\n // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n /**\n @override\n @param {Object} opts\n */\n\n\n _createClass(MaskedPattern, [{\n key: \"_update\",\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n this._rebuildMask();\n }\n /** */\n\n }, {\n key: \"_rebuildMask\",\n value: function _rebuildMask() {\n var _this = this;\n\n var defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n var pattern = this.mask;\n if (!pattern || !defs) return;\n var unmaskingBlock = false;\n var optionalBlock = false;\n\n for (var i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n var _ret = function () {\n var p = pattern.slice(i);\n var bNames = Object.keys(_this.blocks).filter(function (bName) {\n return p.indexOf(bName) === 0;\n }); // order by key length\n\n bNames.sort(function (a, b) {\n return b.length - a.length;\n }); // use block name with max length\n\n var bName = bNames[0];\n\n if (bName) {\n // $FlowFixMe no ideas\n var maskedBlock = createMask(Object.assign({\n parent: _this,\n lazy: _this.lazy,\n eager: _this.eager,\n placeholderChar: _this.placeholderChar,\n overwrite: _this.overwrite\n }, _this.blocks[bName]));\n\n if (maskedBlock) {\n _this._blocks.push(maskedBlock); // store block index\n\n\n if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n return \"continue\";\n }\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n var char = pattern[i];\n var isInput = (char in defs);\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n\n var def = isInput ? new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock\n }) : new PatternFixedDefinition({\n char: char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n\n this._blocks.push(def);\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n _blocks: this._blocks.map(function (b) {\n return b.state;\n })\n });\n },\n set: function set(state) {\n var _blocks = state._blocks,\n maskedState = _objectWithoutProperties(state, _excluded$2);\n\n this._blocks.forEach(function (b, bi) {\n return b.state = _blocks[bi];\n });\n\n _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n this._blocks.forEach(function (b) {\n return b.reset();\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isComplete;\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"isFilled\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isFilled;\n });\n }\n }, {\n key: \"isFixed\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isFixed;\n });\n }\n }, {\n key: \"isOptional\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isOptional;\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this._blocks.forEach(function (b) {\n return b.doCommit();\n });\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._blocks.reduce(function (str, b) {\n return str += b.unmaskedValue;\n }, '');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // TODO return _value when not in change?\n return this._blocks.reduce(function (str, b) {\n return str += b.value;\n }, '');\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n var _this$_mapPosToBlock;\n\n var details = new ChangeDetails();\n var startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details; // TODO test if it works for nested pattern masks\n\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n\n for (var bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n var d = this._blocks[bi]._appendEager();\n\n if (!d.inserted) break;\n details.aggregate(d);\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var blockIter = this._mapPosToBlock(this.value.length);\n\n var details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (var bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n\n var _block = this._blocks[bi];\n if (!_block) break;\n\n var blockDetails = _block._appendChar(ch, Object.assign({}, flags, {\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi]\n }));\n\n var skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this2 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n var blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = _this2._findStopBefore(bi);\n blockChunk.from = _this2._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n var input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n }, {\n key: \"_findStopBefore\",\n value: function _findStopBefore(blockIndex) {\n var stopBefore;\n\n for (var si = 0; si < this._stops.length; ++si) {\n var stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n\n return stopBefore;\n }\n /** Appends placeholder depending on laziness */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder(toBlockIndex) {\n var _this3 = this;\n\n var details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n var startBlockIter = this._mapPosToBlock(this.value.length);\n\n if (!startBlockIter) return details;\n var startBlockIndex = startBlockIter.index;\n var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n var args = b._blocks != null ? [b._blocks.length] : [];\n\n var bDetails = b._appendPlaceholder.apply(b, args);\n\n _this3._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n /** Finds block in pos */\n\n }, {\n key: \"_mapPosToBlock\",\n value: function _mapPosToBlock(pos) {\n var accVal = '';\n\n for (var bi = 0; bi < this._blocks.length; ++bi) {\n var _block2 = this._blocks[bi];\n var blockStartPos = accVal.length;\n accVal += _block2.value;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n /** */\n\n }, {\n key: \"_blockStartPos\",\n value: function _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n return pos += b.value.length;\n }, 0);\n }\n /** */\n\n }, {\n key: \"_forEachBlocksInRange\",\n value: function _forEachBlocksInRange(fromPos) {\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n var fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n var fromBlockStartPos = fromBlockIter.offset;\n var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n } // process last block\n\n\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n\n return removeDetails;\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n if (!this._blocks.length) return 0;\n var cursor = new PatternCursor(this, cursorPos);\n\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n } // FORCE is only about a|* otherwise is 0\n\n\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n } // forward flow\n\n\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled(); // backward flow\n\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos; // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length; // backward flow\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n\n return cursorPos;\n }\n /** Get block by name */\n\n }, {\n key: \"maskedBlock\",\n value: function maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n /** Get all blocks by name */\n\n }, {\n key: \"maskedBlocks\",\n value: function maskedBlocks(name) {\n var _this4 = this;\n\n var indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(function (gi) {\n return _this4._blocks[gi];\n });\n }\n }]);\n\n return MaskedPattern;\n}(Masked);\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedRange, _MaskedPattern);\n\n var _super = _createSuper(MaskedRange);\n\n function MaskedRange() {\n _classCallCheck(this, MaskedRange);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRange, [{\n key: \"_matchFrom\",\n get:\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n function get() {\n return this.maxLength - String(this.from).length;\n }\n /**\n @override\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0\n }, opts);\n var maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n var fromStr = String(opts.from).padStart(maxLength, '0');\n var toStr = String(opts.to).padStart(maxLength, '0');\n var sameCharsCount = 0;\n\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n ++sameCharsCount;\n }\n\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n }\n }, {\n key: \"boundaries\",\n value: function boundaries(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n placeholder = _ref2[1],\n num = _ref2[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n } // TODO str is a single char everytime\n\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details;\n\n var _normalizePrepare = normalizePrepare(_get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, ch.replace(/\\D/g, ''), flags));\n\n var _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2);\n\n ch = _normalizePrepare2[0];\n details = _normalizePrepare2[1];\n if (!this.autofix || !ch) return ch;\n var fromStr = String(this.from).padStart(this.maxLength, '0');\n var toStr = String(this.to).padStart(this.maxLength, '0');\n var nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n\n var _this$boundaries = this.boundaries(nextVal),\n _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n minstr = _this$boundaries2[0],\n maxstr = _this$boundaries2[1];\n\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n\n return toStr[nextVal.length - 1];\n }\n\n return ch;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var str = this.value;\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n var _this$boundaries3 = this.boundaries(str),\n _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n minstr = _this$boundaries4[0],\n maxstr = _this$boundaries4[1];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedRange;\n}(MaskedPattern);\nIMask.MaskedRange = MaskedRange;\n\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedDate, _MaskedPattern);\n\n var _super = _createSuper(MaskedDate);\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n function MaskedDate(opts) {\n _classCallCheck(this, MaskedDate);\n\n return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedDate, [{\n key: \"_update\",\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n var blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n\n Object.assign(opts.blocks, this.blocks, blocks); // add autofix\n\n Object.keys(opts.blocks).forEach(function (bk) {\n var b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n\n _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var date = this.date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n /** Checks if date is exists */\n\n }, {\n key: \"isDateExist\",\n value: function isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n /** Parsed Date */\n\n }, {\n key: \"date\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(date) {\n this.typedValue = date;\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return mask === Date || _get(_getPrototypeOf(MaskedDate.prototype), \"maskEquals\", this).call(this, mask);\n }\n }]);\n\n return MaskedDate;\n}(MaskedPattern);\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n if (!date) return '';\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = _slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n return {\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n };\n};\n\nIMask.MaskedDate = MaskedDate;\n\n/**\n Generic element API to use with mask\n @interface\n*/\nvar MaskElement = /*#__PURE__*/function () {\n function MaskElement() {\n _classCallCheck(this, MaskElement);\n }\n\n _createClass(MaskElement, [{\n key: \"selectionStart\",\n get:\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n function get() {\n var start;\n\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n /** Safely returns selection end */\n\n }, {\n key: \"selectionEnd\",\n get: function get() {\n var end;\n\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n /** Safely sets element selection */\n\n }, {\n key: \"select\",\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return false;\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {}\n }]);\n\n return MaskElement;\n}();\nIMask.MaskElement = MaskElement;\n\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n _inherits(HTMLMaskElement, _MaskElement);\n\n var _super = _createSuper(HTMLMaskElement);\n\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n function HTMLMaskElement(input) {\n var _this;\n\n _classCallCheck(this, HTMLMaskElement);\n\n _this = _super.call(this);\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n _createClass(HTMLMaskElement, [{\n key: \"rootElement\",\n get: function get() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;\n }\n /**\n Is element in focus\n @readonly\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n /**\n Returns HTMLElement selection start\n @override\n */\n\n }, {\n key: \"_unsafeSelectionStart\",\n get: function get() {\n return this.input.selectionStart;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n return this.input.selectionEnd;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.input.value;\n },\n set: function set(value) {\n this.input.value = value;\n }\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n /** */\n\n }, {\n key: \"_toggleEventHandler\",\n value: function _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }]);\n\n return HTMLMaskElement;\n}(MaskElement);\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n var _super = _createSuper(HTMLContenteditableMaskElement);\n\n function HTMLContenteditableMaskElement() {\n _classCallCheck(this, HTMLContenteditableMaskElement);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(HTMLContenteditableMaskElement, [{\n key: \"_unsafeSelectionStart\",\n get:\n /**\n Returns HTMLElement selection start\n @override\n */\n function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n var anchorOffset = selection && selection.anchorOffset;\n var focusOffset = selection && selection.focusOffset;\n\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n\n return focusOffset;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n var anchorOffset = selection && selection.anchorOffset;\n var focusOffset = selection && selection.focusOffset;\n\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n\n return focusOffset;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n var range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // $FlowFixMe\n return this.input.textContent;\n },\n set: function set(value) {\n this.input.textContent = value;\n }\n }]);\n\n return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nvar _excluded$3 = [\"mask\"];\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n function InputMask(el, opts) {\n _classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents(); // refresh\n\n\n this.updateValue();\n\n this._onChange();\n }\n /** Read or update mask */\n\n\n _createClass(InputMask, [{\n key: \"mask\",\n get: function get() {\n return this.masked.mask;\n },\n set: function set(mask) {\n if (this.maskEquals(mask)) return; // $FlowFixMe No ideas ... after update\n\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask: mask\n });\n return;\n }\n\n var masked = createMask({\n mask: mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n /** Raw value */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n var _this$masked;\n\n return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask));\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Unmasked value */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._unmaskedValue;\n },\n set: function set(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Typed unmasked value */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.masked.typedValue;\n },\n set: function set(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n /**\n Starts listening to element events\n @protected\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n /**\n Stops listening to element events\n @protected\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n /**\n Fires custom event\n @protected\n */\n\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(function (l) {\n return l.apply(void 0, args);\n });\n }\n /**\n Current selection start\n @readonly\n */\n\n }, {\n key: \"selectionStart\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n /** Current cursor position */\n\n }, {\n key: \"cursorPos\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n\n this._saveSelection();\n }\n /**\n Stores current selection\n @protected\n */\n\n }, {\n key: \"_saveSelection\",\n value: function\n /* ev */\n _saveSelection() {\n if (this.value !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n /** Syncronizes model value from view */\n\n }, {\n key: \"updateValue\",\n value: function updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: \"updateControl\",\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n var mask = opts.mask,\n restOpts = _objectWithoutProperties(opts, _excluded$3);\n\n var updateMask = !this.maskEquals(mask);\n var updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n /** Updates cursor */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n this._delayUpdateCursor(cursorPos);\n }\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n\n }, {\n key: \"_delayUpdateCursor\",\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n\n _this.cursorPos = _this._changingCursorPos;\n\n _this._abortUpdateCursor();\n }, 10);\n }\n /**\n Fires custom events\n @protected\n */\n\n }, {\n key: \"_fireChangeEvents\",\n value: function _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n /**\n Aborts delayed cursor update\n @private\n */\n\n }, {\n key: \"_abortUpdateCursor\",\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n /** Aligns cursor to nearest available position */\n\n }, {\n key: \"alignCursor\",\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: \"alignCursorFriendly\",\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n this.alignCursor();\n }\n /** Adds listener on custom event */\n\n }, {\n key: \"on\",\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n\n this._listeners[ev].push(handler);\n\n return this;\n }\n /** Removes custom event listener */\n\n }, {\n key: \"off\",\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return this;\n\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n\n var hIndex = this._listeners[ev].indexOf(handler);\n\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n /** Handles view input event */\n\n }, {\n key: \"_onInput\",\n value: function _onInput(e) {\n this._inputEvent = e;\n\n this._abortUpdateCursor(); // fix strange IE behavior\n\n\n if (!this._selection) return this.updateValue();\n var details = new ActionDetails( // new state\n this.el.value, this.cursorPos, // old state\n this.value, this._selection);\n var oldRawValue = this.masked.rawInputValue;\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset; // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n\n var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n /** Handles view change event and commits model value */\n\n }, {\n key: \"_onChange\",\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n\n this.masked.doCommit();\n this.updateControl();\n\n this._saveSelection();\n }\n /** Handles view drop event, prevents by default */\n\n }, {\n key: \"_onDrop\",\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onFocus\",\n value: function _onFocus(ev) {\n this.alignCursorFriendly();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onClick\",\n value: function _onClick(ev) {\n this.alignCursorFriendly();\n }\n /** Unbind view events and removes element reference */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n this._listeners.length = 0; // $FlowFixMe\n\n delete this.el;\n }\n }]);\n\n return InputMask;\n}();\nIMask.InputMask = InputMask;\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedNumber, _Masked);\n\n var _super = _createSuper(MaskedNumber);\n\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n function MaskedNumber(opts) {\n _classCallCheck(this, MaskedNumber);\n\n return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedNumber, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n this._updateRegExps();\n }\n /** */\n\n }, {\n key: \"_updateRegExps\",\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n var midInput = '(0|([1-9]+\\\\d*))?';\n var mid = '\\\\d*';\n var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n /** */\n\n }, {\n key: \"_removeThousandsSeparators\",\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n /** */\n\n }, {\n key: \"_insertThousandsSeparators\",\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(ch) {\n var _get2;\n\n ch = ch.replace(this._mapToRadixRegExp, this.radix);\n\n var noSepCh = this._removeThousandsSeparators(ch);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _normalizePrepare = normalizePrepare((_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, noSepCh].concat(args))),\n _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2),\n prepCh = _normalizePrepare2[0],\n details = _normalizePrepare2[1];\n\n if (ch && !noSepCh) details.skip = true;\n return [prepCh, details];\n }\n /** */\n\n }, {\n key: \"_separatorsCount\",\n value: function _separatorsCount(to) {\n var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var count = 0;\n\n for (var pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n\n return count;\n }\n /** */\n\n }, {\n key: \"_separatorsCountFromSlice\",\n value: function _separatorsCountFromSlice() {\n var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n fromPos = _this$_adjustRangeWit2[0];\n toPos = _this$_adjustRangeWit2[1];\n return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n this._value = this._removeThousandsSeparators(this.value);\n\n var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n /** */\n\n }, {\n key: \"_findSeparatorAround\",\n value: function _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n var searchFrom = pos - this.thousandsSeparator.length + 1;\n var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n }, {\n key: \"_adjustRangeWithSeparators\",\n value: function _adjustRangeWithSeparators(from, to) {\n var separatorAroundFromPos = this._findSeparatorAround(from);\n\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n var separatorAroundToPos = this._findSeparatorAround(to);\n\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n fromPos = _this$_adjustRangeWit4[0];\n toPos = _this$_adjustRangeWit4[1];\n var valueBeforePos = this.value.slice(0, fromPos);\n var valueAfterPos = this.value.slice(toPos);\n\n var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n if (separatorAtLeftPos >= 0) {\n var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n\n break;\n }\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && ( // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && ( // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.value) {\n var number = this.number;\n var validnum = number; // check bounds\n\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = String(validnum);\n var formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n\n _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n }\n /** */\n\n }, {\n key: \"_normalizeZeros\",\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n }); // add leading zero\n\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n /** */\n\n }, {\n key: \"_padFractionalZeros\",\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n var parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return Number(this.unmaskedValue);\n },\n set: function set(n) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n }\n /** Parsed Number */\n\n }, {\n key: \"number\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(number) {\n this.typedValue = number;\n }\n /**\n Is negative allowed\n @readonly\n */\n\n }, {\n key: \"allowNegative\",\n get: function get() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValueEquals\",\n value: function typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (_get(_getPrototypeOf(MaskedNumber.prototype), \"typedValueEquals\", this).call(this, value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n }]);\n\n return MaskedNumber;\n}(Masked);\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n};\nMaskedNumber.EMPTY_VALUES = [].concat(_toConsumableArray(Masked.EMPTY_VALUES), [0]);\nIMask.MaskedNumber = MaskedNumber;\n\nvar _excluded$4 = [\"name\", \"maskOptions\", \"onAccept\", \"onComplete\", \"value\"];\n\nvar MaskType = {\n Range: IMask.MaskedRange\n};\nvar MaskedTextInput = forwardRef(function (_ref, ref) {\n var name = _ref.name,\n _ref$maskOptions = _ref.maskOptions,\n maskOptions = _ref$maskOptions === void 0 ? {\n mask: Number\n } : _ref$maskOptions,\n onAccept = _ref.onAccept,\n onComplete = _ref.onComplete,\n value = _ref.value,\n rest = _objectWithoutProperties$1(_ref, _excluded$4);\n\n var internalRef = useRef();\n var inputRef = ref || internalRef;\n var maskedRef = useRef(null);\n useEffect(function () {\n var masked = maskedRef.current;\n /* istanbul ignore else */\n\n if (masked) {\n masked.updateOptions(maskOptions);\n }\n }, [maskOptions]);\n useEffect(function () {\n var masked = maskedRef.current;\n /* istanbul ignore else */\n\n if (masked) {\n masked.unmaskedValue = value;\n }\n }, [value]);\n useEffect(function () {\n var elm = inputRef.current;\n /* istanbul ignore else */\n\n if (elm && !maskedRef.current) {\n // eslint-disable-next-line\n maskedRef.current = IMask(elm, maskOptions);\n var masked = maskedRef.current;\n masked.on('accept', function () {\n /* istanbul ignore else */\n if (onAccept) {\n onAccept(masked.value, masked.unmaskedValue, masked.typedValue);\n }\n });\n masked.on('complete', function () {\n /* istanbul ignore else */\n if (onComplete) {\n onComplete(masked.value, masked.unmaskedValue, masked.typedValue);\n }\n });\n }\n\n return function () {\n /* istanbul ignore else */\n if (maskedRef.current) {\n var _masked = maskedRef.current;\n\n _masked.off('accept');\n\n _masked.off('complete');\n\n _masked.destroy();\n\n maskedRef.current = null;\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(TextInput, _extends({\n name: name,\n value: value,\n ref: inputRef,\n \"data-ppui-info\": \"masked-text-input_2.0.25\"\n }, rest));\n});\n\nexport { MaskType, MaskedTextInput };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport React, { useState, useMemo } from 'react';\nimport { MaskType, MaskedTextInput } from '@paypalcorp/pp-react-masked-text-input';\nimport { Tooltip } from '@paypalcorp/pp-react-tooltip';\nimport { Row, Col } from '@paypalcorp/pp-react-grid';\nimport { CreditCardIcon } from '@paypalcorp/pp-react-icons';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport { css, useTheme, jsx, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\n\nvar dateMaskOptions = {\n mask: 'm/y',\n blocks: {\n y: {\n mask: MaskType.Range,\n from: 1,\n to: 99,\n maxLength: 2\n },\n m: {\n mask: MaskType.Range,\n from: 1,\n to: 99,\n maxLength: 2\n }\n },\n lazy: true\n};\n/**\n * Card Hook\n */\n\nfunction useCreditCardInput(_ref) {\n var _ref$initialCardNumbe = _ref.initialCardNumberDetails,\n initialCardNumberDetails = _ref$initialCardNumbe === void 0 ? {} : _ref$initialCardNumbe,\n _ref$initialCvvDetail = _ref.initialCvvDetails,\n initialCvvDetails = _ref$initialCvvDetail === void 0 ? {} : _ref$initialCvvDetail,\n _ref$initialExpiratio = _ref.initialExpirationDetails,\n initialExpirationDetails = _ref$initialExpiratio === void 0 ? {} : _ref$initialExpiratio,\n onCardNumberChange = _ref.onCardNumberChange,\n onCvvChange = _ref.onCvvChange,\n onExpirationChange = _ref.onExpirationChange;\n\n var _useState = useState(initialCvvDetails.value),\n _useState2 = _slicedToArray(_useState, 2),\n cvvNumber = _useState2[0],\n setCvvNumber = _useState2[1];\n\n var _useState3 = useState(initialCvvDetails.errorText),\n _useState4 = _slicedToArray(_useState3, 2),\n cvvNumberError = _useState4[0],\n _setCvvNumberError = _useState4[1];\n\n var _useState5 = useState(initialCvvDetails.helperText),\n _useState6 = _slicedToArray(_useState5, 2),\n cvvNumberHelper = _useState6[0],\n _setCvvNumberHelper = _useState6[1];\n\n var _useState7 = useState(initialExpirationDetails.value),\n _useState8 = _slicedToArray(_useState7, 2),\n cardDate = _useState8[0],\n setCardDate = _useState8[1];\n\n var _useState9 = useState(initialExpirationDetails.errorText),\n _useState10 = _slicedToArray(_useState9, 2),\n cardDateError = _useState10[0],\n _setCardDateError = _useState10[1];\n\n var _useState11 = useState(initialExpirationDetails.helperText),\n _useState12 = _slicedToArray(_useState11, 2),\n cardDateHelper = _useState12[0],\n _setCardDateHelper = _useState12[1];\n\n var _useState13 = useState(initialCardNumberDetails.value),\n _useState14 = _slicedToArray(_useState13, 2),\n cardNumber = _useState14[0],\n setCardNumber = _useState14[1];\n\n var _useState15 = useState(initialCardNumberDetails.errorText),\n _useState16 = _slicedToArray(_useState15, 2),\n cardNumberError = _useState16[0],\n _setCardNumberError = _useState16[1];\n\n var _useState17 = useState(initialCardNumberDetails.helperText),\n _useState18 = _slicedToArray(_useState17, 2),\n cardNumberHelper = _useState18[0],\n _setCardNumberHelper = _useState18[1];\n\n var _useState19 = useState(initialCardNumberDetails.rightIcon),\n _useState20 = _slicedToArray(_useState19, 2),\n cardIcon = _useState20[0],\n _setCardIcon = _useState20[1];\n\n var _useState21 = useState(initialCvvDetails.tooltipOptions ? initialCvvDetails.tooltipOptions.imageElement : null),\n _useState22 = _slicedToArray(_useState21, 2),\n tooltipIcon = _useState22[0],\n _setTooltipIcon = _useState22[1];\n\n var _useState23 = useState(initialCvvDetails.tooltipOptions ? initialCvvDetails.tooltipOptions.description : null),\n _useState24 = _slicedToArray(_useState23, 2),\n tooltipText = _useState24[0],\n _setTooltipText = _useState24[1];\n\n var _useState25 = useState(initialCardNumberDetails.maskValue),\n _useState26 = _slicedToArray(_useState25, 2),\n cardNumberMask = _useState26[0],\n _setCardNumberMask = _useState26[1];\n\n var _useState27 = useState(initialCvvDetails.maskValue),\n _useState28 = _slicedToArray(_useState27, 2),\n cvvNumberMask = _useState28[0],\n _setCvvNumberMask = _useState28[1];\n\n var handleChange = function (val, unmaskedVal, typedValue, field) {\n /* istanbul ignore next */\n switch (field) {\n case 'CARD_NUMBER':\n setCardNumber(val);\n if (onCardNumberChange) onCardNumberChange(val, unmaskedVal, typedValue);\n break;\n\n case 'CARD_CVV':\n setCvvNumber(val);\n if (onCvvChange) onCvvChange(val, unmaskedVal, typedValue);\n break;\n\n case 'CARD_EXPIRATION':\n setCardDate(val);\n if (onExpirationChange) onExpirationChange(val, unmaskedVal, typedValue);\n break;\n }\n };\n\n var cardNumberDetails = {\n name: initialCardNumberDetails.name || 'card_number',\n label: initialCardNumberDetails.label || 'Card Number',\n value: cardNumber,\n maskOptions: {\n mask: cardNumberMask || '0000 0000 0000 0000',\n lazy: true\n },\n rightIcon: cardIcon,\n errorText: cardNumberError,\n helperText: cardNumberHelper,\n onAccept: function onAccept(val, unmaskedVal, typedValue) {\n return handleChange(val, unmaskedVal, typedValue, 'CARD_NUMBER');\n }\n };\n var cvvDetails = {\n name: initialCvvDetails.name || 'cvv_number',\n label: initialCvvDetails.label || 'CVV',\n value: cvvNumber,\n maskOptions: {\n mask: cvvNumberMask || '000',\n lazy: true\n },\n errorText: cvvNumberError,\n helperText: cvvNumberHelper,\n tooltipOptions: {\n name: initialCvvDetails.tooltipOptions && initialCvvDetails.tooltipOptions.name ? initialCvvDetails.tooltipOptions.name : 'credit_input-tooltip',\n description: tooltipText,\n imageElement: tooltipIcon\n },\n onAccept: function onAccept(val, unmaskedVal, typedValue) {\n return handleChange(val, unmaskedVal, typedValue, 'CARD_CVV');\n }\n };\n var expirationDetails = {\n name: initialExpirationDetails.name || 'card_expiration',\n label: initialExpirationDetails.label || 'Expiration',\n value: cardDate,\n errorText: cardDateError,\n helperText: cardDateHelper,\n maskOptions: dateMaskOptions,\n onAccept: function onAccept(val, unmaskedVal, typedValue) {\n return handleChange(val, unmaskedVal, typedValue, 'CARD_EXPIRATION');\n }\n };\n return {\n setCardNumberMask: function setCardNumberMask(value) {\n _setCardNumberMask(value);\n },\n setCvvNumberMask: function setCvvNumberMask(value) {\n _setCvvNumberMask(value);\n },\n setTooltipIcon: function setTooltipIcon(icon) {\n _setTooltipIcon(icon);\n },\n setCardIcon: function setCardIcon(icon) {\n _setCardIcon(icon);\n },\n setTooltipText: function setTooltipText(value) {\n _setTooltipText(value);\n },\n setCardNumberError: function setCardNumberError(value) {\n _setCardNumberError(value);\n },\n setCvvNumberError: function setCvvNumberError(value) {\n _setCvvNumberError(value);\n },\n setCardDateError: function setCardDateError(value) {\n _setCardDateError(value);\n },\n setCvvNumberHelper: function setCvvNumberHelper(value) {\n _setCvvNumberHelper(value);\n },\n setCardDateHelper: function setCardDateHelper(value) {\n _setCardDateHelper(value);\n },\n setCardNumberHelper: function setCardNumberHelper(value) {\n _setCardNumberHelper(value);\n },\n cardNumberDetails: cardNumberDetails,\n cvvDetails: cvvDetails,\n expirationDetails: expirationDetails\n };\n}\n\nvar CreditCardInputUtils = {\n useCreditCardInput: useCreditCardInput\n};\n\nvar _templateObject, _templateObject2;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSizeIconMd = tokens.sysSizeIconMd;\n var cvvImg = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: cvv_image;\\n height: \", \";\\n \"])), sysSizeIconMd);\n var numberInputRTL = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: number_input_rtl;\\n [dir='rtl'] & {\\n direction: ltr;\\n text-align: right;\\n }\\n \"])));\n return {\n cvvImg: cvvImg,\n numberInputRTL: numberInputRTL\n };\n}\n\nvar CreditCardInput = function (_ref) {\n var cardNumberDetails = _ref.cardNumberDetails,\n expirationDetails = _ref.expirationDetails,\n cvvDetails = _ref.cvvDetails,\n _ref$cdnDomain = _ref.cdnDomain,\n cdnDomain = _ref$cdnDomain === void 0 ? 'https://www.paypalobjects.com' : _ref$cdnDomain;\n // If theme is not directly provided, get from themeContext\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var tooltipOptions = cvvDetails.tooltipOptions;\n /* istanbul ignore next */\n\n if (cvvDetails.tooltipOptions) delete cvvDetails.tooltipOptions; // Add default tooltipOptions if tooltipOptions not passed\n\n /* istanbul ignore next */\n\n if (!tooltipOptions) {\n tooltipOptions = {\n name: 'credit_input-tooltip',\n description: 'The CVV is the 3-digit number on the back of your card',\n imageElement: jsx(\"img\", {\n src: \"\".concat(cdnDomain, \"/paypal-ui/components/csc-card/csc-card-back.svg\"),\n alt: \"cvv\",\n css: _styles.cvvImg,\n \"data-ppui\": \"true\"\n })\n };\n } // Add default tooltip desciption if tooltip description is not present\n\n\n if (tooltipOptions && !tooltipOptions.description) tooltipOptions.description = 'The CVV is the 3-digit number on the back of your card'; // Add default tooltip image if tooltip image is not present\n\n if (tooltipOptions && !tooltipOptions.imageElement) {\n tooltipOptions.imageElement = jsx(\"img\", {\n src: \"\".concat(cdnDomain, \"/paypal-ui/components/csc-card/csc-card-back.svg\"),\n alt: \"cvv\",\n css: _styles.cvvImg,\n \"data-ppui\": \"true\"\n });\n } // Fallback to `CreditCardIcon` if no cardIcon passed after 5 digits are entered\n\n\n if (cardNumberDetails.value && cardNumberDetails.value.length > 4 && !cardNumberDetails.rightIcon) {\n cardNumberDetails.rightIcon = jsx(CreditCardIcon, {\n \"data-ppui\": \"true\"\n });\n }\n\n var cardNumberField = jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref2) {\n var css = _ref2.css;\n return jsx(MaskedTextInput, _extends({\n inputMode: \"numeric\"\n }, cardNumberDetails, {\n inputClassName: css(_styles.numberInputRTL),\n \"data-ppui\": \"true\"\n }));\n });\n return jsx(React.Fragment, null, jsx(Row, {\n \"data-ppui-info\": \"credit-card-input_2.0.26\"\n }, jsx(Col, {\n form: \"full\",\n \"data-ppui\": \"true\"\n }, cardNumberField)), jsx(Row, {\n \"data-ppui-info\": \"credit-card-input_2.0.26\"\n }, jsx(Col, {\n form: \"half\",\n xs: true,\n \"data-ppui\": \"true\"\n }, jsx(MaskedTextInput, _extends({\n inputMode: \"numeric\"\n }, expirationDetails, {\n \"data-ppui\": \"true\"\n }))), jsx(Col, {\n form: \"half\",\n xs: true,\n \"data-ppui\": \"true\"\n }, jsx(MaskedTextInput, _extends({\n inputMode: \"numeric\",\n rightIcon: jsx(Tooltip, _extends({\n imagePosition: \"top-left\"\n }, tooltipOptions, {\n \"data-ppui\": \"true\"\n }))\n }, cvvDetails, {\n \"data-ppui\": \"true\"\n })))));\n};\n\nexport { CreditCardInput, CreditCardInputUtils, styles as creditCardInputStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { createContext, useMemo, forwardRef, useContext } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { utilStyles } from '@paypalcorp/pp-react-utils';\nimport { math } from 'polished';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44, _templateObject45, _templateObject46, _templateObject47, _templateObject48, _templateObject49, _templateObject50, _templateObject51, _templateObject52, _templateObject53, _templateObject54, _templateObject55, _templateObject56, _templateObject57, _templateObject58, _templateObject59, _templateObject60, _templateObject61;\n\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var _utilStyles = utilStyles(tokens),\n mediaQuery = _utilStyles.mediaQuery;\n\n var sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysBorderRadiusLg = tokens.sysBorderRadiusLg,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceLg = tokens.sysSpaceLg,\n sysElevationBlurBase = tokens.sysElevationBlurBase,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorBackgroundMain = tokens.sysColorBackgroundMain,\n sysColorStructureBorderHighContrast = tokens.sysColorStructureBorderHighContrast,\n sysColorSelectedRangeMain = tokens.sysColorSelectedRangeMain,\n sysColorSelectedRangeContrast = tokens.sysColorSelectedRangeContrast,\n sysSizeTapTargetDefault = tokens.sysSizeTapTargetDefault,\n sysSizeMediaMd = tokens.sysSizeMediaMd;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n bodyStrong = _textStyles.bodyStrong,\n titleStrong = _textStyles.titleStrong;\n\n var _utilStyles2 = utilStyles(tokens),\n elevationStyles = _utilStyles2.elevationStyles;\n\n var responsiveTableBase = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: r_table_base;\\n border-spacing: 0;\\n border-collapse: separate;\\n border: none;\\n table-layout: fixed;\\n overflow: auto;\\n width: 100%;\\n \"])));\n var summaryWrapper = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: summary_wrap;\\n @media screen and (max-width: \", \") {\\n border: \", \" solid\\n \", \";\\n border-end-start-radius: \", \";\\n border-end-end-radius: \", \";\\n }\\n \"])), sysSizeMediaMd, sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderRadiusLg, sysBorderRadiusLg);\n var fixedFirstColumn = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: fixed1st;\\n display: block;\\n \"])));\n var thead = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: thead;\\n [data-responsive='true'] & {\\n @media screen and (max-width: \", \") {\\n display: none;\\n }\\n }\\n \"])), sysSizeMediaMd);\n var tbody = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: tbody;\\n background-color: \", \";\\n \"])), sysColorBackgroundSurface);\n var tfoot = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: tfoot;\\n background-color: \", \";\\n \"])), sysColorBackgroundSurface);\n var rowBase = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: row_base;\\n background-color: \", \";\\n border-bottom: \", \" solid \", \";\\n \"])), sysColorBackgroundSurface, sysSpaceXs, sysColorBackgroundMain);\n var rowSelected = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: row_selected;\\n background-color: \", \";\\n color: \", \";\\n \"])), sysColorSelectedRangeMain, sysColorSelectedRangeContrast);\n var rowResponsive = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: row_resp;\\n @media screen and (max-width: \", \") {\\n display: grid;\\n width: 100%;\\n grid-template-areas:\\n 'a1 a2 a3'\\n 'b1 b2 b3';\\n grid-template-columns: auto 1fr auto;\\n gap: 0 \", \";\\n padding: \", \" 0;\\n\\n thead th {\\n display: none;\\n }\\n }\\n \"])), sysSizeMediaMd, sysSpaceSm, sysSpaceMd);\n var rowHeading = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: row_head;\\n white-space: nowrap;\\n \"])));\n var rowFooting = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: row_foot;\\n background-color: \", \";\\n white-space: nowrap;\\n \"])), sysColorBackgroundMain);\n var rowSummaryItem = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: row_item;\\n border-bottom: none;\\n \"])));\n var rowSummaryAdjust = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: row_adj;\\n border-bottom: none;\\n border-top: \", \" solid\\n \", \";\\n \"])), sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n var rowSummaryTotal = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: row_total;\\n border-top: \", \" solid\\n \", \";\\n background-color: \", \";\\n \"])), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysColorBackgroundMain); // NOTE: setting height on a cell is equivalent to min-height\n // Height allows for icon button + 12px above and below 44px + 12px + 12px\n\n var cellBase = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n \", \"\\n padding: \", \";\\n height: \", \";\\n vertical-align: middle;\\n border-bottom: \", \" solid\\n \", \";\\n \"])), textBody({\n label: 'cell',\n color: 'inherit'\n }), sysSpaceMd, math(\"\".concat(sysSizeTapTargetDefault, \" + (\").concat(sysSpaceMd, \" * 2 )\")), sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n var cellResponsive = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: cell_resp;\\n @media screen and (min-width: \", \") {\\n &:first-of-type {\\n padding-left: \", \";\\n }\\n &:last-of-type {\\n padding-right: \", \";\\n }\\n }\\n @media screen and (max-width: \", \") {\\n display: block;\\n height: auto;\\n padding: \", \" \", \";\\n min-width: \", \";\\n border: none !important;\\n }\\n \"])), sysSizeMediaMd, sysSpaceLg, sysSpaceLg, sysSizeMediaMd, sysSpaceXs, sysSpaceSm, sysSpaceMd);\n var headRowCell = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n \", \"\\n position: sticky;\\n top: 0;\\n vertical-align: middle;\\n z-index: 1;\\n &:first-of-type {\\n z-index: 2;\\n }\\n \"])), titleStrong({\n label: 'h_th'\n }));\n var footerRowCell = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n \", \"\\n vertical-align: middle;\\n z-index: 1;\\n &:first-of-type {\\n z-index: 2;\\n }\\n \"])), titleStrong({\n label: 'f_th'\n }));\n var dataHeaderCell = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n \", \"\\n background-color: \", \";\\n \"])), bodyStrong(), sysColorBackgroundMain);\n var summaryHeaderCell = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n \", \"\\n background-color: \", \";\\n \"])), titleStrong({\n label: 'sum_th'\n }), sysColorBackgroundSurface);\n var summaryFooterCell = css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\"\\n label: f_th;\\n \", \"\\n background-color: \", \";\\n \"])), titleStrong({\n label: 'total_th'\n }), sysColorBackgroundMain);\n var stickyRowHeader = css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\"\\n label: sticky_h_th;\\n position: sticky;\\n top: 0;\\n z-index: 1; // No token, just need this to be on top of other headers\\n &:first-of-type {\\n z-index: 2;\\n }\\n \"])));\n var stickyRowFooter = css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\"\\n label: sticky_f_th;\\n \", \"\\n position: sticky;\\n bottom: 0;\\n vertical-align: middle;\\n \"])), titleStrong({\n label: ''\n }));\n var stickyColHeading = css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\"\\n label: sticky_col;\\n &:first-of-type {\\n position: sticky;\\n left: 0;\\n }\\n \"])));\n var cellHeading = css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\"\\n label: th;\\n text-align: start;\\n padding: \", \";\\n tbody &:first-of-type {\\n \", \"\\n background-color: inherit;\\n }\\n \"])), sysSpaceMd, titleStrong({\n label: ''\n }));\n var legacyTh = css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\"\\n th {\\n text-align: start;\\n }\\n \"])));\n var tableBase = css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral([\"\\n \", \"\\n border-spacing: 0;\\n border-collapse: separate;\\n \"])), textBody({\n label: 'table_base'\n }));\n var legacyTableBase = css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral([\"\\n label: legacy_table;\\n > tbody {\\n > tr {\\n background-color: \", \";\\n > td,\\n > th {\\n border-bottom: \", \" solid\\n \", \";\\n border-top: \", \" solid transparent;\\n }\\n\\n > td {\\n padding: \", \";\\n &:first-of-type {\\n padding-left: \", \";\\n }\\n &:last-of-type {\\n padding-right: \", \";\\n }\\n }\\n > th {\\n padding: \", \";\\n &:first-of-type {\\n padding-left: \", \";\\n }\\n }\\n }\\n }\\n\\n > thead > tr {\\n background-color: \", \";\\n white-space: nowrap;\\n\\n > th {\\n position: relative;\\n \", \"\\n border-bottom: \", \" solid \", \";\\n padding: \", \";\\n\\n &:last-of-type {\\n padding-right: \", \";\\n }\\n &:first-of-type {\\n padding-left: \", \";\\n }\\n }\\n }\\n \"])), sysColorBackgroundSurface, sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderThicknessNormal, sysSpaceMd, sysSpaceLg, sysSpaceLg, sysSpaceMd, sysSpaceLg, sysColorBackgroundMain, bodyStrong(), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysSpaceMd, sysSpaceLg, sysSpaceLg);\n var scrollContext = css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral([\"\\n label: scroll_context;\\n display: inline-block;\\n overflow: auto;\\n max-height: 100%;\\n width: 100%;\\n \"])));\n var scrollContextTable = css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteral([\"\\n label: scroll_context_table;\\n border: none;\\n table-layout: fixed;\\n display: block;\\n overflow: auto;\\n\\n > thead {\\n position: sticky;\\n top: 0;\\n z-index: 10;\\n\\n /* If this table can scroll, remove the border beneath the header row and replace it with a drop shadow */\\n > tr {\\n position: relative;\\n \", \";\\n > th {\\n border-bottom: none;\\n position: sticky;\\n top: 0;\\n background-color: \", \";\\n }\\n }\\n }\\n > tbody {\\n > tr {\\n > th {\\n \", \"\\n clip-path: polygon(0 0, 0 100%, calc(100% + \", \") 100%, calc(100% + \", \") 0);\\n &:first-of-type {\\n background-color: inherit;\\n position: sticky;\\n left: 0;\\n }\\n }\\n > td:nth-of-type(2) {\\n padding-left: \", \";\\n }\\n }\\n }\\n \"])), elevationStyles.filterLevel1, sysColorBackgroundMain, elevationStyles.level1Horizontal, sysElevationBlurBase, sysElevationBlurBase, sysSpaceMd); // the clip-path below clips the individual shadows and prevents\n // them from bleeding over into other cells. --BCC\n\n var fixedFirstColumnTable = css(_templateObject31 || (_templateObject31 = _taggedTemplateLiteral([\"\\n label: fixed_first_column_table;\\n > thead > tr > th:first-of-type {\\n position: sticky;\\n border-bottom: none;\\n \", \"\\n clip-path: polygon(0 0, 0 100%, calc(100% + \", \") 100%, calc(100% + \", \") 0);\\n z-index: 2;\\n left: 0;\\n\\n &:after {\\n background-color: inherit;\\n }\\n }\\n > tbody > tr > th:first-of-type {\\n position: sticky;\\n left: 0;\\n }\\n\\n [dir='rtl'] & {\\n > thead > tr > th:first-of-type {\\n clip-path: polygon(\\n -\", \" 0,\\n -\", \" 100%,\\n 100% 100%,\\n 100% -\", \"\\n );\\n right: 0;\\n left: unset;\\n }\\n > tbody > tr > th {\\n position: sticky;\\n left: unset;\\n right: 0;\\n clip-path: polygon(\\n -\", \" 0,\\n -\", \" 100%,\\n 100% 100%,\\n 100% -\", \"\\n );\\n }\\n }\\n \"])), elevationStyles.level1Horizontal, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase, sysElevationBlurBase);\n\n var customWidth = function (width) {\n return css(_templateObject32 || (_templateObject32 = _taggedTemplateLiteral([\"\\n label: cust_width;\\n width: \", \";\\n \"])), width);\n };\n\n var mobileGridZones = {\n zone_hidden: css(_templateObject33 || (_templateObject33 = _taggedTemplateLiteral([\"\\n label: m_hide;\\n @media screen and (max-width: \", \") {\\n display: none;\\n }\\n \"])), sysSizeMediaMd),\n zone_a1: css(_templateObject34 || (_templateObject34 = _taggedTemplateLiteral([\"\\n label: m_a1;\\n @media screen and (max-width: \", \") {\\n grid-area: a1;\\n }\\n \"])), sysSizeMediaMd),\n zone_a2: css(_templateObject35 || (_templateObject35 = _taggedTemplateLiteral([\"\\n label: m_a2;\\n @media screen and (max-width: \", \") {\\n grid-area: a2;\\n }\\n \"])), sysSizeMediaMd),\n zone_a3: css(_templateObject36 || (_templateObject36 = _taggedTemplateLiteral([\"\\n label: m_a3;\\n @media screen and (max-width: \", \") {\\n grid-area: a3;\\n text-align: end;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_a12: css(_templateObject37 || (_templateObject37 = _taggedTemplateLiteral([\"\\n label: m_a12;\\n @media screen and (max-width: \", \") {\\n grid-area: a1 / a1 / a2 / a2;\\n }\\n \"])), sysSizeMediaMd),\n zone_a23: css(_templateObject38 || (_templateObject38 = _taggedTemplateLiteral([\"\\n label: m_a23;\\n @media screen and (max-width: \", \") {\\n grid-area: a2 / a2 / a3 / a3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_a123: css(_templateObject39 || (_templateObject39 = _taggedTemplateLiteral([\"\\n label: m_a123;\\n @media screen and (max-width: \", \") {\\n grid-area: a1 / a1 / a3 / a3;\\n }\\n \"])), sysSizeMediaMd),\n zone_b1: css(_templateObject40 || (_templateObject40 = _taggedTemplateLiteral([\"\\n label: m_b1;\\n @media screen and (max-width: \", \") {\\n grid-area: b1;\\n }\\n \"])), sysSizeMediaMd),\n zone_b2: css(_templateObject41 || (_templateObject41 = _taggedTemplateLiteral([\"\\n label: m_b2;\\n @media screen and (max-width: \", \") {\\n grid-area: b2;\\n }\\n \"])), sysSizeMediaMd),\n zone_b3: css(_templateObject42 || (_templateObject42 = _taggedTemplateLiteral([\"\\n label: m_b3;\\n @media screen and (max-width: \", \") {\\n grid-area: b3;\\n text-align: end;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_b12: css(_templateObject43 || (_templateObject43 = _taggedTemplateLiteral([\"\\n label: m_b12;\\n @media screen and (max-width: \", \") {\\n grid-area: b1 / b1 / b2 / b2;\\n }\\n \"])), sysSizeMediaMd),\n zone_b23: css(_templateObject44 || (_templateObject44 = _taggedTemplateLiteral([\"\\n label: m_b23;\\n @media screen and (max-width: \", \") {\\n grid-area: b2 / b2 / b3 / b3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_b123: css(_templateObject45 || (_templateObject45 = _taggedTemplateLiteral([\"\\n label: m_b123;\\n @media screen and (max-width: \", \") {\\n grid-area: b1 / b1 / b3 / b3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab1: css(_templateObject46 || (_templateObject46 = _taggedTemplateLiteral([\"\\n label: m_ab1;\\n @media screen and (max-width: \", \") {\\n grid-area: a1 / a1 / b1 / b1;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab2: css(_templateObject47 || (_templateObject47 = _taggedTemplateLiteral([\"\\n label: m_ab2;\\n @media screen and (max-width: \", \") {\\n grid-area: a2 / a2 / b2 / b2;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab3: css(_templateObject48 || (_templateObject48 = _taggedTemplateLiteral([\"\\n label: m_ab3;\\n @media screen and (max-width: \", \") {\\n grid-area: a3 / a3 / b3 / b3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab12: css(_templateObject49 || (_templateObject49 = _taggedTemplateLiteral([\"\\n label: m_ab12;\\n @media screen and (max-width: \", \") {\\n grid-area: a1 / a1 / b2 / b2;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab23: css(_templateObject50 || (_templateObject50 = _taggedTemplateLiteral([\"\\n label: m_ab23;\\n @media screen and (max-width: \", \") {\\n grid-area: a2 / a2 / b3 / b3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd),\n zone_ab123: css(_templateObject51 || (_templateObject51 = _taggedTemplateLiteral([\"\\n label: m_ab123;\\n @media screen and (max-width: \", \") {\\n grid-area: a1 / a1 / b3 / b3;\\n width: 100%;\\n }\\n \"])), sysSizeMediaMd)\n };\n var columnRemaining = css(_templateObject52 || (_templateObject52 = _taggedTemplateLiteral([\"\\n label: w100;\\n width: 100%;\\n \"])));\n var columnStart = css(_templateObject53 || (_templateObject53 = _taggedTemplateLiteral([\"\\n label: align_start;\\n text-align: start;\\n \"])));\n var columnEnd = css(_templateObject54 || (_templateObject54 = _taggedTemplateLiteral([\"\\n label: align_end;\\n text-align: end;\\n \"])));\n var columnCenter = css(_templateObject55 || (_templateObject55 = _taggedTemplateLiteral([\"\\n label: align_center;\\n text-align: center;\\n \"])));\n var normalCell = css(_templateObject56 || (_templateObject56 = _taggedTemplateLiteral([\"\\n label: td_norm;\\n text-align: start;\\n \"])));\n var utilityCell = css(_templateObject57 || (_templateObject57 = _taggedTemplateLiteral([\"\\n label: util_cell;\\n border-bottom: none;\\n background-color: \", \";\\n \"])), sysColorBackgroundSurface);\n var summaryHeadingCell = css(_templateObject58 || (_templateObject58 = _taggedTemplateLiteral([\"\\n \", \"\\n text-align: start;\\n padding: \", \";\\n border-bottom: \", \" solid\\n \", \";\\n \"])), titleStrong({\n label: 'sum_head'\n }), sysSpaceMd, sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n var summaryItemCell = css(_templateObject59 || (_templateObject59 = _taggedTemplateLiteral([\"\\n label: item;\\n border-bottom: none;\\n &:first-of-type {\\n border-left: \", \" solid\\n \", \";\\n }\\n &:last-of-type {\\n border-right: \", \" solid\\n \", \";\\n }\\n \"])), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n var summaryAdjustCell = css(_templateObject60 || (_templateObject60 = _taggedTemplateLiteral([\"\\n label: adjust;\\n border-top: \", \" solid\\n \", \";\\n border-bottom: none;\\n \", \"\\n &:first-of-type {\\n border-left: \", \" solid\\n \", \";\\n }\\n &:last-of-type {\\n border-right: \", \" solid\\n \", \";\\n }\\n \"])), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, bodyStrong(), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n var summaryTotalCell = css(_templateObject61 || (_templateObject61 = _taggedTemplateLiteral([\"\\n label: summary;\\n background-color: \", \";\\n \", \"\\n border-top: \", \" solid \", \";\\n &:first-of-type {\\n border-end-start-radius: \", \";\\n border-left: \", \" solid\\n \", \";\\n }\\n &:last-of-type {\\n border-end-end-radius: \", \";\\n border-right: \", \" solid\\n \", \";\\n }\\n \"])), sysColorBackgroundMain, titleStrong(), sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderRadiusLg, sysBorderThicknessNormal, sysColorStructureBorderHighContrast, sysBorderRadiusLg, sysBorderThicknessNormal, sysColorStructureBorderHighContrast);\n return {\n tableBase: tableBase,\n legacyTableBase: legacyTableBase,\n legacyTh: legacyTh,\n summaryWrapper: summaryWrapper,\n fixedFirstColumnTable: fixedFirstColumnTable,\n scrollContext: scrollContext,\n scrollContextTable: scrollContextTable,\n columnRemaining: columnRemaining,\n getAlignment: function getAlignment(align) {\n switch (align) {\n case 'right':\n case 'end':\n return columnEnd;\n\n case 'center':\n return columnCenter;\n\n case 'left':\n case 'start':\n default:\n return columnStart;\n }\n },\n responsiveTableBase: responsiveTableBase,\n // Base style for a responsive table\n fixedFirstColumn: fixedFirstColumn,\n //\n thead: thead,\n // Base styles for a head, body, and foot sections\n tbody: tbody,\n tfoot: tfoot,\n cellBase: cellBase,\n // Styles shared by all table cells\n cellResponsive: cellResponsive,\n cellHeading: cellHeading,\n // Styles specific to heading cells\n mobileWidth: function mobileWidth(widthStr) {\n return mediaQuery(\"width: \".concat(widthStr));\n },\n // Width to use for screens < md size\n mobileAlign: function mobileAlign(align) {\n return mediaQuery(\"align: \".concat(align));\n },\n // Alignment to use for screens < md size\n dataHeaderCell: dataHeaderCell,\n summaryHeaderCell: summaryHeaderCell,\n summaryFooterCell: summaryFooterCell,\n rowBase: rowBase,\n // Styles shared by all table rows\n rowSelected: rowSelected,\n rowResponsive: rowResponsive,\n rowHeading: rowHeading,\n // Styles specific to a heading row\n rowFooting: rowFooting,\n // Styles specific to a footer row\n rowSummaryItem: rowSummaryItem,\n rowSummaryAdjust: rowSummaryAdjust,\n rowSummaryTotal: rowSummaryTotal,\n mobileGridZones: mobileGridZones,\n // Defines 6 zones to which a responsive cell may move\n customWidth: customWidth,\n // Defines a prop-specified width\n headRowCell: headRowCell,\n footerRowCell: footerRowCell,\n stickyRowHeader: stickyRowHeader,\n stickyRowFooter: stickyRowFooter,\n stickyColHeading: stickyColHeading,\n normalCell: normalCell,\n utilityCell: utilityCell,\n summaryHeadingCell: summaryHeadingCell,\n summaryItemCell: summaryItemCell,\n summaryAdjustCell: summaryAdjustCell,\n summaryTotalCell: summaryTotalCell\n };\n}\n\nvar DEFAULT_TABLE_CONTEXT = {\n tableType: 'data',\n isResponsive: false,\n isSticky: false\n};\nvar PPTableContext = createContext(DEFAULT_TABLE_CONTEXT);\n\nvar _excluded = [\"className\", \"fixedFirstColumn\", \"children\", \"tableType\", \"isLegacy\"];\nvar ResponsiveTable = function (_ref) {\n var className = _ref.className,\n _ref$fixedFirstColumn = _ref.fixedFirstColumn,\n fixedFirstColumn = _ref$fixedFirstColumn === void 0 ? false : _ref$fixedFirstColumn,\n children = _ref.children,\n tableType = _ref.tableType,\n isLegacy = _ref.isLegacy,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var tableCss = [tableStyles.responsiveTableBase, fixedFirstColumn && tableStyles.fixedFirstColumn];\n var wrapperCss = [tableStyles.scrollContext, tableType === 'summary' && tableStyles.summaryWrapper];\n return jsx(PPTableContext.Provider, {\n value: {\n tableType: 'data',\n isResponsive: true,\n isSticky: true\n },\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: wrapperCss,\n \"data-responsive\": \"true\",\n \"data-ppui\": \"true\"\n }, jsx(\"table\", _extends({\n css: tableCss,\n \"data-ppui-info\": \"table_3.12.0\"\n }, rest, {\n className: className\n }), children)));\n};\n\nvar _excluded$1 = [\"tableContext\", \"className\", \"children\", \"sticky\", \"as\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar TableSection = forwardRef(function (props, ref) {\n var tableContext = props.tableContext,\n className = props.className,\n children = props.children,\n sticky = props.sticky,\n _props$as = props.as,\n Component = _props$as === void 0 ? 'tbody' : _props$as,\n rest = _objectWithoutProperties(props, _excluded$1);\n\n var context = _objectSpread(_objectSpread({}, useContext(PPTableContext)), tableContext);\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var css = tableStyles[Component];\n var classes = sticky ? \"pp_react_sticky \".concat(className) : className;\n\n var newTableContext = _objectSpread({}, context);\n\n if (!newTableContext.hasOwnProperty('section')) {\n newTableContext.section = Component;\n }\n\n return jsx(PPTableContext.Provider, {\n value: newTableContext,\n \"data-ppui\": \"true\"\n }, jsx(Component, _extends({\n ref: ref,\n css: css,\n className: classes\n }, rest, {\n \"data-ppui\": \"true\"\n }), children));\n});\nvar TableBody = function (props) {\n return jsx(TableSection, _extends({}, props, {\n as: \"tbody\",\n \"data-ppui\": \"true\"\n }));\n};\nvar TableHead = function (props) {\n return jsx(TableSection, _extends({}, props, {\n as: \"thead\",\n \"data-ppui\": \"true\"\n }));\n};\nvar TableFoot = function (props) {\n return jsx(TableSection, _extends({}, props, {\n as: \"tfoot\",\n \"data-ppui\": \"true\"\n }));\n};\nvar TableCaption = function (props) {\n return jsx(TableSection, _extends({}, props, {\n as: \"caption\",\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$2 = [\"tableContext\", \"isSelected\", \"className\", \"children\"];\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar TableRow = forwardRef(function (props, ref) {\n var tableContext = props.tableContext,\n isSelected = props.isSelected,\n className = props.className,\n children = props.children,\n rest = _objectWithoutProperties(props, _excluded$2);\n\n var context = _objectSpread$1(_objectSpread$1({}, useContext(PPTableContext)), tableContext);\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var section = context.section,\n isResponsive = context.isResponsive;\n var rowCss = [tableStyles.rowBase, isSelected && tableStyles.rowSelected, isResponsive && tableStyles.rowResponsive, section === 'thead' && tableStyles.rowHeading, section === 'tfoot' && tableStyles.rowFooting, section === 'summaryItem' && tableStyles.rowSummaryItem, section === 'summaryAdjust' && tableStyles.rowSummaryAdjust, section === 'summaryTotal' && tableStyles.rowSummaryTotal];\n return jsx(\"tr\", _extends({\n ref: ref,\n css: rowCss,\n className: className\n }, rest, {\n \"data-ppui\": \"true\"\n }), children);\n});\n\nvar _excluded$3 = [\"className\", \"tableContext\", \"mobile\", \"claimsRemainingSpace\", \"width\", \"span\", \"isHeader\", \"children\", \"align\"];\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar stickableFooters = new Set(['utility', 'tfoot']);\nvar TableCell = forwardRef( // eslint-disable-next-line complexity\nfunction (props, ref) {\n var _context$section, _tableStyles$getAlign, _tableStyles$customWi, _tableStyles$mobileWi, _tableStyles$mobileAl;\n\n var className = props.className,\n tableContext = props.tableContext,\n mobile = props.mobile,\n claimsRemainingSpace = props.claimsRemainingSpace,\n width = props.width,\n _props$span = props.span,\n span = _props$span === void 0 ? 1 : _props$span,\n isHeader = props.isHeader,\n children = props.children,\n _props$align = props.align,\n align = _props$align === void 0 ? 'start' : _props$align,\n rest = _objectWithoutProperties(props, _excluded$3);\n\n var context = _objectSpread$2(_objectSpread$2({}, useContext(PPTableContext)), tableContext); // eslint-disable-next-line complexity\n\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var mobileGridZones = tableStyles.mobileGridZones,\n cellResponsive = tableStyles.cellResponsive;\n var sectionCellStyleName = \"\".concat((_context$section = context === null || context === void 0 ? void 0 : context.section) !== null && _context$section !== void 0 ? _context$section : 'normal', \"Cell\"); // At ease, typescript... it's really ok\n\n var sectionCss = tableStyles[sectionCellStyleName]; // To convert cellCss to farenheit multiply by 9/5 add 32... --BCC\n\n var cellCss = [tableStyles.cellBase, (tableContext === null || tableContext === void 0 ? void 0 : tableContext.isResponsive) && cellResponsive, isHeader && function getHeaderStyles(styleSet, headerContext) {\n var tableType = headerContext.tableType,\n isSticky = headerContext.isSticky,\n section = headerContext.section,\n isFirst = headerContext.isFirst;\n var css = [styleSet.cellHeading, section === 'thead' && styleSet.headerRow, section === 'thead' && tableType === 'data' && styleSet.dataHeaderCell, section === 'thead' && tableType === 'summary' && styleSet.summaryHeaderCell, section === 'thead' && isSticky && styleSet.stickyColHeader, section === 'tfoot' && styleSet.footerRow, stickableFooters.has(section) && isSticky && styleSet.stickyRowFooter, section === 'tfoot' && tableType === 'summary' && styleSet.summaryFooterCell, section === 'utility' && styleSet.utilityCell, section === 'tbody' && isSticky && isFirst && styleSet.stickyColHeading];\n return css;\n }(tableStyles, context), sectionCss, (_tableStyles$getAlign = tableStyles.getAlignment) === null || _tableStyles$getAlign === void 0 ? void 0 : _tableStyles$getAlign.call(tableStyles, align), width && ((_tableStyles$customWi = tableStyles.customWidth) === null || _tableStyles$customWi === void 0 ? void 0 : _tableStyles$customWi.call(tableStyles, width)), (mobile === null || mobile === void 0 ? void 0 : mobile.placement) && cellResponsive, (mobile === null || mobile === void 0 ? void 0 : mobile.placement) && (mobileGridZones === null || mobileGridZones === void 0 ? void 0 : mobileGridZones[\"zone_\".concat(mobile.placement)]), // TODO - move this logic into styles.tsx\n (mobile === null || mobile === void 0 ? void 0 : mobile.width) && ((_tableStyles$mobileWi = tableStyles.mobileWidth) === null || _tableStyles$mobileWi === void 0 ? void 0 : _tableStyles$mobileWi.call(tableStyles, mobile.width)), (mobile === null || mobile === void 0 ? void 0 : mobile.align) && ((_tableStyles$mobileAl = tableStyles.mobileAlign) === null || _tableStyles$mobileAl === void 0 ? void 0 : _tableStyles$mobileAl.call(tableStyles, mobile.align))];\n var Component = isHeader ? 'th' : 'td';\n\n if (claimsRemainingSpace) {\n cellCss.push(tableStyles.columnRemaining);\n }\n\n var cellProps = _objectSpread$2({}, rest);\n\n if (span > 1) {\n // @ts-ignore\n cellProps.colSpan = span; // There is no CSS way to do colspan!\n }\n\n return jsx(Component, _extends({\n ref: ref,\n css: cellCss,\n className: className\n }, cellProps, {\n \"data-ppui\": \"true\"\n }), children);\n});\nvar TableHeadingCell = function (props) {\n return jsx(TableCell, _extends({\n isHeader: true\n }, props, {\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$4 = [\"className\", \"scroll\", \"fixedFirstColumn\", \"children\", \"align\", \"isFullWidth\", \"isLegacy\"];\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar Table = function (_ref) {\n var _tableStyles$getAlign;\n\n var className = _ref.className,\n _ref$scroll = _ref.scroll,\n scroll = _ref$scroll === void 0 ? false : _ref$scroll,\n _ref$fixedFirstColumn = _ref.fixedFirstColumn,\n fixedFirstColumn = _ref$fixedFirstColumn === void 0 ? false : _ref$fixedFirstColumn,\n children = _ref.children,\n align = _ref.align,\n isFullWidth = _ref.isFullWidth,\n _ref$isLegacy = _ref.isLegacy,\n isLegacy = _ref$isLegacy === void 0 ? true : _ref$isLegacy,\n rest = _objectWithoutProperties(_ref, _excluded$4);\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var cssVal = [[scroll || fixedFirstColumn] && tableStyles.scrollContext];\n var tableCss = [tableStyles.tableBase, isLegacy && tableStyles.legacyTableBase, isLegacy && tableStyles.legacyTh, (_tableStyles$getAlign = tableStyles.getAlignment) === null || _tableStyles$getAlign === void 0 ? void 0 : _tableStyles$getAlign.call(tableStyles, align), isFullWidth && tableStyles.columnRemaining, scroll && tableStyles.scrollContextTable, fixedFirstColumn && [tableStyles.scrollContextTable, tableStyles.fixedFirstColumnTable]];\n\n var context = _objectSpread$3(_objectSpread$3({}, DEFAULT_TABLE_CONTEXT), {}, {\n isSticky: scroll\n });\n\n var renderTable = jsx(PPTableContext.Provider, {\n value: context,\n \"data-ppui\": \"true\"\n }, jsx(\"table\", _extends({\n css: tableCss,\n \"data-ppui-info\": \"table_3.12.0\"\n }, rest, {\n className: className\n }), children));\n return scroll || fixedFirstColumn ? jsx(\"div\", {\n css: cssVal,\n \"data-ppui\": \"true\"\n }, renderTable) : renderTable;\n};\n\nexport { DEFAULT_TABLE_CONTEXT, PPTableContext, ResponsiveTable, Table, TableBody, TableCaption, TableCell, TableFoot, TableHead, TableHeadingCell, TableRow, TableSection, styles as tableStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef, useContext } from 'react';\nimport { MaskedTextInput } from '@paypalcorp/pp-react-masked-text-input';\nimport { IntlContext, getCurrencyMaskOptions } from '@paypalcorp/pp-react-intl';\n\nvar _excluded = [\"name\", \"maskOptions\", \"prefix\", \"suffix\", \"currencyType\", \"value\"];\nvar CurrencyInput = forwardRef(function (_ref, ref) {\n var name = _ref.name,\n maskOptions = _ref.maskOptions,\n prefix = _ref.prefix,\n suffix = _ref.suffix,\n _ref$currencyType = _ref.currencyType,\n currencyType = _ref$currencyType === void 0 ? 'USD' : _ref$currencyType,\n value = _ref.value,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var intlContext = useContext(IntlContext);\n\n var _getCurrencyMaskOptio = getCurrencyMaskOptions(intlContext, maskOptions, currencyType),\n currencyMaskOptions = _getCurrencyMaskOptio.currencyMaskOptions,\n intlCurrencyPrefix = _getCurrencyMaskOptio.intlCurrencyPrefix,\n intlCurrencySuffix = _getCurrencyMaskOptio.intlCurrencySuffix;\n\n var inputMode = 'decimal';\n var computedValue = value;\n\n if (currencyMaskOptions) {\n //istanbul ignore next\n if (currencyMaskOptions.scale === 0) {\n inputMode = 'numeric';\n }\n\n if (computedValue) {\n var _computedValue$split = computedValue.split('.'),\n _computedValue$split2 = _slicedToArray(_computedValue$split, 2),\n wholePart = _computedValue$split2[0],\n fractionalPart = _computedValue$split2[1];\n\n if (fractionalPart) {\n var fractionValue = fractionalPart.substring(0, currencyMaskOptions.scale);\n computedValue = wholePart + (fractionValue ? '.' + fractionValue : '');\n }\n }\n }\n\n return /*#__PURE__*/React.createElement(MaskedTextInput, _extends({\n name: name,\n value: computedValue,\n maskOptions: currencyMaskOptions,\n prefix: prefix ? prefix : intlCurrencyPrefix,\n suffix: suffix ? suffix : intlCurrencySuffix,\n inputMode: inputMode,\n ref: ref,\n \"data-ppui-info\": \"currency-input_2.0.25\"\n }, rest));\n});\n\nexport { CurrencyInput };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { TableHeadingCell, TableHead, TableCell, TableRow, TableBody as TableBody$2, ResponsiveTable, Table, PPTableContext, TableFoot } from '@paypalcorp/pp-react-table';\nimport { Button, ButtonGroup } from '@paypalcorp/pp-react-buttons';\nimport { devWarning } from '@paypalcorp/pp-react-utils';\nimport { SettingsIcon, ArrowUpSmIcon, ArrowDownSmIcon, RefreshIcon, Icon, ChevronUpIcon, ChevronDownIcon } from '@paypalcorp/pp-react-icons';\nimport { LoadingSpinner } from '@paypalcorp/pp-react-loading-spinner';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { Checkbox } from '@paypalcorp/pp-react-checkbox';\nimport { css, useTheme, jsx, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { stripUnit, remToPx } from 'polished';\nimport { ActionMenu } from '@paypalcorp/pp-react-menu';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSizePictogramSm = tokens.sysSizePictogramSm,\n sysSizeCircleLg = tokens.sysSizeCircleLg,\n sysSizeMediaMd = tokens.sysSizeMediaMd,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive,\n sysColorPrimaryMain = tokens.sysColorPrimaryMain,\n sysColorStructureScrim = tokens.sysColorStructureScrim;\n var mdBreakpoint = stripUnit(remToPx(sysSizeMediaMd));\n var flexContainer = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: flex;\\n align-items: center;\\n \"])));\n var settingsIcon = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n display: grid;\\n grid-template-columns: 1fr auto;\\n gap: \", \";\\n align-items: center;\\n \"])), sysSpaceMd);\n var interactiveCellCheckbox = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label {\\n display: block;\\n }\\n \"])));\n var interactiveCellCheckboxDisabled = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: interactive_cell_checkbox_disabled;\\n visibility: hidden;\\n \"])));\n var emptyTableLabel = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: empty_table_label;\\n background-size: \", \";\\n \"])), sysSizeCircleLg);\n var infoBlock = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: info_block;\\n margin-top: \", \";\\n display: grid;\\n grid-template-columns: auto;\\n grid-template-rows: auto auto;\\n place-items: center;\\n \"])), sysSpaceMd);\n var infoBlockMessage = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: iblock_msg;\\n margin: \", \" 0;\\n \"])), sysSpaceMd);\n var infoBlockAction = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: iblock_action;\\n margin: \", \" 0;\\n \"])), sysSpaceMd);\n var infoBlockDecoration = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: iblock_deco;\\n width: \", \";\\n \"])), sysSizePictogramSm);\n var iconMessage = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: icon_message;\\n padding: \", \";\\n display: inline-grid;\\n grid-template-columns: auto 1fr;\\n place-items: center;\\n gap: \", \";\\n height: auto;\\n \"])), sysSpaceSm, sysSpaceSm);\n var seeMoreBlock = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: see_more;\\n padding: \", \" \", \";\\n \"])), sysSpaceSm, sysSpaceMd);\n var headerButton = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: header_button;\\n margin-left: \", \";\\n\\n [dir='rtl'] & {\\n margin-right: \", \";\\n margin-left: 0;\\n }\\n \"])), sysSpaceXs, sysSpaceXs);\n var currentlySortedByIcon = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: currently_sorted_by_icon;\\n color: \", \";\\n border: \", \" solid \", \";\\n border-radius: \", \";\\n \"])), sysColorPrimaryMain, sysBorderThicknessNormal, sysColorPrimaryMain, sysBorderRadiusInteractive);\n var tableLoading = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: data_table_loading;\\n position: relative;\\n\\n &:before {\\n content: ' ';\\n position: absolute;\\n inset: 0 0 0 0;\\n background-color: \", \";\\n z-index: 1;\\n }\\n \"])), sysColorStructureScrim);\n var spinnerBlock = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: data_table_spinner;\\n padding: \", \";\\n display: grid;\\n place-items: center;\\n \"])), sysSpaceMd);\n var spinnerOverlay = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: data_table_spinner;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n z-index: 1;\\n \"])));\n return {\n mdBreakpoint: mdBreakpoint,\n flexContainer: flexContainer,\n settingsIcon: settingsIcon,\n seeMoreBlock: seeMoreBlock,\n interactiveCellCheckbox: interactiveCellCheckbox,\n interactiveCellCheckboxDisabled: interactiveCellCheckboxDisabled,\n emptyTableLabel: emptyTableLabel,\n headerButton: headerButton,\n tableLoading: tableLoading,\n spinnerBlock: spinnerBlock,\n spinnerOverlay: spinnerOverlay,\n iconMessage: iconMessage,\n infoBlock: infoBlock,\n infoBlockMessage: infoBlockMessage,\n infoBlockAction: infoBlockAction,\n infoBlockDecoration: infoBlockDecoration,\n currentlySortedByIcon: currentlySortedByIcon\n };\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/*\n * We're now assuming that columnOrder exists and includes only the names\n * of columns which are visible. This has been taken care of in dataTable.tsx.\n */\n\nvar TableHeader = function (_ref) {\n var columns = _ref.columns,\n columnOrder = _ref.columnOrder,\n isInteractive = _ref.isInteractive,\n _ref$toggleAllLabel = _ref.toggleAllLabel,\n toggleAllLabel = _ref$toggleAllLabel === void 0 ? 'Toggle all rows' : _ref$toggleAllLabel,\n selectedRows = _ref.selectedRows,\n idPrefix = _ref.idPrefix,\n rows = _ref.rows,\n interactiveCellContentClassName = _ref.interactiveCellContentClassName,\n onSelection = _ref.onSelection,\n onSort = _ref.onSort,\n sortInProgress = _ref.sortInProgress,\n settings = _ref.settings,\n tableContext = _ref.tableContext;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var rowIds = useMemo(function () {\n return rows.reduce(function (acc, _ref2) {\n var id = _ref2.id,\n isUnselectable = _ref2.isUnselectable;\n\n if (!isUnselectable) {\n acc.push(id);\n }\n\n return acc;\n }, []);\n }, [rows]);\n var checkboxElm;\n var checkboxElmCSSVal = [_styles.flexContainer, rowIds.length === 0 && _styles.interactiveCellCheckboxDisabled];\n\n if (isInteractive) {\n var isAnythingChecked = selectedRows.length > 0;\n var allChecked = rowIds.length && selectedRows.length === rowIds.length;\n checkboxElm = jsx(Checkbox, {\n name: \"\".concat(idPrefix, \"DataTableToggleAll\"),\n id: \"\".concat(idPrefix, \"DataTableToggleAll\"),\n \"aria-label\": toggleAllLabel,\n css: checkboxElmCSSVal,\n partial: isAnythingChecked && !allChecked,\n checked: isAnythingChecked || allChecked,\n onChange: function handleChange(evt) {\n onSelection(evt.target.checked ? rowIds : []);\n },\n \"data-ppui\": \"true\"\n });\n }\n\n var renderInteractiveCellContent = function (content) {\n return jsx(\"div\", {\n css: _styles.flexContainer,\n className: interactiveCellContentClassName,\n \"data-ppui\": \"true\"\n }, checkboxElm, content);\n };\n\n var hasContent = function (title) {\n return typeof title === 'string' && title.length > 0 || !!title;\n };\n\n var renderColumnHeader = function (name, _ref3, index, isLast) {\n var title = _ref3.title,\n sortButtonLabel = _ref3.sortButtonLabel,\n sortDirection = _ref3.sortDirection,\n isSortCurrent = _ref3.isSortCurrent,\n align = _ref3.align,\n width = _ref3.width,\n claimsRemainingSpace = _ref3.claimsRemainingSpace;\n var contents = title;\n\n var handleClick = function () {\n /* istanbul ignore next */\n if (onSort) {\n onSort(name, sortDirection === 'ascending' ? 'descending' : 'ascending');\n }\n };\n\n var settingsClick = function () {\n /* istanbul ignore next */\n if (settings && settings.onClick) {\n settings.onClick();\n }\n };\n\n if (sortDirection) {\n var SortIcon = sortDirection === 'ascending' ? ArrowUpSmIcon : ArrowDownSmIcon;\n var labelPrefix = isSortCurrent ? 'Currently' : '';\n var hiddenLabel = sortButtonLabel || \"\".concat(labelPrefix, \" sorted by \").concat(name, \" in \").concat(sortDirection, \" order\");\n contents = jsx(\"div\", {\n css: _styles.flexContainer,\n \"data-ppui\": \"true\"\n }, title, jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref4) {\n var css = _ref4.css;\n return jsx(IconButton, {\n css: _styles.headerButton,\n iconClassName: isSortCurrent && css(_styles.currentlySortedByIcon),\n svgIconComponent: SortIcon,\n onClick: handleClick,\n buttonType: \"tertiary\",\n btnState: sortInProgress === name ? 'processing' : 'initial',\n size: \"sm\",\n \"data-ppui\": \"true\"\n }, hiddenLabel);\n }));\n }\n\n if (index === 0 && isInteractive) {\n contents = renderInteractiveCellContent(contents);\n }\n\n if (isLast && typeof (settings === null || settings === void 0 ? void 0 : settings.onClick) === 'function') {\n var icon = jsx(IconButton, {\n svgIconComponent: SettingsIcon,\n buttonType: \"tertiary\",\n onClick: settingsClick,\n \"data-ppui\": \"true\"\n }, settings.screenReaderText);\n\n if (hasContent(title)) {\n contents = jsx(\"div\", {\n css: _styles.settingsIcon,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n \"data-ppui\": \"true\"\n }, contents), jsx(\"div\", {\n \"data-ppui\": \"true\"\n }, icon));\n } else {\n var _align;\n\n contents = icon;\n align = (_align = align) !== null && _align !== void 0 ? _align : 'end';\n }\n }\n\n var cellContext = _objectSpread(_objectSpread({}, tableContext), {}, {\n section: 'thead',\n isFirst: index === 0,\n isSticky: true\n });\n\n return jsx(TableHeadingCell, {\n key: name,\n scope: \"col\",\n \"aria-sort\": sortDirection,\n align: align,\n width: width,\n tableContext: cellContext,\n claimsRemainingSpace: claimsRemainingSpace,\n \"data-ppui\": \"true\"\n }, contents);\n };\n\n var lastIndex = columnOrder.length - 1;\n var headerElms = columnOrder.map(function (name, index) {\n return renderColumnHeader(name, columns[name], index, index === lastIndex);\n });\n return jsx(TableHead, {\n sticky: true,\n \"data-ppui\": \"true\"\n }, jsx(\"tr\", {\n \"data-ppui\": \"true\"\n }, headerElms));\n};\n\nvar TableHeader$1 = React.memo(TableHeader);\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/*\n * We're now assuming that columnOrder exists and includes only the names\n * of columns which are visible. This has been taken care of in dataTable.tsx.\n */\n\nvar TableBody = function (_ref) {\n var tableContext = _ref.tableContext,\n rows = _ref.rows,\n isInteractive = _ref.isInteractive,\n idPrefix = _ref.idPrefix,\n selectedRows = _ref.selectedRows,\n columns = _ref.columns,\n columnOrder = _ref.columnOrder,\n interactiveCellContentClassName = _ref.interactiveCellContentClassName,\n onSelection = _ref.onSelection,\n loadingProps = _ref.loadingProps;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var renderCellContent = function (row, columnName) {\n var content = row[columnName] ? row[columnName].value : '';\n\n if (columns[columnName].cellAs) {\n var Component = columns[columnName].cellAs;\n content = jsx(Component, _extends({\n id: row.id\n }, row[columnName], {\n \"data-ppui\": \"true\"\n }));\n }\n\n return content;\n };\n\n var renderInteractiveCellContent = function (checkboxElm, content) {\n return jsx(\"div\", {\n css: _styles.flexContainer,\n className: interactiveCellContentClassName,\n \"data-ppui\": \"true\"\n }, checkboxElm, content);\n };\n\n var renderCells = function (row, checkboxElm) {\n return columnOrder.map(function (columnName, index) {\n var content = renderCellContent(row, columnName);\n var _columns$columnName = columns[columnName],\n mobile = _columns$columnName.mobile,\n align = _columns$columnName.align,\n width = _columns$columnName.width;\n\n var cellContext = _objectSpread$1(_objectSpread$1({}, tableContext), {}, {\n section: 'tbody'\n });\n\n if (index === 0 && isInteractive) {\n cellContext.isFirst = true;\n return jsx(TableHeadingCell, {\n tableContext: cellContext,\n key: columnName,\n mobile: mobile,\n align: align,\n width: width,\n scope: \"row\",\n \"data-ppui\": \"true\"\n }, renderInteractiveCellContent(checkboxElm, content));\n }\n\n return jsx(TableCell, {\n tableContext: cellContext,\n key: columnName,\n mobile: mobile,\n align: align,\n width: width,\n \"data-ppui\": \"true\"\n }, content);\n });\n };\n\n var rowElms = rows.map(function (row) {\n var key = row.id;\n var checkboxElm;\n\n if (isInteractive) {\n checkboxElm = jsx(Checkbox, {\n name: \"\".concat(idPrefix, \"DataTable\").concat(key),\n id: \"\".concat(idPrefix, \"DataTable\").concat(key),\n \"aria-label\": key,\n css: [_styles.interactiveCellCheckbox, row.isUnselectable && _styles.interactiveCellCheckboxDisabled],\n disabled: !!row.isUnselectable,\n checked: selectedRows.includes(key),\n onChange: function handleChange(evt) {\n var updatedSelection = evt.target.checked ? selectedRows.concat(key) : selectedRows.filter(function (item) {\n return item !== key;\n });\n onSelection(updatedSelection);\n },\n \"data-ppui\": \"true\"\n });\n }\n\n var isSelected = isInteractive && selectedRows.includes(key);\n var cellElms = renderCells(row, checkboxElm);\n return jsx(TableRow, {\n key: key,\n isSelected: isSelected,\n tableContext: {\n section: 'tbody'\n },\n \"data-ppui\": \"true\"\n }, cellElms);\n });\n\n var EmptyBlock = function (_ref2) {\n var decoration = _ref2.decoration,\n buttonLabel = _ref2.buttonLabel,\n buttonRef = _ref2.buttonRef,\n message = _ref2.message,\n isError = _ref2.isError,\n buttonAction = _ref2.buttonAction,\n processing = _ref2.processing;\n var tableStyles = _styles;\n /* istanbul ignore next */\n\n var button = buttonLabel && buttonAction ? jsx(Button, {\n onClick: buttonAction,\n secondary: isError,\n tertiary: !isError,\n size: \"sm\",\n ref: buttonRef,\n key: \"load-btn\",\n btnState: processing ? 'processing' : 'initial',\n \"data-ppui\": \"true\"\n }, buttonLabel) : null;\n return jsx(\"div\", {\n css: tableStyles.infoBlock,\n \"data-ppui\": \"true\"\n }, decoration, jsx(\"div\", {\n css: tableStyles.infoBlockMessage,\n \"data-ppui\": \"true\"\n }, message), jsx(\"div\", {\n css: tableStyles.infoBlockAction,\n \"data-ppui\": \"true\"\n }, button));\n };\n\n if (rowElms.length) {\n return jsx(TableBody$2, {\n \"data-ppui\": \"true\"\n }, rowElms);\n }\n\n var contents;\n\n if (loadingProps.errorMsg) {\n contents = jsx(EmptyBlock, {\n decoration: jsx(RefreshIcon, {\n color: \"PrimaryMain\",\n size: \"xl\",\n \"data-ppui\": \"true\"\n }),\n buttonLabel: loadingProps.retryButtonLabel,\n buttonAction: loadingProps.onRetry,\n buttonRef: loadingProps.retryButtonRef,\n isError: true,\n message: loadingProps.errorMsg,\n processing: loadingProps.isLoading,\n \"data-ppui\": \"true\"\n });\n } else if (loadingProps.isLoading) {\n contents = jsx(\"div\", {\n css: _styles.spinnerBlock,\n \"data-ppui\": \"true\"\n }, jsx(LoadingSpinner, {\n size: \"lg\",\n as: \"div\",\n screenReaderText: loadingProps.loadingText,\n \"aria-live\": loadingProps.loadingText,\n \"data-ppui\": \"true\"\n }));\n } else {\n contents = jsx(EmptyBlock, {\n decoration: jsx(\"img\", {\n css: _styles.infoBlockDecoration,\n alt: \"emtpy\",\n src: \"https://www.paypalobjects.com/paypal-ui/pictograms/grayscale/svg/grayscale-1.svg\",\n \"data-ppui\": \"true\"\n }),\n buttonLabel: loadingProps.retryButtonLabel,\n buttonAction: loadingProps.onRetry,\n buttonRef: loadingProps.retryButtonRef,\n isError: false,\n message: loadingProps.emptyMsg,\n \"data-ppui\": \"true\"\n });\n }\n\n return jsx(TableBody$2, {\n \"data-ppui\": \"true\"\n }, jsx(TableRow, {\n \"data-ppui\": \"true\"\n }, jsx(TableCell, {\n span: columnOrder.length,\n align: \"center\",\n css: _styles.emptyTableLabel,\n mobile: {\n placement: 'ab123'\n },\n \"data-ppui\": \"true\"\n }, contents)));\n};\n\nvar TableBody$1 = React.memo(TableBody);\n\nvar _excluded = [\"rows\", \"columns\", \"columnOrder\", \"description\", \"className\", \"isLoading\", \"loadingStateLabel\", \"isInteractive\", \"selectedRows\", \"toggleAllLabel\", \"emptyTableLabel\", \"loadingProps\", \"idPrefix\", \"interactiveCellContentClassName\", \"onSelection\", \"onSort\", \"sortInProgress\", \"settings\", \"seeMoreProps\"];\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar isResponsive = function (cols) {\n return Object.entries(cols).findIndex(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n _key = _ref2[0],\n value = _ref2[1];\n\n return value.hasOwnProperty('mobile');\n }) >= 0;\n}; // istanbul ignore next\n\n\nvar deprecationWarning = function (propName) {\n devWarning(\"Deprecated: the prop \".concat(propName, \" has been deprecated and will have no effect.\"));\n};\n\nvar deprecationCheck = function (deprecatedItems, props) {\n deprecatedItems.forEach(function (item) {\n // istanbul ignore next\n if (props.hasOwnProperty(item)) {\n deprecationWarning(item);\n }\n });\n};\n\nvar onlyVisible = function (cols, order) {\n var keyList = !order || order.length === 0 ? Object.keys(cols) : order;\n return keyList.filter(function (col) {\n var _cols$col;\n\n return ((_cols$col = cols[col]) === null || _cols$col === void 0 ? void 0 : _cols$col.isVisible) !== false;\n });\n};\n\nvar DataTable = function (_ref3) {\n var _ref3$rows = _ref3.rows,\n rows = _ref3$rows === void 0 ? [] : _ref3$rows,\n _ref3$columns = _ref3.columns,\n columns = _ref3$columns === void 0 ? {} : _ref3$columns,\n columnOrder = _ref3.columnOrder,\n _ref3$description = _ref3.description,\n description = _ref3$description === void 0 ? 'Table' : _ref3$description,\n className = _ref3.className,\n _ref3$isLoading = _ref3.isLoading,\n isLoading = _ref3$isLoading === void 0 ? false : _ref3$isLoading,\n _ref3$loadingStateLab = _ref3.loadingStateLabel,\n loadingStateLabel = _ref3$loadingStateLab === void 0 ? 'Loading data' : _ref3$loadingStateLab,\n _ref3$isInteractive = _ref3.isInteractive,\n isInteractive = _ref3$isInteractive === void 0 ? false : _ref3$isInteractive,\n _ref3$selectedRows = _ref3.selectedRows,\n selectedRows = _ref3$selectedRows === void 0 ? [] : _ref3$selectedRows,\n toggleAllLabel = _ref3.toggleAllLabel,\n emptyTableLabel = _ref3.emptyTableLabel,\n loadingProps = _ref3.loadingProps,\n idPrefix = _ref3.idPrefix,\n interactiveCellContentClassName = _ref3.interactiveCellContentClassName,\n onSelection = _ref3.onSelection,\n onSort = _ref3.onSort,\n sortInProgress = _ref3.sortInProgress,\n settings = _ref3.settings,\n seeMoreProps = _ref3.seeMoreProps,\n rest = _objectWithoutProperties(_ref3, _excluded);\n\n if (!rows.length) {\n console.warn('Required prop `rows` is missing.');\n }\n /* istanbul ignore next */\n\n\n if (!Object.keys(columns).length) {\n console.warn('Required prop `columns` is missing.');\n }\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var visibleCols = onlyVisible(columns, columnOrder);\n var wrapperRef = useRef(null);\n deprecationCheck(['combinedColCellContentClassName', 'isHeaderCompact', 'isBodyCompact'], rest);\n var spinnerElm = isLoading && jsx(\"div\", {\n css: tableStyles.spinnerOverlay,\n \"data-ppui\": \"true\"\n }, jsx(LoadingSpinner, {\n screenReaderText: loadingStateLabel,\n size: \"md\",\n \"data-ppui\": \"true\"\n }));\n var props = {\n columns: columns,\n columnOrder: visibleCols,\n rows: rows,\n isInteractive: isInteractive,\n idPrefix: idPrefix,\n selectedRows: selectedRows,\n interactiveCellContentClassName: interactiveCellContentClassName,\n onSelection: onSelection\n };\n var TableComponent = isResponsive(columns) ? ResponsiveTable : Table;\n var tableContext = {\n tableType: 'data',\n isResponsive: isResponsive(columns)\n };\n return jsx(\"div\", {\n css: isLoading && tableStyles.tableLoading,\n className: className,\n \"data-ppui-info\": \"data-table_2.10.1\",\n ref: wrapperRef\n }, spinnerElm, jsx(TableComponent, _extends({\n isLegacy: false,\n \"aria-label\": description\n }, rest, {\n \"data-ppui\": \"true\"\n }), jsx(PPTableContext.Provider, {\n value: _objectSpread$2(_objectSpread$2({}, tableContext), {}, {\n section: 'thead'\n }),\n \"data-ppui\": \"true\"\n }, jsx(TableHeader$1, _extends({}, props, {\n toggleAllLabel: toggleAllLabel,\n onSort: onSort,\n sortInProgress: sortInProgress,\n settings: settings,\n \"data-ppui\": \"true\"\n }))), jsx(PPTableContext.Provider, {\n value: _objectSpread$2(_objectSpread$2({}, tableContext), {}, {\n section: 'tbody'\n }),\n \"data-ppui\": \"true\"\n }, jsx(TableBody$1, _extends({}, props, {\n loadingProps: loadingProps !== null && loadingProps !== void 0 ? loadingProps : {\n emptyMsg: emptyTableLabel,\n loadingText: loadingStateLabel\n },\n \"data-ppui\": \"true\"\n }))), jsx(function DataTableFooter(_ref4) {\n var onClick = _ref4.onClick,\n buttonLabel = _ref4.buttonLabel,\n buttonRef = _ref4.buttonRef,\n processing = _ref4.isLoading,\n errorMsg = _ref4.errorMsg,\n colCount = _ref4.colCount,\n backToTopLabel = _ref4.backToTopLabel,\n onBackToTopClick = _ref4.onBackToTopClick;\n var errorRow = errorMsg ? jsx(TableRow, {\n \"data-ppui\": \"true\"\n }, jsx(TableCell, {\n span: colCount,\n align: \"center\",\n tableContext: {\n section: 'utility'\n },\n mobile: {\n placement: 'ab123'\n },\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: tableStyles.iconMessage,\n \"data-ppui\": \"true\"\n }, jsx(Icon, {\n name: \"refresh\",\n size: \"sm\",\n color: \"PrimaryMain\",\n \"data-ppui\": \"true\"\n }), jsx(\"div\", {\n \"data-ppui\": \"true\"\n }, errorMsg)))) : null;\n\n var isVisible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n var seeMoreButton = onClick ? jsx(Button, {\n onClick: onClick,\n secondary: true,\n size: \"sm\",\n key: \"see-more-button\",\n ref: buttonRef,\n btnState: processing ? 'processing' : 'initial',\n \"data-ppui\": \"true\"\n }, buttonLabel) : null;\n var backToTopButton = onBackToTopClick ? jsx(Button, {\n onClick: function handleBackToTop(evt) {\n var target = evt.target;\n var table = target.closest('table'); // istanbul ignore next\n\n if (table) {\n // We want to find the first visible element in the table\n // make it focusable, set focus to it and then make it not focusable\n // Usually, that's the first th in the header.\n // BUT... the header is hidden for responsive tables. So we have\n // to find the first child (may be th or td) of the first row\n // of the body. --love, BCC\n var firstCell = table.querySelector('thead>tr>th');\n\n if (!isVisible(firstCell)) {\n var firstRow = table.querySelector('tbody>tr');\n firstCell = firstRow.firstChild;\n }\n\n firstCell.tabIndex = 1;\n firstCell.focus();\n requestAnimationFrame(function () {\n firstCell.tabIndex = -1;\n });\n table.scrollTop = 0;\n } // istanbul ignore next\n\n\n if (typeof onBackToTopClick === 'function') {\n onBackToTopClick();\n }\n },\n secondary: true,\n size: \"sm\",\n iconComponent: ArrowUpSmIcon,\n \"data-ppui\": \"true\"\n }, backToTopLabel) : null;\n return seeMoreButton || backToTopButton ? jsx(TableFoot, {\n \"data-ppui\": \"true\"\n }, errorRow, jsx(TableRow, {\n \"data-ppui\": \"true\"\n }, jsx(TableCell, {\n span: colCount,\n align: \"center\",\n mobile: {\n placement: 'ab123'\n },\n \"data-ppui\": \"true\"\n }, jsx(ButtonGroup, {\n \"data-ppui\": \"true\"\n }, backToTopButton, seeMoreButton)))) : null;\n }, _extends({}, seeMoreProps, {\n colCount: visibleCols.length,\n \"data-ppui\": \"true\"\n }))));\n};\n\nvar doCompare = function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n};\n\nvar ASCENDING = 1;\nvar DESCENDING = -1;\nvar DataTableUtils = {\n sortCompare: function sortCompare(a, b, columnName) {\n var direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'ascending';\n var dir = direction === 'ascending' ? ASCENDING : DESCENDING;\n return doCompare(a[columnName].value, b[columnName].value) * dir;\n }\n};\n\nvar DataTableSortMenu = function (_ref) {\n var selectedIndex = _ref.selectedIndex,\n options = _ref.options,\n _ref$triggerLabel = _ref.triggerLabel,\n triggerLabel = _ref$triggerLabel === void 0 ? 'Open sort menu' : _ref$triggerLabel,\n className = _ref.className,\n onSelection = _ref.onSelection;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isOpen = _useState2[0],\n setOpen = _useState2[1];\n\n var IconComponent = isOpen ? ChevronUpIcon : ChevronDownIcon;\n var trigger = jsx(IconButton, {\n css: _styles.headerButton,\n svgIconComponent: IconComponent,\n onClick: function onClick() {\n return setOpen(true);\n },\n buttonType: \"tertiary\",\n size: \"sm\",\n \"data-ppui\": \"true\"\n }, triggerLabel);\n return jsx(\"div\", {\n css: _styles.flexContainer,\n className: className,\n \"data-ppui-info\": \"data-table_2.10.1\"\n }, \"Sort by: \".concat(options[selectedIndex].title), trigger, jsx(ActionMenu, {\n isOpen: isOpen,\n onClose: function handleOnClose() {\n setOpen(false);\n },\n options: options,\n onSelection: function handleSelect(index) {\n setOpen(false);\n onSelection(index);\n },\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$1 = [\"items\", \"adjustments\", \"totals\", \"description\", \"className\", \"isLoading\", \"loadingStateLabel\", \"emptyTableLabel\", \"idPrefix\"];\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar renderCellContent = function (data, id, Component) {\n var _data$value;\n\n var content = (_data$value = data === null || data === void 0 ? void 0 : data.value) !== null && _data$value !== void 0 ? _data$value : data;\n\n if (Component) {\n var props = _typeof(data) === 'object' ? _objectSpread$3({}, data) : {\n value: content\n };\n return jsx(Component, _extends({\n id: id\n }, props, {\n \"data-ppui\": \"true\"\n }), content);\n }\n\n return content;\n};\n\nvar SummaryHeadingRow = function (_ref) {\n var tableContext = _ref.tableContext,\n columns = _ref.columns;\n\n var subContext = _objectSpread$3(_objectSpread$3({}, tableContext), {}, {\n section: 'summaryHeading'\n });\n\n var cells = columns.map(function (_ref2, index) {\n var title = _ref2.title,\n mobile = _ref2.mobile,\n width = _ref2.width,\n align = _ref2.align;\n subContext.isFirst = index === 0;\n return jsx(TableHeadingCell, {\n key: index,\n mobile: mobile,\n width: width,\n align: align,\n tableContext: subContext,\n \"data-ppui\": \"true\"\n }, title);\n });\n return jsx(TableRow, {\n \"data-ppui\": \"true\"\n }, cells);\n};\n\nvar SummaryItemRows = function (_ref3) {\n var tableContext = _ref3.tableContext,\n columns = _ref3.columns,\n rows = _ref3.rows;\n var itemRows = rows.map(function (row, rIndex) {\n var cells = columns.map(function (_ref4, index) {\n var mobile = _ref4.mobile,\n width = _ref4.width,\n align = _ref4.align,\n data = _ref4.data,\n cellAs = _ref4.cellAs;\n return jsx(TableCell, {\n tableContext: tableContext,\n key: index,\n mobile: mobile,\n width: width,\n align: align,\n \"data-ppui\": \"true\"\n }, renderCellContent(row[data], row.id, cellAs));\n });\n return jsx(TableRow, {\n key: rIndex,\n tableContext: tableContext,\n \"data-ppui\": \"true\"\n }, cells);\n });\n return jsx(React.Fragment, null, itemRows);\n};\n\nvar SummaryRows = function (_ref5) {\n var tableContext = _ref5.tableContext,\n columns = _ref5.columns,\n rows = _ref5.rows;\n var adjustmentRows = rows.map(function (row, rIndex) {\n var cells = columns.map(function (_ref6, index) {\n var mobile = _ref6.mobile,\n width = _ref6.width,\n align = _ref6.align,\n data = _ref6.data,\n cellAs = _ref6.cellAs,\n span = _ref6.span;\n return jsx(TableCell, {\n tableContext: tableContext,\n span: span,\n key: index,\n mobile: mobile,\n align: align,\n width: width,\n \"data-ppui\": \"true\"\n }, renderCellContent(row[data], null, cellAs));\n });\n return jsx(TableRow, {\n key: rIndex,\n tableContext: tableContext,\n \"data-ppui\": \"true\"\n }, cells);\n });\n return jsx(React.Fragment, null, adjustmentRows);\n};\n\nvar SummaryTable = function (_ref7) {\n var items = _ref7.items,\n adjustments = _ref7.adjustments,\n totals = _ref7.totals,\n _ref7$description = _ref7.description,\n description = _ref7$description === void 0 ? 'Table' : _ref7$description,\n className = _ref7.className,\n _ref7$isLoading = _ref7.isLoading,\n isLoading = _ref7$isLoading === void 0 ? false : _ref7$isLoading,\n _ref7$loadingStateLab = _ref7.loadingStateLabel,\n emptyTableLabel = _ref7.emptyTableLabel,\n idPrefix = _ref7.idPrefix,\n rest = _objectWithoutProperties(_ref7, _excluded$1);\n\n var tokens = useTheme();\n var tableStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var tableContext = {\n tableType: 'summary',\n isResponsive: true,\n isSticky: true\n };\n\n var tableProps = _objectSpread$3(_objectSpread$3({}, rest), {}, {\n tableType: 'summary'\n });\n\n return jsx(\"div\", {\n css: isLoading && tableStyles.tableLoading,\n className: className,\n \"data-ppui-info\": \"data-table_2.10.1\"\n }, jsx(ResponsiveTable, _extends({\n \"aria-label\": description\n }, tableProps, {\n \"data-ppui\": \"true\"\n }), jsx(TableHead, {\n \"data-ppui\": \"true\"\n }, jsx(SummaryHeadingRow, {\n tableContext: _objectSpread$3(_objectSpread$3({}, tableContext), {}, {\n section: 'summaryHeading'\n }),\n columns: items.columns,\n \"data-ppui\": \"true\"\n })), jsx(TableBody$2, {\n \"data-ppui\": \"true\"\n }, jsx(SummaryItemRows, _extends({\n tableContext: _objectSpread$3(_objectSpread$3({}, tableContext), {}, {\n section: 'summaryItem'\n })\n }, items, {\n \"data-ppui\": \"true\"\n })), jsx(SummaryRows, _extends({\n tableContext: _objectSpread$3(_objectSpread$3({}, tableContext), {}, {\n section: 'summaryAdjust'\n })\n }, adjustments, {\n \"data-ppui\": \"true\"\n }))), jsx(TableFoot, {\n \"data-ppui\": \"true\"\n }, jsx(SummaryRows, _extends({\n tableContext: _objectSpread$3(_objectSpread$3({}, tableContext), {}, {\n section: 'summaryTotal'\n })\n }, totals, {\n \"data-ppui\": \"true\"\n })))));\n};\n\nexport { DataTable, DataTableSortMenu, DataTableUtils, SummaryTable, styles as dataTableStyles };\n","import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx, ClassNames } from '@emotion/react';\nimport { math } from 'polished';\nimport { utilStyles, ZINDEX_DROPDOWN, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { textStyles, CaptionText, BodyText } from '@paypalcorp/pp-react-text';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { useMemo, useState, useRef, useLayoutEffect, forwardRef, useContext, useCallback, useEffect } from 'react';\nimport { CalendarIcon, ClockSmIcon, ArrowRightIcon, ArrowLeftIcon } from '@paypalcorp/pp-react-icons';\nimport { MaskType, MaskedTextInput } from '@paypalcorp/pp-react-masked-text-input';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport { Sheet } from '@paypalcorp/pp-react-modal';\nimport { IntlContext } from '@paypalcorp/pp-react-intl';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysSpaceLg = tokens.sysSpaceLg,\n sysBorderRadiusSm = tokens.sysBorderRadiusSm,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive,\n sysColorBackgroundHighContrast = tokens.sysColorBackgroundHighContrast,\n sysColorPrimaryMainHover = tokens.sysColorPrimaryMainHover,\n sysBorderThicknessEmphasis = tokens.sysBorderThicknessEmphasis,\n sysSizeMediaMd = tokens.sysSizeMediaMd,\n sysColorSpecialtyMain = tokens.sysColorSpecialtyMain,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysSpaceTiny = tokens.sysSpaceTiny,\n sysColorSelectedRangeMain = tokens.sysColorSelectedRangeMain,\n sysColorSelectedMain = tokens.sysColorSelectedMain,\n sysSizeIconLg = tokens.sysSizeIconLg,\n sysSizePointerWidthLg = tokens.sysSizePointerWidthLg,\n sysSizeTapTargetDefault = tokens.sysSizeTapTargetDefault,\n sysSizeTapTargetSm = tokens.sysSizeTapTargetSm,\n sysSizeTapTargetXs = tokens.sysSizeTapTargetXs,\n sysSizeFieldLg = tokens.sysSizeFieldLg,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceXl = tokens.sysSpaceXl,\n sysTypographyCaptionSize = tokens.sysTypographyCaptionSize,\n sysSpaceXs = tokens.sysSpaceXs,\n sysColorSelectedContrast = tokens.sysColorSelectedContrast,\n sysColorSelectedRangeContrast = tokens.sysColorSelectedRangeContrast;\n\n var _utilStyles = utilStyles(tokens),\n elevationStyles = _utilStyles.elevationStyles,\n caretStyles = _utilStyles.caretStyles;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body;\n\n var calendarContainerOffset = math(\"\".concat(sysSizeFieldLg, \" + \").concat(sysSpaceSm)); // offset from calendar icon\n\n var xsBreakpoint = '22.5rem';\n var smBreakpoint = '25rem';\n\n function getDateDimensions(dateSize) {\n return css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n width: \", \";\\n height: \", \";\\n \"])), dateSize, dateSize);\n }\n\n var calendarTrigger = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: calendar_trigger;\\n cursor: pointer;\\n \"])));\n\n function calendarContainerStyle() {\n return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n background-color: \", \";\\n position: absolute;\\n top: \", \";\\n padding: \", \";\\n border: \", \" solid \", \";\\n border-radius: \", \";\\n \", \"\\n \", \"\\n \", \"\\n \", \";\\n z-index: \", \";\\n cursor: initial;\\n \"])), sysColorBackgroundSurface, calendarContainerOffset, sysSpaceLg, sysBorderThicknessNormal, sysColorBackgroundSurface, sysBorderRadiusSm, elevationStyles.level2, caretStyles.base(sysSizePointerWidthLg), caretStyles.positionTop(math(\"\".concat(sysSizePointerWidthLg, \" / 2\"))), caretStyles.positionCenter(sysSizePointerWidthLg), ZINDEX_DROPDOWN);\n }\n\n var calendarContainer = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: calendar_container;\\n \", \"\\n &:after {\\n top: -\", \";\\n }\\n \"])), calendarContainerStyle(), sysBorderThicknessNormal);\n var calendarContainerLeft = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: calendar_container-left;\\n \", \"\\n right: -\", \";\\n &:before {\\n left: calc(100% - ((\", \" / 2) + \", \"));\\n }\\n &:after {\\n top: -\", \";\\n left: calc(100% - ((\", \" / 2) + \", \"));\\n }\\n \"])), calendarContainerStyle(), sysSpaceSm, sysSizeIconLg, sysSpaceLg, sysBorderThicknessNormal, sysSizeIconLg, sysSpaceXl);\n var calendarContainerRight = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: calendar_container-right;\\n \", \"\\n left: -\", \";\\n &:before {\\n left: calc(\", \" / 2);\\n }\\n &:after {\\n top: -\", \";\\n left: calc((\", \" / 2) - \", \");\\n }\\n \"])), calendarContainerStyle(), sysSpaceSm, sysSizeIconLg, sysBorderThicknessNormal, sysSizeIconLg, sysSpaceSm);\n var calendarNav = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: calendar_nav;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n white-space: nowrap;\\n \"])));\n var calendarNavButtonPrev = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: nav_prev_btn;\\n \"])));\n var calendarNavButtonNext = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: nav_next_btn;\\n \"])));\n var calendarNavButtonsNotFocusable = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n &:after {\\n display: none;\\n }\\n \"])));\n var calendarNavButtonsHidden = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: hidden;\\n visibility: hidden;\\n \"])));\n var fullWidth = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n width: 100%;\\n \"])));\n var tableFullWidth = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n table {\\n \", \"\\n }\\n \"])), fullWidth);\n var calendarTable = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: calendar_table;\\n border-spacing: 0;\\n\\n th,\\n td {\\n text-align: center;\\n padding: \", \" 0;\\n }\\n\\n @media (max-width: \", \") {\\n \", \"\\n }\\n \"])), sysSpaceTiny, sysSizeMediaMd, fullWidth);\n var calendarCellInRange = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: cell_in_range;\\n border-top: \", \" solid transparent;\\n border-bottom: \", \" solid transparent;\\n background-color: \", \";\\n \"])), sysBorderThicknessNormal, sysBorderThicknessNormal, sysColorSelectedRangeMain);\n var calendarCellRangeStart = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: range_start;\\n background: linear-gradient(\\n to right,\\n \", \" 50%,\\n \", \" 50%\\n );\\n \"])), sysColorBackgroundSurface, sysColorSelectedRangeMain);\n var calendarCellRangeEnd = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n label: range_end;\\n background: linear-gradient(\\n to right,\\n \", \" 50%,\\n \", \" 50%\\n );\\n \"])), sysColorSelectedRangeMain, sysColorBackgroundSurface);\n var calendarDate = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: date;\\n \", \"\\n border: none;\\n padding: 0;\\n margin: 0 \", \";\\n text-decoration: none;\\n cursor: pointer;\\n \", \"\\n border-radius: \", \";\\n background-color: transparent;\\n\\n &:hover {\\n border: \", \" solid \", \";\\n }\\n\\n @media (max-width: \", \") {\\n \", \"\\n }\\n\\n @media (min-width: \", \") and (max-width: \", \") {\\n \", \"\\n }\\n \"])), textBody(), sysSpaceTiny, getDateDimensions(sysSizeTapTargetDefault), sysBorderRadiusInteractive, sysBorderThicknessEmphasis, sysColorPrimaryMainHover, xsBreakpoint, getDateDimensions(sysSizeTapTargetXs), xsBreakpoint, smBreakpoint, getDateDimensions(sysSizeTapTargetSm));\n var calendarDateInRange = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n label: date_in_range;\\n color: \", \";\\n \"])), sysColorSelectedRangeContrast);\n var calendarDateNotCurrent = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n label: date_not_current;\\n color: \", \";\\n \"])), sysColorBackgroundMediumContrast);\n var calendarDateDisabled = css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\"\\n label: disabled;\\n text-decoration-line: line-through;\\n cursor: not-allowed;\\n color: \", \";\\n\\n &:hover {\\n border: none;\\n }\\n \"])), sysColorBackgroundMediumContrast);\n var calendarDateToday = css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\"\\n label: today;\\n border: \", \" solid \", \";\\n \"])), sysBorderThicknessNormal, sysColorBackgroundHighContrast);\n var calendarDateSelected = css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\"\\n label: selected;\\n color: \", \";\\n border: \", \" solid \", \";\\n background-color: \", \";\\n \"])), sysColorSelectedContrast, sysBorderThicknessNormal, sysColorSelectedMain, sysColorSelectedMain);\n var calendarDueDate = css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\"\\n label: due_date;\\n color: \", \";\\n border: \", \" solid \", \";\\n \"])), sysColorSpecialtyMain, sysBorderThicknessNormal, sysColorSpecialtyMain);\n var calendarDueDateSelected = css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\"\\n label: due_date_selected;\\n border: \", \" solid \", \";\\n \"])), sysBorderThicknessNormal, sysColorSpecialtyMain);\n var calendarDueDateIconContainer = css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\"\\n label: icon_container;\\n display: inline-block;\\n position: relative;\\n \", \"\\n\\n @media (max-width: \", \") {\\n \", \"\\n }\\n\\n @media (min-width: \", \") and (max-width: \", \") {\\n \", \"\\n }\\n \"])), getDateDimensions(sysSizeTapTargetDefault), xsBreakpoint, getDateDimensions(sysSizeTapTargetXs), xsBreakpoint, smBreakpoint, getDateDimensions(sysSizeTapTargetSm));\n var calendarDueDateIcon = css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral([\"\\n label: icon;\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n pointer-events: none;\\n background-color: \", \";\\n border-radius: \", \";\\n color: \", \";\\n \"])), sysColorBackgroundSurface, sysBorderRadiusInteractive, sysColorSpecialtyMain);\n var legend = css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral([\"\\n label: legend;\\n display: flex;\\n align-items: center;\\n margin-top: \", \";\\n margin-inline-start: \", \";\\n \"])), sysSpaceSm, sysSpaceLg);\n var legendItem = css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral([\"\\n label: legend_item;\\n display: flex;\\n align-items: center;\\n white-space: nowrap;\\n margin-inline-end: \", \";\\n \"])), sysSpaceLg);\n var legendKey = css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteral([\"\\n label: key;\\n width: \", \";\\n height: \", \";\\n display: inline-block;\\n margin-inline-end: \", \";\\n border-radius: \", \";\\n \"])), sysTypographyCaptionSize, sysTypographyCaptionSize, sysSpaceXs, sysBorderRadiusInteractive);\n var dueDateLegendKey = css(_templateObject31 || (_templateObject31 = _taggedTemplateLiteral([\"\\n label: due_date_legend_key;\\n background-color: \", \";\\n color: \", \";\\n margin-inline-end: \", \";\\n border-radius: \", \";\\n \"])), sysColorBackgroundSurface, sysColorSpecialtyMain, sysSpaceXs, sysBorderRadiusInteractive);\n var wrapperContainer = css(_templateObject32 || (_templateObject32 = _taggedTemplateLiteral([\"\\n label: wrapper;\\n [dir='rtl'] & input {\\n text-align:right;\\n direction:ltr;\\n }\\n \"])));\n return {\n calendarTrigger: calendarTrigger,\n calendarContainer: calendarContainer,\n calendarContainerLeft: calendarContainerLeft,\n calendarContainerRight: calendarContainerRight,\n calendarNav: calendarNav,\n calendarTable: calendarTable,\n calendarNavButtonPrev: calendarNavButtonPrev,\n calendarNavButtonNext: calendarNavButtonNext,\n calendarNavButtonsNotFocusable: calendarNavButtonsNotFocusable,\n calendarNavButtonsHidden: calendarNavButtonsHidden,\n calendarCellInRange: calendarCellInRange,\n calendarCellRangeStart: calendarCellRangeStart,\n calendarCellRangeEnd: calendarCellRangeEnd,\n calendarDate: calendarDate,\n calendarDateNotCurrent: calendarDateNotCurrent,\n calendarDateDisabled: calendarDateDisabled,\n calendarDateToday: calendarDateToday,\n calendarDateSelected: calendarDateSelected,\n calendarDueDate: calendarDueDate,\n calendarDueDateIconContainer: calendarDueDateIconContainer,\n calendarDueDateIcon: calendarDueDateIcon,\n calendarDateInRange: calendarDateInRange,\n calendarDueDateSelected: calendarDueDateSelected,\n legend: legend,\n legendItem: legendItem,\n legendKey: legendKey,\n dueDateLegendKey: dueDateLegendKey,\n tableFullWidth: tableFullWidth,\n wrapperContainer: wrapperContainer\n };\n}\n\nvar MD_BREAKPOINT = 752;\nvar BASE_FONT_SIZE = 16;\nvar BASE_CALENDAR_IDEAL_WIDTH = 200;\n\nvar CalendarContainer = function (_ref) {\n var isCalendarVisible = _ref.isCalendarVisible,\n label = _ref.label,\n children = _ref.children,\n calendarTriggerRef = _ref.calendarTriggerRef,\n wrapperContainerRef = _ref.wrapperContainerRef,\n onShowCalendar = _ref.onShowCalendar,\n _ref$calendarInSheet = _ref.calendarInSheet,\n calendarInSheet = _ref$calendarInSheet === void 0 ? false : _ref$calendarInSheet;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isMobile = _useState2[0],\n setMobile = _useState2[1];\n\n var containerRef = useRef();\n\n var _useState3 = useState(_styles.calendarContainer),\n _useState4 = _slicedToArray(_useState3, 2),\n calendarPosition = _useState4[0],\n setCalendarPosition = _useState4[1];\n\n var isMobileViewPort = function () {\n return (\n /* istanbul ignore next */\n window && window.innerWidth < MD_BREAKPOINT\n );\n };\n /* istanbul ignore next */\n\n\n var handleKey = function (evt) {\n if (new KeyboardCode(evt.key || evt.keyCode).IS_ESC) {\n onShowCalendar(false);\n }\n };\n /* istanbul ignore next */\n\n\n var handleOutsideClick = function (evt) {\n if (!calendarTriggerRef.current.contains(evt.target) && !containerRef.current.contains(evt.target)) {\n onShowCalendar(false);\n }\n };\n /* istanbul ignore next */\n\n\n var handleResize = function () {\n /* Event to dismiss calendar popup on window resize */\n onShowCalendar(false);\n };\n\n var getRefCurrent = function (myref) {\n return (\n /* istanbul ignore next */\n myref && myref.current ? myref.current : null\n );\n };\n /* istanbul ignore next */\n\n\n var getCalendarBoundary = function () {\n var calendarTrigger = getRefCurrent(calendarTriggerRef);\n var calendarTriggerPos = calendarTrigger.getBoundingClientRect();\n var windowWidth = window && window.innerWidth || document.documentElement.clientWidth;\n var fontSizeVal = window && parseFloat(window.getComputedStyle(document.documentElement).fontSize);\n var calculatedSpace = BASE_CALENDAR_IDEAL_WIDTH + BASE_CALENDAR_IDEAL_WIDTH * ((fontSizeVal - BASE_FONT_SIZE) * 0.0625);\n\n if (wrapperContainerRef === null || wrapperContainerRef === void 0 ? void 0 : wrapperContainerRef.current) {\n var wrapperContainerPos = wrapperContainerRef.current.getBoundingClientRect();\n\n if (calendarTriggerPos.left - wrapperContainerPos.left < calculatedSpace) {\n // Left side is out of viewoprt\n setCalendarPosition(_styles.calendarContainerRight);\n } else if (wrapperContainerPos.right + calculatedSpace > wrapperContainerPos.width) {\n // Right side is out of viewport\n setCalendarPosition(_styles.calendarContainerLeft);\n }\n } else if (calendarTrigger) {\n if (calendarTriggerPos.left < calculatedSpace) {\n // Left side is out of viewoprt\n setCalendarPosition(_styles.calendarContainerRight);\n } else if (calendarTriggerPos.right + calculatedSpace > windowWidth) {\n // Right side is out of viewport\n setCalendarPosition(_styles.calendarContainerLeft);\n }\n }\n };\n\n useLayoutEffect(function () {\n setCalendarPosition(_styles.calendarContainer);\n\n var _isMobile = isMobileViewPort();\n\n getCalendarBoundary();\n setMobile(_isMobile);\n\n if (!_isMobile && isCalendarVisible) {\n var _containerRef$current, _containerRef$current2;\n\n window.addEventListener('resize', handleResize);\n document.addEventListener('keydown', handleKey); // Add handleOutSideClick when calendar is not in sheet, let sheet handle outside click on its own\n\n /* istanbul ignore next */\n\n if (!calendarInSheet) {\n document.addEventListener('click', handleOutsideClick);\n } // eslint-disable-next-line no-unused-expressions\n\n\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.scrollIntoView) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.call(_containerRef$current, {\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n\n return function () {\n window.removeEventListener('resize', handleResize);\n document.removeEventListener('keydown', handleKey);\n document.removeEventListener('click', handleOutsideClick);\n };\n }, [isCalendarVisible]);\n\n if (isMobile || calendarInSheet) {\n /* istanbul ignore next */\n return jsx(Sheet, {\n isOpen: isCalendarVisible,\n onCloseComplete: function onCloseComplete() {\n return onShowCalendar(false);\n },\n noCloseButton: true,\n title: label,\n skipFormFocus: true,\n \"data-ppui\": \"true\"\n }, calendarInSheet && !isMobile ? jsx(\"div\", {\n css: _styles.tableFullWidth,\n \"data-ppui\": \"true\"\n }, children) : children);\n }\n\n return isCalendarVisible ? jsx(\"div\", {\n css: calendarPosition,\n ref: containerRef,\n \"data-ppui\": \"true\"\n }, children) : null;\n};\n\nvar _excluded = [\"name\", \"label\", \"className\", \"calendar\", \"isCalendarVisible\", \"wrapperContainerRef\", \"onShowCalendar\", \"maskOptions\", \"selectedDate\", \"onSelection\", \"parseDate\", \"formatDate\", \"formatterSkeleton\", \"sheetContainerRef\", \"onComplete\", \"onAccept\", \"calendarInSheet\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar DEFAULT_MASK_OPTIONS = {\n mask: 'm`/d`/y',\n // here backquote ` is needed to prevent characters shifting back on edit. Refer https://github.com/uNmAnNeR/imaskjs/issues/89\n lazy: false,\n blocks: {\n d: {\n mask: MaskType.Range,\n from: 1,\n to: 31,\n maxLength: 2,\n placeholderChar: 'D'\n },\n m: {\n mask: MaskType.Range,\n from: 1,\n to: 12,\n maxLength: 2,\n placeholderChar: 'M'\n },\n y: {\n mask: MaskType.Range,\n from: 1900,\n to: 2999,\n maxLength: 4,\n placeholderChar: 'Y'\n }\n }\n}; // eslint-disable-next-line\n\nvar localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nfunction defaultParseDate(str) {\n /* istanbul ignore next */\n if (!str) {\n return null;\n }\n\n var parts = str.split('/');\n var month = Number(parts[0]);\n var date = Number(parts[1]);\n var year = Number(parts[2]);\n return new Date(year, month - 1, date);\n}\n\nfunction defaultFormatDate(date) {\n if (!date) {\n return '';\n }\n\n return new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric'\n }).format(date);\n}\n\nfunction getDateMaskOptions(intlContext, formatterSkeleton, maskOptions) {\n if (!(intlContext && intlContext.dateTimeFormatter)) {\n return _objectSpread(_objectSpread({}, DEFAULT_MASK_OPTIONS), maskOptions);\n } // Get pattern from Worldready\n\n\n var dateTimeFormatter = intlContext.dateTimeFormatter({\n style: formatterSkeleton,\n timeZone: localTimeZone\n });\n var parts = dateTimeFormatter.formatToParts(new Date());\n var pattern = parts.map(function (_ref) {\n var type = _ref.type,\n value = _ref.value;\n\n switch (type) {\n case 'month':\n return 'm';\n\n case 'day':\n return 'd';\n\n case 'year':\n return 'y';\n\n default:\n // Remove any rtl marker chars\n // eslint-disable-next-line\n var separator = value.replace(/[^\\x00-\\x7F]/g, '');\n return \"`\".concat(separator);\n }\n }).join('');\n return _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_MASK_OPTIONS), maskOptions), {}, {\n mask: pattern\n });\n}\n\nfunction getFormatters(intlContext, formatterSkeleton, formatDate, parseDate) {\n if (!(intlContext && intlContext.dateTimeFormatter)) {\n return {\n _formatDate: formatDate || defaultFormatDate,\n _parseDate: parseDate || defaultParseDate\n };\n } // Get formatters from Worldready\n\n\n var dateTimeFormatter = intlContext.dateTimeFormatter({\n style: formatterSkeleton,\n timeZone: localTimeZone\n });\n return {\n _formatDate: formatDate || function _formatDate(date) {\n /* istanbul ignore next */\n if (!date) {\n return '';\n }\n\n return dateTimeFormatter.format(date);\n },\n _parseDate: parseDate || function _parseDate(str) {\n return str && dateTimeFormatter.parse(str);\n }\n };\n}\n\nvar DateInput = forwardRef(function (_ref2, ref) {\n var name = _ref2.name,\n label = _ref2.label,\n className = _ref2.className,\n calendar = _ref2.calendar,\n isCalendarVisible = _ref2.isCalendarVisible,\n wrapperContainerRef = _ref2.wrapperContainerRef,\n onShowCalendar = _ref2.onShowCalendar,\n maskOptions = _ref2.maskOptions,\n selectedDate = _ref2.selectedDate,\n onSelection = _ref2.onSelection,\n parseDate = _ref2.parseDate,\n formatDate = _ref2.formatDate,\n _ref2$formatterSkelet = _ref2.formatterSkeleton,\n formatterSkeleton = _ref2$formatterSkelet === void 0 ? 'yyyyMMdd' : _ref2$formatterSkelet,\n sheetContainerRef = _ref2.sheetContainerRef,\n onComplete = _ref2.onComplete,\n onAccept = _ref2.onAccept,\n calendarInSheet = _ref2.calendarInSheet,\n rest = _objectWithoutProperties(_ref2, _excluded);\n\n if (!selectedDate) {\n console.warn('Required prop `selectedDate` is missing.');\n }\n\n if (!onSelection) {\n onSelection = function () {\n return console.warn('Required prop `onSelection` is missing');\n };\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var intlContext = useContext(IntlContext);\n var calendarTriggerRef = useRef();\n var internalRef = useRef();\n var inputRef = ref || internalRef;\n var prevVal = useRef();\n\n var _maskOptions = useMemo(function () {\n return getDateMaskOptions(intlContext, formatterSkeleton, maskOptions);\n }, [formatterSkeleton, maskOptions]);\n\n var _useMemo = useMemo(function () {\n return getFormatters(intlContext, formatterSkeleton, formatDate, parseDate);\n }, [formatDate, parseDate]),\n _formatDate = _useMemo._formatDate,\n _parseDate = _useMemo._parseDate;\n\n var handleComplete = function (value, unmaskedValue, typedValue) {\n /* istanbul ignore next */\n if (unmaskedValue !== prevVal.current) {\n onSelection(_parseDate(value));\n }\n\n if (onComplete) {\n onComplete(value, unmaskedValue, typedValue);\n }\n };\n\n var handleAccept = function (value, unmaskedValue, typedValue) {\n if (!unmaskedValue) {\n onSelection(null);\n }\n\n if (onAccept) {\n onAccept(value, unmaskedValue, typedValue);\n }\n };\n\n var icon = calendar && jsx(React.Fragment, null, jsx(CalendarIcon, {\n size: \"sm\",\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n onClick: function handleIconClick() {\n var inputElm = inputRef.current;\n inputElm.focus();\n onShowCalendar(!isCalendarVisible);\n },\n svgElementRef: calendarTriggerRef,\n color: \"sysColorBackgroundMediumContrast\",\n css: _styles.calendarTrigger,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }), jsx(CalendarContainer, {\n isCalendarVisible: isCalendarVisible,\n onShowCalendar: onShowCalendar,\n label: label,\n sheetContainerRef: sheetContainerRef,\n wrapperContainerRef: wrapperContainerRef,\n calendarTriggerRef: calendarTriggerRef,\n calendarInSheet: calendarInSheet,\n \"data-ppui\": \"true\"\n }, calendar));\n\n var unmaskedValue = _formatDate(selectedDate).replace(/\\D/g, '');\n\n prevVal.current = unmaskedValue;\n return jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref3) {\n var cx = _ref3.cx,\n css = _ref3.css;\n return jsx(MaskedTextInput, _extends({\n name: name,\n label: label,\n rightIcon: icon,\n maskOptions: _maskOptions,\n className: cx(css(_styles.wrapperContainer), className),\n inputMode: \"numeric\",\n \"data-ppui-info\": \"date-input_3.6.1\"\n }, rest, {\n onComplete: handleComplete,\n onAccept: handleAccept,\n value: unmaskedValue,\n ref: inputRef\n }));\n });\n});\n\nvar CalendarRange;\n\n(function (CalendarRange) {\n CalendarRange[\"START\"] = \"start\";\n CalendarRange[\"END\"] = \"end\";\n})(CalendarRange || (CalendarRange = {}));\n\nvar MONTH_NAMES = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nvar DAY_NAMES = {\n sun: 'Sun',\n mon: 'Mon',\n tue: 'Tue',\n wed: 'Wed',\n thu: 'Thu',\n fri: 'Fri',\n sat: 'Sat'\n};\n\nfunction getFormattedDateFromParts(parts) {\n return parts.reduce(function (acc, _ref) {\n var type = _ref.type,\n value = _ref.value;\n\n if (type === 'month' || type === 'day' || type === 'year') {\n acc[type] = value;\n }\n\n return acc;\n }, {});\n}\n\nfunction defaultFormatToParts(date) {\n var parts = new Intl.DateTimeFormat('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric'\n }).formatToParts(date);\n return getFormattedDateFromParts(parts);\n}\n\nfunction isDateInRange(date, selectedDate, range, rangeCompletionDate) {\n if (range === CalendarRange.START && selectedDate && rangeCompletionDate) {\n return date.getTime() >= selectedDate.getTime() && date.getTime() <= rangeCompletionDate.getTime();\n } else if (range === CalendarRange.END && selectedDate && rangeCompletionDate) {\n return date.getTime() <= selectedDate.getTime() && date.getTime() >= rangeCompletionDate.getTime();\n }\n\n return false;\n}\n\nfunction isDateEqual(date, providedDate) {\n return providedDate && date.getTime() === providedDate.getTime();\n}\n\nfunction isDateRangeStart(date, selectedDate, range, rangeCompletionDate) {\n return range === CalendarRange.START && selectedDate && date.getTime() === selectedDate.getTime() || range === CalendarRange.END && rangeCompletionDate && date.getTime() === rangeCompletionDate.getTime();\n}\n\nfunction isDateRangeEnd(date, selectedDate, range, rangeCompletionDate) {\n return range === CalendarRange.END && selectedDate && date.getTime() === selectedDate.getTime() || range === CalendarRange.START && rangeCompletionDate && date.getTime() === rangeCompletionDate.getTime();\n}\n\nfunction getDatesForMonth(date, daysOfWeek, firstDayOfWeek, selectedDate, range, rangeCompletionDate, dueDate, isDateDisabled, calendarRange) {\n var dates = [];\n var startMonth = date.getMonth();\n var startYear = date.getFullYear();\n var from = new Date(startYear, startMonth, 1);\n var firstday = Object.keys(DAY_NAMES)[from.getDay()];\n var firstDayIndex = daysOfWeek.indexOf(firstday);\n var firstDOWIndex = Object.keys(DAY_NAMES).indexOf(firstDayOfWeek);\n var todayDate = new Date();\n var today = new Date(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate());\n from.setDate(-firstDayIndex + 1);\n\n while (from) {\n var month = from.getMonth();\n var day = from.getDate();\n var year = from.getFullYear();\n\n if (year === startYear && month > startMonth || year > startYear) {\n if (from.getDay() === firstDOWIndex) break;\n }\n\n var _dateObj = new Date(year, month, day);\n\n var isDisabled = isDateDisabled && isDateDisabled(_dateObj);\n\n if (calendarRange === CalendarRange.START && (month < startMonth || year < startYear)) {\n isDisabled = true;\n }\n\n if (calendarRange === CalendarRange.END && (month > startMonth || year > startYear)) {\n isDisabled = true;\n }\n\n dates.push({\n day: day,\n date: _dateObj,\n isDisabled: isDisabled,\n isToday: isDateEqual(from, today),\n inCurrentMonth: month === startMonth,\n isSelected: isDateEqual(from, selectedDate),\n isDue: isDateEqual(from, dueDate),\n inRange: isDateInRange(from, selectedDate, range, rangeCompletionDate),\n isRangeStart: isDateRangeStart(from, selectedDate, range, rangeCompletionDate),\n isRangeEnd: isDateRangeEnd(from, selectedDate, range, rangeCompletionDate)\n });\n from.setDate(day + 1);\n }\n\n return dates;\n}\n\nfunction getDaysOfWeek(firstDayOfWeek) {\n var daysOfWeek = Object.keys(DAY_NAMES);\n var firstDOWIndex = daysOfWeek.indexOf(firstDayOfWeek);\n\n if (firstDOWIndex === 0) {\n return daysOfWeek;\n }\n\n return daysOfWeek.slice(firstDOWIndex).concat(daysOfWeek.slice(0, firstDOWIndex));\n}\n\nfunction getFirstDayOfWeek(intlContext, firstDayOfWeek) {\n if (intlContext && intlContext.worldReadyObj && intlContext.worldReadyObj.weekInfo) {\n return firstDayOfWeek || intlContext.worldReadyObj.weekInfo.firstDay;\n }\n\n return firstDayOfWeek || 'sun';\n}\n\nfunction getNames(intlContext, monthNames, dayNames) {\n if (intlContext && intlContext.getDisplayNamesObject) {\n var monthDisplayNames = intlContext.getDisplayNamesObject({\n type: 'month',\n style: 'wide'\n });\n\n var _monthNames = monthDisplayNames.select(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']);\n\n var dayDisplayNames = intlContext.getDisplayNamesObject({\n type: 'day',\n style: 'abbreviated'\n });\n var keys = Object.keys(DAY_NAMES);\n var values = dayDisplayNames.select(keys);\n\n var _dayNames = keys.reduce(function (acc, key, index) {\n acc[key] = values[index];\n return acc;\n }, {});\n\n return {\n _monthNames: monthNames || _monthNames,\n _dayNames: dayNames || _dayNames\n };\n }\n\n return {\n _monthNames: monthNames || MONTH_NAMES,\n _dayNames: dayNames || DAY_NAMES\n };\n}\n\nfunction getFormatter(intlContext, formatToParts, formatterSkeleton) {\n if (intlContext && intlContext.dateTimeFormatter) {\n var dateTimeFormatter = intlContext.dateTimeFormatter({\n style: formatterSkeleton,\n // eslint-disable-next-line\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n });\n return formatToParts || function fn(date) {\n var parts = dateTimeFormatter.formatToParts(date);\n return getFormattedDateFromParts(parts);\n };\n }\n\n return formatToParts || defaultFormatToParts;\n}\n\nfunction areMonthsEqual(date1, date2) {\n return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth();\n}\n/* eslint-disable complexity */\n\n\nvar Calendar = function (_ref2) {\n var className = _ref2.className,\n monthNames = _ref2.monthNames,\n dayNames = _ref2.dayNames,\n firstDayOfWeek = _ref2.firstDayOfWeek,\n _ref2$prevMonthLabel = _ref2.prevMonthLabel,\n prevMonthLabel = _ref2$prevMonthLabel === void 0 ? 'Go to prev month' : _ref2$prevMonthLabel,\n _ref2$nextMonthLabel = _ref2.nextMonthLabel,\n nextMonthLabel = _ref2$nextMonthLabel === void 0 ? 'Go to next month' : _ref2$nextMonthLabel,\n selectedDate = _ref2.selectedDate,\n range = _ref2.range,\n rangeCompletionDate = _ref2.rangeCompletionDate,\n isFocusable = _ref2.isFocusable,\n dateAs = _ref2.dateAs,\n calendarFrom = _ref2.calendarFrom,\n calendarTo = _ref2.calendarTo,\n navClassName = _ref2.navClassName,\n tableClassName = _ref2.tableClassName,\n dateClassName = _ref2.dateClassName,\n dueDate = _ref2.dueDate,\n formatToParts = _ref2.formatToParts,\n _ref2$formatterSkelet = _ref2.formatterSkeleton,\n formatterSkeleton = _ref2$formatterSkelet === void 0 ? 'yyyyMd' : _ref2$formatterSkelet,\n _ref2$legendSelectedD = _ref2.legendSelectedDateLabel,\n legendSelectedDateLabel = _ref2$legendSelectedD === void 0 ? 'Selected' : _ref2$legendSelectedD,\n _ref2$legendDueDateLa = _ref2.legendDueDateLabel,\n legendDueDateLabel = _ref2$legendDueDateLa === void 0 ? 'Due date' : _ref2$legendDueDateLa,\n _ref2$legendTodayLabe = _ref2.legendTodayLabel,\n legendTodayLabel = _ref2$legendTodayLabe === void 0 ? 'Today' : _ref2$legendTodayLabe,\n isDateDisabled = _ref2.isDateDisabled,\n onSelection = _ref2.onSelection,\n onMonthChange = _ref2.onMonthChange;\n\n if (!selectedDate) {\n console.warn('Required prop `selectedDate` is missing.');\n }\n /* istanbul ignore next */\n\n\n if (!onSelection) {\n onSelection = function () {\n return console.warn('Required prop `onSelection` is missing');\n };\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _currentDate = selectedDate || new Date();\n\n var _useState = useState(new Date(_currentDate.getFullYear(), _currentDate.getMonth())),\n _useState2 = _slicedToArray(_useState, 2),\n currentDate = _useState2[0],\n setCurrentDate = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isRTL = _useState4[0],\n setRTL = _useState4[1];\n\n var intlContext = useContext(IntlContext);\n var containerRef = useCallback(function (node) {\n if (node !== null) {\n var computedStyle = window.getComputedStyle(node);\n setRTL(computedStyle && computedStyle.direction === 'rtl');\n }\n }, []);\n\n var _firstDayOfWeek = useMemo(function () {\n return getFirstDayOfWeek(intlContext, firstDayOfWeek);\n }, [firstDayOfWeek]);\n\n var _useMemo = useMemo(function () {\n return getNames(intlContext, monthNames, dayNames);\n }, [monthNames, dayNames]),\n _monthNames = _useMemo._monthNames,\n _dayNames = _useMemo._dayNames;\n\n var _formatToParts = useMemo(function () {\n return getFormatter(intlContext, formatToParts, formatterSkeleton);\n }, [formatToParts, formatterSkeleton]);\n\n var tabIndex = !isFocusable ? -1 : 0;\n useEffect(function () {\n setCurrentDate(new Date(_currentDate.getFullYear(), _currentDate.getMonth()));\n }, [selectedDate]);\n\n var renderDateButton = function (dateInfo) {\n var isDisabled = dateInfo.isDisabled,\n isToday = dateInfo.isToday,\n isSelected = dateInfo.isSelected,\n isRangeStart = dateInfo.isRangeStart,\n isRangeEnd = dateInfo.isRangeEnd,\n isDue = dateInfo.isDue,\n inCurrentMonth = dateInfo.inCurrentMonth,\n inRange = dateInfo.inRange,\n date = dateInfo.date;\n var shouldApplySelectedStyles = !isDisabled && (isSelected || isRangeStart || isRangeEnd);\n var cssVal = [_styles.calendarDate, !inCurrentMonth && _styles.calendarDateNotCurrent, isDisabled && _styles.calendarDateDisabled, isToday && _styles.calendarDateToday, isDue && _styles.calendarDueDate, inRange && _styles.calendarDateInRange, shouldApplySelectedStyles && _styles.calendarDateSelected, shouldApplySelectedStyles && isDue && _styles.calendarDueDateSelected];\n var props = {\n css: cssVal,\n className: dateClassName,\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n onClick: function onClick() {\n return !(isDisabled || isSelected) && onSelection(date);\n },\n disabled: isDisabled,\n tabIndex: tabIndex,\n type: 'button'\n };\n\n if (dateAs) {\n props.dateInfo = dateInfo;\n }\n\n var formattedDate = _formatToParts(date);\n\n var button = jsx(dateAs || 'button', _extends({}, props, {\n \"data-ppui\": \"true\"\n }), formattedDate.day);\n\n if (isDue) {\n return jsx(\"div\", {\n css: _styles.calendarDueDateIconContainer,\n \"data-ppui\": \"true\"\n }, button, jsx(ClockSmIcon, {\n size: \"xs\",\n css: _styles.calendarDueDateIcon,\n \"data-ppui\": \"true\"\n }));\n }\n\n return button;\n };\n\n var currentMonth = _monthNames[currentDate.getMonth()];\n\n var daysOfWeek = getDaysOfWeek(_firstDayOfWeek);\n var header = jsx(\"thead\", {\n \"data-ppui\": \"true\"\n }, jsx(\"tr\", {\n \"data-ppui\": \"true\"\n }, daysOfWeek.map(function (name) {\n return jsx(\"th\", {\n key: name,\n \"data-ppui\": \"true\"\n }, jsx(CaptionText, {\n \"data-ppui\": \"true\"\n }, _dayNames[name]));\n })));\n var isPrevHidden = calendarFrom && areMonthsEqual(currentDate, calendarFrom);\n var isNextHidden = calendarTo && areMonthsEqual(currentDate, calendarTo);\n var calendarRange = '';\n\n if (isPrevHidden) {\n calendarRange = CalendarRange.START;\n }\n\n if (isNextHidden) {\n calendarRange = CalendarRange.END;\n }\n\n var dates = getDatesForMonth(currentDate, daysOfWeek, _firstDayOfWeek, selectedDate, range, rangeCompletionDate, dueDate, isDateDisabled, calendarRange);\n var dateRows = [];\n var shouldApplyRangeStyles = true;\n var isDueDateVisible = false;\n\n if (isDateDisabled) {\n var isSelectedDateDisabled = selectedDate && isDateDisabled(selectedDate);\n var isRangeCompletionDateDisabled = rangeCompletionDate && isDateDisabled(rangeCompletionDate);\n /* istanbul ignore next */\n\n if (isSelectedDateDisabled || isRangeCompletionDateDisabled) {\n shouldApplyRangeStyles = false;\n }\n }\n\n for (var i = 0; i < dates.length; i = i + 7) {\n var dateCols = [];\n\n for (var j = 0; j < 7; j++) {\n var _dates = dates[i + j],\n isRangeStart = _dates.isRangeStart,\n isRangeEnd = _dates.isRangeEnd,\n inRange = _dates.inRange,\n isDue = _dates.isDue;\n var allowInRange = inRange; // if start and end date is same don't need range styles\n // @ts-ignore\n\n if (isRangeStart && isRangeEnd) {\n allowInRange = false;\n }\n\n var cssVal = [shouldApplyRangeStyles && allowInRange && _styles.calendarCellInRange, shouldApplyRangeStyles && allowInRange && isRangeStart && _styles.calendarCellRangeStart, shouldApplyRangeStyles && allowInRange && isRangeEnd && _styles.calendarCellRangeEnd];\n\n if (!isDueDateVisible && isDue) {\n isDueDateVisible = true;\n }\n\n dateCols.push(jsx(\"td\", {\n key: j,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: cssVal,\n \"data-ppui\": \"true\"\n }, renderDateButton(dates[i + j]))));\n }\n\n dateRows.push(jsx(\"tr\", {\n key: i,\n \"data-ppui\": \"true\"\n }, dateCols));\n }\n\n var body = jsx(\"tbody\", {\n \"data-ppui\": \"true\"\n }, dateRows);\n\n var formattedCurrentDate = _formatToParts(currentDate);\n\n var legend = jsx(\"div\", {\n css: _styles.legend,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: _styles.legendItem,\n \"data-ppui\": \"true\"\n }, jsx(\"span\", {\n css: [_styles.legendKey, _styles.calendarDateSelected],\n \"data-ppui\": \"true\"\n }), jsx(CaptionText, {\n as: \"span\",\n \"data-ppui\": \"true\"\n }, legendSelectedDateLabel)), isDueDateVisible && jsx(\"div\", {\n css: _styles.legendItem,\n \"data-ppui\": \"true\"\n }, jsx(ClockSmIcon, {\n size: \"xs\",\n css: _styles.dueDateLegendKey,\n \"data-ppui\": \"true\"\n }), jsx(CaptionText, {\n as: \"span\",\n \"data-ppui\": \"true\"\n }, legendDueDateLabel)), jsx(\"div\", {\n css: _styles.legendItem,\n \"data-ppui\": \"true\"\n }, jsx(\"span\", {\n css: [_styles.legendKey, _styles.calendarDateToday],\n \"data-ppui\": \"true\"\n }), jsx(CaptionText, {\n as: \"span\",\n \"data-ppui\": \"true\"\n }, legendTodayLabel)));\n /* istanbul ignore next */\n\n return jsx(\"div\", {\n className: className,\n ref: containerRef,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: _styles.calendarNav,\n className: navClassName,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, {\n svgIconComponent: isRTL ? ArrowRightIcon : ArrowLeftIcon,\n buttonType: \"tertiary\",\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n onClick: function handlePrevClick() {\n currentDate.setMonth(currentDate.getMonth() - 1);\n var prevDate = new Date(currentDate.getFullYear(), currentDate.getMonth());\n setCurrentDate(prevDate);\n /* istanbul ignore next */\n\n if (onMonthChange) {\n onMonthChange(prevDate);\n }\n },\n css: [_styles.calendarNavButtonPrev, !isFocusable && _styles.calendarNavButtonsNotFocusable, isPrevHidden && _styles.calendarNavButtonsHidden],\n tabIndex: tabIndex,\n \"data-ppui\": \"true\"\n }, prevMonthLabel), jsx(BodyText, {\n \"data-ppui\": \"true\"\n }, \"\".concat(currentMonth, \" \").concat(formattedCurrentDate.year)), jsx(IconButton, {\n svgIconComponent: isRTL ? ArrowLeftIcon : ArrowRightIcon,\n buttonType: \"tertiary\",\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n onClick: function handleNextClick() {\n currentDate.setMonth(currentDate.getMonth() + 1);\n var nextDate = new Date(currentDate.getFullYear(), currentDate.getMonth());\n setCurrentDate(nextDate);\n /* istanbul ignore next */\n\n if (onMonthChange) {\n onMonthChange(nextDate);\n }\n },\n css: [_styles.calendarNavButtonNext, !isFocusable && _styles.calendarNavButtonsNotFocusable, isNextHidden && _styles.calendarNavButtonsHidden],\n tabIndex: tabIndex,\n \"data-ppui\": \"true\"\n }, nextMonthLabel)), jsx(\"table\", {\n css: _styles.calendarTable,\n className: tableClassName,\n \"data-ppui\": \"true\"\n }, header, body), legend);\n};\n\nexport { Calendar, DateInput, styles as dateInputStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useRef, useMemo, useEffect } from 'react';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { CloseIcon } from '@paypalcorp/pp-react-icons';\nimport { utilStyles, ZINDEX_MODAL, uniqueId } from '@paypalcorp/pp-react-utils';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math } from 'polished';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysSizeIconLg = tokens.sysSizeIconLg,\n sysSizeIconMd = tokens.sysSizeIconMd,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceXl = tokens.sysSpaceXl;\n\n var _utilStyles = utilStyles(tokens),\n elevationStyles = _utilStyles.elevationStyles;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body;\n\n var headerWidth = '44rem';\n var headerFlexBasis = math(\"2 * \".concat(sysSpaceXl));\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: focus_flow_base;\\n position: fixed;\\n inset: 0 0 0 0;\\n background-color: \", \";\\n z-index: \", \";\\n \"])), sysColorBackgroundSurface, ZINDEX_MODAL);\n var wrapper = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: focus_flow_wrapper;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n position: absolute;\\n width: 100%;\\n \"])));\n var container = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: focus_flow_container;\\n height: 100%;\\n margin: 0 auto;\\n \"])));\n var content = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: focus_flow_content;\\n overflow: auto;\\n height: 90vh;\\n position: relative;\\n border-radius: inherit;\\n \", \";\\n padding: \", \" 0;\\n margin: 0 auto;\\n width: \", \";\\n\\n @media screen and (max-width: \", \") {\\n width: 100%;\\n padding: \", \";\\n height: 84vh;\\n }\\n \"])), textBody(), sysSpaceLg, '36rem', headerWidth, sysSpaceLg);\n var header = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: focus_flow_header;\\n width: 100%;\\n \"])));\n var headerContent = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: focus_flow_header_content;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n flex-wrap: wrap;\\n gap: \", \";\\n position: relative;\\n flex: 0 0 auto;\\n z-index: 1;\\n width: \", \";\\n margin: 0 auto;\\n padding: \", \" 0;\\n\\n @media screen and (max-width: \", \") {\\n width: 100%;\\n padding: \", \" \", \";\\n }\\n \"])), sysSpaceLg, headerWidth, sysSpaceSm, headerWidth, sysSpaceSm, sysSpaceLg);\n var headerAction = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: focus_flow_header_action;\\n flex: 0 0 \", \";\\n \"])), sysSizeIconLg);\n var headerTitle = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: focus_flow_header_title;\\n flex: 1 1 \", \";\\n margin: \", \" 0;\\n text-align: center;\\n \", \";\\n \"])), headerFlexBasis, sysSpaceSm, textBody());\n var headerClose = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: focus_flow_header_close;\\n flex: 0 0 \", \";\\n \"])), sysSizeIconLg);\n var headerLogo = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: focus_flow_header_logo;\\n display: flex;\\n flex: 1 1 \", \";\\n justify-content: center;\\n margin-top: \", \";\\n width: \", \";\\n height: \", \";\\n \"])), headerFlexBasis, sysSpaceSm, sysSizeIconMd, sysSizeIconMd);\n var headerScrolled = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: header_scrolled;\\n \", \"\\n \"])), elevationStyles.level3);\n return {\n base: base,\n content: content,\n container: container,\n header: header,\n headerContent: headerContent,\n headerAction: headerAction,\n headerClose: headerClose,\n headerLogo: headerLogo,\n headerTitle: headerTitle,\n headerScrolled: headerScrolled,\n wrapper: wrapper\n };\n}\n\nvar _excluded = [\"action\", \"children\", \"className\", \"closeButtonLabel\", \"closeButtonProps\", \"containerClassName\", \"contentContainerRef\", \"headerClassName\", \"id\", \"onClose\", \"showLogo\", \"title\"];\n\nvar FocusFlow = function (_ref) {\n var action = _ref.action,\n children = _ref.children,\n className = _ref.className,\n _ref$closeButtonLabel = _ref.closeButtonLabel,\n closeButtonLabel = _ref$closeButtonLabel === void 0 ? 'close' : _ref$closeButtonLabel,\n _ref$closeButtonProps = _ref.closeButtonProps,\n closeButtonProps = _ref$closeButtonProps === void 0 ? {} : _ref$closeButtonProps,\n containerClassName = _ref.containerClassName,\n contentContainerRef = _ref.contentContainerRef,\n headerClassName = _ref.headerClassName,\n id = _ref.id,\n onClose = _ref.onClose,\n showLogo = _ref.showLogo,\n title = _ref.title,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n headerScroll = _useState2[0],\n setHeaderScroll = _useState2[1];\n\n var closeButtonRef = useRef();\n var refContent = useRef();\n var contentRef = contentContainerRef || refContent;\n var actionZoneRef = useRef();\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var idBase = id !== null && id !== void 0 ? id : uniqueId();\n var titleId = \"header_\".concat(idBase);\n\n var handleClick = function (evt) {\n if (onClose) {\n onClose(evt);\n }\n };\n /* istanbul ignore next */\n\n\n var handleScroll = function () {\n if (contentRef && contentRef.current) {\n var contents = contentRef.current;\n var newHeaderScroll = contents.scrollTop !== 0;\n\n if (newHeaderScroll !== headerScroll) {\n setHeaderScroll(newHeaderScroll);\n }\n }\n }; // Put focus on fist focusable item\n // istanbul ignore next\n\n\n var handleFocus = function () {\n var focused = false; // For Forms\n\n if (!focused && contentRef && contentRef.current) {\n //@ts-ignore\n var focusableEls = contentRef.current.querySelectorAll('a, button, textarea, input, select');\n\n if (focusableEls.length > 0) {\n focusableEls[0].focus();\n focused = true;\n }\n } // Otherwise focus on action item or close button\n\n\n if (!focused) {\n if (action && actionZoneRef && actionZoneRef.current) {\n //@ts-ignore\n var focusableActionEl = actionZoneRef.current.querySelectorAll('a, button, select');\n\n if (focusableActionEl.length > 0) {\n focusableActionEl[0].focus();\n }\n } else {\n var closeButton = closeButtonRef.current;\n\n if (closeButton) {\n //@ts-ignore\n closeButton.focus();\n }\n }\n }\n }; // check scroll and put focus\n\n\n useEffect(function () {\n handleScroll();\n handleFocus();\n }, []);\n var titleContentCss = [showLogo ? _styles.headerLogo : _styles.headerTitle];\n var closeButtonTag = jsx(IconButton, _extends({\n svgIconComponent: CloseIcon,\n onClick: function onClick(e) {\n return handleClick(e);\n },\n buttonType: \"tertiary\"\n }, closeButtonProps, {\n ref: closeButtonRef,\n \"data-ppui\": \"true\"\n }), closeButtonLabel);\n var titleContentZone = jsx(\"div\", {\n css: titleContentCss,\n id: titleId,\n \"data-ppui\": \"true\"\n }, function titleContents() {\n if (showLogo) {\n return jsx(\"img\", {\n src: \"https://www.paypalobjects.com/paypal-ui/logos/svg/paypal-mark-color.svg\",\n alt: \"paypal-logo\",\n \"data-ppui\": \"true\"\n });\n }\n\n return title;\n }());\n var closeButtonZone = jsx(\"div\", {\n css: [_styles.headerClose],\n \"data-ppui\": \"true\"\n }, closeButtonTag);\n var actionZone = action ? jsx(\"div\", {\n css: [_styles.headerAction],\n ref: actionZoneRef,\n \"data-ppui\": \"true\"\n }, action) : jsx(\"div\", {\n css: [_styles.headerAction],\n \"data-ppui\": \"true\"\n });\n var header = jsx(\"header\", {\n className: headerClassName,\n css: [_styles.header,\n /* istanbul ignore next */\n headerScroll && _styles.headerScrolled],\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: [_styles.headerContent],\n \"data-ppui\": \"true\"\n }, actionZone, titleContentZone, closeButtonZone));\n return jsx(\"main\", {\n css: _styles.base,\n id: id,\n \"data-testid\": \"focusflow\",\n \"data-ppui-info\": \"focus-flow_2.1.3\",\n \"aria-live\": \"polite\",\n \"aria-label\": showLogo ? title : ''\n }, jsx(\"article\", _extends({\n css: [_styles.container],\n className: containerClassName\n }, rest, {\n \"aria-hidden\": \"false\",\n \"data-ppui\": \"true\"\n }), header, jsx(\"section\", {\n css: _styles.content,\n className: className,\n onScroll: handleScroll,\n ref: contentRef,\n \"data-ppui\": \"true\"\n }, children)));\n};\n\nexport { FocusFlow, styles as focusFlowStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { forwardRef, useMemo, useRef, useState, useContext, useEffect } from 'react';\nimport { CurrencyInput } from '@paypalcorp/pp-react-currency-input';\nimport { IntlContext, getCurrencyMaskOptions } from '@paypalcorp/pp-react-intl';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { EditIcon } from '@paypalcorp/pp-react-icons';\nimport { KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { css, keyframes, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math } from 'polished';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderThicknessEmphasis = tokens.sysBorderThicknessEmphasis,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysColorBackgroundHighContrast = tokens.sysColorBackgroundHighContrast,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSizeIndicatorMd = tokens.sysSizeIndicatorMd,\n sysSizeFieldLg = tokens.sysSizeFieldLg,\n sysTypographyFieldLabelSmLineHeight = tokens.sysTypographyFieldLabelSmLineHeight;\n var scaleNormal = 44 / 64;\n var cursorPosition = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n position: absolute;\\n content: '';\\n top: \", \"; // (68-60)/2\\n bottom: \", \"; // (68-60)/2\\n border-right: \", \" solid;\\n border-right-color: transparent;\\n \"])), sysSpaceXs, sysSpaceXs, sysBorderThicknessEmphasis);\n var blinker = keyframes(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n 50% {\\n border-right-color: transparent;\\n }\\n \"])));\n var animateCursor = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n border-right-color: \", \";\\n animation: \", \" 1s step-start infinite;\\n \"])), sysColorBackgroundHighContrast, blinker);\n var base = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: base;\\n border-bottom: \", \" solid transparent;\\n \"])), sysBorderThicknessNormal);\n var centerAlign = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: center_aligned;\\n text-align: center;\\n \"])));\n var baseNoFocus = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n &:hover [data-component='hero_currency--view'] {\\n scale: \", \";\\n }\\n \"])), 48 / 64);\n var errorTextSpacing = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: error_text_spacing;\\n margin-bottom: \", \";\\n \"])), math(\"\".concat(sysTypographyFieldLabelSmLineHeight, \" + \").concat(sysSizeIndicatorMd)));\n var view = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: view;\\n display: inline-flex; // scale doesn't work properly in rtl without inline-flex/inline-block. flex is needed for setting order.\\n font-size: \", \";\\n line-height: \", \"; // 4px more than font-size\\n transform-origin: left;\\n scale: \", \";\\n pointer-events: none;\\n transition: scale 200ms ease-in-out;\\n > span {\\n display: inline-block;\\n }\\n [dir='rtl'] & {\\n transform-origin: right;\\n }\\n \"])), sysSizeFieldLg, math(\"\".concat(sysSizeFieldLg, \" + \").concat(sysSpaceXs)), scaleNormal);\n var viewCenter = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: center_view;\\n transform-origin: center;\\n [dir='rtl'] & {\\n transform-origin: center;\\n }\\n \"])));\n var textInput = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: text_input;\\n height: 0;\\n & > div:first-of-type {\\n opacity: 0;\\n }\\n \"])));\n var focusedView = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: focused_view;\\n scale: \", \";\\n \"])), 64 / 64);\n var focusEntered = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n &:after {\\n \", \";\\n }\\n [dir='rtl'] & {\\n &:before {\\n \", \";\\n }\\n }\\n \"])), animateCursor, animateCursor);\n var focusImplied = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: focus_implied;\\n color: \", \";\\n font-weight: normal;\\n \"])), sysColorBackgroundMediumContrast);\n var focusImpliedDefault = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: focus_implied_default;\\n color: \", \";\\n \"])), sysColorBackgroundHighContrast);\n var symbol = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: symbol;\\n color: \", \";\\n [dir='rtl'] & {\\n order: 1;\\n }\\n \"])), sysColorBackgroundHighContrast);\n var entered = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: entered;\\n color: \", \";\\n font-weight: normal;\\n position: relative;\\n &:after {\\n \", \";\\n }\\n [dir='rtl'] & {\\n order: 3;\\n direction: ltr;\\n &:after {\\n content: none;\\n }\\n &:before {\\n \", \";\\n }\\n }\\n \"])), sysColorBackgroundHighContrast, cursorPosition, cursorPosition);\n var impliedDefault = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n label: implied_default;\\n color: \", \";\\n [dir='rtl'] & {\\n order: 2;\\n }\\n \"])), sysColorBackgroundHighContrast);\n var editIcon = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: edit_icon;\\n margin-inline-start: \", \";\\n align-self: center;\\n pointer-events: auto;\\n scale: \", \";\\n transform-origin: left;\\n &:focus {\\n &:after {\\n box-shadow: none;\\n border: none;\\n }\\n }\\n [dir='rtl'] & {\\n transform-origin: right;\\n order: 4;\\n }\\n \"])), sysSpaceSm, 1 / scaleNormal);\n return {\n base: base,\n centerAlign: centerAlign,\n baseNoFocus: baseNoFocus,\n errorTextSpacing: errorTextSpacing,\n textInput: textInput,\n view: view,\n viewCenter: viewCenter,\n focusedView: focusedView,\n focusEntered: focusEntered,\n focusImplied: focusImplied,\n focusImpliedDefault: focusImpliedDefault,\n symbol: symbol,\n entered: entered,\n impliedDefault: impliedDefault,\n editIcon: editIcon\n };\n}\n\nvar _excluded = [\"name\", \"id\", \"maskOptions\", \"currencyType\", \"prefix\", \"onAccept\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"value\", \"className\", \"inputClassName\", \"label\", \"showEditIcon\", \"align\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar HeroCurrency = forwardRef(function (_ref, ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'heroCurrency' : _ref$name,\n _ref$id = _ref.id,\n id = _ref$id === void 0 ? name : _ref$id,\n maskOptions = _ref.maskOptions,\n currencyType = _ref.currencyType,\n prefix = _ref.prefix,\n onAccept = _ref.onAccept,\n _ref$onFocus = _ref.onFocus,\n onFocus = _ref$onFocus === void 0 ? null : _ref$onFocus,\n _ref$onBlur = _ref.onBlur,\n onBlur = _ref$onBlur === void 0 ? null : _ref$onBlur,\n _ref$onKeyDown = _ref.onKeyDown,\n onKeyDown = _ref$onKeyDown === void 0 ? null : _ref$onKeyDown,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? '' : _ref$value,\n className = _ref.className,\n inputClassName = _ref.inputClassName,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? 'Enter amount' : _ref$label,\n showEditIcon = _ref.showEditIcon,\n _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'left' : _ref$align,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!onAccept) {\n onAccept = function () {\n return console.warn('Required prop `onAccept` is missing');\n };\n } // If theme is not directly provided, get from themeContext\n\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var internalRef = useRef();\n\n var _useState = useState(''),\n _useState2 = _slicedToArray(_useState, 2),\n entered = _useState2[0],\n setEntered = _useState2[1];\n\n var _useState3 = useState(''),\n _useState4 = _slicedToArray(_useState3, 2),\n implied = _useState4[0],\n setImplied = _useState4[1];\n\n var computedRef = ref || internalRef;\n var intlContext = useContext(IntlContext);\n var currencyParts = useMemo(function () {\n return getCurrencyMaskOptions(intlContext, maskOptions, currencyType);\n }, [intlContext, maskOptions, currencyType]);\n var currencyMaskOptions = currencyParts.currencyMaskOptions,\n intlCurrencyPrefix = currencyParts.intlCurrencyPrefix,\n intlCurrencySuffix = currencyParts.intlCurrencySuffix;\n\n function handleChange() {\n setTimeout(function () {\n if (computedRef === null || computedRef === void 0 ? void 0 : computedRef.current) {\n var result = parseDisplay(computedRef.current.value, currencyMaskOptions.radix, currencyMaskOptions.scale);\n setEntered(result.entered);\n setImplied(result.implied);\n }\n }, 0);\n }\n\n useEffect(function () {\n handleChange();\n }, [value]);\n var currencySymbol = prefix || intlCurrencyPrefix || intlCurrencySuffix || '$';\n\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n inputFocused = _useState6[0],\n setInputFocus = _useState6[1];\n\n var containerCss = [_styles.base, align === 'center' && _styles.centerAlign, !inputFocused && _styles.baseNoFocus, (rest.errorText || rest.helperText || rest.successText) && _styles.errorTextSpacing];\n var viewCss = [_styles.view, inputFocused && _styles.focusedView, align === 'center' && _styles.viewCenter];\n var enteredCss = [_styles.entered, inputFocused && _styles.focusEntered];\n var impliedCss = [_styles.impliedDefault, inputFocused && _styles.focusImplied, inputFocused && value === '' && _styles.focusImpliedDefault];\n /* istanbul ignore next */\n\n function parseDisplay(str) {\n var decimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n var scale = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!str || str === '') {\n return {\n entered: '',\n implied: inputFocused ? '' : '0'\n };\n } else if (str && str[0] === decimal) {\n // If first char is decimal then prepend '0'\n str = '0' + str;\n }\n\n var parts = str.split(decimal);\n return {\n entered: str,\n implied: parts.length > 1 ? new Array(scale + 1).join('0').substring(parts[1].length, scale) : ''\n };\n }\n\n var handleBlur = function (event) {\n setInputFocus(false);\n /* istanbul ignore if */\n\n if (entered !== '') {\n var computedUnmaskedValue = entered.replaceAll(currencyMaskOptions.thousandsSeparator, '').replace(currencyMaskOptions.radix, '.');\n onAccept(entered + implied, computedUnmaskedValue + implied, +(computedUnmaskedValue + implied));\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n var options = _objectSpread(_objectSpread({}, currencyMaskOptions), {}, {\n normalizeZeros: false,\n padFractionalZeros: false\n });\n /* istanbul ignore next */\n\n\n var inputMode = (currencyMaskOptions === null || currencyMaskOptions === void 0 ? void 0 : currencyMaskOptions.scale) === 0 ? 'numeric' : 'decimal';\n var inputCss = [_styles.textInput];\n return jsx(\"div\", {\n className: className,\n css: containerCss,\n id: id,\n \"data-ppui-info\": \"hero-currency_2.4.3\"\n }, jsx(CurrencyInput, _extends({\n name: name,\n label: label,\n inputMode: inputMode,\n value: value,\n maskOptions: options,\n inputClassName: inputClassName,\n css: inputCss,\n onFocus: function handleFocus(event) {\n setInputFocus(true);\n var target = event.target;\n var val = target.value;\n /* istanbul ignore next */\n\n if (val) {\n // move the cursor to end for cases when user clicks on the middle of hidden input\n // setTimeout is necessary unfortunately\n setTimeout(function () {\n return target.setSelectionRange(val.length, val.length);\n }, 100);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n },\n onBlur: handleBlur,\n onAccept: onAccept,\n onKeyDown: function handleKeys(event) {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(event.key || event.keyCode);\n\n if (KeyCode.IS_SIDE_NAVIGATION) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n },\n onInput: handleChange,\n prefix: currencySymbol,\n autoComplete: \"off\",\n ref: computedRef\n }, rest, {\n \"data-ppui\": \"true\"\n })), jsx(\"div\", {\n \"data-component\": \"hero_currency--view\",\n css: viewCss,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }, jsx(\"span\", {\n css: [_styles.symbol],\n \"data-ppui\": \"true\"\n }, currencySymbol), jsx(\"span\", {\n css: enteredCss,\n \"data-ppui\": \"true\"\n }, entered), jsx(\"span\", {\n css: impliedCss,\n \"data-ppui\": \"true\"\n }, implied), !inputFocused && showEditIcon && value && jsx(IconButton, {\n buttonType: \"tertiary\",\n svgIconComponent: EditIcon,\n css: _styles.editIcon,\n onClick: function focusViaButton() {\n /* istanbul ignore next */\n if (computedRef === null || computedRef === void 0 ? void 0 : computedRef.current) {\n computedRef.current.focus();\n }\n },\n tabindex: \"-1\",\n \"data-ppui\": \"true\"\n })));\n});\n\nexport { HeroCurrency, styles as heroCurrencyStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, useRef, useEffect, forwardRef, useState, useLayoutEffect } from 'react';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { ArrowRightIcon, ArrowLeftIcon } from '@paypalcorp/pp-react-icons';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { utilStyles } from '@paypalcorp/pp-react-utils';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { stripUnit, remToPx, math } from 'polished';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSizeMediaMd = tokens.sysSizeMediaMd,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSizeIndicatorLg = tokens.sysSizeIndicatorLg,\n sysColorUnselectedMain = tokens.sysColorUnselectedMain,\n sysColorSelectedMain = tokens.sysColorSelectedMain,\n sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive;\n var peekWidth = Number(stripUnit(remToPx(sysSpaceLg)));\n var mobileItemMargin = Number(stripUnit(remToPx(sysSpaceMd)));\n var itemMargin = Number(stripUnit(remToPx(sysSpaceLg)));\n\n var _utilStyles = utilStyles(tokens),\n elevationStyles = _utilStyles.elevationStyles,\n variables = _utilStyles.variables;\n\n var ppuiEaseInOut = variables.ppuiEaseInOut;\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: horizontal_scroll_base;\\n position: relative;\\n\\n &:hover {\\n & > div:nth-of-type(2n), // on hover show the navigation buttons\\n & > div:nth-of-type(3n) {\\n opacity: 1;\\n }\\n }\\n \"])));\n var itemList = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: item_list;\\n display: flex;\\n flex-direction: row;\\n list-style: none;\\n margin: 0;\\n overflow-y: -moz-hidden-unscrollable;\\n overflow-x: auto;\\n padding: \", \" 0;\\n\\n & > * {\\n flex: 0 0 auto;\\n }\\n \"])), sysSpaceLg);\n var item = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: item;\\n margin: 0 \", \"px;\\n\\n @media (max-width: \", \") {\\n margin: 0 \", \"px;\\n }\\n \"])), math(\"\".concat(itemMargin, \" / 2\")), sysSizeMediaMd, math(\"\".concat(mobileItemMargin, \" / 2\")));\n var buttonNavigation = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: button_nav;\\n position: absolute;\\n top: 0;\\n display: flex;\\n align-items: center;\\n height: calc(100% - \", \" - \", \");\\n opacity: 0;\\n transition: opacity 0.3s ease-in-out;\\n pointer-events: none;\\n\\n button {\\n pointer-events: all;\\n \", \"\\n\\n &:focus:after {\\n display: none;\\n }\\n\\n &:hover {\\n \", \"\\n }\\n }\\n \"])), sysSizeIndicatorLg, sysSpaceLg, elevationStyles.level1, elevationStyles.level3);\n var buttonPrevious = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n \", \";\\n label: buton_previous;\\n left: \", \";\\n\\n [dir='rtl'] & {\\n left: unset;\\n right: \", \";\\n }\\n \"])), buttonNavigation, sysSpaceLg, sysSpaceLg);\n var buttonNext = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n \", \";\\n label: button_next;\\n right: \", \";\\n\\n [dir='rtl'] & {\\n left: \", \";\\n right: unset;\\n }\\n \"])), buttonNavigation, sysSpaceLg, sysSpaceLg);\n var itemListDesktop = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: item_list_desktop;\\n overflow-x: visible;\\n \"])));\n var pageContainer = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: page_container;\\n overflow-x: hidden;\\n \"])));\n var page = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: page;\\n position: relative;\\n left: 0;\\n transition: left 1s \", \";\\n\\n [dir='rtl'] & {\\n right: 0;\\n left: unset;\\n transition: right 1s ease-in-out;\\n }\\n \"])), ppuiEaseInOut);\n var dots = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: dots;\\n padding-bottom: \", \";\\n text-align: center;\\n line-height: \", \";\\n \"])), sysSpaceLg, sysSizeIndicatorLg);\n var dot = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: dot;\\n margin: 0 \", \";\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n background-color: \", \";\\n display: inline-block;\\n \"])), sysSpaceSm, sysSizeIndicatorLg, sysSizeIndicatorLg, sysBorderRadiusInteractive, sysColorUnselectedMain);\n var dotSelected = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: dot_selected;\\n background-color: \", \";\\n \"])), sysColorSelectedMain);\n /**\n * Get styles for each item in the item list\n * @param props ItemListProps\n * @returns SerializedStyles\n */\n\n var getFlexBasisItems = function (props) {\n var isMobileBreakpoint = props.isMobileBreakpoint,\n numOfVisibleItems = props.numOfVisibleItems,\n hasFixedSizeItems = props.hasFixedSizeItems;\n\n if (hasFixedSizeItems) {\n return css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: fixed_size;\\n flex-basis: auto;\\n \"])));\n }\n\n if (isMobileBreakpoint) {\n return css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: mobile;\\n flex-basis: calc(\\n calc(100% - \", \"px) / \", \" -\\n \", \"px\\n );\\n \"])), peekWidth + mobileItemMargin / 2, numOfVisibleItems, mobileItemMargin);\n }\n\n return css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: desktop;\\n flex-basis: calc(100% / \", \" - \", \"px);\\n \"])), numOfVisibleItems, itemMargin);\n };\n\n var getContainerWidth = function (pageWidth) {\n var hasFixedSizeItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return hasFixedSizeItems && css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n width: \", \"px;\\n \"])), pageWidth);\n };\n\n return {\n base: base,\n itemList: itemList,\n item: item,\n buttonPrevious: buttonPrevious,\n buttonNext: buttonNext,\n itemListDesktop: itemListDesktop,\n pageContainer: pageContainer,\n page: page,\n dots: dots,\n dot: dot,\n dotSelected: dotSelected,\n getFlexBasisItems: getFlexBasisItems,\n getContainerWidth: getContainerWidth,\n peekWidth: peekWidth,\n mobileItemMargin: mobileItemMargin,\n itemMargin: itemMargin\n };\n}\n\nvar _excluded = [\"items\", \"numOfVisibleItems\", \"renderItem\", \"className\", \"itemClassName\", \"hasFixedSizeItems\", \"onItemListScroll\", \"onInit\"];\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar HorizontalScrollMobile = function (_ref) {\n var _ref$items = _ref.items,\n items = _ref$items === void 0 ? [] : _ref$items,\n numOfVisibleItems = _ref.numOfVisibleItems,\n renderItem = _ref.renderItem,\n className = _ref.className,\n itemClassName = _ref.itemClassName,\n hasFixedSizeItems = _ref.hasFixedSizeItems,\n onItemListScroll = _ref.onItemListScroll,\n onInit = _ref.onInit,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!renderItem) {\n renderItem = function () {\n return null;\n };\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var baseRef = useRef();\n var itemListRef = useRef();\n var visibleItemIdsRef = useRef([]);\n\n var handleResize = function () {\n if (hasFixedSizeItems) {\n var baseElm = baseRef.current;\n var item = baseElm.querySelector('li:first-child');\n var itemWidth = item.getBoundingClientRect().width;\n var baseElmWidth = baseElm.getBoundingClientRect().width;\n var peekOffset = _styles.peekWidth + _styles.mobileItemMargin / 2;\n var pageWidth = (itemWidth + _styles.mobileItemMargin) * numOfVisibleItems + peekOffset;\n /* istanbul ignore next */\n\n if (pageWidth < baseElmWidth) {\n baseElm.style.width = \"\".concat(pageWidth, \"px\");\n }\n }\n };\n /* istanbul ignore next */\n\n\n useEffect(function () {\n var resizeObserver;\n\n if (window.ResizeObserver) {\n var item = baseRef.current.querySelector('li:first-child');\n\n if (hasFixedSizeItems) {\n resizeObserver = new ResizeObserver(function () {\n handleResize();\n });\n resizeObserver.observe(item);\n }\n }\n\n return function () {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, []);\n /* istanbul ignore next */\n\n useEffect(function () {\n var itemObserver;\n handleResize();\n visibleItemIdsRef.current = [];\n\n if (window.IntersectionObserver) {\n var itemList = itemListRef.current;\n itemObserver = new IntersectionObserver(function (entries) {\n if (!visibleItemIdsRef.current.length) {\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var entry = _step.value;\n\n if (entry.isIntersecting) {\n var id = entry.target.getAttribute('data-item-id');\n visibleItemIdsRef.current.push(id);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (onInit) {\n onInit(visibleItemIdsRef.current);\n }\n } else {\n var _iterator2 = _createForOfIteratorHelper(entries),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _entry = _step2.value;\n\n if (_entry.isIntersecting) {\n var _id = _entry.target.getAttribute('data-item-id');\n\n if (onItemListScroll) {\n onItemListScroll(_id);\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n root: baseRef.current,\n threshold: 1\n });\n var itemElms = itemList.querySelectorAll('li');\n itemElms.forEach(function (item) {\n return itemObserver.observe(item);\n });\n }\n\n return function () {\n if (itemObserver) {\n itemObserver.disconnect();\n }\n };\n }, [numOfVisibleItems, hasFixedSizeItems]);\n return jsx(\"div\", _extends({\n css: _styles.base,\n className: className,\n ref: baseRef,\n \"data-ppui-info\": \"horizontal-scroll_2.3.9\"\n }, rest), jsx(ItemList, {\n items: items,\n hasFixedSizeItems: hasFixedSizeItems,\n isMobileBreakpoint: true,\n numOfVisibleItems: numOfVisibleItems,\n renderItem: renderItem,\n itemClassName: itemClassName,\n ref: itemListRef,\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$1 = [\"items\", \"hasFixedSizeItems\", \"isMobileBreakpoint\", \"itemClassName\", \"numOfVisibleItems\", \"renderItem\"],\n _excluded2 = [\"currentPage\", \"prevPageLabel\", \"nextPageLabel\", \"onPageChange\"],\n _excluded3 = [\"onItemListScroll\", \"onInit\"];\nvar ItemList = forwardRef(function (props, ref) {\n var items = props.items,\n hasFixedSizeItems = props.hasFixedSizeItems,\n isMobileBreakpoint = props.isMobileBreakpoint,\n itemClassName = props.itemClassName,\n numOfVisibleItems = props.numOfVisibleItems,\n renderItem = props.renderItem,\n rest = _objectWithoutProperties(props, _excluded$1);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n /* istanbul ignore next */\n\n\n var handleFocus = function (evt) {\n evt.target.scrollIntoView({\n block: 'nearest'\n });\n };\n\n var itemElements = items.map(function (item, index) {\n var _styles$getFlexBasisI;\n\n var flexBasisStyles = (_styles$getFlexBasisI = _styles.getFlexBasisItems) === null || _styles$getFlexBasisI === void 0 ? void 0 : _styles$getFlexBasisI.call(_styles, props);\n return jsx(\"li\", {\n \"aria-label\": \"\".concat(index + 1, \"-\").concat(items.length),\n key: item.id,\n \"data-item-id\": item.id,\n css: [_styles.item, flexBasisStyles],\n className: itemClassName,\n \"data-ppui\": \"true\"\n }, renderItem(item, {\n tabIndex: '0',\n role: 'button',\n onFocus: handleFocus\n }));\n });\n return jsx(\"ul\", _extends({\n css: _styles.itemList,\n ref: ref\n }, rest, {\n \"data-ppui\": \"true\"\n }), itemElements);\n});\n\nvar HorizontalScroll = function (props) {\n /* istanbul ignore next */\n if (!props.items) {\n console.log('Required prop `items` is missing');\n }\n /* istanbul ignore next */\n\n\n if (!props.renderItem) {\n console.log('Required prop `renderItem` is missing');\n }\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n showMobileHScroll = _useState2[0],\n setShowMobileHScroll = _useState2[1];\n\n var _useEmotionTheme = useTheme(),\n sysSizeMediaMd = _useEmotionTheme.sysSizeMediaMd;\n\n var mdBreakpoint = Number(stripUnit(remToPx(sysSizeMediaMd)));\n /* istanbul ignore next */\n\n useEffect(function () {\n var mql = window.matchMedia && window.matchMedia('(hover: hover) and (pointer: fine)');\n var hasHover = mql && mql.matches;\n setShowMobileHScroll(window.innerWidth < mdBreakpoint || window.matchMedia && !hasHover);\n }, []);\n\n if (showMobileHScroll) {\n var currentPage = props.currentPage,\n prevPageLabel = props.prevPageLabel,\n nextPageLabel = props.nextPageLabel,\n onPageChange = props.onPageChange,\n _rest = _objectWithoutProperties(props, _excluded2);\n\n return jsx(HorizontalScrollMobile, _extends({}, _rest, {\n \"data-ppui\": \"true\"\n }));\n }\n\n var onItemListScroll = props.onItemListScroll,\n onInit = props.onInit,\n rest = _objectWithoutProperties(props, _excluded3);\n\n return jsx(HorizontalScrollDesktop, _extends({}, rest, {\n autoAdvance: props.autoAdvance,\n advanceInterval: props.advanceInterval,\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$2 = [\"items\", \"numOfVisibleItems\", \"renderItem\", \"className\", \"itemClassName\", \"prevButtonClassName\", \"nextButtonClassName\", \"prevPageLabel\", \"nextPageLabel\", \"currentPage\", \"hasFixedSizeItems\", \"autoAdvance\", \"advanceInterval\", \"onPageChange\", \"style\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar Dots = function (_ref) {\n var numOfPages = _ref.numOfPages,\n currentPage = _ref.currentPage;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var dotElements = [];\n\n for (var i = 1; i <= numOfPages; i++) {\n var dotStyles = [_styles.dot, currentPage === i && _styles.dotSelected];\n dotElements.push(jsx(\"div\", {\n key: i,\n css: dotStyles,\n \"data-ppui\": \"true\"\n }));\n }\n\n return jsx(\"div\", {\n css: _styles.dots,\n \"aria-hidden\": true,\n \"data-ppui\": \"true\"\n }, dotElements);\n};\n/*\n * Turns out that using setInterval() in react with hooks is awkward.\n * This method I lifted from Dan Abramov makes it easy to use in a\n * react hook-ish way.\n * Pass in a callback and a delay in ms or null to turn it off\n * --love, BCC\n */\n\n/* istanbul ignore next */\n\n\nfunction useInterval(callback, delay) {\n var savedCallback = useRef(); // Remember the latest function.\n\n useLayoutEffect(function () {\n savedCallback.current = callback;\n }, [callback]); // Set up the interval.\n\n useLayoutEffect(function () {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n var id = setInterval(tick, delay);\n return function () {\n clearInterval(id);\n };\n }\n\n return undefined;\n }, [delay]);\n}\n/* (from the Jira spec)\n Auto-advance activates on a new page load.\n It will advance every 4 seconds by default, but the caller can specify a different timing.\n It will stop if the user scrolls the horizontal scroll out of view, interacts with cards, or clicks a button.\n It will also stop after 1 full cycle.\n */\n\n\nvar HorizontalScrollDesktop = function (_ref2) {\n var _styles$getContainerW, _styles$getContainerW2;\n\n var _ref2$items = _ref2.items,\n items = _ref2$items === void 0 ? [] : _ref2$items,\n _ref2$numOfVisibleIte = _ref2.numOfVisibleItems,\n numOfVisibleItems = _ref2$numOfVisibleIte === void 0 ? 1 : _ref2$numOfVisibleIte,\n renderItem = _ref2.renderItem,\n className = _ref2.className,\n itemClassName = _ref2.itemClassName,\n prevButtonClassName = _ref2.prevButtonClassName,\n nextButtonClassName = _ref2.nextButtonClassName,\n _ref2$prevPageLabel = _ref2.prevPageLabel,\n prevPageLabel = _ref2$prevPageLabel === void 0 ? 'Scroll left' : _ref2$prevPageLabel,\n _ref2$nextPageLabel = _ref2.nextPageLabel,\n nextPageLabel = _ref2$nextPageLabel === void 0 ? 'Scroll right' : _ref2$nextPageLabel,\n _ref2$currentPage = _ref2.currentPage,\n currentPage = _ref2$currentPage === void 0 ? 1 : _ref2$currentPage,\n hasFixedSizeItems = _ref2.hasFixedSizeItems,\n _ref2$autoAdvance = _ref2.autoAdvance,\n autoAdvance = _ref2$autoAdvance === void 0 ? false : _ref2$autoAdvance,\n _ref2$advanceInterval = _ref2.advanceInterval,\n advanceInterval = _ref2$advanceInterval === void 0 ? 4000 : _ref2$advanceInterval,\n onPageChange = _ref2.onPageChange,\n style = _ref2.style,\n rest = _objectWithoutProperties(_ref2, _excluded$2);\n\n /* istanbul ignore next */\n if (!renderItem) {\n renderItem = function () {\n return null;\n };\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var baseRef = useRef(null);\n var scrollPanel = useRef(null);\n var pageContainerRef = useRef();\n var itemListRef = useRef();\n\n var _useState = useState(Math.ceil(items.length / numOfVisibleItems)),\n _useState2 = _slicedToArray(_useState, 2),\n numOfPages = _useState2[0],\n setNumOfPages = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isAutoAdvance = _useState4[0],\n setIsAutoAdvance = _useState4[1];\n\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n isRTL = _useState6[0],\n setRTL = _useState6[1];\n\n var _useState7 = useState(0),\n _useState8 = _slicedToArray(_useState7, 2),\n pageWidth = _useState8[0],\n setPageWidth = _useState8[1];\n\n var viewObserver = useRef(null);\n var hasBeenVisibleRef = useRef(false);\n var autoAdvanceComplete = useRef(false);\n /* istanbul ignore next */\n\n var handleResize = function () {\n var pageContainer = pageContainerRef.current;\n\n if (pageContainer) {\n if (hasFixedSizeItems) {\n var item = pageContainer.querySelector('li:first-child');\n var itemWidth = item.getBoundingClientRect().width;\n var newNumOfPages = Math.ceil(items.length / numOfVisibleItems);\n setPageWidth((itemWidth + _styles.itemMargin) * numOfVisibleItems);\n setNumOfPages(newNumOfPages);\n\n if (currentPage > newNumOfPages) {\n onPageChange(newNumOfPages);\n }\n } else {\n var itemList = itemListRef.current; // scrollwidth always returns a whole value, getBoundingClientRect().width sometimes returns value comparing\n // pageContainerWidth with scrollWidth when the width causes an overflow resulting in adding and extra page.\n // e.g. scrollWidth = 1201, vs pageContainerWidth = 1200.092\n\n var itemListScrollWidth = itemList === null || itemList === void 0 ? void 0 : itemList.scrollWidth;\n var pageContainerWidth = Math.ceil(pageContainer.getBoundingClientRect().width);\n\n if (itemListScrollWidth && pageContainerWidth) {\n var _newNumOfPages = Math.ceil(itemListScrollWidth / pageContainerWidth);\n\n setNumOfPages(_newNumOfPages);\n\n if (currentPage > _newNumOfPages) {\n onPageChange(_newNumOfPages);\n }\n }\n\n setPageWidth(pageContainerWidth);\n }\n }\n };\n /* istanbul ignore next */\n\n\n /* istanbul ignore next */\n var stopAutoAdvance = function () {\n setIsAutoAdvance(false);\n autoAdvanceComplete.current = true; // eslint-disable-next-line no-unused-expressions\n\n viewObserver && viewObserver.current && viewObserver.current.disconnect();\n };\n /* istanbul ignore next */\n\n\n /* istanbul ignore next */\n var handleIntersection = function (entries) {\n var _entries = _slicedToArray(entries, 1),\n entry = _entries[0]; // No intersection between hscroll & viewport?\n // ...then we've scrolled off screen - stop auto advance\n\n\n if (!entry.isIntersecting) {\n if (hasBeenVisibleRef.current) {\n stopAutoAdvance();\n }\n } else if (autoAdvance && !hasBeenVisibleRef.current) {\n setIsAutoAdvance(!autoAdvanceComplete.current);\n hasBeenVisibleRef.current = true;\n }\n };\n /* istanbul ignore next */\n\n\n useEffect(function () {\n var computedStyle = window.getComputedStyle(baseRef.current);\n setRTL(computedStyle && computedStyle.direction === 'rtl');\n var resizeObserver;\n\n if (window.ResizeObserver && baseRef.current) {\n var item = baseRef.current.querySelector('li:first-child');\n resizeObserver = new ResizeObserver(function () {\n handleResize();\n });\n resizeObserver.observe(hasFixedSizeItems ? item : pageContainerRef.current);\n }\n\n return function () {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, []);\n useEffect(function () {\n /* istanbul ignore next */\n if (items.length && numOfVisibleItems) {\n window.requestAnimationFrame(handleResize);\n }\n }, [numOfVisibleItems, hasFixedSizeItems, items]);\n useEffect(function () {\n /* istanbul ignore next */\n setIsAutoAdvance(autoAdvance && hasBeenVisibleRef.current && !autoAdvanceComplete.current);\n }, [autoAdvance, hasBeenVisibleRef.current]);\n /* istanbul ignore next */\n\n useInterval(function handleAutoAdvance() {\n var nextPage = currentPage + 1;\n\n if (currentPage >= numOfPages) {\n // Have we reached the last page?\n stopAutoAdvance(); // We're done with auto advance\n\n var panel = scrollPanel.current;\n panel.style.transition = '0s linear';\n panel.style.left = '0px';\n setTimeout(function () {\n panel.style.transition = '';\n }, 100);\n nextPage = 1; // Go back to first page\n }\n\n onPageChange(nextPage);\n }, isAutoAdvance ? advanceInterval : null);\n useLayoutEffect(function () {\n /* istanbul ignore next */\n if (window && window.IntersectionObserver) {\n var hscroll = baseRef.current;\n\n if (autoAdvance && !autoAdvanceComplete.current) {\n viewObserver.current = new window.IntersectionObserver(handleIntersection);\n viewObserver.current.observe(hscroll);\n }\n }\n }, [autoAdvance, autoAdvanceComplete.current]);\n /* istanbul ignore next */\n\n useEffect(function () {\n if (!window.IntersectionObserver) {\n return undefined;\n }\n\n var hscroll = baseRef.current;\n\n var stopObserving = function () {\n if (viewObserver && viewObserver.current) {\n viewObserver.current.unobserve(hscroll);\n }\n };\n\n if (autoAdvance) {\n viewObserver.current.observe(hscroll);\n } else {\n stopObserving();\n }\n\n return stopObserving;\n }, [baseRef, autoAdvance]);\n /* istanbul ignore next */\n\n var renderPreviousButton = currentPage > 1 ? jsx(\"div\", {\n css: _styles.buttonPrevious,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, {\n buttonType: \"secondary\",\n inverse: true,\n svgIconComponent: isRTL ? ArrowRightIcon : ArrowLeftIcon,\n tabIndex: -1,\n \"aria-hidden\": true,\n onClick: function handlePrevClick() {\n onPageChange(currentPage - 1);\n setIsAutoAdvance(false);\n },\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n className: prevButtonClassName,\n \"data-ppui\": \"true\"\n }, prevPageLabel)) : null;\n /* istanbul ignore next */\n\n var renderNextButton = currentPage < numOfPages ? jsx(\"div\", {\n css: _styles.buttonNext,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, {\n buttonType: \"secondary\",\n inverse: true,\n svgIconComponent: isRTL ? ArrowLeftIcon : ArrowRightIcon,\n tabIndex: -1,\n \"aria-hidden\": true,\n onClick: function handleNextClick() {\n onPageChange(currentPage + 1);\n setIsAutoAdvance(false);\n },\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n className: nextButtonClassName,\n \"data-ppui\": \"true\"\n }, nextPageLabel)) : null;\n /* istanbul ignore next */\n\n var renderDots = numOfPages > 1 ? jsx(Dots, {\n numOfPages: numOfPages,\n currentPage: currentPage,\n \"data-ppui\": \"true\"\n }) : null;\n var pageOffset = -pageWidth * (currentPage - 1);\n /* istanbul ignore next */\n\n var pageStyle = isRTL ? {\n right: pageOffset\n } : {\n left: pageOffset\n };\n return jsx(\"div\", _extends({\n css: [_styles.base, (_styles$getContainerW = _styles.getContainerWidth) === null || _styles$getContainerW === void 0 ? void 0 : _styles$getContainerW.call(_styles, pageWidth, hasFixedSizeItems)],\n className: className,\n ref: baseRef,\n onFocus: autoAdvance ? function handleFocus() {\n setIsAutoAdvance(false);\n } : null,\n style: _objectSpread({}, style),\n \"data-ppui-info\": \"horizontal-scroll_2.3.9\"\n }, rest), jsx(\"div\", {\n css: [_styles.pageContainer, (_styles$getContainerW2 = _styles.getContainerWidth) === null || _styles$getContainerW2 === void 0 ? void 0 : _styles$getContainerW2.call(_styles, pageWidth, hasFixedSizeItems)],\n ref: pageContainerRef,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n css: _styles.page,\n style: pageStyle,\n ref: scrollPanel,\n \"data-ppui\": \"true\"\n }, jsx(ItemList, {\n items: items,\n hasFixedSizeItems: hasFixedSizeItems,\n isMobileBreakpoint: false,\n numOfVisibleItems: numOfVisibleItems,\n renderItem: renderItem,\n itemClassName: itemClassName,\n ref: itemListRef,\n css: _styles.itemListDesktop,\n \"data-ppui\": \"true\"\n }))), renderPreviousButton, renderNextButton, renderDots);\n};\n\nexport { HorizontalScroll, HorizontalScrollDesktop, HorizontalScrollMobile, ItemList, styles as horizontalScrollStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useRef, useMemo, useState, useEffect } from 'react';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { OverflowIcon } from '@paypalcorp/pp-react-icons';\nimport { utilStyles, ZINDEX_DROPDOWN, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceSm = tokens.sysSpaceSm,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorBackgroundSurfaceHover = tokens.sysColorBackgroundSurfaceHover,\n sysBorderRadiusSm = tokens.sysBorderRadiusSm,\n sysBorderThicknessFocusOutline = tokens.sysBorderThicknessFocusOutline,\n sysBorderRadiusLg = tokens.sysBorderRadiusLg,\n sysColorBackgroundSurfaceActive = tokens.sysColorBackgroundSurfaceActive;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles,\n elevationStyles = _utilStyles.elevationStyles;\n\n var offsetFocusAfter = focusStyles.offsetFocusAfter;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body;\n\n var overflowMenuBase = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: overflow_menu_base;\\n position: relative;\\n display: inline-block;\\n \"])));\n var keyboardActive = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: keyboard_active;\\n &:focus {\\n &:after {\\n \", \"\\n }\\n }\\n \"])), offsetFocusAfter({\n horizontalOffset: sysBorderThicknessFocusOutline,\n radius: sysBorderRadiusSm,\n verticalOffset: '0rem'\n }));\n var btnActive = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: btn_active;\\n &[aria-expanded='true'] {\\n background: \", \";\\n }\\n \"])), sysColorBackgroundSurfaceActive);\n var list = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: list;\\n right: \", \";\\n margin: \", \" 0 0;\\n position: absolute;\\n z-index: \", \";\\n list-style: none;\\n border-radius: \", \";\\n \", \"\\n background-color: \", \";\\n display: none;\\n padding: \", \" 0;\\n\\n &[aria-hidden='false'] {\\n display: block;\\n }\\n [dir='rtl'] & {\\n right: auto; // remove ltr style\\n left: \", \";\\n }\\n \"])), sysSpaceMd, sysSpaceLg, ZINDEX_DROPDOWN, sysBorderRadiusLg, elevationStyles.level1, sysColorBackgroundSurface, sysSpaceSm, sysSpaceMd);\n var listItem = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: list_item;\\n white-space: nowrap;\\n display: block;\\n text-align: justify;\\n text-overflow: ellipsis;\\n position: relative;\\n \", \"\\n text-decoration:none;\\n padding: \", \" \", \";\\n &:hover {\\n background-color: \", \";\\n cursor: pointer;\\n outline: 0;\\n }\\n\\n &:focus {\\n // override link styles\\n box-shadow: none;\\n outline: 0;\\n border-radius: 0;\\n }\\n \"])), textBody(), sysSpaceMd, sysSpaceLg, sysColorBackgroundSurfaceHover);\n return {\n overflowMenuBase: overflowMenuBase,\n keyboardActive: keyboardActive,\n btnActive: btnActive,\n list: list,\n listItem: listItem\n };\n}\n\nvar _excluded = [\"name\", \"value\", \"ariaLabel\", \"options\", \"isOpen\", \"onChange\", \"onOpen\", \"onClose\", \"className\", \"triggerClassName\", \"theme\"],\n _excluded2 = [\"label\", \"value\", \"href\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nvar OverflowMenu = function (_ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'Overflow' : _ref$name,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? 0 : _ref$value,\n _ref$ariaLabel = _ref.ariaLabel,\n ariaLabel = _ref$ariaLabel === void 0 ? name : _ref$ariaLabel,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? [] : _ref$options,\n isOpen = _ref.isOpen,\n onChange = _ref.onChange,\n onOpen = _ref.onOpen,\n onClose = _ref.onClose,\n className = _ref.className,\n triggerClassName = _ref.triggerClassName,\n theme = _ref.theme,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var wrapperRef = useRef();\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n focusedIndex = _useState2[0],\n setFocusedIndex = _useState2[1];\n\n var listItemCss = [_styles.listItem, focusedIndex && _styles.keyboardActive];\n var optionList = options.map(function (_ref2, index) {\n var label = _ref2.label,\n optValue = _ref2.value,\n _ref2$href = _ref2.href,\n href = _ref2$href === void 0 ? '#' : _ref2$href,\n otherProps = _objectWithoutProperties(_ref2, _excluded2);\n\n return jsx(\"li\", {\n role: \"presentation\",\n key: \"ofmenu_\".concat(index),\n \"data-ppui\": \"true\"\n }, jsx(\"a\", _extends({\n href: href,\n \"data-name\": name,\n \"data-value\": optValue,\n css: listItemCss,\n role: \"menuitem\",\n tabIndex: -1\n }, otherProps, {\n \"data-ppui\": \"true\"\n }), label));\n });\n\n var getWrapperCurrent = function (w) {\n return (\n /* istanbul ignore next */\n w && w.current ? w.current : null\n );\n };\n /**\n * Determines whether the click is outside the element and invoke `onClose` function.\n */\n\n\n function handleClickOutside(evt) {\n var current = getWrapperCurrent(wrapperRef);\n\n if (isOpen && current && !current.contains(evt.target)) {\n evt.stopPropagation();\n onClose(evt);\n }\n }\n\n var getActiveIndex = function (menuItems) {\n for (var i = 0; i < menuItems.length; ++i) {\n if (menuItems[i] === document.activeElement) {\n return i;\n }\n }\n\n return 0;\n };\n\n function setFocus(offset) {\n var current = getWrapperCurrent(wrapperRef);\n /* istanbul ignore next */\n\n if (current) {\n var menuItems = current.querySelectorAll('[role=\"menuitem\"]');\n var len = menuItems.length;\n var curIndex = getActiveIndex(menuItems);\n menuItems[(curIndex + offset + len) % len].focus();\n }\n }\n\n function handleKey(evt) {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(evt.key || evt.keyCode);\n\n if (KeyCode.IS_ARROW_UP) {\n setFocus(-1);\n setFocusedIndex(true);\n } else if (KeyCode.IS_ARROW_DOWN) {\n setFocus(1);\n setFocusedIndex(true);\n } else if (KeyCode.IS_ESC || KeyCode.IS_TAB) {\n onClose(evt);\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n useEffect(function () {\n if (isOpen) {\n // Bind the event listener\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleKey);\n setFocus(value);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleKey);\n }\n\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleKey);\n };\n }, [isOpen]);\n var triggerCss = [isOpen && _styles.btnActive];\n return jsx(\"div\", _extends({\n css: _styles.overflowMenuBase,\n className: className,\n ref: wrapperRef,\n \"data-ppui-info\": \"overflow-menu_3.4.8\"\n }, rest), jsx(IconButton, {\n className: triggerClassName,\n buttonType: \"tertiary\",\n css: triggerCss,\n name: name,\n svgIconComponent: OverflowIcon,\n \"aria-haspopup\": \"true\",\n \"aria-expanded\": isOpen,\n onClick: function handleClick(evt) {\n if (isOpen) {\n onClose(evt);\n } else {\n onOpen(evt);\n /* istanbul ignore next */\n\n setFocusedIndex(evt.detail === 0); // 1 = click, 0 = keyboard\n }\n },\n \"data-ppui\": \"true\"\n }, ariaLabel), jsx(\"ul\", {\n css: _styles.list,\n tabIndex: -1,\n role: \"menu\",\n onClick: function itemClickHandler(evt) {\n var target = evt.target; // @ts-ignore\n\n var targetName = target.dataset.name; // @ts-ignore\n\n var targetValue = target.dataset.value;\n\n var namedTarget = _objectSpread(_objectSpread({}, target), {}, {\n name: targetName,\n value: targetValue\n });\n\n if (onChange) {\n evt.preventDefault();\n evt.stopPropagation(); // @ts-ignore\n\n onChange(_objectSpread(_objectSpread({}, evt), {}, {\n target: namedTarget\n }));\n }\n\n onClose(evt);\n },\n \"aria-label\": name,\n \"aria-hidden\": !isOpen,\n \"data-ppui\": \"true\"\n }, optionList));\n};\n\nexport { OverflowMenu, styles as overflowMenuStyles };\n","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, useRef } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { utilStyles, getMs } from '@paypalcorp/pp-react-utils';\nimport { TransitionGroup, Transition } from 'react-transition-group';\n\nvar _templateObject, _templateObject2;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysMotionDurationArrive = tokens.sysMotionDurationArrive,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceLg = tokens.sysSpaceLg;\n\n var _utilStyles = utilStyles(tokens),\n variables = _utilStyles.variables;\n\n var ppuiEaseInOut = variables.ppuiEaseInOut;\n var container = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n position: relative;\\n height: 100%;\\n white-space: nowrap;\\n padding: 0 \", \";\\n overflow: hidden;\\n \"])), sysSpaceMd);\n var panel = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n display: inline-block;\\n width: 100%;\\n padding: \", \" \", \"\\n height: 100%;\\n white-space: normal;\\n \"])), sysSpaceLg, sysSpaceMd);\n return {\n container: container,\n panel: panel,\n defaultEasing: ppuiEaseInOut,\n defaultDurationMs: getMs(sysMotionDurationArrive)\n };\n}\n\nvar styles$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n 'default': styles\n});\n\nvar _excluded = [\"as\", \"className\", \"children\"];\nvar Panel = function (_ref) {\n var _ref$as = _ref.as,\n Tag = _ref$as === void 0 ? 'section' : _ref$as,\n className = _ref.className,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n var PanelStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n return jsx(Tag, _extends({\n css: PanelStyles.panel,\n className: className\n }, rest, {\n \"data-ppui\": \"true\"\n }), children);\n};\n\n/*\n NOTE, the default values of duration and easing are\n failsafes. The code below should never allow these\n values to be used --BCC\n */\n\n/* istanbul ignore next */\n\nfunction doAnimation(offset, elem) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'linear';\n var player = elem.animate([{\n translate: offset\n }, {\n translate: 0\n }], {\n duration: duration,\n easing: easing\n });\n player.addEventListener('finish', function () {\n elem.style.translate = '0';\n });\n}\n/* istanbul ignore next */\n\n\nvar getSign = function (n) {\n return n / Math.abs(n);\n};\n/* istanbul ignore next */\n\n\nvar getDirection = function (oldId, newId) {\n return oldId < 0 ? 0 : getSign(newId - oldId);\n};\n/* istanbul ignore next */\n\n\nvar getComputedDirection = function (elem) {\n var cStyle = getComputedStyle(elem);\n return cStyle.direction === 'rtl' ? -1 : 1;\n};\n\nvar PanelSlider = function (_ref) {\n var child = _ref.children,\n panelId = _ref.panelId,\n durationProp = _ref.duration,\n easingProp = _ref.easing,\n onComplete = _ref.onComplete;\n var tokens = useTheme();\n var PanelStyles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n var duration = durationProp !== null && durationProp !== void 0 ? durationProp : PanelStyles.defaultDurationMs;\n var easing = easingProp !== null && easingProp !== void 0 ? easingProp : PanelStyles.defaultEasing;\n var activeScreenId = useRef(-1);\n var direction = getDirection(activeScreenId.current, panelId);\n activeScreenId.current = panelId;\n /* istanbul ignore next */\n // @ts-ignore\n\n return jsx(\"div\", {\n css: PanelStyles.container,\n \"data-ppui-info\": \"panel-slider_1.1.1\"\n }, jsx(TransitionGroup, {\n \"data-ppui\": \"true\"\n }, jsx(Transition, {\n key: panelId,\n timeout: duration,\n onEnter: function onEnter(elem) {\n elem.style.translate = \"\".concat(direction * getComputedDirection(elem) * 100, \"%\");\n elem.style.left = '0';\n },\n onEntering: function onEntering(elem) {\n var offset = \"\".concat(direction * getComputedDirection(elem) * 100, \"%\");\n doAnimation(offset, elem, duration, easing);\n },\n onExit: function onExit(elem) {\n var _activeScreenId$curre;\n\n var dir = getDirection((_activeScreenId$curre = activeScreenId === null || activeScreenId === void 0 ? void 0 : activeScreenId.current) !== null && _activeScreenId$curre !== void 0 ? _activeScreenId$curre : -1, panelId) * getComputedDirection(elem);\n elem.style.left = \"\".concat(dir * 100, \"%\");\n elem.style.translate = \"\".concat(-dir * 100, \"%\");\n elem.style.position = 'absolute';\n },\n onExiting: function onExiting(elem) {\n var _activeScreenId$curre2;\n\n var dir = getDirection((_activeScreenId$curre2 = activeScreenId === null || activeScreenId === void 0 ? void 0 : activeScreenId.current) !== null && _activeScreenId$curre2 !== void 0 ? _activeScreenId$curre2 : -1, panelId) * getComputedDirection(elem);\n var offset = \"\".concat(-dir * 100, \"%\");\n doAnimation(offset, elem, duration, easing);\n },\n onEntered: function announceArrival(elem) {\n if (typeof onComplete === 'function') {\n onComplete(elem);\n }\n },\n \"data-ppui\": \"true\"\n }, child)));\n};\n\nexport { Panel, PanelSlider, styles$1 as panelStyles };\n","import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx, ClassNames } from '@emotion/react';\nimport { math } from 'polished';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo, forwardRef, useState, useContext, useCallback } from 'react';\nimport { IntlContext } from '@paypalcorp/pp-react-intl';\nimport { Flag } from '@paypalcorp/pp-react-flag';\nimport { MaskedTextInput } from '@paypalcorp/pp-react-masked-text-input';\nimport { DropdownMenu } from '@paypalcorp/pp-react-dropdown-menu';\nimport { uniqueId } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusSm = tokens.sysBorderRadiusSm,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysSizeTapTargetDefault = tokens.sysSizeTapTargetDefault,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSizeMediaXs = tokens.sysSizeMediaXs;\n var phoneInputMenuMaxWidth = '8.813rem';\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: phone_input_base;\\n flex-grow: 1;\\n \"])));\n var telephoneInputRtlStyles = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n input[type='tel'] {\\n label: tel_input_rtl;\\n direction: ltr;\\n text-align: right;\\n }\\n \"])));\n var combined = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: combined;\\n display: flex;\\n gap: \", \";\\n [dir='rtl'] & {\\n direction: ltr;\\n }\\n @media screen and (max-width: \", \") {\\n display: block;\\n }\\n \"])), sysSpaceSm, sysSizeMediaXs);\n var menuWidth = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: width;\\n min-width: \", \";\\n @media screen and (max-width: \", \") {\\n margin-bottom: \", \";\\n }\\n @media screen and (min-width: \", \") {\\n max-width: \", \";\\n }\\n \"])), phoneInputMenuMaxWidth, sysSizeMediaXs, sysSpaceSm, math(\"\".concat(sysSizeMediaXs, \" + \").concat('0.0625rem')), phoneInputMenuMaxWidth);\n var menu = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: menu;\\n flex-grow: 1;\\n [dir='rtl'] & {\\n direction: rtl;\\n }\\n \"])));\n var thumbnail = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: thumbnail;\\n margin-right: \", \";\\n [dir='rtl'] & {\\n margin-right: 0;\\n margin-left: \", \";\\n }\\n \"])), sysSpaceSm, sysSpaceSm);\n var menuList = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: menu_list;\\n white-space: nowrap;\\n \"])));\n var menuButton = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: menu_button;\\n flex-grow: 1;\\n &:not(:empty) {\\n padding-bottom: \", \";\\n padding-right: \", \";\\n }\\n & > span {\\n pointer-events: none;\\n }\\n [dir='rtl'] & {\\n border-radius: \", \";\\n margin-left: 0;\\n margin-right: 0;\\n &:not(:empty) {\\n padding-left: \", \";\\n padding-right: \", \";\\n }\\n }\\n \"])), sysSpaceSm, math(\"\".concat(sysSizeTapTargetDefault, \" + \").concat(sysSpaceXs)), sysBorderRadiusSm, math(\"\".concat(sysSizeTapTargetDefault, \" + \").concat(sysSpaceXs)), math(\"\".concat(sysSpaceMd, \" - \").concat(sysBorderThicknessNormal)));\n var menuButtonContent = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: menu_button_content;\\n display: flex;\\n \"])));\n var affordance = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: affordance;\\n margin-left: 0;\\n [dir='rtl'] & {\\n margin-right: 0;\\n }\\n \"])));\n var menuContainer = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: container;\\n [dir='rtl'] & {\\n left:0;\\n }\\n \"])));\n return {\n base: base,\n combined: combined,\n menu: menu,\n thumbnail: thumbnail,\n menuList: menuList,\n menuButton: menuButton,\n menuButtonContent: menuButtonContent,\n affordance: affordance,\n telephoneInputRtlStyles: telephoneInputRtlStyles,\n menuWidth: menuWidth,\n menuContainer: menuContainer\n };\n}\n\n// 55 fixed line Countries with variable length\n// 38 mobile line Countries with variable length\n// 21 of those instersect\nvar VAR_LENGTH_COUNTRIES_FIXED_LINE = ['AT', 'AX', 'BD', 'BG', 'CD', 'CN', 'CU', 'CW', 'DE', 'DZ', 'EG', 'FI', 'GB', 'HR', 'ID', 'IE', 'IL', 'IQ', 'IR', 'IT', 'KE', 'KH', 'KI', 'KP', 'KR', 'LB', 'LR', 'LU', 'MM', 'MN', 'MU', 'MW', 'MY', 'NA', 'NG', 'PG', 'PH', 'PK', 'PL', 'PY', 'RO', 'RS', 'RW', 'SE', 'SH', 'SK', 'SO', 'SR', 'SY', 'TK', 'TW', 'VA', 'WS', 'YE', 'ZW'];\nvar VAR_LENGTH_COUNTRIES_MOBILE = ['AD', 'AR', 'AT', 'AX', 'BA', 'BG', 'BR', 'CD', 'CW', 'DE', 'EE', 'FI', 'GA', 'HR', 'ID', 'IS', 'IT', 'KH', 'KR', 'LB', 'LI', 'LR', 'MC', 'MM', 'MX', 'MY', 'NZ', 'PA', 'PN', 'RS', 'SB', 'SO', 'TK', 'TV', 'VA', 'WS', 'XK', 'ZA'];\nvar DEFAULT_PATTERN = '00000000000000000000';\n// Get phone format from IntlProvider\nfunction getPhoneFormat(intlContext, phoneRegion, formatType, isMobile) {\n var providedCountryCode = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var providedPhoneFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '';\n var isPhoneMetaDataLoaded = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n\n if (providedCountryCode && providedPhoneFormat) {\n return {\n countryCode: providedCountryCode,\n pattern: providedPhoneFormat\n };\n } else if (phoneRegion && intlContext && intlContext.phoneFormatter) {\n var phoneType = isMobile ? 'MOBILE' : 'FIXED_LINE';\n var phoneExampleGenerator = intlContext.exampleGenerator({\n feature: 'phone',\n region: phoneRegion,\n type: phoneType\n });\n var exampleNumberObj = phoneExampleGenerator.generate();\n var countryCode = exampleNumberObj.countryCode,\n nationalNumber = exampleNumberObj.nationalNumber;\n var pattern = DEFAULT_PATTERN;\n\n if (isPhoneMetaDataLoaded) {\n var phoneNumberFormat = intlContext.phoneFormatter({\n phoneRegion: phoneRegion,\n style: formatType\n });\n var formattedNumber = phoneNumberFormat.format({\n countryCode: countryCode,\n nationalNumber: nationalNumber\n });\n var phoneNumber = formattedNumber;\n\n if (formattedNumber.includes('+')) {\n phoneNumber = formattedNumber.split(\"+\".concat(countryCode))[1].trim();\n }\n\n pattern = phoneNumber.replace(/\\d/g, '0');\n var varLengthCountries = isMobile ? VAR_LENGTH_COUNTRIES_MOBILE : VAR_LENGTH_COUNTRIES_FIXED_LINE;\n\n if (varLengthCountries.includes(phoneRegion)) {\n var patternLength = pattern.match(/0/g).length;\n var optionalDigits = '0'.repeat(20 - patternLength);\n pattern = pattern + \"[\".concat(optionalDigits, \"]\");\n }\n }\n\n return {\n countryCode: countryCode,\n pattern: pattern\n };\n }\n\n return {\n countryCode: providedCountryCode || '',\n pattern: providedPhoneFormat || DEFAULT_PATTERN\n };\n}\n\nvar _excluded = [\"rtl\", \"countryOptions\", \"options\", \"flagId\", \"codeId\", \"value\"];\n\nvar PhoneCodeDropdown = function (_ref) {\n var rtl = _ref.rtl,\n countryOptions = _ref.countryOptions,\n options = _ref.options,\n flagId = _ref.flagId,\n codeId = _ref.codeId,\n value = _ref.value,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme(); // Fetch tokens from Emotion context\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(DropdownMenu, _extends({\n renderButtonContent: function renderButtonContent() {\n var selectedOption; //istanbul ignore next\n\n if (value && !!options) {\n var selectedIndex = options.findIndex(function (opt) {\n return opt.value === value;\n });\n selectedOption = countryOptions[selectedIndex];\n }\n\n var countryPhoneCode = '';\n\n if (selectedOption && selectedOption.countryPhoneCode) {\n //istanbul ignore next\n if (rtl) {\n countryPhoneCode = \"\".concat(selectedOption.countryPhoneCode, \"+\");\n } else {\n countryPhoneCode = \"+\".concat(selectedOption.countryPhoneCode);\n }\n }\n\n if (selectedOption && selectedOption.phoneRegion) {\n return jsx(\"span\", {\n css: _styles.menuButtonContent,\n \"data-ppui\": \"true\"\n }, jsx(\"span\", {\n css: _styles.thumbnail,\n \"data-ppui\": \"true\"\n }, jsx(Flag, {\n id: flagId,\n countryCode: selectedOption.phoneRegion,\n size: 'md',\n \"aria-label\": selectedOption.countryName,\n role: \"img\",\n \"data-ppui\": \"true\"\n })), jsx(\"span\", {\n id: codeId,\n \"data-ppui\": \"true\"\n }, countryPhoneCode));\n }\n\n return jsx(React.Fragment, null, countryPhoneCode);\n },\n options: options,\n value: value\n }, rest, {\n \"data-ppui\": \"true\"\n }));\n};\n\nvar _excluded$1 = [\"name\", \"countryOptions\", \"inputLabel\", \"menuLabel\", \"menuId\", \"className\", \"inputClassName\", \"menuClassName\", \"mobile\", \"onPhoneCodeChange\", \"phoneCode\", \"showUnselect\", \"unselectLabel\"];\nvar PhoneInputWithMenu = forwardRef(function (_ref, ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'phoneInputMenu' : _ref$name,\n _ref$countryOptions = _ref.countryOptions,\n countryOptions = _ref$countryOptions === void 0 ? [] : _ref$countryOptions,\n _ref$inputLabel = _ref.inputLabel,\n inputLabel = _ref$inputLabel === void 0 ? 'Phone Number' : _ref$inputLabel,\n _ref$menuLabel = _ref.menuLabel,\n menuLabel = _ref$menuLabel === void 0 ? 'Code' : _ref$menuLabel,\n menuId = _ref.menuId,\n className = _ref.className,\n inputClassName = _ref.inputClassName,\n menuClassName = _ref.menuClassName,\n _ref$mobile = _ref.mobile,\n mobile = _ref$mobile === void 0 ? false : _ref$mobile,\n onPhoneCodeChange = _ref.onPhoneCodeChange,\n phoneCode = _ref.phoneCode,\n _ref$showUnselect = _ref.showUnselect,\n showUnselect = _ref$showUnselect === void 0 ? false : _ref$showUnselect,\n _ref$unselectLabel = _ref.unselectLabel,\n unselectLabel = _ref$unselectLabel === void 0 ? 'None' : _ref$unselectLabel,\n rest = _objectWithoutProperties(_ref, _excluded$1);\n\n /* istanbul ignore next */\n if (!countryOptions.length) {\n console.warn('Required prop `countryOptions` is missing.');\n }\n\n var tokens = useTheme(); // Fetch tokens from Emotion context\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isRtl = _useState2[0],\n setRtl = _useState2[1];\n\n var intlContext = useContext(IntlContext);\n var containerRef = useCallback(function (node) {\n if (node !== null && window && window.getComputedStyle(node)) {\n var computedStyle = window.getComputedStyle(node);\n setRtl(computedStyle && computedStyle.direction === 'rtl');\n }\n }, [intlContext === null || intlContext === void 0 ? void 0 : intlContext.locale]);\n var optionText;\n var optionCode;\n var optionPattern;\n var optionCountryRegion;\n var optionCountryName;\n var menuOptions;\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n hasFocus = _useState4[0],\n setFocus = _useState4[1];\n\n var constructOptionProps = function (countryName, countryPhoneCode, countryRegion, rtl) {\n optionText = countryName; // for none option don't need to show +\n\n /* istanbul ignore next */\n\n if (countryPhoneCode) {\n optionText += rtl ? \" \".concat(countryPhoneCode, \"+\") : \" +\".concat(countryPhoneCode);\n }\n\n var optionValue = countryRegion && countryPhoneCode ? \"\".concat(countryRegion, \"_\").concat(countryPhoneCode) : '';\n return {\n primaryText: optionText,\n value: optionValue,\n decoration: countryRegion && jsx(Flag, {\n countryCode: countryRegion,\n size: \"md\",\n \"data-ppui\": \"true\"\n })\n };\n }; // Removing 'None' option if exists\n\n\n if (countryOptions[0] && countryOptions[0].phoneRegion === '') {\n countryOptions.splice(0, 1);\n }\n\n if (showUnselect) {\n // Adding 'None' option to list\n countryOptions.unshift({\n phoneRegion: '',\n countryName: unselectLabel,\n phoneFormat: DEFAULT_PATTERN\n });\n }\n\n menuOptions = useMemo(function () {\n return countryOptions.map(function (country, i) {\n var phoneParts = getPhoneFormat(intlContext, country.phoneRegion, 'international', mobile, country.countryPhoneCode, country.phoneFormat, country.isPhoneMetaDataLoaded);\n /* istanbul ignore next */\n\n var displayNamesObj = intlContext && intlContext.getDisplayNamesObject && intlContext.getDisplayNamesObject({\n type: 'region'\n });\n var countryCode = phoneParts.countryCode,\n pattern = phoneParts.pattern;\n optionCountryRegion = country.phoneRegion; //this one must be provided\n\n optionCode = country.countryPhoneCode || countryCode; //if provided use that\n\n optionPattern = country.phoneFormat || pattern; //if provided use that\n\n /* istanbul ignore next */\n\n optionCountryName = country.countryName || displayNamesObj && displayNamesObj.select(country.phoneRegion); //if provided use that\n\n countryOptions[i].countryPhoneCode = optionCode;\n countryOptions[i].phoneFormat = optionPattern;\n countryOptions[i].countryName = optionCountryName;\n return constructOptionProps(optionCountryName, optionCode, optionCountryRegion, isRtl);\n });\n }, [countryOptions, mobile]);\n var currentMask = DEFAULT_PATTERN;\n var selectedCountry = countryOptions.filter(function (country) {\n var selectedPhoneCode = country.phoneRegion && country.countryPhoneCode ? \"\".concat(country.phoneRegion, \"_\").concat(country.countryPhoneCode) : '';\n return phoneCode === selectedPhoneCode;\n });\n\n if (selectedCountry.length) {\n currentMask = selectedCountry[0].phoneFormat;\n }\n\n var handleChange = function (evt) {\n //istanbul ignore next\n if (onPhoneCodeChange) {\n var _evt$target, _evt$target$value;\n\n onPhoneCodeChange(evt); // determine if selected option is none/unselect\n // if it is don't move the focus to the next element\n\n if (!(((_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : (_evt$target$value = _evt$target.value) === null || _evt$target$value === void 0 ? void 0 : _evt$target$value.length) === 0 && showUnselect)) {\n setFocus(true);\n }\n }\n };\n\n var flagIdPrefix = 'phone-input-country-flag_';\n var codeIdPrefix = 'phone-input-country-code_';\n var generatedFlagId = menuId ? \"\".concat(flagIdPrefix).concat(menuId) : uniqueId(flagIdPrefix);\n var generatedCodeId = menuId ? \"\".concat(codeIdPrefix).concat(menuId) : uniqueId(codeIdPrefix);\n var phoneDropdownMenuCSS = [_styles.menu, _styles.menuWidth];\n var dropdownEl = jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref2) {\n var css = _ref2.css;\n return jsx(PhoneCodeDropdown, {\n id: menuId,\n label: menuLabel,\n options: menuOptions,\n countryOptions: countryOptions,\n value: phoneCode,\n onChange: handleChange,\n css: phoneDropdownMenuCSS,\n className: menuClassName,\n menuContainerClassName: css(_styles.menuContainer),\n menuListClassName: css(_styles.menuList),\n menuButtonClassName: css(_styles.menuButton),\n sheetClassName: css(_styles.menuList),\n rtl: isRtl,\n showUnselect: true,\n flagId: generatedFlagId,\n codeId: generatedCodeId,\n \"data-ppui\": \"true\"\n });\n });\n var inputEl = jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref3) {\n var cx = _ref3.cx;\n return jsx(MaskedTextInput, _extends({\n type: \"tel\",\n name: name,\n label: inputLabel,\n maskOptions: {\n mask: currentMask\n },\n css: _styles.menu,\n inputClassName: cx(inputClassName),\n setFocus: hasFocus,\n ref: ref,\n onBlur: function onBlur() {\n return setFocus(false);\n },\n \"aria-describedby\": \"\".concat(generatedFlagId, \" \").concat(generatedCodeId)\n }, rest, {\n \"data-ppui\": \"true\"\n }));\n });\n var combinedInputCSS = [_styles.combined, //istanbul ignore next\n isRtl && _styles.telephoneInputRtlStyles];\n return jsx(\"div\", {\n ref: containerRef,\n css: _styles.base,\n className: className,\n \"data-ppui-info\": \"phone-input_2.5.7\"\n }, jsx(\"div\", {\n css: combinedInputCSS,\n \"data-ppui\": \"true\"\n }, dropdownEl, inputEl));\n});\n\nvar _excluded$2 = [\"name\", \"label\", \"countryOptions\", \"className\", \"inputClassName\", \"formatType\", \"mobile\"];\nvar PhoneInput = forwardRef(function (_ref, ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? '' : _ref$name,\n _ref$label = _ref.label,\n label = _ref$label === void 0 ? 'Phone Number' : _ref$label,\n countryOptions = _ref.countryOptions,\n className = _ref.className,\n inputClassName = _ref.inputClassName,\n _ref$formatType = _ref.formatType,\n formatType = _ref$formatType === void 0 ? (countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.countryPhoneCode) ? 'international' : 'national' : _ref$formatType,\n _ref$mobile = _ref.mobile,\n mobile = _ref$mobile === void 0 ? false : _ref$mobile,\n rest = _objectWithoutProperties(_ref, _excluded$2);\n\n /* istanbul ignore next */\n if (!countryOptions) {\n console.warn('Required prop `countryOptions` is missing.');\n }\n\n var tokens = useTheme(); // Fetch tokens from Emotion context\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isRtl = _useState2[0],\n setRtl = _useState2[1];\n\n var intlContext = useContext(IntlContext);\n var containerRef = useCallback(function (node) {\n if (node !== null && window && window.getComputedStyle(node)) {\n var computedStyle = window.getComputedStyle(node);\n setRtl(computedStyle && computedStyle.direction === 'rtl');\n }\n }, [intlContext === null || intlContext === void 0 ? void 0 : intlContext.locale]);\n var phoneParts = useMemo(function () {\n return getPhoneFormat(intlContext, countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.phoneRegion, formatType, mobile, countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.countryPhoneCode, countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.phoneFormat, countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.isPhoneMetaDataLoaded);\n }, [countryOptions === null || countryOptions === void 0 ? void 0 : countryOptions.phoneRegion, formatType, mobile]);\n var countryCode = phoneParts.countryCode,\n pattern = phoneParts.pattern;\n var codePrefix = formatType === 'international' ? countryCode : '';\n var codeSuffix = codePrefix;\n\n if (formatType === 'international') {\n //istanbul ignore next\n codePrefix = isRtl ? '' : \"+\".concat(codePrefix); //istanbul ignore next\n\n codeSuffix = isRtl ? \"\".concat(codeSuffix, \"+\") : '';\n }\n\n return jsx(\"div\", {\n ref: containerRef,\n css: [_styles.base, isRtl && _styles.telephoneInputRtlStyles],\n className: className,\n \"data-ppui-info\": \"phone-input_2.5.7\"\n }, jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref2) {\n var cx = _ref2.cx;\n return jsx(MaskedTextInput, _extends({\n type: \"tel\",\n name: \"phoneInput-\".concat(name),\n label: label,\n prefix: codePrefix,\n suffix: codeSuffix,\n ref: ref,\n maskOptions: {\n mask: pattern\n },\n inputClassName: cx(inputClassName)\n }, rest, {\n \"data-ppui\": \"true\"\n }));\n }));\n});\n\nexport { PhoneInput, PhoneInputWithMenu, styles as phoneInputStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef, useRef, useEffect } from 'react';\nimport { TextInput } from '@paypalcorp/pp-react-text-input';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { ViewIcon, HideIcon } from '@paypalcorp/pp-react-icons';\n\nvar _excluded = [\"as\", \"isHidden\", \"hideToggleLabel\", \"onToggleHide\", \"value\"];\n\nvar PasswordInput = forwardRef(function (props, ref) {\n var as = props.as,\n _props$isHidden = props.isHidden,\n isHidden = _props$isHidden === void 0 ? true : _props$isHidden,\n hideToggleLabel = props.hideToggleLabel,\n onToggleHide = props.onToggleHide,\n value = props.value,\n rest = _objectWithoutProperties(props, _excluded);\n\n var internalRef = useRef();\n var inputRef = ref || internalRef;\n useEffect(function () {\n var inputElm = inputRef.current;\n\n if (inputElm && (value === null || value === void 0 ? void 0 : value.length)) {\n inputElm.setSelectionRange(value.length, value.length); //restore cursor to the last char\n }\n }, [isHidden]);\n var typeProp = isHidden ? {\n type: 'password'\n } : {};\n var iconButtonLabel = hideToggleLabel || (isHidden ? 'show' : 'hide');\n return /*#__PURE__*/React.createElement(as || TextInput, _extends({\n ref: inputRef,\n rightIcon: /*#__PURE__*/React.createElement(IconButton, {\n buttonType: \"tertiary\",\n svgIconComponent: isHidden ? ViewIcon : HideIcon,\n onClick: function handleHideToggleClick() {\n /* istanbul ignore next */\n if (onToggleHide) {\n onToggleHide(!isHidden);\n }\n },\n onMouseDown: function onMouseDown(evt) {\n return evt.preventDefault();\n },\n \"data-ppui\": \"true\"\n }, iconButtonLabel),\n value: value,\n \"data-ppui-info\": \"password-input_2.1.11\"\n }, typeProp, rest));\n});\n\nexport { PasswordInput };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { utilStyles } from '@paypalcorp/pp-react-utils';\n\nvar _templateObject, _templateObject2;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusLg = tokens.sysBorderRadiusLg,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface;\n\n var _utilStyles = utilStyles(tokens),\n elevationStyles = _utilStyles.elevationStyles;\n\n var level1 = elevationStyles.level1;\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: physical_card_base;\\n border-radius: \", \";\\n border: \", \" solid transparent;\\n background-color: \", \";\\n background-origin: border-box;\\n position: relative;\\n overflow: hidden;\\n padding-top: calc(\\n 100% * \", \" - (2 * \", \")\\n );\\n \", \";\\n \"])), sysBorderRadiusLg, sysBorderThicknessNormal, sysColorBackgroundSurface, 216 / 343, sysBorderThicknessNormal, level1);\n var content = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: content;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n \"])));\n return {\n base: base,\n content: content\n };\n}\n\nvar _excluded = [\"className\", \"children\"];\n\nvar PhysicalCard = function (_ref) {\n var className = _ref.className,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(\"div\", _extends({\n css: _styles.base,\n className: className,\n \"data-ppui-info\": \"physical-card_2.1.14\"\n }, rest), jsx(\"div\", {\n css: _styles.content,\n \"data-ppui\": \"true\"\n }, children));\n};\n\nexport { PhysicalCard, styles as physicalCardStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport 'react';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { CloseIcon } from '@paypalcorp/pp-react-icons';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;\nfunction pillStyles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n // eslint-disable-next-line no-console\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorSelectedRangeMain = tokens.sysColorSelectedRangeMain,\n sysColorSelectedRangeContrast = tokens.sysColorSelectedRangeContrast,\n sysSpaceTiny = tokens.sysSpaceTiny,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceLg = tokens.sysSpaceLg;\n var pill = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: pill;\\n background-color: \", \";\\n padding-block: 0 0;\\n padding-inline: \", \" 0;\\n white-space: nowrap;\\n border-radius: 100px;\\n position: relative;\\n display: inline-grid;\\n grid-gap: \", \";\\n grid-template-columns: 1fr auto;\\n place-items: center;\\n \"])), sysColorSelectedRangeMain, sysSpaceLg, sysSpaceXs);\n\n var _textStyles = textStyles(tokens),\n captionStrong = _textStyles.captionStrong;\n\n var pillLabel = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: pill_label;\\n \", \"\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n \"])), captionStrong({\n color: sysColorSelectedRangeContrast\n }));\n var buttonSpace = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: btn_space;\\n margin: \", \";\\n \"])), sysSpaceTiny);\n var pillTray = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: pill_tray;\\n background-color: \", \";\\n \"])), sysColorBackgroundSurface);\n var pillTrayScroller = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: pill_scroll;\\n overflow-x: scroll;\\n margin: 0;\\n padding: \", \" \", \" \", \";\\n display: flex;\\n column-gap: \", \";\\n \"])), sysSpaceSm, sysSpaceSm, sysSpaceLg, sysSpaceSm);\n return {\n pill: pill,\n pillLabel: pillLabel,\n buttonSpace: buttonSpace,\n pillTray: pillTray,\n pillTrayScroller: pillTrayScroller\n };\n}\n\nvar _excluded = [\"as\", \"value\", \"className\", \"dismissButtonLabel\", \"onDismiss\", \"children\"];\n\nvar Pill = function (_ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? 'value' : _ref$value,\n className = _ref.className,\n _ref$dismissButtonLab = _ref.dismissButtonLabel,\n dismissButtonLabel = _ref$dismissButtonLab === void 0 ? 'dismiss' : _ref$dismissButtonLab,\n onDismiss = _ref.onDismiss,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n /* istanbul ignore next */\n if (!onDismiss) {\n onDismiss = function () {\n return console.warn('Required prop `onDismiss` is missing');\n };\n }\n\n var tokens = useTheme();\n var styles = pillStyles(tokens);\n\n var handleClick = function (evt) {\n var target = evt.target;\n onDismiss(target.dataset.value);\n };\n\n return jsx(Component, _extends({\n css: styles.pill,\n role: \"listitem\",\n className: className\n }, rest, {\n \"data-ppui\": \"true\"\n }), jsx(\"label\", {\n css: styles.pillLabel,\n \"data-ppui\": \"true\"\n }, children), jsx(IconButton, {\n buttonType: \"tertiary\",\n size: \"sm\",\n css: styles.buttonSpace,\n \"data-value\": value,\n svgIconComponent: CloseIcon,\n onClick: handleClick,\n \"data-ppui\": \"true\"\n }, dismissButtonLabel));\n};\n\nvar PillTray = function (_ref) {\n var children = _ref.children;\n var tokens = useTheme();\n\n var _pillStyles = pillStyles(tokens),\n pillTray = _pillStyles.pillTray,\n pillTrayScroller = _pillStyles.pillTrayScroller;\n\n return jsx(\"div\", {\n css: pillTray,\n \"data-ppui-info\": \"pill_2.2.9\"\n }, jsx(\"div\", {\n css: pillTrayScroller,\n role: \"list\",\n \"data-ppui\": \"true\"\n }, children));\n};\n\nexport { Pill, PillTray, pillStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, forwardRef } from 'react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { uniqueId, utilStyles } from '@paypalcorp/pp-react-utils';\n\nvar Color;\n/** @deprecated */\n\n(function (Color) {\n Color[\"Accent1\"] = \"sysColorAccent1Main\";\n Color[\"Accent2\"] = \"sysColorAccent2Main\";\n Color[\"Accent3\"] = \"sysColorAccent3Main\";\n Color[\"Accent4\"] = \"sysColorAccent4Main\";\n})(Color || (Color = {}));\n\nvar colorMap = {\n blue: Color.Accent1,\n magenta: Color.Accent2,\n green: Color.Accent3,\n purple: Color.Accent4\n};\n\nvar Size;\n\n(function (Size) {\n Size[\"SMALL\"] = \"sm\";\n Size[\"LARGE\"] = \"lg\";\n})(Size || (Size = {}));\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive,\n sysBorderRadiusSm = tokens.sysBorderRadiusSm,\n sysBorderThicknessNormal = tokens.sysBorderThicknessNormal,\n sysColorAccent1Contrast = tokens.sysColorAccent1Contrast,\n sysColorAccent1Main = tokens.sysColorAccent1Main,\n sysColorAccent2Contrast = tokens.sysColorAccent2Contrast,\n sysColorAccent2Main = tokens.sysColorAccent2Main,\n sysColorAccent3Contrast = tokens.sysColorAccent3Contrast,\n sysColorAccent3Main = tokens.sysColorAccent3Main,\n sysColorAccent4Contrast = tokens.sysColorAccent4Contrast,\n sysColorAccent4Main = tokens.sysColorAccent4Main,\n sysColorBackgroundAlt = tokens.sysColorBackgroundAlt,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorSystemContrast = tokens.sysColorSystemContrast,\n sysSizeCircleMd = tokens.sysSizeCircleMd,\n sysSizeCircleXl = tokens.sysSizeCircleXl,\n sysSizeIndicatorLg = tokens.sysSizeIndicatorLg,\n sysSizeIndicatorMd = tokens.sysSizeIndicatorMd,\n sysSizeIndicatorSm = tokens.sysSizeIndicatorSm,\n sysSizeIndicatorXs = tokens.sysSizeIndicatorXs,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSizeIconSm = tokens.sysSizeIconSm,\n sysSizeIconLg = tokens.sysSizeIconLg,\n sysSpaceXl = tokens.sysSpaceXl,\n sysSpaceXs = tokens.sysSpaceXs,\n sysMotionDurationArrive = tokens.sysMotionDurationArrive;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n textCaption = _textStyles.caption,\n textCaptionStrong = _textStyles.captionStrong; // Circle progress meter variables\n\n\n var circleRadiusSvg = 50;\n var circleProgressMeterSize = parseInt(sysSizeCircleXl, 10);\n var circleProgressMeterBorderSize = parseFloat(sysSizeIndicatorSm);\n var circleProgressMeterSmSize = parseInt(sysSizeCircleMd, 10);\n var circleProgressMeterSmBorderSize = sysSizeIndicatorXs;\n var circleProgressMeterPadding = sysSpaceXs;\n var progressIndicatorCircleStrokeWidth = circleProgressMeterBorderSize / circleProgressMeterSize * 100;\n var progressIndicatorCircleSmStrokeWidth = parseFloat(circleProgressMeterSmBorderSize) / circleProgressMeterSmSize * 100;\n var colorMapContrast = new Map();\n colorMapContrast.set(Color.Accent1, sysColorAccent1Contrast);\n colorMapContrast.set(Color.Accent2, sysColorAccent2Contrast);\n colorMapContrast.set(Color.Accent3, sysColorAccent3Contrast);\n colorMapContrast.set(Color.Accent4, sysColorAccent4Contrast);\n var colorMapAccent = new Map();\n colorMapAccent.set(Color.Accent1, sysColorAccent1Main);\n colorMapAccent.set(Color.Accent2, sysColorAccent2Main);\n colorMapAccent.set(Color.Accent3, sysColorAccent3Main);\n colorMapAccent.set(Color.Accent4, sysColorAccent4Main);\n /**\n * Get the styles for the height of the linear progress meter\n * @param height string [This should include value with units, example: `10px`, `2rem`]\n * @returns SerializedStyles\n */\n\n var getProgressMeterHeightStyles = function (height) {\n return css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n height: \", \";\\n\\n &::-moz-progress-bar {\\n height: \", \";\\n }\\n\\n &::-webkit-progress-value {\\n height: \", \";\\n }\\n\\n &::-webkit-progress-bar {\\n height: \", \";\\n }\\n \"])), height, height, height, height);\n };\n /**\n * Get the styles for color and background\n * @param color Color\n * @returns SerializedStyles\n */\n\n\n var getColorStyles = function (color) {\n var label = \"color_\".concat(color);\n return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: \", \";\\n color: \", \";\\n background-color: \", \";\\n \"])), label, colorMapContrast.get(color), colorMapAccent.get(color));\n };\n /**\n * Check whether the size is small or not\n * @param size Size\n * @returns boolean\n */\n\n\n var isSizeSmall = function () {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return size && size === Size.SMALL;\n };\n /**\n * Get the styles for the color of the linear progress meter\n * @param color Color\n * @param backgroundColor string\n * @returns SerializedStyles\n */\n\n\n var getProgressMeterColorStyles = function (color) {\n var backgroundColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : sysColorBackgroundAlt;\n var meterColor = colorMapAccent.get(color);\n var label = \"container_color_\".concat(color);\n return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: \", \";\\n progress {\\n color: \", \";\\n\\n &::-moz-progress-bar {\\n background-color: \", \";\\n }\\n\\n &::-webkit-progress-value {\\n background-color: \", \";\\n }\\n\\n &::-webkit-progress-bar {\\n background-color: \", \";\\n }\\n }\\n \"])), label, colorMapContrast.get(color), meterColor, meterColor, backgroundColor);\n };\n /**\n * Get the styles for the stroke color\n * @param color Color\n * @returns SerializedStyles\n */\n\n\n var getStrokeColorStyles = function (color) {\n var label = \"stroke_\".concat(color);\n return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: \", \";\\n stroke: \", \";\\n \"])), label, colorMapAccent.get(color));\n };\n /**\n * Get the radius based on circle size\n * @param size Size [defaults to null]\n * @returns number\n */\n\n\n /**\n * Get the dash offset styles for the Circle Meter\n * @param maxDashOffset number\n * @param dashOffset number\n * @returns SerializedStyles\n */\n var getDashOffsetStyles = function (maxDashOffset, dashOffset) {\n return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n stroke-dasharray: \", \";\\n stroke-dashoffset: \", \";\\n \"])), maxDashOffset.toFixed(5), dashOffset.toFixed(5));\n };\n /**\n * Get the width and height of the bounding-box / wrapper of the Icon container\n * @param size Size;\n * @returns SerializedStyles\n */\n\n\n var getIconWrapStyles = function () {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var sizeValue = isSizeSmall(size) ? sysSizeIconSm : sysSizeIconLg;\n return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: icon_wrap;\\n width: \", \";\\n height: \", \";\\n \"])), sizeValue, sizeValue);\n };\n\n var base = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: progress-meter_base;\\n\\n & {\\n padding: \", \" \", \" \", \" \", \";\\n transition: value \", \";\\n }\\n\\n progress {\\n vertical-align: bottom;\\n width: 100%;\\n background-clip: content-box;\\n -webkit-background-clip: content-box;\\n border: \", \" solid transparent;\\n border-radius: \", \";\\n \", \"\\n margin-bottom: \", \";\\n\\n &::-moz-progress-bar {\\n margin-top: -\", \";\\n border-radius: \", \";\\n padding: 0;\\n }\\n\\n &::-webkit-progress-value {\\n margin-top: -\", \";\\n border-radius: \", \";\\n }\\n\\n &::-webkit-progress-bar {\\n border-radius: \", \";\\n }\\n }\\n\\n \", \";\\n \"])), sysSpaceXs, sysSpaceXl, sysSpaceXl, sysSpaceXl, sysMotionDurationArrive, sysBorderThicknessNormal, sysBorderRadiusSm, getProgressMeterHeightStyles(sysSizeIndicatorLg), sysSpaceSm, sysBorderThicknessNormal, sysBorderRadiusSm, sysBorderThicknessNormal, sysBorderRadiusSm, sysBorderRadiusSm, getProgressMeterColorStyles(Color.Accent3));\n var inverseLabel = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: inverse_label;\\n color: \", \";\\n \"])), sysColorBackgroundSurface);\n var inverseLabelSteps = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: inverse_steps;\\n color: \", \";\\n \"])), sysColorSystemContrast);\n var inverseLabelTitle = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: inverse_title;\\n color: \", \";\\n \"])), sysColorBackgroundSurface);\n var label = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: label;\\n \", \";\\n \"])), textBody({}));\n var steps = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: steps;\\n \", \"\\n letter-spacing: normal;\\n margin-right: \", \";\\n\\n [dir='rtl'] & {\\n margin-left: \", \";\\n }\\n \"])), textCaptionStrong({}), sysSpaceMd, sysSpaceXs);\n var title = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: title;\\n \", \"\\n letter-spacing: normal;\\n \"])), textCaption({}));\n var labelSteps = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: label_steps;\\n \", \"\\n margin-right: \", \";\\n \"])), textBody({}), sysSpaceXs);\n var labelTitle = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: label_title;\\n \", \"\\n \"])), textBody({\n color: sysColorBackgroundMediumContrast\n }));\n var sizeSm = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: size_sm;\\n progress {\\n \", \"\\n }\\n \"])), getProgressMeterHeightStyles(sysSizeIndicatorMd));\n var sizeSmLabel = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n label: size_sm_label;\\n \", \"\\n \"])), textCaption({}));\n var sizeSmLabelSteps = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: size_sm_steps;\\n \", \"\\n \"])), textCaption({}));\n var sizeSmLabelTitle = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n label: size_sm_title;\\n \", \"\\n \"])), textCaption({\n color: sysColorBackgroundMediumContrast\n }));\n var sizeSmInverseLabelSteps = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n label: size_sm_inverse_label_steps;\\n color: \", \";\\n \"])), sysColorSystemContrast);\n var sizeSmInverseLabelTitle = css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\"\\n label: size_sm_inverse_label_title;\\n color: \", \";\\n \"])), sysColorBackgroundSurface); // Circle progress meter Styles\n\n var circleBase = css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\"\\n label: circle-progress-meter_base;\\n position: relative;\\n border-radius: \", \";\\n border: \", \"rem solid \", \";\\n width: \", \"rem;\\n height: \", \"rem;\\n background-color: \", \";\\n padding: \", \";\\n flex-shrink: 0;\\n \"])), sysBorderRadiusInteractive, circleProgressMeterBorderSize, sysColorBackgroundAlt, circleProgressMeterSize, circleProgressMeterSize, sysColorBackgroundSurface, circleProgressMeterPadding);\n var circleInner = css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\"\\n label: circle_inner;\\n border-radius: \", \";\\n width: 100%;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n \", \"\\n \"])), sysBorderRadiusInteractive, getColorStyles(Color.Accent2));\n var circleInnerImage = css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\"\\n label: circle_inner_image;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n \"])));\n var circleProgressIndicator = css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\"\\n label: progress_indicator;\\n position: absolute;\\n top: -\", \"rem;\\n left: -\", \"rem;\\n width: \", \"rem;\\n height: \", \"rem;\\n fill: none;\\n stroke-width: \", \"%;\\n stroke-linecap: round;\\n transform: rotate(-90deg);\\n transform-origin: 50% 50%;\\n \", \"\\n \"])), circleProgressMeterBorderSize, circleProgressMeterBorderSize, circleProgressMeterSize, circleProgressMeterSize, progressIndicatorCircleStrokeWidth.toFixed(5), getStrokeColorStyles(Color.Accent2));\n var circleSm = css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\"\\n label: size_sm;\\n width: \", \"rem;\\n height: \", \"rem;\\n border-width: \", \";\\n padding: \", \";\\n \"])), circleProgressMeterSmSize, circleProgressMeterSmSize, circleProgressMeterSmBorderSize, circleProgressMeterPadding);\n var circleSmProgressIndicator = css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral([\"\\n label: size_sm_progress_indicator;\\n top: -\", \";\\n left: -\", \";\\n width: \", \"rem;\\n height: \", \"rem;\\n stroke-width: \", \"%;\\n \"])), circleProgressMeterSmBorderSize, circleProgressMeterSmBorderSize, circleProgressMeterSmSize, circleProgressMeterSmSize, progressIndicatorCircleSmStrokeWidth);\n return {\n linear: {\n base: base,\n label: label,\n steps: steps,\n title: title,\n getProgressMeterColorStyles: getProgressMeterColorStyles,\n inverseLabel: inverseLabel,\n inverseLabelSteps: inverseLabelSteps,\n inverseLabelTitle: inverseLabelTitle,\n labelSteps: labelSteps,\n labelTitle: labelTitle,\n sizeSm: sizeSm,\n sizeSmLabel: sizeSmLabel,\n sizeSmLabelSteps: sizeSmLabelSteps,\n sizeSmLabelTitle: sizeSmLabelTitle,\n sizeSmInverseLabelSteps: sizeSmInverseLabelSteps,\n sizeSmInverseLabelTitle: sizeSmInverseLabelTitle\n },\n circle: {\n base: circleBase,\n inner: circleInner,\n progressIndicator: circleProgressIndicator,\n sizeSm: circleSm,\n progressIndicatorSizeSm: circleSmProgressIndicator,\n innerImage: circleInnerImage,\n circleRadiusSvg: circleRadiusSvg,\n getStrokeColorStyles: getStrokeColorStyles,\n getCircleRadius: function getCircleRadius() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return isSizeSmall(size) ? circleRadiusSvg - progressIndicatorCircleSmStrokeWidth / 2 : circleRadiusSvg - progressIndicatorCircleStrokeWidth / 2;\n },\n getDashOffsetStyles: getDashOffsetStyles,\n getIconWrapStyles: getIconWrapStyles\n },\n util: {\n getColorStyles: getColorStyles,\n isSizeSmall: isSizeSmall\n }\n };\n}\n\nvar _excluded = [\"className\", \"id\", \"max\", \"value\", \"inverse\", \"steps\", \"size\", \"title\", \"color\"];\n\nvar ProgressMeter = function (_ref) {\n var _styles$util, _styles$util$isSizeSm, _styles$linear, _styles$linear2, _styles$linear3, _styles$linear4, _styles$linear5, _styles$linear5$getPr, _styles$linear6, _styles$linear7, _styles$linear8, _styles$linear9, _styles$linear10, _styles$linear11, _styles$linear12, _styles$linear13, _styles$linear14, _styles$linear15, _styles$linear16;\n\n var className = _ref.className,\n _ref$id = _ref.id,\n id = _ref$id === void 0 ? uniqueId('progressMeter_') : _ref$id,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 0 : _ref$max,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? 0 : _ref$value,\n _ref$inverse = _ref.inverse,\n inverse = _ref$inverse === void 0 ? false : _ref$inverse,\n steps = _ref.steps,\n size = _ref.size,\n title = _ref.title,\n color = _ref.color,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var isSizeSmall = (_styles$util = _styles.util) === null || _styles$util === void 0 ? void 0 : (_styles$util$isSizeSm = _styles$util.isSizeSmall) === null || _styles$util$isSizeSm === void 0 ? void 0 : _styles$util$isSizeSm.call(_styles$util, size);\n var labelStyles = [(_styles$linear = _styles.linear) === null || _styles$linear === void 0 ? void 0 : _styles$linear.label, inverse && ((_styles$linear2 = _styles.linear) === null || _styles$linear2 === void 0 ? void 0 : _styles$linear2.inverseLabel), isSizeSmall && ((_styles$linear3 = _styles.linear) === null || _styles$linear3 === void 0 ? void 0 : _styles$linear3.sizeSmLabel)];\n var computedColor = colorMap[color] || color;\n var progressMeterStyles = [(_styles$linear4 = _styles.linear) === null || _styles$linear4 === void 0 ? void 0 : _styles$linear4.base, color && ((_styles$linear5 = _styles.linear) === null || _styles$linear5 === void 0 ? void 0 : (_styles$linear5$getPr = _styles$linear5.getProgressMeterColorStyles) === null || _styles$linear5$getPr === void 0 ? void 0 : _styles$linear5$getPr.call(_styles$linear5, computedColor)), isSizeSmall && ((_styles$linear6 = _styles.linear) === null || _styles$linear6 === void 0 ? void 0 : _styles$linear6.sizeSm)];\n var stepsStyles = [(_styles$linear7 = _styles.linear) === null || _styles$linear7 === void 0 ? void 0 : _styles$linear7.steps, (_styles$linear8 = _styles.linear) === null || _styles$linear8 === void 0 ? void 0 : _styles$linear8.labelSteps, inverse && ((_styles$linear9 = _styles.linear) === null || _styles$linear9 === void 0 ? void 0 : _styles$linear9.inverseLabelSteps), isSizeSmall && ((_styles$linear10 = _styles.linear) === null || _styles$linear10 === void 0 ? void 0 : _styles$linear10.sizeSmLabelSteps), isSizeSmall && inverse && ((_styles$linear11 = _styles.linear) === null || _styles$linear11 === void 0 ? void 0 : _styles$linear11.sizeSmInverseLabelSteps)];\n var titleStyles = [(_styles$linear12 = _styles.linear) === null || _styles$linear12 === void 0 ? void 0 : _styles$linear12.title, (_styles$linear13 = _styles.linear) === null || _styles$linear13 === void 0 ? void 0 : _styles$linear13.labelTitle, inverse && ((_styles$linear14 = _styles.linear) === null || _styles$linear14 === void 0 ? void 0 : _styles$linear14.inverseLabelTitle), isSizeSmall && ((_styles$linear15 = _styles.linear) === null || _styles$linear15 === void 0 ? void 0 : _styles$linear15.sizeSmLabelTitle), isSizeSmall && inverse && ((_styles$linear16 = _styles.linear) === null || _styles$linear16 === void 0 ? void 0 : _styles$linear16.sizeSmInverseLabelTitle)];\n return jsx(\"div\", {\n css: progressMeterStyles,\n className: className,\n \"data-ppui-info\": \"progress-meter_3.4.7\"\n }, jsx(\"progress\", _extends({\n id: id,\n max: max,\n value: value\n }, rest, {\n \"data-ppui\": \"true\"\n })), jsx(\"label\", {\n css: labelStyles,\n htmlFor: id,\n \"data-ppui\": \"true\"\n }, steps && jsx(\"span\", {\n css: stepsStyles,\n \"data-ppui\": \"true\"\n }, steps), title && jsx(\"span\", {\n css: titleStyles,\n \"data-ppui\": \"true\"\n }, title)));\n};\n\nvar _excluded$1 = [\"className\", \"max\", \"value\", \"color\", \"label\", \"size\", \"children\"],\n _excluded2 = [\"iconComponent\", \"size\"],\n _excluded3 = [\"imageSrc\"];\nvar CircleProgressMeter = forwardRef(function (props, ref) {\n var _styles$util, _styles$util$isSizeSm, _styles$circle, _styles$circle$getCir, _styles$circle2, _styles$circle3, _styles$circle4, _styles$circle5, _styles$circle6, _styles$circle7, _styles$circle7$getDa, _styles$circle8, _styles$util2, _styles$util2$getColo, _styles$circle9, _styles$circle10;\n\n var className = props.className,\n _props$max = props.max,\n max = _props$max === void 0 ? 1 : _props$max,\n _props$value = props.value,\n value = _props$value === void 0 ? 0 : _props$value,\n color = props.color,\n label = props.label,\n size = props.size,\n children = props.children,\n rest = _objectWithoutProperties(props, _excluded$1);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _utilStyles = utilStyles(tokens),\n screenReader = _utilStyles.screenReader;\n\n var isSizeSmall = (_styles$util = _styles.util) === null || _styles$util === void 0 ? void 0 : (_styles$util$isSizeSm = _styles$util.isSizeSmall) === null || _styles$util$isSizeSm === void 0 ? void 0 : _styles$util$isSizeSm.call(_styles$util, size);\n var radius = (_styles$circle = _styles.circle) === null || _styles$circle === void 0 ? void 0 : (_styles$circle$getCir = _styles$circle.getCircleRadius) === null || _styles$circle$getCir === void 0 ? void 0 : _styles$circle$getCir.call(_styles$circle, size);\n var maxDashOffset = 2 * Math.PI * radius;\n\n /* \n // Commenting out code related to draw out animation\n const [dashOffset, setDashOffset] = useState(maxDashOffset);\n useEffect(() => {\n const newDashOffset = maxDashOffset - (value / max) * maxDashOffset;\n setDashOffset(newDashOffset);\n }, [value]);\n */\n var computedColor = colorMap[color] || color;\n var baseStyles = [(_styles$circle2 = _styles.circle) === null || _styles$circle2 === void 0 ? void 0 : _styles$circle2.base, isSizeSmall && ((_styles$circle3 = _styles.circle) === null || _styles$circle3 === void 0 ? void 0 : _styles$circle3.sizeSm)];\n var iconStyles = [(_styles$circle4 = _styles.circle) === null || _styles$circle4 === void 0 ? void 0 : _styles$circle4.progressIndicator, color && ((_styles$circle5 = _styles.circle) === null || _styles$circle5 === void 0 ? void 0 : _styles$circle5.getStrokeColorStyles(computedColor)), isSizeSmall && ((_styles$circle6 = _styles.circle) === null || _styles$circle6 === void 0 ? void 0 : _styles$circle6.progressIndicatorSizeSm), (_styles$circle7 = _styles.circle) === null || _styles$circle7 === void 0 ? void 0 : (_styles$circle7$getDa = _styles$circle7.getDashOffsetStyles) === null || _styles$circle7$getDa === void 0 ? void 0 : _styles$circle7$getDa.call(_styles$circle7, maxDashOffset, maxDashOffset - value / max * maxDashOffset)];\n var circleInnerStyles = [(_styles$circle8 = _styles.circle) === null || _styles$circle8 === void 0 ? void 0 : _styles$circle8.inner, color && ((_styles$util2 = _styles.util) === null || _styles$util2 === void 0 ? void 0 : (_styles$util2$getColo = _styles$util2.getColorStyles) === null || _styles$util2$getColo === void 0 ? void 0 : _styles$util2$getColo.call(_styles$util2, computedColor))];\n return jsx(\"div\", {\n css: baseStyles,\n className: className,\n \"data-ppui-info\": \"progress-meter_3.4.7\"\n }, jsx(\"svg\", {\n css: iconStyles,\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 100 100\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"data-ppui\": \"true\"\n }, jsx(\"circle\", {\n cx: (_styles$circle9 = _styles.circle) === null || _styles$circle9 === void 0 ? void 0 : _styles$circle9.circleRadiusSvg,\n cy: (_styles$circle10 = _styles.circle) === null || _styles$circle10 === void 0 ? void 0 : _styles$circle10.circleRadiusSvg,\n r: radius,\n \"data-ppui\": \"true\"\n })), jsx(\"div\", {\n css: circleInnerStyles,\n \"aria-hidden\": \"true\",\n \"data-ppui\": \"true\"\n }, children), jsx(\"label\", {\n css: screenReader,\n \"data-ppui\": \"true\"\n }, label, jsx(\"progress\", _extends({\n max: max,\n value: value\n }, rest, {\n ref: ref,\n \"data-ppui\": \"true\"\n }))));\n});\nvar IconProgressMeter = forwardRef(function (props, ref) {\n var _styles$util3, _styles$util3$isSizeS, _styles$circle11, _styles$circle11$getI;\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var iconComponent = props.iconComponent,\n size = props.size,\n rest = _objectWithoutProperties(props, _excluded2);\n\n var iconSize = ((_styles$util3 = _styles.util) === null || _styles$util3 === void 0 ? void 0 : (_styles$util3$isSizeS = _styles$util3.isSizeSmall) === null || _styles$util3$isSizeS === void 0 ? void 0 : _styles$util3$isSizeS.call(_styles$util3, size)) ? Size.SMALL : Size.LARGE;\n return jsx(CircleProgressMeter, _extends({\n size: size,\n ref: ref\n }, rest, {\n \"data-ppui\": \"true\"\n }), jsx(\"div\", {\n css: (_styles$circle11 = _styles.circle) === null || _styles$circle11 === void 0 ? void 0 : (_styles$circle11$getI = _styles$circle11.getIconWrapStyles) === null || _styles$circle11$getI === void 0 ? void 0 : _styles$circle11$getI.call(_styles$circle11, size),\n \"data-ppui\": \"true\"\n }, jsx(iconComponent, {\n size: iconSize,\n \"data-ppui\": \"true\"\n })));\n});\nvar ImageProgressMeter = forwardRef(function (props, ref) {\n var _styles$circle12;\n\n var imageSrc = props.imageSrc,\n rest = _objectWithoutProperties(props, _excluded3);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n return jsx(CircleProgressMeter, _extends({\n ref: ref\n }, rest, {\n \"data-ppui\": \"true\"\n }), jsx(\"img\", {\n src: imageSrc,\n css: (_styles$circle12 = _styles.circle) === null || _styles$circle12 === void 0 ? void 0 : _styles$circle12.innerImage,\n \"data-ppui\": \"true\"\n }));\n});\n\nexport { CircleProgressMeter, IconProgressMeter, ImageProgressMeter, ProgressMeter, styles as progressMeterStyles };\n","import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { math } from 'polished';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo } from 'react';\nimport { BodyText, CaptionText } from '@paypalcorp/pp-react-text';\nimport { CloseIcon, CriticalIcon, ClockIcon, CheckmarkIcon } from '@paypalcorp/pp-react-icons';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorPrimaryContrast = tokens.sysColorPrimaryContrast,\n sysColorStructureDivider = tokens.sysColorStructureDivider,\n sysColorBackgroundHighContrast = tokens.sysColorBackgroundHighContrast,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysColorBackgroundAlt = tokens.sysColorBackgroundAlt,\n sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysColorSuccessMain = tokens.sysColorSuccessMain,\n sysColorWarningMain = tokens.sysColorWarningMain,\n sysColorErrorMain = tokens.sysColorErrorMain,\n sysSpaceJumbo = tokens.sysSpaceJumbo,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceXs = tokens.sysSpaceXs,\n sysSizeIconMd = tokens.sysSizeIconMd,\n sysBorderThicknessFocus = tokens.sysBorderThicknessFocus,\n sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive,\n sysSizeMediaMd = tokens.sysSizeMediaMd;\n var bgColorMap = {\n success: sysColorSuccessMain,\n warning: sysColorWarningMain,\n critical: sysColorErrorMain,\n cancelled: sysColorErrorMain,\n default: sysColorBackgroundSurface\n };\n\n var markerFn = function (type) {\n return css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n // prettier-ignore\\n label: marker_\", \";\\n &:after {\\n background-color: \", \";\\n }\\n \"])), type, bgColorMap[type]);\n };\n\n var iconFn = function (type) {\n return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n // prettier-ignore\\n label: icon_\", \";\\n background-color: \", \";\\n \"])), type, bgColorMap[type]);\n };\n\n var verticalStyles = {\n base: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n display: block;\\n \"]))),\n item: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n flex-direction: row;\\n align-items: initial;\\n \"]))),\n itemContent: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n margin: \", \" 0;\\n text-align: initial;\\n \"])), sysSpaceLg),\n itemContentWithoutDescription: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n display: inline-flex;\\n align-items: center;\\n \"]))),\n marker: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n margin: 0 \", \" 0 \", \";\\n padding: \", \" 0;\\n &:after {\\n left: auto;\\n top: \", \"; // Margin + Icon Size\\n width: \", \"; // This is termed as a border for designers, hence used border token\\n height: 100%;\\n [dir='rtl'] & {\\n right: auto;\\n }\\n }\\n \"])), sysSpaceLg, sysSpaceJumbo, sysSpaceLg, math(\"\".concat(sysSizeIconMd, \" + \").concat(sysSpaceLg)), sysBorderThicknessFocus)\n };\n var base = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: step_tracker_base;\\n color: \", \";\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\\n &[data-stepper-variant='vertical'] {\\n \", \"\\n }\\n @media screen and (max-width: \", \") {\\n \", \"\\n }\\n \"])), sysColorBackgroundHighContrast, verticalStyles.base, sysSizeMediaMd, verticalStyles.base);\n var item = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: timeline_item;\\n display: flex;\\n position: relative;\\n flex-direction: column;\\n align-items: center;\\n &:last-of-type {\\n > div:first-of-type {\\n &:after {\\n display: none;\\n }\\n }\\n }\\n @media screen and (max-width: \", \") {\\n \", \"\\n }\\n [data-stepper-variant='vertical'] & {\\n \", \"\\n }\\n \"])), sysSizeMediaMd, verticalStyles.item, verticalStyles.item);\n var itemContent = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: timeline_item_content;\\n text-align: center;\\n margin-top: \", \";\\n @media screen and (max-width: \", \") {\\n \", \"\\n }\\n [data-stepper-variant='vertical'] & {\\n \", \"\\n }\\n \"])), sysSpaceLg, sysSizeMediaMd, verticalStyles.itemContent, verticalStyles.itemContent);\n var itemContentWithoutDescription = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: content_without_description;\\n @media screen and (max-width: \", \") {\\n \", \"\\n }\\n [data-stepper-variant='vertical'] & {\\n \", \"\\n }\\n \"])), sysSizeMediaMd, verticalStyles.itemContentWithoutDescription, verticalStyles.itemContentWithoutDescription);\n var description = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: description;\\n color: \", \";\\n margin-top: \", \";\\n \"])), sysColorBackgroundMediumContrast, sysSpaceXs);\n var marker = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: marker;\\n color: \", \";\\n display: flex;\\n justify-content: center;\\n margin: 0;\\n padding: 0;\\n &:after {\\n position: absolute;\\n content: '';\\n top: \", \";\\n left: calc(50% + \", \");\\n width: calc(100% - \", \");\\n height: \", \"; // This is termed as a border for designers, hence used border token\\n background-color: \", \";\\n [dir='rtl'] & {\\n left: auto;\\n right: calc(50% + \", \");\\n }\\n }\\n @media screen and (max-width: \", \") {\\n \", \"\\n }\\n [data-stepper-variant='vertical'] & {\\n \", \"\\n }\\n \"])), sysColorBackgroundAlt, sysSpaceLg, sysSpaceLg, sysSpaceLg, sysBorderThicknessFocus, sysColorStructureDivider, sysSpaceLg, sysSizeMediaMd, verticalStyles.marker, verticalStyles.marker);\n var successMarker = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), markerFn('success'));\n var warningMarker = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), markerFn('warning'));\n var cancelledMarker = css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), markerFn('cancelled'));\n var criticalMarker = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), markerFn('critical'));\n var icon = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: icon;\\n border-radius: \", \";\\n height: \", \";\\n width: \", \";\\n padding: \", \";\\n \"])), sysBorderRadiusInteractive, sysSizeIconMd, sysSizeIconMd, sysSpaceXs);\n var cancelledIcon = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), iconFn('cancelled'));\n var criticalIcon = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), iconFn('critical'));\n var warningIcon = css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), iconFn('warning'));\n var successIcon = css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\"\\n \", \"\\n \"])), iconFn('success'));\n var defaultIcon = css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\"\\n \", \"\\n border: \", \" solid \", \";\\n padding: \", \" \", \";\\n \"])), iconFn('default'), sysBorderThicknessFocus, sysColorStructureDivider, sysSpaceXs, math(\"\".concat(sysSpaceLg, \" - \").concat(sysBorderThicknessFocus)));\n var numeric = css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\"\\n label: numeric;\\n text-align: center;\\n \"])));\n var numericDefault = css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\"\\n label: numeric_default;\\n background-color: \", \";\\n padding: 0;\\n \"])), sysColorBackgroundAlt);\n var numericSuccess = css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\"\\n label: numeric_success;\\n color: \", \";\\n \"])), sysColorPrimaryContrast);\n return {\n base: base,\n item: item,\n itemContent: itemContent,\n itemContentWithoutDescription: itemContentWithoutDescription,\n description: description,\n marker: marker,\n successMarker: successMarker,\n warningMarker: warningMarker,\n cancelledMarker: cancelledMarker,\n criticalMarker: criticalMarker,\n icon: icon,\n cancelledIcon: cancelledIcon,\n criticalIcon: criticalIcon,\n warningIcon: warningIcon,\n successIcon: successIcon,\n defaultIcon: defaultIcon,\n numeric: numeric,\n numericSuccess: numericSuccess,\n numericDefault: numericDefault\n };\n}\n\nvar _excluded = [\"className\", \"children\", \"showDescription\", \"desktopVariant\"];\n\nvar ProgressStepper = function (_ref) {\n var className = _ref.className,\n children = _ref.children,\n _ref$showDescription = _ref.showDescription,\n showDescription = _ref$showDescription === void 0 ? 'all' : _ref$showDescription,\n desktopVariant = _ref.desktopVariant,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var childrenMap;\n var isCurrentDetected = false;\n var statusQueue = [];\n React.Children.map(children, function (child) {\n var status = child.props.status;\n statusQueue.push(status || 'default');\n });\n childrenMap = React.Children.map(children, function (child, index) {\n var _child$props = child.props,\n isCurrent = _child$props.isCurrent,\n isDescriptionEnabled = _child$props.isDescriptionEnabled; // Decide when to display the description giving priority to override\n\n if (isDescriptionEnabled === undefined) {\n // Always display Current unless display option is \"none\" or is overridden\n if (isCurrent) {\n isDescriptionEnabled = true;\n isCurrentDetected = true;\n }\n\n if (showDescription === 'all' || showDescription === 'current' && isCurrent || showDescription === 'afterCurrent' && isCurrentDetected === true || showDescription === 'beforeCurrent' && isCurrentDetected === false) {\n isDescriptionEnabled = true;\n } else if (showDescription === 'none') {\n isDescriptionEnabled = false;\n }\n }\n\n var currentStep = index + 1;\n var nextStatus = statusQueue[currentStep] === 'default' && statusQueue[index] === 'success' ? 'success' : statusQueue[currentStep];\n return React.cloneElement(child, {\n isDescriptionEnabled: isDescriptionEnabled,\n status: statusQueue[index],\n nextStatus: nextStatus,\n index: currentStep,\n 'aria-setsize': statusQueue.length,\n 'aria-posinset': currentStep\n });\n });\n return jsx(\"ul\", _extends({\n css: _styles.base,\n className: className,\n \"data-stepper-variant\": desktopVariant,\n \"data-ppui-info\": \"progress-stepper_2.2.8\"\n }, rest), childrenMap);\n};\n\nvar _excluded$1 = [\"title\", \"status\", \"ariaLabel\", \"isCurrent\", \"isDescriptionEnabled\", \"children\", \"nextStatus\", \"className\", \"isNumeric\", \"index\"];\n\nvar Step = function (_ref) {\n var _ref$title = _ref.title,\n title = _ref$title === void 0 ? 'no title' : _ref$title,\n status = _ref.status,\n ariaLabel = _ref.ariaLabel,\n isCurrent = _ref.isCurrent,\n _ref$isDescriptionEna = _ref.isDescriptionEnabled,\n isDescriptionEnabled = _ref$isDescriptionEna === void 0 ? undefined : _ref$isDescriptionEna,\n children = _ref.children,\n nextStatus = _ref.nextStatus,\n className = _ref.className,\n _ref$isNumeric = _ref.isNumeric,\n isNumeric = _ref$isNumeric === void 0 ? false : _ref$isNumeric,\n index = _ref.index,\n rest = _objectWithoutProperties(_ref, _excluded$1);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var mapping = {\n cancelled: jsx(CloseIcon, {\n size: \"sm\",\n color: \"sysColorErrorContrast\",\n \"data-ppui\": \"true\"\n }),\n critical: jsx(CriticalIcon, {\n size: \"sm\",\n color: \"sysColorErrorContrast\",\n \"data-ppui\": \"true\"\n }),\n warning: jsx(ClockIcon, {\n size: \"sm\",\n color: \"sysColorWarningContrast\",\n \"data-ppui\": \"true\"\n }),\n success: isNumeric ? jsx(BodyText, {\n css: [_styles.numeric, _styles.numericSuccess],\n \"data-ppui\": \"true\"\n }, index) : jsx(CheckmarkIcon, {\n size: \"sm\",\n color: \"sysColorSuccessContrast\",\n \"data-ppui\": \"true\"\n }),\n default: isNumeric ? jsx(BodyText, {\n css: _styles.numeric,\n \"data-ppui\": \"true\"\n }, index) : jsx(React.Fragment, null)\n };\n var statusName = mapping[status] ? status : 'default';\n var nextStatusName = mapping[nextStatus] ? nextStatus : 'default';\n var itemContentCSS = [_styles.itemContent, (!isDescriptionEnabled || !children) && _styles.itemContentWithoutDescription];\n var markerCSS = [_styles.marker, //@ts-ignore\n nextStatusName && _styles[nextStatusName + 'Marker']];\n var iconCSS = [_styles.icon, //@ts-ignore\n _styles[statusName + 'Icon'], isNumeric && statusName === 'default' && _styles.numericDefault];\n return jsx(\"li\", _extends({\n css: _styles.item,\n className: className,\n \"aria-current\": !!isCurrent\n }, rest, {\n \"data-ppui\": \"true\"\n }), jsx(\"div\", {\n css: markerCSS,\n \"aria-hidden\": !ariaLabel,\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n role: ariaLabel && 'img',\n \"aria-label\": ariaLabel,\n css: iconCSS,\n \"data-ppui\": \"true\"\n }, mapping[statusName])), jsx(\"div\", {\n css: itemContentCSS,\n \"data-ppui\": \"true\"\n }, jsx(BodyText, {\n strong: !!isCurrent,\n \"data-ppui\": \"true\"\n }, title), isDescriptionEnabled && children && jsx(CaptionText, {\n css: _styles.description,\n \"data-ppui\": \"true\"\n }, children)));\n};\n\nexport { ProgressStepper, Step, styles as progressStepperStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useMemo, useState, useRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { css, keyframes, useTheme, jsx } from '@emotion/react';\nimport { CheckmarkBackgroundIcon } from '@paypalcorp/pp-react-icons';\nimport { utilStyles, ZINDEX_TOAST, hasDocument, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math } from 'polished';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusLg = tokens.sysBorderRadiusLg,\n sysColorSystemMain = tokens.sysColorSystemMain,\n sysColorSystemContrast = tokens.sysColorSystemContrast,\n sysColorSuccessMain = tokens.sysColorSuccessMain,\n sysColorSuccessContrast = tokens.sysColorSuccessContrast,\n sysMotionDurationArrive = tokens.sysMotionDurationArrive,\n sysMotionDurationDepart = tokens.sysMotionDurationDepart,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSizeIconSm = tokens.sysSizeIconSm;\n\n var _utilStyles = utilStyles(tokens),\n variables = _utilStyles.variables;\n\n var _utilStyles2 = utilStyles(tokens),\n elevationStyles = _utilStyles2.elevationStyles;\n\n var ppuiEaseInOut = variables.ppuiEaseInOut;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body;\n\n var verticalExitPosition = math(\"-2*\".concat(sysSpaceLg));\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: toast_base;\\n display: flex;\\n padding: \", \";\\n border-radius: \", \";\\n left: 0;\\n right: 0;\\n margin: auto;\\n white-space: normal;\\n \", \";\\n background-color: \", \";\\n max-width: \", \";\\n \", \"\\n pointer-events: auto;\\n \"])), sysSpaceLg, sysBorderRadiusLg, elevationStyles.level2, sysColorSystemMain, '30rem', textBody({\n color: sysColorSystemContrast\n }));\n var container = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: container;\\n display: flex;\\n position: fixed;\\n top: \", \";\\n z-index: \", \";\\n left: 50%;\\n transform: translateX(-50%);\\n width: calc(100% - \", \" * 2);\\n visibility: hidden;\\n opacity: 0;\\n pointer-events: none;\\n\\n &[aria-hidden='false'] {\\n visibility: visible;\\n opacity: 1;\\n }\\n \"])), sysSpaceLg, ZINDEX_TOAST, sysSpaceLg);\n var fadeIn = keyframes(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n 0% {\\n transform: translate(\\n -50%,\\n \", \"\\n );\\n opacity: 0;\\n\\n }\\n 100% {\\n visibility: visible;\\n transform: translate(-50%, 0);\\n opacity: 1;\\n }\\n \"])), verticalExitPosition);\n var fadeOut = keyframes(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n 0% {\\n visibility: visible;\\n transform: translate(-50%, 0);\\n opacity: 1;\\n }\\n 100% {\\n visibility: hidden;\\n transform: translate(\\n -50%,\\n \", \"\\n );\\n opacity: 0;\\n } \\n \"])), verticalExitPosition);\n var show = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: show;\\n animation: \", \" \", \" \", \";\\n \"])), fadeIn, sysMotionDurationArrive, ppuiEaseInOut);\n var hide = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: hide;\\n animation: \", \" \", \" \", \";\\n \"])), fadeOut, sysMotionDurationDepart, ppuiEaseInOut);\n var success = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: success;\\n background-color: \", \";\\n color: \", \";\\n \"])), sysColorSuccessMain, sysColorSuccessContrast);\n var successIcon = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: success_icon;\\n margin-right: \", \";\\n height: \", \";\\n\\n [dir='rtl'] & {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n \"])), sysSpaceSm, sysSizeIconSm, sysSpaceSm);\n return {\n base: base,\n container: container,\n show: show,\n hide: hide,\n success: success,\n successIcon: successIcon\n };\n}\n\nvar _excluded = [\"id\", \"message\", \"isSuccess\", \"duration\", \"onClose\", \"direction\", \"className\", \"containerClassName\", \"containerRef\"];\nvar defaultDuration = 7000;\n\nvar Toast = function (_ref) {\n var _ref$id = _ref.id,\n id = _ref$id === void 0 ? 'Toast' : _ref$id,\n _ref$message = _ref.message,\n message = _ref$message === void 0 ? 'message' : _ref$message,\n _ref$isSuccess = _ref.isSuccess,\n isSuccess = _ref$isSuccess === void 0 ? false : _ref$isSuccess,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? defaultDuration : _ref$duration,\n onClose = _ref.onClose,\n direction = _ref.direction,\n className = _ref.className,\n containerClassName = _ref.containerClassName,\n containerRef = _ref.containerRef,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n showState = _useState2[0],\n setShowState = _useState2[1];\n\n var startY = null;\n var startX = null;\n var toastRef = useRef();\n\n var getWrapperCurrent = function (w) {\n return (\n /* istanbul ignore next */\n w && w.current ? w.current : null\n );\n };\n\n var autoHideTimer = getWrapperCurrent(useRef());\n\n var handleClose = function () {\n setShowState(0);\n clearTimeout(autoHideTimer);\n startX = null;\n startY = null;\n };\n\n var handleKey = function (evt) {\n if (new KeyboardCode(evt.key || evt.keyCode).IS_ESC) {\n handleClose();\n }\n };\n /* istanbul ignore next */\n\n\n var handleTouchStart = function (evt) {\n //prevent from scrolling\n evt.preventDefault();\n /* istanbul ignore next */\n\n if (!startY && !startX) {\n var firstTouch = evt.changedTouches[0];\n startY = firstTouch.pageY;\n startX = firstTouch.pageX;\n }\n };\n /* istanbul ignore next */\n\n\n var handleTouchEnd = function (evt) {\n var endTouch = evt.changedTouches[0];\n var endX = endTouch.pageX;\n var endY = endTouch.pageY;\n var xDiff = startX - endX;\n var yDiff = startY - endY;\n\n if (Math.abs(yDiff) > Math.abs(xDiff)) {\n // means up/down is most significant\n if (yDiff > 0) {\n // swipe up\n handleClose();\n }\n }\n\n startX = null;\n startY = null;\n };\n\n useEffect(function () {\n if (showState < 0) {\n setShowState(1);\n }\n\n document.addEventListener('keydown', handleKey);\n var toast = getWrapperCurrent(toastRef); // Adding native event since evt.preventDefault (for preventing from scrolling\n // while swiping on toast up) is not possible using synthetic event\n //eslint-disable-next-line no-unused-expressions\n\n toast === null || toast === void 0 ? void 0 : toast.addEventListener('touchstart', handleTouchStart);\n return function () {\n document.removeEventListener('keydown', handleKey); //eslint-disable-next-line no-unused-expressions\n\n toast === null || toast === void 0 ? void 0 : toast.removeEventListener('touchstart', handleTouchStart);\n clearTimeout(autoHideTimer);\n };\n }, [showState]);\n /* istanbul ignore next */\n\n var containerCSSVal = [_styles.container, showState && _styles.show, !showState && _styles.hide];\n var toastCSSVal = [_styles.base, isSuccess && _styles.success];\n var successIcon = isSuccess && jsx(CheckmarkBackgroundIcon, {\n css: _styles.successIcon,\n color: \"SuccessContrast\",\n size: \"sm\",\n \"data-ppui\": \"true\"\n });\n /* istanbul ignore next */\n\n return hasDocument() ? ReactDOM.createPortal(jsx(\"div\", _extends({\n id: id,\n dir: direction,\n css: containerCSSVal,\n className: containerClassName,\n \"aria-hidden\": showState <= 0,\n role: \"alert\",\n onAnimationEnd: function onAnimatonEnd() {\n if (showState === 1) {\n var timeOut = duration > defaultDuration ? duration : defaultDuration;\n autoHideTimer = setTimeout(handleClose, timeOut);\n } else if (typeof onClose === 'function') {\n onClose();\n }\n },\n \"data-ppui-info\": \"toast_3.3.1\"\n }, rest), jsx(\"div\", {\n ref: toastRef,\n css: toastCSSVal,\n className: className,\n onTouchEnd: handleTouchEnd,\n \"data-ppui\": \"true\"\n }, successIcon, message)), getWrapperCurrent(containerRef) || document.body) : null;\n};\n\nexport { Toast, styles as toastStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useMemo, useLayoutEffect } from 'react';\nimport { css, useTheme, jsx, ClassNames } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { textStyles, HeadingText, BodyText } from '@paypalcorp/pp-react-text';\nimport { ZINDEX_MODAL, hasDocument } from '@paypalcorp/pp-react-utils';\nimport { Button } from '@paypalcorp/pp-react-buttons';\n\nvar DEFAULT_LINES_CLAMP_TITLE = 2;\nvar DEFAULT_LINES_CLAMP_BODY = 3;\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysSizeMediaSm = tokens.sysSizeMediaSm,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceJumbo = tokens.sysSpaceJumbo;\n\n var _textStyles = textStyles(tokens),\n lineClamping = _textStyles.lineClamping;\n\n var base = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: error_view_base;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: \", \";\\n \"])), sysSizeMediaSm);\n var wrapperStyles = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: wrapper;\\n display: flex;\\n flex-direction: column;\\n \"])));\n var fullScreenBase = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: error_view_base_fullscreen;\\n position: fixed;\\n inset: 0 0 0 0;\\n background-color: \", \";\\n z-index: \", \";\\n \"])), sysColorBackgroundSurface, ZINDEX_MODAL);\n var fullScreenWrapperStyles = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: wrapper_fullscreen;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n position: absolute;\\n top: 33%;\\n width: 100%;\\n padding: 0 \", \";\\n \"])), sysSpaceJumbo);\n var titleStyles = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: title;\\n margin-bottom: \", \";\\n text-align: center;\\n \", \"\\n \"])), sysSpaceLg, lineClamping(DEFAULT_LINES_CLAMP_TITLE));\n var subTitleStyles = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: subtitle;\\n text-align: center;\\n margin-bottom: \", \";\\n \"])), sysSpaceLg);\n var buttonWrapperStyles = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: button_wrap;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n \"])));\n var primaryButtonStyles = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: primary_button;\\n margin: \", \" 0 \", \" 0;\\n \"])), sysSpaceSm, sysSpaceSm);\n return {\n base: base,\n wrapperStyles: wrapperStyles,\n titleStyles: titleStyles,\n subTitleStyles: subTitleStyles,\n buttonWrapperStyles: buttonWrapperStyles,\n primaryButtonStyles: primaryButtonStyles,\n fullScreenBase: fullScreenBase,\n fullScreenWrapperStyles: fullScreenWrapperStyles\n };\n}\n\nvar ErrorView = function (_ref) {\n var _ref$title = _ref.title,\n title = _ref$title === void 0 ? 'title' : _ref$title,\n _ref$subTitle = _ref.subTitle,\n subTitle = _ref$subTitle === void 0 ? 'sub title' : _ref$subTitle,\n primaryButtonOptions = _ref.primaryButtonOptions,\n tertiaryButtonOptions = _ref.tertiaryButtonOptions,\n _ref$fullScreen = _ref.fullScreen,\n fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen;\n\n /* istanbul ignore next */\n if (!primaryButtonOptions) {\n console.warn('Required prop `primaryButtonOptions` is missing');\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n useLayoutEffect(function () {\n if (fullScreen && hasDocument()) {\n document.body.style.overflow = 'hidden';\n }\n\n return function () {\n if (fullScreen && hasDocument()) {\n document.body.style.overflow = 'auto';\n }\n };\n }, []);\n var baseStyles = _styles.base;\n var wrapperStyles = _styles.wrapperStyles;\n\n if (fullScreen) {\n baseStyles = _styles.fullScreenBase;\n wrapperStyles = _styles.fullScreenWrapperStyles;\n }\n\n return jsx(\"section\", {\n css: baseStyles,\n \"data-ppui-info\": \"error-view_1.4.2\",\n \"aria-live\": \"polite\"\n }, jsx(\"div\", {\n css: wrapperStyles,\n \"data-ppui\": \"true\"\n }, jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref2) {\n var css = _ref2.css;\n return jsx(HeadingText, {\n size: \"sm\",\n className: css(_styles.titleStyles),\n \"data-ppui\": \"true\"\n }, title);\n }), jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref3) {\n var css = _ref3.css;\n return jsx(BodyText, {\n clampAtLine: DEFAULT_LINES_CLAMP_BODY,\n className: css(_styles.subTitleStyles),\n \"data-ppui\": \"true\"\n }, subTitle);\n }), jsx(\"div\", {\n css: _styles.buttonWrapperStyles,\n \"data-ppui\": \"true\"\n }, jsx(ClassNames, {\n \"data-ppui\": \"true\"\n }, function (_ref4) {\n var _primaryButtonOptions;\n\n var cx = _ref4.cx,\n css = _ref4.css;\n return jsx(Button, {\n onClick: primaryButtonOptions === null || primaryButtonOptions === void 0 ? void 0 : primaryButtonOptions.onClick,\n className: cx(css(_styles.primaryButtonStyles), primaryButtonOptions === null || primaryButtonOptions === void 0 ? void 0 : primaryButtonOptions.className),\n \"data-ppui\": \"true\"\n }, (_primaryButtonOptions = primaryButtonOptions === null || primaryButtonOptions === void 0 ? void 0 : primaryButtonOptions.title) !== null && _primaryButtonOptions !== void 0 ? _primaryButtonOptions : 'title');\n }), tertiaryButtonOptions && jsx(Button, _extends({\n tertiary: true\n }, tertiaryButtonOptions, {\n \"data-ppui\": \"true\"\n }), tertiaryButtonOptions.title))));\n};\n\nexport { ErrorView, styles as errorViewStyles };\n","export * from '@paypalcorp/pp-react-accordion';\nexport * from '@paypalcorp/pp-react-address-input';\nexport * from '@paypalcorp/pp-react-alert';\nexport * from '@paypalcorp/pp-react-animator';\nexport * from '@paypalcorp/pp-react-animated-pictogram';\nexport * from '@paypalcorp/pp-react-appbadge';\nexport * from '@paypalcorp/pp-react-avatar';\nexport * from '@paypalcorp/pp-react-auto-suggest';\nexport * from '@paypalcorp/pp-react-badge';\nexport * from '@paypalcorp/pp-react-banner';\nexport * from '@paypalcorp/pp-react-buttons';\nexport * from '@paypalcorp/pp-react-checkbox';\nexport * from '@paypalcorp/pp-react-coach-tip';\nexport * from '@paypalcorp/pp-react-code-input';\nexport * from '@paypalcorp/pp-react-combobox';\nexport * from '@paypalcorp/pp-react-contextual-alert';\nexport * from '@paypalcorp/pp-react-country-input';\nexport * from '@paypalcorp/pp-react-credit-card-input';\nexport * from '@paypalcorp/pp-react-currency-input';\nexport * from '@paypalcorp/pp-react-data-table';\nexport * from '@paypalcorp/pp-react-date-input';\nexport * from '@paypalcorp/pp-react-divider';\nexport * from '@paypalcorp/pp-react-dropdown-menu';\nexport * from '@paypalcorp/pp-react-flag';\nexport * from '@paypalcorp/pp-react-focus-flow';\nexport * from '@paypalcorp/pp-react-grid';\nexport * from '@paypalcorp/pp-react-hero-currency';\nexport * from '@paypalcorp/pp-react-horizontal-scroll';\nexport * from '@paypalcorp/pp-react-icon-button';\nexport * from '@paypalcorp/pp-react-icons';\nexport * from '@paypalcorp/pp-react-intl';\nexport * from '@paypalcorp/pp-react-links';\nexport * from '@paypalcorp/pp-react-loading-spinner';\nexport * from '@paypalcorp/pp-react-masked-text-input';\nexport * from '@paypalcorp/pp-react-menu';\nexport * from '@paypalcorp/pp-react-modal';\nexport * from '@paypalcorp/pp-react-overflow-menu';\nexport * from '@paypalcorp/pp-react-panel-slider';\nexport * from '@paypalcorp/pp-react-password-input';\nexport * from '@paypalcorp/pp-react-phone-input';\nexport * from '@paypalcorp/pp-react-physical-card';\nexport * from '@paypalcorp/pp-react-pill';\nexport * from '@paypalcorp/pp-react-progress-meter';\nexport * from '@paypalcorp/pp-react-progress-stepper';\nexport * from '@paypalcorp/pp-react-radio';\nexport * from '@paypalcorp/pp-react-search-input';\nexport * from '@paypalcorp/pp-react-segmented-controller';\nexport * from '@paypalcorp/pp-react-selection-group';\nexport * from '@paypalcorp/pp-react-switch';\nexport * from '@paypalcorp/pp-react-table';\nexport * from '@paypalcorp/pp-react-tabs';\nexport * from '@paypalcorp/pp-react-text';\nexport * from '@paypalcorp/pp-react-text-input';\nexport * from '@paypalcorp/pp-react-theme';\nexport * from '@paypalcorp/pp-react-card';\nexport * from '@paypalcorp/pp-react-toast';\nexport * from '@paypalcorp/pp-react-tooltip';\nexport * from '@paypalcorp/pp-react-utils';\nexport * from '@paypalcorp/pp-react-error-view';\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo, useRef, useState, useLayoutEffect } from 'react';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { math, rgba } from 'polished';\nimport { textStyles } from '@paypalcorp/pp-react-text';\nimport { utilStyles, AnimateDirection, hasNavigator, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport { IconButton } from '@paypalcorp/pp-react-icon-button';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@paypalcorp/pp-react-icons';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysColorBackgroundSurface = tokens.sysColorBackgroundSurface,\n sysBorderThicknessEmphasis = tokens.sysBorderThicknessEmphasis,\n sysSpaceXl = tokens.sysSpaceXl,\n sysColorStructureFocus = tokens.sysColorStructureFocus,\n sysMotionDurationAction = tokens.sysMotionDurationAction,\n sysMotionDurationDepart = tokens.sysMotionDurationDepart,\n sysColorPrimaryMain = tokens.sysColorPrimaryMain,\n sysSizeFieldSm = tokens.sysSizeFieldSm,\n sysSpaceLg = tokens.sysSpaceLg,\n sysSpaceMd = tokens.sysSpaceMd,\n sysSpaceJumbo = tokens.sysSpaceJumbo,\n sysBorderRadiusLg = tokens.sysBorderRadiusLg,\n sysColorPrimaryMainHover = tokens.sysColorPrimaryMainHover,\n sysColorPrimaryMainActive = tokens.sysColorPrimaryMainActive,\n sysSizeMediaSm = tokens.sysSizeMediaSm,\n sysSizeTapTargetDefault = tokens.sysSizeTapTargetDefault;\n\n var _utilStyles = utilStyles(tokens),\n elevationStyles = _utilStyles.elevationStyles,\n focusStyles = _utilStyles.focusStyles,\n slideTo = _utilStyles.slideTo;\n\n var focusAfter = focusStyles.focusAfter,\n stateFocusBorderWidthInner = focusStyles.stateFocusBorderWidthInner,\n stateFocusBorderColorInner = focusStyles.stateFocusBorderColorInner;\n\n var _textStyles = textStyles(tokens),\n textBody = _textStyles.body,\n textBodyStrong = _textStyles.bodyStrong;\n\n var tabPaddingLeft = math(\"\".concat(sysSpaceJumbo, \" + \").concat(sysSpaceXl));\n var noDisplay = css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n display: none;\\n \"])));\n var blockDisplay = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n display: block;\\n \"])));\n var tabWrapperBase = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: tabs_wrapper_base;\\n position: relative;\\n \"])));\n var base = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: tabs_base;\\n overflow-y: hidden;\\n white-space: nowrap;\\n position: relative;\\n scrollbar-width: none;\\n padding: \", \" \", \" \", \" \", \";\\n &::-webkit-scrollbar {\\n \", \"\\n }\\n \"])), sysSpaceXl, sysSpaceXl, sysSpaceXl, tabPaddingLeft, noDisplay);\n var tabsWrapper = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: tabs_wrapper;\\n display: flex;\\n float: left;\\n min-height: \", \";\\n align-items: center;\\n width: max-content;\\n [dir='rtl'] & {\\n float: right;\\n }\\n \"])), sysSizeFieldSm);\n var tabsCenter = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: tabs_center;\\n min-width: 100%;\\n width: auto;\\n min-height: \", \";\\n justify-content: center;\\n @media (max-width: \", \") {\\n width: auto;\\n justify-content: flex-start;\\n }\\n \"])), sysSizeFieldSm, sysSizeMediaSm);\n var tabsBtn = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: tabs_btn;\\n \", \"\\n padding: \", \" \", \";\\n min-height: \", \";\\n min-width: \", \";\\n max-width: \", \";\\n margin-inline-end: \", \";\\n outline: none;\\n position: relative;\\n border: none;\\n background-color: transparent;\\n white-space: normal;\\n word-wrap: break-word;\\n text-decoration: none;\\n flex-shrink: 0;\\n \", \"\\n align-items: center;\\n cursor: pointer;\\n border-radius: \", \";\\n &:last-of-type {\\n margin-inline-end: 0;\\n }\\n &:before {\\n left: 0;\\n bottom: 0;\\n right: 0;\\n position: relative;\\n \", \"\\n content: attr(data-button-text);\\n height: 0;\\n overflow: hidden;\\n visibility: hidden;\\n pointer-events: none;\\n }\\n &:after {\\n content: '';\\n position: absolute;\\n inset: 0;\\n border: none;\\n border-radius: \", \";\\n pointer-events: none;\\n }\\n &:hover {\\n text-decoration: none;\\n background: \", \";\\n &:after {\\n border: \", \" solid \", \";\\n }\\n }\\n &:active {\\n border-radius: \", \";\\n background: \", \";\\n text-decoration: none;\\n &:after {\\n border: \", \" solid \", \";\\n }\\n }\\n &:focus {\\n outline: none;\\n text-decoration: none;\\n &:after {\\n \", \"\\n transform: none;\\n transition: none;\\n }\\n }\\n &:visited {\\n text-decoration: none;\\n }\\n \"])), textBody(), sysSpaceMd, sysSpaceLg, sysSizeFieldSm, '5.25rem', '11.5rem', sysSpaceLg, blockDisplay, math(\"\".concat(sysBorderRadiusLg, \" * 2\")), blockDisplay, math(\"\".concat(sysBorderRadiusLg, \" * 2\")), sysColorBackgroundSurface, sysBorderThicknessEmphasis, sysColorPrimaryMainHover, math(\"\".concat(sysBorderRadiusLg, \" * 2\")), sysColorBackgroundSurface, sysBorderThicknessEmphasis, sysColorPrimaryMainActive, focusAfter({\n radius: math(\"\".concat(sysBorderRadiusLg, \" * 2\")),\n width: '100%',\n height: '100%',\n border: \"\".concat(stateFocusBorderWidthInner, \" solid\\n \").concat(stateFocusBorderColorInner)\n }));\n var tabsSelectedBtn = css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"\\n label: tab_selected;\\n \", \";\\n background: \", \";\\n \", \"\\n &:hover {\\n \", \";\\n text-decoration: none;\\n &:after {\\n border: \", \" solid \", \";\\n }\\n }\\n \"])), textBodyStrong({\n color: sysColorPrimaryMain\n }), sysColorBackgroundSurface, elevationStyles.level1, textBodyStrong({\n color: sysColorPrimaryMain\n }), sysBorderThicknessEmphasis, sysColorPrimaryMainHover);\n var tabsScrollBtn = css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"\\n label: tabs_scroll_btn;\\n background-color: \", \";\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n opacity: 0;\\n visibility: hidden;\\n width: \", \";\\n height: \", \";\\n top: 0;\\n \"])), sysColorBackgroundSurface, sysSizeTapTargetDefault, math(\"\".concat(sysSizeTapTargetDefault, \" * 2\")));\n var tabsScrollBtnLeft = css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"\\n label: tabs_scroll_btn_left;\\n left: 0;\\n background: linear-gradient(\\n 90deg,\\n \", \" 47.45%,\\n \", \" 100%\\n );\\n \"])), sysColorBackgroundSurface, rgba(255, 255, 255, 0));\n var tabsScrollBtnRight = css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"\\n label: tabs_scroll_btn_right;\\n right: 0;\\n background: linear-gradient(\\n 270deg,\\n \", \" 47.45%,\\n \", \" 100%\\n );\\n \"])), sysColorBackgroundSurface, rgba(255, 255, 255, 0));\n var tabsScrollBtnVisible = css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"\\n label: btn_visible;\\n visibility: visible;\\n opacity: 1;\\n transition: visibility \", \",\\n opacity \", \";\\n \"])), sysMotionDurationDepart, sysMotionDurationDepart);\n var tabsArrowIcon = css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"\\n label: tabs_arrow_icon;\\n color: \", \";\\n background: \", \";\\n \", \"\\n \"])), sysColorPrimaryMain, sysColorBackgroundSurface, elevationStyles.level1);\n var tabContent = css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"\\n label: tabs_content;\\n margin: 0 \", \" 0 \", \";\\n\\n &:focus {\\n outline: none;\\n }\\n &[aria-hidden='true'] {\\n \", \"\\n }\\n \"])), sysSpaceXl, math(\"\".concat(sysSpaceXl, \" * 3\")), noDisplay);\n var tabContentFocus = css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\"\\n label: tabs_content_focus;\\n &:focus {\\n box-shadow: 0 0 \", \"\\n \", \" \", \";\\n }\\n \"])), sysBorderThicknessEmphasis, sysBorderThicknessEmphasis, sysColorStructureFocus);\n\n var animateToDirection = function (direction) {\n var label = \"tabs_animate_\".concat(direction);\n return css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\"\\n label: \", \";\\n &:before {\\n animation: \", \" \", \" both;\\n }\\n \"])), label, slideTo(direction), sysMotionDurationAction);\n };\n\n var hideBtn = css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\"\\n label: no_scroll_buttons;\\n \", \"\\n \"])), noDisplay);\n var tabContentVisible = css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\"\\n label: tab_content_visible;\\n \", \"\\n \"])), blockDisplay);\n var tabContentHidden = css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\"\\n label: tab_content_hidden;\\n \", \"\\n \"])), noDisplay);\n var navBackground = css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\"\\n label: tab_background;\\n \", \"\\n background: \", \";\\n \"])), elevationStyles.level3, sysColorBackgroundSurface);\n return {\n tabWrapperBase: tabWrapperBase,\n base: base,\n tabsWrapper: tabsWrapper,\n tabsCenter: tabsCenter,\n tabsBtn: tabsBtn,\n tabsSelectedBtn: tabsSelectedBtn,\n tabsScrollBtn: tabsScrollBtn,\n tabsScrollBtnLeft: tabsScrollBtnLeft,\n tabsScrollBtnRight: tabsScrollBtnRight,\n tabsScrollBtnVisible: tabsScrollBtnVisible,\n tabsArrowIcon: tabsArrowIcon,\n tabContent: tabContent,\n tabContentFocus: tabContentFocus,\n animateToDirection: animateToDirection,\n hideBtn: hideBtn,\n tabContentVisible: tabContentVisible,\n tabContentHidden: tabContentHidden,\n navBackground: navBackground\n };\n}\n\nvar _excluded = [\"id\", \"tabIdx\", \"label\", \"tabGroupId\", \"panelId\", \"selected\", \"animate\", \"onClick\", \"className\"];\n\nvar Tab = function (_ref) {\n var _styles$animateToDire;\n\n var id = _ref.id,\n tabIdx = _ref.tabIdx,\n label = _ref.label,\n tabGroupId = _ref.tabGroupId,\n panelId = _ref.panelId,\n selected = _ref.selected,\n animate = _ref.animate,\n onClick = _ref.onClick,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var tabStyles = [_styles.tabsBtn, selected && _styles.tabsSelectedBtn, animate && ((_styles$animateToDire = _styles.animateToDirection) === null || _styles$animateToDire === void 0 ? void 0 : _styles$animateToDire.call(_styles, animate))];\n var focusable = selected ? 0 : -1;\n var tabId = id || \"\".concat(tabGroupId, \"-tab\").concat(parseInt(tabIdx, 10) + 1);\n return jsx(\"button\", _extends({\n \"data-tab-index\": tabIdx,\n id: tabId,\n css: tabStyles,\n className: className,\n \"aria-controls\": panelId,\n \"aria-selected\": selected,\n tabIndex: focusable,\n type: \"button\",\n role: \"tab\"\n }, rest, {\n onClick: onClick,\n \"data-button-text\": label,\n \"data-ppui\": \"true\"\n }), label);\n};\n\nvar _excluded$1 = [\"id\", \"panelId\", \"label\"];\n\nvar isRunningOnIEorEdge = function () {\n if (hasNavigator() && (/MSIE 9/i.test(navigator.userAgent) || /MSIE 10/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))) {\n return true;\n }\n\n return false;\n};\n\nvar getRefCurrent = function (myRef) {\n return (\n /* istanbul ignore next */\n myRef && myRef.current ? myRef.current : null\n );\n}; // for scrolling with transition\n\n\nvar SPEED = 25;\nvar DISTANCE = 120;\nvar STEP = 20; // eslint-disable-next-line max-statements\n\nvar Tabs = function (_ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'TabsGroup' : _ref$name,\n selectedTabIdx = _ref.selectedTabIdx,\n center = _ref.center,\n _ref$tabs = _ref.tabs,\n tabs = _ref$tabs === void 0 ? [] : _ref$tabs,\n onClick = _ref.onClick,\n className = _ref.className,\n tabClassName = _ref.tabClassName,\n tabsWrapperClassName = _ref.tabsWrapperClassName,\n children = _ref.children,\n _ref$scrollLeftLabel = _ref.scrollLeftLabel,\n scrollLeftLabel = _ref$scrollLeftLabel === void 0 ? 'scroll left' : _ref$scrollLeftLabel,\n _ref$scrollRightLabel = _ref.scrollRightLabel,\n scrollRightLabel = _ref$scrollRightLabel === void 0 ? 'scroll right' : _ref$scrollRightLabel,\n keepAlive = _ref.keepAlive,\n lazyLoad = _ref.lazyLoad,\n addBackgroundColor = _ref.addBackgroundColor;\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var navEleRef = useRef();\n var containerEleRef = useRef();\n var prevSelectedTabIdxRef = useRef(0);\n var isTabsFocusedRef = useRef(false);\n var focusedIdxRef = useRef();\n\n var _useState = useState('none'),\n _useState2 = _slicedToArray(_useState, 2),\n overflowDir = _useState2[0],\n setOverflowDir = _useState2[1];\n\n var getSelectedTabIdx = function () {\n var index = typeof selectedTabIdx === 'string' ? parseInt(selectedTabIdx, 10) : Math.floor(selectedTabIdx);\n\n if (!selectedTabIdx || !index || index >= tabs.length || index < 0) {\n return 0;\n }\n\n return index;\n };\n /* istanbul ignore next */\n\n\n var determineOverflow = function () {\n var nav = getRefCurrent(navEleRef);\n\n if (nav) {\n var tabsWrapper = nav.children[0];\n var _scroll = nav.scrollLeft;\n var navRight = Math.floor(nav.getBoundingClientRect().right);\n var tabsRight = Math.floor(tabsWrapper.getBoundingClientRect().right);\n var navLeft = Math.floor(nav.getBoundingClientRect().left);\n var tabsLeft = Math.floor(tabsWrapper.getBoundingClientRect().left) - tabsWrapper.offsetLeft;\n\n if (_scroll === 0 && navRight > tabsRight) {\n setOverflowDir('none');\n return;\n }\n\n if (tabsLeft < navLeft && navRight < tabsRight) {\n setOverflowDir('both');\n return;\n }\n\n if (_scroll === 0 && tabsRight > navRight) {\n setOverflowDir('right');\n return;\n }\n\n if (tabsLeft < navLeft) {\n setOverflowDir('left');\n return;\n }\n } // record that the function was called\n\n\n var evt = new Event('checkOverflow');\n window.dispatchEvent(evt);\n };\n\n var offsetFocus = function (offset) {\n var nav = getRefCurrent(navEleRef);\n var tabDomItems = nav.querySelectorAll('[role=\"tab\"]');\n var nextIndex = focusedIdxRef.current + offset;\n var index;\n /* istanbul ignore next */\n\n if (nextIndex === tabs.length) {\n index = 0;\n } else if (nextIndex === -1) {\n index = tabs.length - 1;\n } else {\n index = nextIndex;\n }\n\n tabDomItems[index].focus();\n tabDomItems[index].scrollIntoView({\n block: 'nearest'\n });\n focusedIdxRef.current = index;\n };\n\n var keyHandler = function (event) {\n /* istanbul ignore next */\n var KeyCode = new KeyboardCode(event.key || event.keyCode);\n var selectedIndex = getSelectedTabIdx();\n\n if (KeyCode.IS_ARROW_LEFT) {\n event.preventDefault();\n offsetFocus(-1);\n } else if (KeyCode.IS_ARROW_RIGHT) {\n event.preventDefault();\n offsetFocus(1);\n } else if (KeyCode.IS_ENTER || KeyCode.IS_SPACEBAR) {\n event.preventDefault();\n /* istanbul ignore next */\n\n if (selectedIndex !== focusedIdxRef.current) {\n onClick(event, focusedIdxRef.current);\n }\n }\n };\n\n var handleFocusOut = function (event) {\n isTabsFocusedRef.current = false;\n var newFocusedItem = event.relatedTarget;\n /* istanbul ignore next */\n\n if (!newFocusedItem || newFocusedItem.parentElement !== event.currentTarget) {\n // @ts-ignore\n document.removeEventListener('keydown', keyHandler, false); // reset focusedIdx to current selected tab\n\n focusedIdxRef.current = getSelectedTabIdx(); // add scroll arrows back when focus is out:\n\n determineOverflow();\n }\n };\n\n useLayoutEffect(function () {\n var nav = getRefCurrent(navEleRef);\n prevSelectedTabIdxRef.current = getSelectedTabIdx();\n /* istanbul ignore next */\n\n if (isTabsFocusedRef.current) {\n // @ts-ignore\n document.addEventListener('keydown', keyHandler, false);\n }\n\n nav.firstChild.addEventListener('focusout', // @ts-ignore\n handleFocusOut, false);\n return function () {\n // @ts-ignore\n document.removeEventListener('keydown', keyHandler, false);\n nav.firstChild.removeEventListener('focusout', // @ts-ignore\n handleFocusOut, false);\n };\n }, [tabs, selectedTabIdx, onClick]);\n useLayoutEffect(function () {\n var container = getRefCurrent(containerEleRef);\n var nav = getRefCurrent(navEleRef);\n var resizeObserver;\n focusedIdxRef.current = getSelectedTabIdx();\n var scrollButtons = container.querySelectorAll(\"[data-id=\\\"scroll-btn\\\"]\");\n\n if (!isRunningOnIEorEdge()) {\n determineOverflow(); // Check for overflow after window resize:\n\n /* istanbul ignore next */\n\n if (window.ResizeObserver) {\n resizeObserver = new ResizeObserver(function () {\n determineOverflow();\n });\n resizeObserver.observe(nav);\n } // adjust left/right arrow buttons height tof the tabs wrapper.\n\n\n var tabsWrapper = nav.children[0];\n /* istanbul ignore next */\n\n var btnHeight = (tabsWrapper.offsetHeight + tabsWrapper.offsetTop * 2).toString();\n /* istanbul ignore next */\n\n if (scrollButtons && tabsWrapper.offsetHeight !== scrollButtons[0].offsetHeight) {\n scrollButtons[0].style.height = \"\".concat(btnHeight, \"px\");\n scrollButtons[1].style.height = \"\".concat(btnHeight, \"px\");\n }\n }\n\n return function () {\n /* istanbul ignore next */\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, []);\n\n var handleClick = function (event) {\n var nav = getRefCurrent(navEleRef);\n var tabDomItems = nav.querySelectorAll('[role=\"tab\"]');\n isTabsFocusedRef.current = false;\n tabDomItems[focusedIdxRef.current].blur();\n var tabIdxClicked = parseInt(event.currentTarget.getAttribute('data-tab-index'), 10); // This is tested, but coverage not registering it\n\n /* istanbul ignore next */\n\n if (tabIdxClicked) {\n focusedIdxRef.current = tabIdxClicked;\n }\n\n onClick(event, tabIdxClicked);\n };\n\n var handleFocus = function (event) {\n isTabsFocusedRef.current = true;\n var prevFocusedItem = event.relatedTarget;\n\n if (!prevFocusedItem || prevFocusedItem.parentElement !== event.currentTarget) {\n // @ts-ignore\n document.addEventListener('keydown', keyHandler, false); // remove arrows when navigating with keyboard:\n\n setOverflowDir('none');\n }\n };\n\n var handleTouchScroll = function () {\n var isScrolling;\n window.clearTimeout(isScrolling);\n /* istanbul ignore next */\n\n isScrolling = setTimeout(function () {\n determineOverflow();\n }, 15);\n };\n /* istanbul ignore next */\n\n\n var scroll = function (direction) {\n var nav = getRefCurrent(navEleRef); // scroll with transition\n\n var scrollAmount = 0;\n var slideTimer = window.setInterval(function () {\n if (direction === 'right') {\n nav.scrollLeft += STEP;\n } else {\n nav.scrollLeft -= STEP;\n }\n\n scrollAmount += STEP;\n\n if (scrollAmount >= DISTANCE) {\n window.clearInterval(slideTimer);\n }\n }, SPEED);\n setTimeout(function () {\n determineOverflow();\n }, 150); // record that scroll event was called\n\n var evt = new Event('tabsScrolled');\n window.dispatchEvent(evt);\n };\n\n var selectedIndex = getSelectedTabIdx();\n var leftScrollCssVal = [_styles.tabsScrollBtn, _styles.tabsScrollBtnLeft,\n /* istanbul ignore next */\n (overflowDir === 'left' || overflowDir === 'both') && _styles.tabsScrollBtnVisible, isRunningOnIEorEdge() && _styles.hideBtn];\n var rightScrollCssVal = [_styles.tabsScrollBtn, _styles.tabsScrollBtnRight,\n /* istanbul ignore next */\n (overflowDir === 'right' || overflowDir === 'both') && _styles.tabsScrollBtnVisible, isRunningOnIEorEdge() && _styles.hideBtn];\n var scrollButtonFocus = -1;\n var selectedId;\n var animateDirection = null;\n var tabItems = tabs.map(function (tab, index) {\n var id = tab.id,\n panelId = tab.panelId,\n label = tab.label,\n otherTabProps = _objectWithoutProperties(tab, _excluded$1); // update animation (only on the selected tab)\n\n\n if (index === selectedIndex) {\n selectedId = tab.id || \"\".concat(name, \"-tab\").concat(index + 1);\n\n if (prevSelectedTabIdxRef.current > index) {\n animateDirection = AnimateDirection.LEFT;\n } else if (prevSelectedTabIdxRef.current < index) {\n animateDirection = AnimateDirection.RIGHT;\n }\n }\n\n return jsx(Tab, _extends({\n key: \"\".concat(name, \"-tab\").concat(index + 1),\n id: id,\n tabIdx: index.toString(),\n label: label,\n tabGroupId: name,\n panelId: panelId,\n selected: index === selectedIndex,\n animate: animateDirection,\n onClick: handleClick,\n className: tabClassName\n }, otherTabProps, {\n \"data-ppui\": \"true\"\n }));\n }); // Get selected tab panel and update selected tab panel props\n\n var tabContentItem;\n\n if (keepAlive || lazyLoad) {\n tabContentItem = React.Children.toArray(children).map(function (_panel, idx) {\n var isSelected = selectedIndex === idx;\n /* istanbul ignore next */\n\n return React.cloneElement(_panel, {\n hidden: !isSelected,\n tabId: isSelected ? selectedId : undefined,\n visible: keepAlive ? true : isSelected\n });\n });\n } else {\n var tabPanel = React.Children.toArray(children).filter(function (_panel, idx) {\n return selectedIndex === idx;\n })[0];\n tabContentItem = React.cloneElement(tabPanel, {\n tabId: selectedId,\n hidden: false\n });\n }\n\n var otherIconButtonAttr = {\n buttonType: 'secondary',\n css: _styles.tabsArrowIcon\n };\n return jsx(\"div\", {\n ref: containerEleRef,\n id: name,\n css: _styles.tabWrapperBase,\n className: className,\n \"data-ppui-info\": \"tabs_3.7.1\"\n }, jsx(\"nav\", {\n css: [_styles.base, addBackgroundColor && _styles.navBackground],\n id: \"\".concat(name, \"-nav\"),\n ref: navEleRef,\n onScroll: function onScroll() {\n return handleTouchScroll();\n },\n \"data-ppui\": \"true\"\n }, jsx(\"div\", {\n id: \"\".concat(name, \"-tabs\"),\n className: tabsWrapperClassName,\n css: [_styles.tabsWrapper, center && _styles.tabsCenter],\n role: \"tablist\",\n onFocus: function onFocus(e) {\n return handleFocus(e);\n },\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n } // remove focus on click\n ,\n \"data-ppui\": \"true\"\n }, tabItems)), jsx(\"span\", {\n \"data-id\": \"scroll-btn\",\n css: leftScrollCssVal,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, _extends({\n inverse: true,\n svgIconComponent: ArrowLeftIcon,\n \"aria-label\": scrollLeftLabel,\n tabIndex: scrollButtonFocus,\n onClick: function () {\n return scroll('left');\n }\n }, otherIconButtonAttr, {\n \"data-ppui\": \"true\"\n }), scrollLeftLabel)), jsx(\"span\", {\n \"data-id\": \"scroll-btn\",\n css: rightScrollCssVal,\n \"data-ppui\": \"true\"\n }, jsx(IconButton, _extends({\n inverse: true,\n svgIconComponent: ArrowRightIcon,\n tabIndex: scrollButtonFocus,\n onClick: function () {\n return scroll('right');\n }\n }, otherIconButtonAttr, {\n \"data-ppui\": \"true\"\n }), scrollRightLabel)), tabContentItem);\n};\n\nvar _excluded$2 = [\"id\", \"tabId\", \"hidden\", \"className\", \"visible\", \"children\"];\n\nvar TabPanel = function (_ref) {\n var id = _ref.id,\n tabId = _ref.tabId,\n hidden = _ref.hidden,\n className = _ref.className,\n _ref$visible = _ref.visible,\n visible = _ref$visible === void 0 ? true : _ref$visible,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, _excluded$2);\n\n var hasMouseClickFocus = useRef(false);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mouseFocus = _useState2[0],\n updateMouseFocus = _useState2[1];\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]); // Ref variable to determine whether to render the component or not.\n\n\n var hasRendered = useRef(visible);\n /* istanbul ignore next */\n\n if (visible && !hasRendered.current) {\n hasRendered.current = true;\n }\n /* istanbul ignore next */\n\n\n if (!hasRendered.current) {\n // Do not re-render the TabPanel when its already present in the DOM.\n return null;\n } // to prevent tab panel from getting focus on mouse-click\n\n\n var tabContentStyles = [_styles.tabContent, !mouseFocus && _styles.tabContentFocus,\n /* istanbul ignore next */\n visible ? _styles.tabContentVisible : _styles.tabContentHidden];\n return jsx(\"div\", _extends({\n id: id,\n css: tabContentStyles,\n className: className,\n \"aria-labelledby\": tabId,\n \"aria-hidden\": hidden,\n tabIndex: 0,\n role: \"tabpanel\",\n onFocus: function handleFocus() {\n var hasClickFocus = hasMouseClickFocus.current ? true : false;\n updateMouseFocus(hasClickFocus);\n hasMouseClickFocus.current = false;\n },\n onMouseDown: function handleMouseDown() {\n hasMouseClickFocus.current = true;\n }\n }, rest, {\n \"data-ppui\": \"true\"\n }), children);\n};\n\nexport { Tab, TabPanel, Tabs, styles as tabsStyles };\n","/**\n * https://www.msmaster.qa.paypal.com/elmo/experiment/127849\n */\n\nimport * as pxp from '../lib/pxp'\n\nexport function isWebIncreaseTopContacts() {\n return pxp.isTreatment('Trmt_p2p_web_increase_top_contacts')\n}\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useMemo, useRef, useLayoutEffect } from 'react';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport { css, useTheme, jsx } from '@emotion/react';\nimport { utilStyles, AnimateDirection, KeyboardCode } from '@paypalcorp/pp-react-utils';\nimport { textStyles } from '@paypalcorp/pp-react-text';\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;\nfunction styles(tokens) {\n /* istanbul ignore next */\n if (!Object.keys(tokens).length) {\n console.warn('Missing Emotion theme. Use ThemeProvider from @emotion/react to pass a valid theme from pp-react.');\n return {};\n }\n\n var sysBorderRadiusInteractive = tokens.sysBorderRadiusInteractive,\n sysColorBackgroundAlt = tokens.sysColorBackgroundAlt,\n sysColorBackgroundMediumContrast = tokens.sysColorBackgroundMediumContrast,\n sysColorPrimaryContrast = tokens.sysColorPrimaryContrast,\n sysColorPrimaryMain = tokens.sysColorPrimaryMain,\n sysColorStructureFocus = tokens.sysColorStructureFocus,\n sysElevationLevel1Yoffset = tokens.sysElevationLevel1Yoffset,\n sysMotionDurationAction = tokens.sysMotionDurationAction,\n sysMotionDurationHover = tokens.sysMotionDurationHover,\n sysSpaceSm = tokens.sysSpaceSm,\n sysSpaceTiny = tokens.sysSpaceTiny;\n\n var _utilStyles = utilStyles(tokens),\n focusStyles = _utilStyles.focusStyles,\n slideTo = _utilStyles.slideTo,\n variables = _utilStyles.variables;\n\n var ppuiEaseInOut = variables.ppuiEaseInOut;\n\n var _textStyles = textStyles(tokens),\n textCaption = _textStyles.caption;\n\n var offsetFocusAfter = focusStyles.offsetFocusAfter;\n /* istanbul ignore next */\n\n var borderRadius = sysBorderRadiusInteractive === '50%' ? '64rem' : sysBorderRadiusInteractive;\n\n /**\n * Use direction to do slide animation\n * @param direction AnimateDirection\n * @returns SerializedStyles\n */\n var animateToDirection = function (direction) {\n var label = \"animate_direction_\".concat(direction);\n return css(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n label: \", \";\\n animation: \", \" \", \"\\n \", \";\\n \"])), label, slideTo(direction), sysMotionDurationAction, ppuiEaseInOut);\n };\n\n var tabWrapBaseStyles = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n label: segmented_controller_tab_wrap_base;\\n background-color: \", \";\\n border-radius: \", \";\\n display: flex;\\n align-items: stretch;\\n justify-content: flex-start;\\n \"])), sysColorBackgroundAlt, borderRadius);\n var tabStyles = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"\\n label: segmented_controller_tab;\\n border-radius: inherit;\\n position: relative;\\n background-color: transparent;\\n width: 100%;\\n border: 0.0625rem solid transparent;\\n padding: \", \";\\n min-width: 0;\\n cursor: pointer;\\n \", \"\\n\\n &:focus {\\n outline: none;\\n &:after {\\n \", \"\\n }\\n }\\n\\n &:active {\\n outline: none;\\n &:after {\\n border: none;\\n box-shadow: none;\\n }\\n }\\n\\n &:hover {\\n &:not(:focus) {\\n span {\\n border-color: \", \";\\n transition: border-color \", \" \", \";\\n }\\n }\\n }\\n\\n &[aria-selected='true'] {\\n label: tab_aria_selected;\\n \", \"\\n -webkit-text-stroke-width: \", \";\\n\\n span {\\n color: \", \";\\n background-color: \", \";\\n }\\n }\\n \"])), sysSpaceTiny, textCaption(), offsetFocusAfter({\n verticalOffset: sysElevationLevel1Yoffset,\n horizontalOffset: sysElevationLevel1Yoffset\n }), sysColorStructureFocus, sysMotionDurationHover, ppuiEaseInOut, textCaption(), '0.0421875rem', sysColorPrimaryMain, sysColorPrimaryContrast);\n var tabTitleStyles = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"\\n label: tab_title_base;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n word-break: break-all;\\n border: 0.0625rem solid transparent;\\n padding: \", \";\\n border-radius: inherit;\\n color: \", \";\\n pointer-events: none;\\n \"])), sysSpaceSm, sysColorBackgroundMediumContrast);\n var tabContentStyles = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"\\n label: tab_content;\\n\\n &[aria-hidden='true'] {\\n display: none;\\n }\\n \"])));\n var tabContentVisible = css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"\\n label: tab_content_visible;\\n display: block;\\n \"])));\n var tabContentHidden = css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"\\n label: tab_content_hidden;\\n display: none;\\n \"])));\n return {\n animateToDirection: animateToDirection,\n tabWrapBaseStyles: tabWrapBaseStyles,\n tabStyles: tabStyles,\n tabTitleStyles: tabTitleStyles,\n tabContentStyles: tabContentStyles,\n tabContentVisible: tabContentVisible,\n tabContentHidden: tabContentHidden\n };\n}\n\nvar _excluded = [\"id\", \"tabIdx\", \"label\", \"segmentedControllerId\", \"panelId\", \"selected\", \"animate\", \"onClick\", \"className\"];\n\nvar SegmentedControllerTab = function (_ref) {\n var _styles$animateToDire;\n\n var id = _ref.id,\n tabIdx = _ref.tabIdx,\n label = _ref.label,\n segmentedControllerId = _ref.segmentedControllerId,\n panelId = _ref.panelId,\n selected = _ref.selected,\n animate = _ref.animate,\n onClick = _ref.onClick,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var focusable = selected ? 0 : -1;\n var tabId = id || \"\".concat(segmentedControllerId, \"-tab\").concat(parseInt(tabIdx, 10) + 1);\n var tabStyles = [_styles.tabStyles, animate && ((_styles$animateToDire = _styles.animateToDirection) === null || _styles$animateToDire === void 0 ? void 0 : _styles$animateToDire.call(_styles, animate))];\n return jsx(\"button\", _extends({\n \"data-tab-index\": tabIdx,\n id: tabId,\n css: tabStyles,\n className: className,\n \"aria-controls\": panelId,\n \"aria-selected\": selected,\n tabIndex: focusable,\n type: \"button\",\n role: \"tab\"\n }, rest, {\n onClick: onClick,\n \"data-ppui\": \"true\"\n }), jsx(\"span\", {\n css: _styles.tabTitleStyles,\n \"data-ppui\": \"true\"\n }, label));\n};\n\nvar _excluded$1 = [\"id\", \"panelId\", \"label\"];\n\nvar getRefCurrent = function (myRef) {\n return (\n /* istanbul ignore next */\n myRef && myRef.current ? myRef.current : null\n );\n};\n\nvar SegmentedControllerTabs = function (_ref) {\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? 'segmentedController' : _ref$name,\n selectedTabIdx = _ref.selectedTabIdx,\n _ref$tabs = _ref.tabs,\n tabs = _ref$tabs === void 0 ? [] : _ref$tabs,\n onClick = _ref.onClick,\n className = _ref.className,\n tabClassName = _ref.tabClassName,\n tabsWrapperClassName = _ref.tabsWrapperClassName,\n keepAlive = _ref.keepAlive,\n lazyLoad = _ref.lazyLoad,\n children = _ref.children;\n\n /* istanbul ignore next */\n if (!onClick) {\n console.warn('Required prop `onClick` is missing');\n }\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]);\n\n var containerEleRef = useRef();\n var prevSelectedTabIdxRef = useRef(0);\n var isTabsFocusedRef = useRef(false);\n var focusedIdxRef = useRef();\n\n var getSelectedTabIdx = function () {\n var index = Math.floor(selectedTabIdx);\n\n if (!selectedTabIdx || !index || index >= tabs.length || index < 0) {\n return 0;\n }\n\n return index;\n };\n\n var offsetFocus = function (offset) {\n var container = getRefCurrent(containerEleRef);\n var tabDomItems = container.querySelectorAll('[role=\"tab\"]');\n var nextIndex = focusedIdxRef.current + offset;\n var index;\n /* istanbul ignore next */\n\n if (nextIndex === tabs.length) {\n index = 0;\n } else if (nextIndex === -1) {\n index = tabs.length - 1;\n } else {\n index = nextIndex;\n }\n\n tabDomItems[index].focus();\n focusedIdxRef.current = index;\n };\n\n var keyHandler = function (event) {\n if (!isTabsFocusedRef.current) {\n return;\n }\n\n var selectedIndex = getSelectedTabIdx();\n /* istanbul ignore next */\n\n var KeyCode = new KeyboardCode(event.key || event.keyCode);\n\n if (KeyCode.IS_ARROW_LEFT) {\n offsetFocus(-1);\n } else if (KeyCode.IS_ARROW_RIGHT) {\n offsetFocus(1);\n } else if (KeyCode.IS_ENTER || KeyCode.IS_SPACEBAR) {\n /* istanbul ignore next */\n if (selectedIndex !== focusedIdxRef.current) {\n onClick(event, focusedIdxRef.current);\n }\n }\n };\n\n useLayoutEffect(function () {\n prevSelectedTabIdxRef.current = getSelectedTabIdx();\n }, [tabs, selectedTabIdx, onClick]);\n useLayoutEffect(function () {\n // For the first time during initialisation\n focusedIdxRef.current = getSelectedTabIdx();\n }, []);\n\n var handleClick = function (event) {\n var tabIdxClicked = parseInt(event.currentTarget.getAttribute('data-tab-index'), 10); // This is tested, but coverage not registering it\n\n /* istanbul ignore next */\n\n if (tabIdxClicked) {\n focusedIdxRef.current = tabIdxClicked;\n }\n\n onClick(event, tabIdxClicked);\n };\n\n var selectedIndex = getSelectedTabIdx();\n var selectedId;\n var tabItems = tabs.map(function (tabProps, index) {\n var id = tabProps.id,\n panelId = tabProps.panelId,\n label = tabProps.label,\n rest = _objectWithoutProperties(tabProps, _excluded$1);\n\n var keyIdentifier = \"\".concat(name, \"-tab\").concat(index + 1);\n var animateDirection = null; // update animation (only on the selected tab)\n\n if (index === selectedIndex) {\n selectedId = id || keyIdentifier;\n\n if (prevSelectedTabIdxRef.current > index) {\n animateDirection = AnimateDirection.LEFT;\n } else if (prevSelectedTabIdxRef.current < index) {\n animateDirection = AnimateDirection.RIGHT;\n }\n }\n\n return jsx(SegmentedControllerTab, _extends({\n key: keyIdentifier,\n id: id,\n tabIdx: index.toString(),\n label: label,\n segmentedControllerId: name,\n panelId: panelId,\n selected: index === selectedIndex,\n animate: animateDirection,\n onClick: handleClick,\n className: tabClassName\n }, rest, {\n \"data-ppui\": \"true\"\n }));\n });\n var tabContent = null;\n\n if (keepAlive || lazyLoad) {\n tabContent = React.Children.toArray(children).map(function (_panel, index) {\n var isSelected = selectedIndex === index;\n return React.cloneElement(_panel, {\n hidden: !isSelected,\n tabId: isSelected ? selectedId : undefined,\n visible: keepAlive ? true : isSelected\n });\n });\n } else {\n var tabPanel = React.Children.toArray(children).filter(function (_panel, index) {\n return selectedIndex === index;\n })[0];\n tabContent = React.cloneElement(tabPanel, {\n tabId: selectedId,\n hidden: false\n });\n }\n\n return jsx(\"div\", {\n ref: containerEleRef,\n id: name,\n className: className,\n \"data-ppui-info\": \"segmented-controller_2.6.6\"\n }, jsx(\"div\", {\n id: \"\".concat(name, \"-tabs\"),\n css: _styles.tabWrapBaseStyles,\n className: tabsWrapperClassName,\n role: \"tablist\",\n onFocus: function handleFocus() {\n isTabsFocusedRef.current = true;\n },\n onBlur: function handleFocusOut() {\n isTabsFocusedRef.current = false;\n },\n onKeyDown: function onKeyDown(evt) {\n return keyHandler(evt);\n },\n \"data-ppui\": \"true\"\n }, tabItems), tabContent);\n};\n\nvar _excluded$2 = [\"id\", \"tabId\", \"className\", \"hidden\", \"children\", \"visible\"];\n\nvar SegmentedControllerPanel = function (_ref) {\n var id = _ref.id,\n tabId = _ref.tabId,\n className = _ref.className,\n hidden = _ref.hidden,\n children = _ref.children,\n _ref$visible = _ref.visible,\n visible = _ref$visible === void 0 ? true : _ref$visible,\n rest = _objectWithoutProperties(_ref, _excluded$2);\n\n var tokens = useTheme();\n\n var _styles = useMemo(function () {\n return styles(tokens);\n }, [tokens]); // MutableRefObject variable to determine whether to render the component or not.\n\n\n var hasRendered = useRef(visible);\n /* istanbul ignore next */\n\n if (visible && !hasRendered.current) {\n hasRendered.current = true;\n }\n /* istanbul ignore next */\n\n\n if (!hasRendered.current) {\n // Do not re-render the Panel when its already present in the DOM.\n return null;\n }\n\n var panelContentStyles = [_styles.tabContentStyles,\n /* istanbul ignore next */\n visible ? _styles.tabContentVisible : _styles.tabContentHidden];\n return jsx(\"div\", _extends({\n id: id,\n css: panelContentStyles,\n className: className,\n \"aria-labelledby\": tabId,\n \"aria-hidden\": hidden,\n tabIndex: 0,\n role: \"tabpanel\"\n }, rest, {\n \"data-ppui\": \"true\"\n }), children);\n};\n\nexport { SegmentedControllerTabs as SegmentedController, SegmentedControllerPanel, SegmentedControllerTab, styles as segmentedControllerStyles };\n","// @flow\nimport React from 'react'\nimport { css } from 'glamor'\nimport { smallAndSmaller } from 'lib/styles/media-queries'\nimport { Button } from '@paypalcorp/pp-react'\nimport classNames from 'classnames'\n\ntype Props = {\n children: any,\n css: any,\n className: string,\n size: string,\n disabled: Boolean,\n}\n\nconst staticBasicStyles = css({\n marginTop: '30px',\n [smallAndSmaller]: {\n position: 'fixed',\n bottom: 0,\n width: '90%',\n margin: '0 0 1rem 0',\n left: '50%',\n transform: 'translate(-50%, 0)',\n zIndex: 99,\n },\n}).toString()\n\nconst disabledStyles = css({\n color: '#cbd2d6',\n background: '#f5f6f8',\n borderColor: '#cbd2d6',\n cursor: 'not-allowed',\n outline: 'none',\n\n [smallAndSmaller]: {\n display: 'none',\n },\n}).toString()\n\nfunction NextButton({\n children,\n css: styles,\n className,\n size = 'lg',\n ...props\n}: Props) {\n const { disabled: shouldStyleDisable, ...allOtherProps } = props\n return (\n \n {children}\n \n )\n}\n\nexport default NextButton\n","// @flow\n\nexport function getSuggestedId(suggestedSlugs: Object): string {\n let value = ''\n\n if (\n suggestedSlugs &&\n suggestedSlugs.hasOwnProperty('preferred_id_available')\n ) {\n if (suggestedSlugs.preferred_id_available) {\n value = suggestedSlugs.preferred_id\n } else {\n value = suggestedSlugs.suggested_ids[0]\n if (value.length > 20) {\n value = suggestedSlugs.suggested_ids[1]\n }\n }\n }\n return value\n}\n\nexport function shouldShowConsent(\n consentType: Object,\n searchTrackingDetails: Object\n): boolean {\n if (consentType === '') {\n return false\n }\n if (searchTrackingDetails.impression_url) {\n return true\n }\n return false\n}\n","import * as pxp from '../lib/pxp'\n\n/**\n * Treatment:\n * https://internal.msmaster.qa.paypal.com/elmo/experiment/127548\n *\n * https://engineering.paypalcorp.com/confluence/display/P2PConsumer/%5BP2P%5D+%5BQ2+2023%5D+Show+Full+Content+in+Search+Prompt+Bar\n */\n\nexport function hasShowFullSearchPromptTrmt() {\n return pxp.isTreatment('Trmt_p2p_show_full_prompt_in_search_input')\n}\n","import glamorous from 'glamorous'\n\nconst StyledInput = glamorous.input({\n textRendering: `auto`,\n\n letterSpacing: `normal`,\n wordSpacing: `normal`,\n textTransform: `none`,\n textIndent: `0px`,\n textShadow: `none`,\n display: `inline-block`,\n textAlign: `center`,\n margin: `0em`,\n cursor: `text`,\n padding: `0`,\n backgroundColor: `transparent`,\n border: 'none',\n outline: 'none',\n\n // disable this so no weird phone screen jumps\n // width: `100%`,\n\n whiteSpace: `nowrap`,\n overflow: `hidden`,\n textOverflow: `ellipsis`,\n fontWeight: `400`,\n fontSize: `15px`,\n height: `44px`,\n width: '75%',\n color: `#2c2e2f`,\n})\n\nexport default StyledInput\n","import glamorous from 'glamorous'\nimport { css } from 'glamor'\n\nconst Wrapper = glamorous.div(\n {\n margin: '0 auto',\n position: 'relative',\n border: '1px solid #B7BCBF',\n borderRadius: 5,\n transition: 'all 0.3s ease-out',\n textAlign: `center`,\n boxSizing: `border-box`,\n backgroundColor: `#fff`,\n width: `100%`,\n whiteSpace: `nowrap`,\n padding: `0 11px`,\n fontSize: `15px`,\n lineHeight: `44px`,\n maxHeight: `46px`,\n },\n props => {\n const newStyles = {}\n const { isFocused, isBadInput } = props\n\n if (isFocused) {\n newStyles.border = '1px solid #0070BA'\n }\n\n if (isBadInput) {\n const shakeAnimation = {\n '16.7%': {\n transform: 'translateX(-10px)',\n },\n '33.3%': {\n transform: 'translateX(10px)',\n },\n '50%': {\n transform: 'translateX(-5px)',\n },\n '66.7%': {\n transform: 'translateX(5px)',\n },\n '83.3%': {\n transform: 'translateX(-2px)',\n },\n }\n\n newStyles.animation = `${css.keyframes(shakeAnimation)} 0.5s ease-out`\n newStyles.border = '1px solid #D20000'\n }\n\n return newStyles\n }\n)\n\nexport default Wrapper\n","import glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport serverProps from '../../../utils/serverProps'\nimport _ from 'lodash'\n\nconst CDN_HOST_NAME = _.get(serverProps, 'cdnHostName')\n\nconst spin = {\n from: {\n transform: 'rotate(0deg)',\n },\n to: {\n transform: 'rotate(360deg)',\n },\n}\n\nconst check = 'check.png'\nconst spinner = 'claim_spinner.png'\nconst critical = 'critical.png'\n\nconst base = `${CDN_HOST_NAME}/digitalassets/c/consumer/paypalme/networkidentity/`\n\nconst Icon = glamorous.div(\n {\n textAlign: 'left',\n whiteSpace: 'nowrap',\n position: 'absolute',\n width: 24,\n height: 24,\n top: 11,\n right: '9px /* @noflip */',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n pointerEvents: 'none',\n display: 'block',\n },\n props => {\n const modifiedStyles = {}\n\n const {\n isTyping,\n isAvailable,\n grabStore: { state: { shouldShowLessCharErrorMsg } = {} } = {},\n } = props\n\n if (isTyping) {\n modifiedStyles.backgroundImage = `url('${base}${spinner}')`\n modifiedStyles.animation = `${css.keyframes(spin)} 1s linear infinite`\n } else if (isAvailable === false) {\n modifiedStyles.backgroundImage = `url('${base}${critical}')`\n } else if (isAvailable === true) {\n modifiedStyles.backgroundImage = `url('${base}${check}')`\n } else if (shouldShowLessCharErrorMsg) {\n modifiedStyles.backgroundImage = `url('${base}${critical}')`\n }\n\n return modifiedStyles\n }\n)\n\nexport default Icon\n","// @flow\n\nimport React, { Component } from 'react'\nimport glamorous from 'glamorous'\nimport PropTypes from 'prop-types'\nimport StyledInput from './styled-input'\nimport Wrapper from './wrapper'\nimport Icon from './icon'\n\ntype Props = {\n showError: boolean,\n updateSlug: (value: string) => void,\n checkSlugAvailability: PropTypes.func,\n slugValue: string,\n isSlugAvailable?: ?boolean,\n isTyping: ?boolean,\n}\n\ntype State = {\n isBadInput: boolean,\n isFocused: boolean,\n}\n\nexport default class Typing extends Component {\n state = {\n isBadInput: false,\n isFocused: false,\n }\n\n onFocus = () => {\n this.setState({\n isFocused: true,\n })\n }\n\n onBlur = () => {\n this.setState({\n isFocused: false,\n })\n }\n\n toggleBadInput = (isBadInput: boolean) => {\n this.setState({\n isBadInput,\n })\n }\n\n onChange = (e: SyntheticInputEvent) => {\n const value = e.target.value\n const validKeyPress = this.validate(value)\n\n if (validKeyPress) {\n this.props.updateSlug(value)\n }\n\n this.debouncedSlugCheck()\n }\n\n /* This is to prevent tons of XHR calls to the slug availability call:\n * If the timeout exists and this slug check is being called again,\n * then clear the existing timeout, and create a new one.\n */\n\n timeout = setTimeout(() => {}, 0)\n debouncedSlugCheck = () => {\n const createTimeout = () => {\n this.timeout = setTimeout(() => this.props.checkSlugAvailability(), 500)\n }\n\n clearTimeout(this.timeout)\n createTimeout()\n }\n\n validate(value: string) {\n const SLUG_VALIDATION_REGEX = /^[a-z0-9]*$/i\n\n if (SLUG_VALIDATION_REGEX.test(value)) {\n return true\n }\n\n // to prevent animation freakouts on key mashing\n if (!this.state.isBadInput) {\n this.toggleBadInput(true)\n setTimeout(() => {\n this.toggleBadInput(false)\n }, 1000)\n }\n\n return false\n }\n\n render() {\n const { onFocus, onBlur, onChange } = this\n const maxChars = 20\n return (\n \n \n \n \n \n \n )\n }\n}\n","import React from 'react'\nimport glamorous from 'glamorous'\nimport FlipMove from 'react-flip-move'\nimport content from 'pp-react-l10n'\n\nconst i18n = content('transfer/searchConsent')\n\nconst MessageContainer = glamorous.div({\n marginTop: '5px',\n fontSize: '13px',\n color: '#6C7378',\n textAlign: 'center',\n minHeight: '36px',\n})\n\ntype Props = {\n completionStats: {\n empty: ?boolean,\n isTyping: ?boolean,\n isSlugAvailable: ?boolean,\n reason: ?string,\n },\n showError: boolean,\n}\n\nexport default class Availability extends React.Component {\n render() {\n const { completionStats } = this.props\n\n let message = ''\n if (!completionStats.empty && !completionStats.isTyping) {\n const reason = completionStats.reason || 'unknown'\n const reasonForNo = i18n(`label.${reason}`)\n message = completionStats.isSlugAvailable\n ? i18n('label.slugavailable')\n : reasonForNo\n }\n\n return (\n \n {message}\n \n )\n }\n}\n","// @flow\n\nimport React, { Component, Fragment } from 'react'\nimport content from 'pp-react-l10n'\nimport glamorous, { Div } from 'glamorous'\nimport PropTypes from 'prop-types'\nimport Typing from './typing'\nimport Availability from './availability'\nimport { post } from '../../../calculator/lib/xhr'\nimport * as Actions from '../../actions/Actions'\nimport { ActionTypes as types } from '../../constants'\nimport { trackConsentClick } from '../../utils/directory-search-analytics'\n\nconst i18n = content('transfer/searchConsent')\n\ntype Props = {\n dispatch: PropTypes.func,\n handleClose: PropTypes.func,\n updatePrivacySettings: PropTypes.func,\n showSuccess: PropTypes.func,\n defaultValue: string,\n country: string,\n isOldppMeUser: boolean,\n consentType: string,\n}\n\ntype State = {\n isTyping: boolean,\n value: string,\n isSlugAvailable: boolean,\n showError: boolean,\n empty: boolean,\n reason: string,\n}\n\nconst Button = glamorous.button('ppvx_btn', {\n marginBottom: '20px',\n padding: '10px 60px',\n marginTop: '20px',\n})\n\nexport default class TypingAndAvailability extends Component {\n state = {\n isTyping: false,\n value: this.props.defaultValue,\n isSlugAvailable: true,\n showError: false,\n empty: true,\n reason: '',\n }\n\n static defaultProps = {\n value: '',\n }\n\n createSlug = () => {\n const body = {\n id: this.state.value,\n }\n const { dispatch, handleClose, showSuccess } = this.props\n dispatch({ type: types.PPME.CREATE_PROFILE })\n post('/myaccount/transfer/ppme/', body)\n .then(() => {\n dispatch({\n type: types.PPME.CREATED_PROFILE,\n })\n // close the overpanel in 2 seconds\n setTimeout(() => handleClose(), 2000)\n showSuccess()\n })\n .catch(Actions.handleError(dispatch))\n }\n\n submitSlugCreation = () => {\n if (this.state.isTyping) {\n return\n }\n if (!this.state.isSlugAvailable) {\n this.setState({\n showError: true,\n })\n } else {\n this.createSlug()\n }\n }\n\n handleClick = () => {\n const { updatePrivacySettings, isOldppMeUser, consentType } = this.props\n trackConsentClick(consentType, 'AGREE')\n if (isOldppMeUser) {\n updatePrivacySettings(isOldppMeUser)\n } else {\n this.submitSlugCreation()\n }\n }\n\n updateSlug = (value: string) => {\n this.setState({\n empty: false,\n value,\n isTyping: true,\n showError: false,\n })\n }\n\n checkSlugAvailability = () => {\n if (this.state.value.length === 0) {\n this.setState({\n isSlugAvailable: undefined,\n reason: undefined,\n isTyping: undefined,\n empty: true,\n })\n return\n }\n\n if (this.state.value.length < 3) {\n this.setState({\n isSlugAvailable: false,\n reason: 'TOO_SHORT',\n isTyping: false,\n })\n return\n }\n\n const body = {\n preferred_id: this.state.value,\n }\n\n post('/myaccount/transfer/ppme/suggestions', body)\n .then(response => {\n const suggestions = response.data ? response.data.suggestions : {}\n const {\n preferred_id_available = false,\n unavailable_reason_code = '',\n } = suggestions\n this.setState({\n isSlugAvailable: preferred_id_available,\n reason: unavailable_reason_code,\n isTyping: false,\n })\n })\n .catch(Actions.handleError(this.props.dispatch))\n }\n\n render() {\n const completionStats = {\n isTyping: this.state.isTyping,\n isSlugAvailable: this.state.isSlugAvailable,\n empty: this.state.empty,\n reason: this.state.reason,\n }\n const { isOldppMeUser } = this.props\n const buttonKey = isOldppMeUser ? 'button.agree' : 'button.next'\n\n return (\n \n {!isOldppMeUser && (\n \n

{i18n('body.yourUsername')}

\n \n \n
\n )}\n \n {i18n.html('body.slugcertification_generic', {\n country: this.props.country || 'us',\n termsAndConditionsHref: '/webapps/mpp/ua/paypalme-tnc',\n privacyUrl: `/${this.props.country ||\n 'us'}/webapps/mpp/ua/privacy-full`,\n })}\n
\n \n {i18n(buttonKey)}\n \n
\n )\n }\n}\n","// @flow\n\nimport React, { Component, Fragment } from 'react'\nimport glamorous, { Div, H1 } from 'glamorous'\nimport content from 'pp-react-l10n'\nimport InlineSVG from 'svg-inline-react'\nimport _ from 'lodash'\nimport PropTypes from 'prop-types'\nimport { connect } from 'transfer/utils/p2p-connect'\nimport TypingAndAvailability from './typing-and-availability'\nimport { getSuggestedId } from './search-consent-utils'\nimport { patch, post } from '../../../calculator/lib/xhr'\nimport SuccessCheckmark from '../successCheckmark'\nimport { CONSENT_TYPE, ActionTypes as types } from '../../constants'\nimport * as Actions from '../../actions/Actions'\nimport { trackConsentClick } from '../../utils/directory-search-analytics'\nimport networkIllustrationSvg from './network-illustration.svg'\nimport highFiveSvg from './high-five.svg'\n\nconst i18n = content('transfer/searchConsent')\nconst callAll = (...fns) => (...args) => fns.forEach(fn => fn && fn(...args))\n\nconst Container = glamorous.div(\n {\n textAlign: 'center',\n maxWidth: '325px',\n margin: 'auto',\n },\n ({ isHalfConsent = true }) => ({\n marginTop: isHalfConsent ? '10%' : '4%',\n })\n)\n\nconst IconContainer = glamorous.div(\n {\n margin: 'auto',\n },\n ({ isHighFive = true }) => ({\n maxWidth: isHighFive ? '128px' : '224px',\n })\n)\n\nconst TextContainer = glamorous.div({ marginTop: '32px' })\n\nconst Button = glamorous.button('ppvx_btn', {\n marginBottom: '20px',\n padding: '10px 60px',\n marginTop: '30%',\n})\n\nconst Link = glamorous.a('ppvx_link', {\n cursor: 'pointer',\n})\n\ntype Props = {\n suggestedSlugs?: Object,\n country: string,\n dispatch: PropTypes.func,\n addSearchConsentRedirectUrl?: string,\n slug?: string,\n consentType: string,\n isPreFlow: boolean,\n searchTrackingDetails: Object,\n handleClose: () => any,\n}\n\ntype State = {\n showSuccess: boolean,\n}\n\nexport class SearchConsent extends Component {\n state = {\n showSuccess: false,\n }\n\n static defaultProps = {\n handleClose: () => {},\n country: 'US',\n }\n\n componentDidMount() {\n const { consentType, isPreFlow, searchTrackingDetails } = this.props\n\n const isHalfConsent =\n consentType === CONSENT_TYPE.PROVIDE_ADDITIONAL_NETWORK_ID_CONSENT\n if (isHalfConsent) {\n this.updatePrivacySettings(false)\n }\n\n if (isPreFlow) {\n // for personalization studio, indicating this page has been displayed\n post('/myaccount/transfer/personalization/impression/', {\n url: searchTrackingDetails.impression_url,\n })\n }\n }\n\n updatePrivacySettings = (isOldppMeUser: boolean = false) => {\n const { dispatch, handleClose, slug } = this.props\n const body = {\n editSlugDetails: [\n {\n op: 'replace',\n path: '/privacy_settings/email_search_enabled',\n value: true,\n },\n {\n op: 'replace',\n path: '/privacy_settings/phone_search_enabled',\n value: true,\n },\n ],\n id: slug,\n }\n\n if (isOldppMeUser) {\n body.editSlugDetails.push({\n op: 'replace',\n path: '/network_identity_status',\n value: 'OPTED_IN',\n })\n\n dispatch({\n type: types.PPME.UPDATE_PROFILE,\n })\n }\n\n patch('/myaccount/transfer/ppme', body)\n .then(() => {\n if (isOldppMeUser) {\n dispatch({\n type: types.PPME.UPDATED_PROFILE,\n })\n // close the overpanel in 2 seconds\n setTimeout(() => handleClose(), 2000)\n this.setState({ showSuccess: true })\n }\n })\n .catch(Actions.handleError(dispatch))\n }\n\n createLink = (isHalfConsent: boolean) => {\n const { handleClose, consentType, addSearchConsentRedirectUrl } = this.props\n if (isHalfConsent) {\n return (\n // eslint-disable-next-line consumerweb/require-pagename\n trackConsentClick(consentType, 'SETTINGS')}\n >\n {i18n('link.settings')}\n \n )\n }\n return (\n // eslint-disable-next-line consumerweb/require-pagename\n \n trackConsentClick(consentType, 'SKIP')\n )}\n tabIndex=\"0\"\n >\n {i18n('link.skip')}\n \n )\n }\n\n render() {\n const {\n consentType,\n country,\n dispatch,\n suggestedSlugs,\n handleClose,\n } = this.props\n const isHalfConsent =\n consentType === CONSENT_TYPE.PROVIDE_ADDITIONAL_NETWORK_ID_CONSENT\n const isOldppMeUser = consentType === CONSENT_TYPE.UPGRADE_NETWORK_ID\n const svg = isOldppMeUser ? networkIllustrationSvg : highFiveSvg\n\n let translationKey = 'nonppme_generic'\n if (isHalfConsent) {\n translationKey = 'ppme_generic'\n } else if (isOldppMeUser) {\n translationKey = 'oldppme_generic'\n }\n\n return (\n \n {this.state.showSuccess ? (\n
\n \n

{i18n('body.success')}

\n
\n ) : (\n \n \n \n \n\n \n \n {i18n('body.primary_generic')}\n \n

\n {i18n(`body.secondary.${translationKey}`)}\n

\n {!isHalfConsent && (\n
\n this.setState({ showSuccess: true })}\n defaultValue={getSuggestedId(suggestedSlugs)}\n isOldppMeUser={isOldppMeUser}\n consentType={consentType}\n />\n
\n )}\n
\n\n {isHalfConsent && (\n
\n \n trackConsentClick(consentType, 'GOT_IT')\n )}\n >\n {i18n('button.gotIt')}\n \n
\n )}\n {this.createLink(isHalfConsent)}\n
\n )}\n
\n )\n }\n}\n\nexport default connect(({ server, user, overpanels }) => ({\n suggestedSlugs: _.get(server, 'ppMeProfile.searchSuggestedSlugs', {}),\n slug: _.get(server, 'ppMeProfile.profile.slug', ''),\n consentType: server.consentType,\n addSearchConsentRedirectUrl: server.addSearchConsentRedirectUrl || '',\n searchTrackingDetails: server.searchTrackingDetails,\n isPreFlow: overpanels.isPreFlow,\n country: user.country,\n}))(SearchConsent)\n","// @flow\n\nimport React, { Component } from 'react'\n\nimport { connect } from 'transfer/utils/p2p-connect'\nimport content from 'pp-react-l10n'\n\nimport Overpanel from 'react-components/overpanel'\nimport SearchConsent from './search-consent'\nimport {\n toggleSearchConsentOverpanel,\n updateHasShownSearchConsentOverpanel,\n} from 'transfer/actions/overpanels'\nimport { trackConsentClick } from '../../utils/directory-search-analytics'\n\nconst callAll = (...fns) => (...args) => fns.forEach(fn => fn && fn(...args))\n\nconst i18n = content('transfer/searchConsent')\n\ntype Props = {\n shouldShowSearchConsent: boolean,\n hasShownSearchConsent: boolean,\n shouldShowErrorOverpanel: boolean,\n closeOverpanel: () => any,\n consentType: string,\n}\n\nexport class SearchConsentOverpanel extends Component {\n handleClose = () => {\n this.props.closeOverpanel()\n }\n\n render() {\n const {\n shouldShowSearchConsent,\n hasShownSearchConsent,\n consentType,\n shouldShowErrorOverpanel,\n } = this.props\n const a11yTitle = i18n('a11y.title')\n\n return (\n \n trackConsentClick(consentType, 'CLOSE')\n )}\n a11yTitle={a11yTitle}\n zIndex={shouldShowErrorOverpanel && -100}\n >\n \n \n )\n }\n}\n\nexport default connect(\n ({ overpanels, server }) => ({\n shouldShowSearchConsent: overpanels.shouldShowSearchConsent,\n hasShownSearchConsent: overpanels.hasShownSearchConsent,\n shouldShowErrorOverpanel: overpanels.error,\n consentType: server.consentType,\n }),\n dispatch => ({\n closeOverpanel: () => {\n dispatch(toggleSearchConsentOverpanel({ show: false }))\n dispatch(updateHasShownSearchConsentOverpanel({ hasShown: true }))\n },\n })\n)(SearchConsentOverpanel)\n","import SearchConsentOverpanel from './search-consent-overpanel'\n\nexport default SearchConsentOverpanel\n","// @flow\n\nimport React from 'react'\n\nimport { connect } from 'transfer/utils/p2p-connect'\n\nimport Overpanel from 'react-components/overpanel'\nimport UnilateralRecipientChoice from './unilateral-recipient-choice'\nimport { toggleUnilateralRecipientChoiceOverpanel } from 'transfer/actions/overpanels'\nimport { trackUnilateralRecipientChoiceCancel } from 'transfer/utils/unilateral-recipient-choice-analytics'\n\ntype Props = {\n showUnilateralRecipientChoiceOverpanel: boolean,\n handleSubmit: (contact: FormattedContact) => any,\n dispatch: Function,\n}\n\nfunction UnilateralRecipientChoiceOverpanel({\n showUnilateralRecipientChoiceOverpanel = false,\n handleSubmit = () => {},\n dispatch,\n}: Props = {}) {\n return (\n {\n trackUnilateralRecipientChoiceCancel()\n\n dispatch(toggleUnilateralRecipientChoiceOverpanel({ show: false }))\n }}\n >\n \n \n )\n}\n\nexport default connect(({ overpanels }) => ({\n showUnilateralRecipientChoiceOverpanel: overpanels.unilateralRecipientChoice,\n}))(UnilateralRecipientChoiceOverpanel)\n","import UnilateralRecipientChoiceOverpanel from './unilateral-recipient-choice-overpanel'\n\nexport default UnilateralRecipientChoiceOverpanel\n","module.exports = \"589A4529-8063-4CAA-B3A7-46DACC69259ECreated with sketchtool.\"","module.exports = \"D67CA077-CCEC-4C95-AFE3-72060206C80DCreated with sketchtool.\"","// https://internal.msmaster.qa.paypal.com/elmo/experiment/127276\n// This experiment controls the size of the contact search auto complete results\n\nimport * as pxp from '../lib/pxp'\n\nexport function hasSearchContactCompactLayout() {\n return pxp.isTreatment('Trmt_p2p_web_search_smaller_avatar_and_name')\n}\n","// @flow\n\nimport React from 'react'\nimport glamorous from 'glamorous'\nimport { BodyText, CaptionText } from '@paypalcorp/pp-react'\n\nimport { getAvatarColor } from 'lib/avatar'\n\nimport ContactAvatar from 'transfer/components/contactAvatar'\nimport { hasSearchContactCompactLayout } from '../../../experiments/searchContactCompressedLayout'\n\nconst Container = glamorous.div({\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '8px 16px',\n transition: 'background 350ms ease',\n})\nconst AvatarContainer = glamorous.div({ marginRight: '16px' })\nconst InfoContainer = glamorous.span({\n textAlign: 'left',\n})\n\nconst initial = name => (name && name.slice(0, 1)) || ''\n\ntype Props = {\n thumbnailUrl?: string,\n firstName?: string,\n lastName?: string,\n alternateFullName?: string,\n name?: string,\n details?: string,\n}\nexport default function SearchContactRow(props: Props) {\n const {\n thumbnailUrl,\n firstName,\n lastName,\n alternateFullName,\n name,\n details,\n } = props\n\n return (\n \n \n \n \n \n {name ? {name} : null}\n {details ? {details} : null}\n \n \n )\n}\n","import * as pxp from '../lib/pxp'\n\n/**\n * Experiment url: https://internal.msmaster.qa.paypal.com/elmo/experiment/126544\n * Experiment name: p2p_web_contact_search_input_active\n * Description:\n * - Control: NO auto-focus for contact search input in send and request flow.\n * - Treatment: Auto-focus for contact search input in send and request flow.\n */\nexport function shouldContactSearchInputBeAutofocus() {\n return pxp.isTreatment('Trmt_p2p_web_contact_search_input_active')\n}\n"],"sourceRoot":""}