UNPKG

2.96 MBSource Map (JSON)View Raw
1{"version":3,"file":"index.es.js","sources":["../node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../src/components/icons/IconName.js","../src/components/icons/Icon.js","../src/components/text/Text.js","../src/components/buttons/Button/Button.js","../src/components/buttons/Button/IconButton.js","../src/components/buttons/ButtonLink/Link.js","../src/components/buttons/ButtonLink/ButtonLink.js","../src/components/buttons/TopButton/TopButton.js","../src/components/buttons/SelectButton/SelectButton.js","../src/components/buttons/SelectGroupButton/SelectGroupButton.js","../src/themes/colors.js","../src/themes/default.js","../src/utils/functions/colorLuminance.js","../src/components/effects/Ripple/Ripple.js","../src/components/buttons/SquareButton/SquareButton.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../src/components/menu/navbar/Navbar.js","../src/components/menu/tabs/Tabs.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../src/components/menu/sidenav/SubNav.js","../src/components/menu/sidenav/SideNavLink.js","../src/components/menu/sidenav/SideNavSection.js","../src/components/menu/sidenav/SideNav.js","../src/components/menu/anchorMenu/AnchorMenuItem.js","../src/components/menu/anchorMenu/AnchorMenuMapper.js","../src/components/menu/anchorMenu/ScrollableAnchorMenu.js","../src/components/menu/anchorMenu/NavigationAnchorMenu.js","../src/components/menu/anchorMenu/AnchorMenu.js","../src/components/blocks/Block/BlockWrapper.js","../src/components/blocks/Block/Block.js","../src/components/blocks/BlockBar/BlockBarWrapper.js","../src/components/blocks/BlockBar/BlockBar.js","../src/components/spans/Span/Span.js","../src/components/modals/styles/ModalIcon.js","../src/components/modals/styles/ModalTitle.js","../src/components/modals/styles/ModalText.js","../src/components/modals/styles/ModalStyled.js","../src/components/modals/Modal/Modal.js","../src/themes/secondary.js","../src/components/modals/Modal/DeleteModal.js","../src/components/modals/Modal/FullScreenModal.js","../node_modules/classnames/index.js","../node_modules/react-tooltip/dist/constant.js","../node_modules/react-tooltip/dist/decorators/staticMethods.js","../node_modules/react-tooltip/dist/decorators/windowListener.js","../node_modules/react-tooltip/dist/decorators/customEvent.js","../node_modules/react-tooltip/dist/decorators/isCapture.js","../node_modules/react-tooltip/dist/decorators/getEffect.js","../node_modules/react-tooltip/dist/decorators/trackRemoval.js","../node_modules/react-tooltip/dist/utils/getPosition.js","../node_modules/react-tooltip/dist/utils/getTipContent.js","../node_modules/react-tooltip/dist/utils/aria.js","../node_modules/react-tooltip/dist/utils/nodeListToArray.js","../node_modules/react-tooltip/dist/style.js","../node_modules/react-tooltip/dist/index.js","../src/components/tooltip/StyledTooltip/StyledTooltip.js","../src/components/tooltip/HelpTooltip/HelpTooltip.js","../src/components/tooltip/Tooltip/Tooltip.js","../src/components/tooltip/Tooltip/TooltipExample.js","../src/components/pagination/Pagination.js","../src/components/pagination/index.js","../src/components/inputs/Input/Input.js","../src/components/inputs/InputField/LabelLink.js","../src/components/inputs/InputField/InputIcon.js","../src/components/text/ErrorText/ErrorText.js","../src/components/inputs/Error/Error.js","../src/components/labels/ColorLabel/ColorLabel.js","../src/components/text/LabelText/LabelText.js","../src/components/labels/Label/Label.js","../src/components/labels/BottomLabel/BottomLabel.js","../src/components/inputs/InputField/InputField.js","../src/components/inputs/InputFile/InputFile.js","../src/components/inputs/TextArea/TextArea.js","../src/components/inputs/Toggle/Toggle.js","../src/components/inputs/Checkbox/Checkbox.js","../src/components/inputs/Radio/Radio.js","../src/components/inputs/Tag/Tag.js","../src/components/inputs/InputGroup/InputGroup.js","../src/components/passwordStrengthMeter/PasswordStrengthMeter.js","../src/components/inputs/InputPassword/InputPassword.js","../src/components/inputs/InputRange/InputRange.js","../src/components/inputs/NumberSpinner/NumberSpinner.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@emotion/memoize/dist/memoize.esm.js","../node_modules/@emotion/unitless/dist/unitless.esm.js","../node_modules/@emotion/hash/dist/hash.esm.js","../node_modules/@emotion/stylis/dist/stylis.esm.js","../node_modules/stylis-rule-sheet/index.js","../node_modules/create-emotion/dist/index.esm.js","../node_modules/emotion/dist/index.esm.js","../node_modules/performance-now/lib/performance-now.js","../node_modules/raf/index.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/dom-helpers/class/removeClass.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/index.js","../node_modules/react-select/dist/react-select.esm.js","../src/components/selects/Select/MultiInputOption.js","../src/components/selects/Select/MultiInputValueContainer.js","../src/components/selects/Select/Select.js","../src/components/modules/Collapse/Collapse.js","../src/components/modules/ExpandableSection/Expandable.js","../src/components/modules/ExpandableSection/ExpandableSection.js","../node_modules/moment/moment.js","../node_modules/react-moment-proptypes/src/moment-validation-wrapper.js","../node_modules/react-moment-proptypes/src/core.js","../node_modules/react-moment-proptypes/src/index.js","../src/components/modules/DatePicker/DatePicker.js","../src/components/modules/ColorPicker/CustomColorPicker.js","../src/components/modules/ColorPicker/ColorPicker.js","../src/components/modules/ColorPicker/ColorDisplayer.js","../src/components/modules/TimePicker/TimePicker.js","../src/components/text/Header/Header.js","../src/components/text/BigHeader/BigHeader.js","../src/components/text/SubHeader/SubHeader.js","../src/components/text/TextTruncate/TextTruncate.js","../src/components/modules/TimePickerGroup/TimePickerGroup.js","../src/components/modules/Rating/smileys/SmileyVeryBad.js","../src/components/modules/Rating/smileys/SmileyBad.js","../src/components/modules/Rating/smileys/SmileyNormal.js","../src/components/modules/Rating/smileys/SmileyGood.js","../src/components/modules/Rating/smileys/SmileyVeryGood.js","../src/components/modules/Rating/Star.js","../src/components/modules/Rating/Rating.js","../src/components/widgets/WidgetCardContainer/WidgetCardWrapper.js","../src/components/widgets/WidgetCardContainer/WidgetCardContainer.js","../src/components/modules/Rating/RatingBox.js","../node_modules/react-toastify/lib/utils/constant.js","../node_modules/react-toastify/lib/utils/propValidator.js","../node_modules/react-toastify/lib/components/ProgressBar.js","../node_modules/react-toastify/lib/components/Toast.js","../node_modules/react-toastify/lib/components/CloseButton.js","../node_modules/react-toastify/lib/utils/cssTransition.js","../node_modules/react-toastify/lib/components/Transitions.js","../node_modules/react-toastify/lib/utils/eventManager.js","../node_modules/react-toastify/lib/components/ToastContainer.js","../node_modules/react-toastify/lib/toast.js","../node_modules/react-toastify/lib/index.js","../src/components/toasts/Toast/ToastIcon.js","../src/components/toasts/Toast/ToastBody.js","../src/components/toasts/Toast/Toast.js","../src/components/toasts/Toast/ToastNotifications.js","../src/components/collections/CenteredGrid/CenteredGrid.js","../src/components/collections/Section/Section.js","../src/components/breadcrumbs/BreadCrumbs/Crumb.js","../src/components/breadcrumbs/BreadCrumbs/BreadCrumbs.js","../node_modules/lottie-web/build/player/lottie.js","../src/components/loading/Loading/Loading.js","../src/components/loading/Loading/LoadingModal.js","../src/components/lists/ListHeader/ListHeaderContainer.js","../src/components/lists/ListHeader/ListHeaderPaginationContainer.js","../src/components/lists/ListHeader/ListHeader.js","../src/components/lists/ListCardWrapper/ListCardWrapper.js","../src/components/lists/List/List.js","../src/components/lists/ListHeaderAction/ListHeaderAction.js","../src/components/lists/ListRow/ListRowWrapper.js","../src/components/lists/ListRow/ListRowActionWrapper.js","../src/components/lists/ListRow/ListRowLeft.js","../src/components/lists/ListRow/ListRowRight.js","../src/components/lists/ListRow/ListRow.js","../src/components/lists/ListComponents/ListAddInfoWrapper.js","../src/components/lists/ListComponents/ListActionsWrapper.js","../src/components/lists/ListCard/ListCard.js","../src/components/lists/ListExpandable/ListExpandableRow.js","../src/components/lists/ListExpandable/ListExpandableCustomRow.js","../src/components/lists/ListExpandable/ListExpandable.js","../node_modules/invariant/invariant.js","../node_modules/shallowequal/index.js","../node_modules/react-dnd-cjs/lib/hooks/internal/useCollector.js","../node_modules/react-dnd-cjs/lib/hooks/internal/useMonitorOutput.js","../node_modules/react-dnd-cjs/lib/common/registration.js","../node_modules/dnd-core-cjs/lib/interfaces.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/types.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/local/setClientOffset.js","../node_modules/dnd-core-cjs/lib/utils/js_utils.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/beginDrag.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/publishDragSource.js","../node_modules/dnd-core-cjs/lib/utils/matchesType.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/hover.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/drop.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/endDrag.js","../node_modules/dnd-core-cjs/lib/actions/dragDrop/index.js","../node_modules/dnd-core-cjs/lib/utils/equality.js","../node_modules/dnd-core-cjs/lib/reducers/dragOffset.js","../node_modules/dnd-core-cjs/lib/actions/registry.js","../node_modules/dnd-core-cjs/lib/reducers/dragOperation.js","../node_modules/dnd-core-cjs/lib/reducers/refCount.js","../node_modules/dnd-core-cjs/lib/utils/dirtiness.js","../node_modules/dnd-core-cjs/lib/reducers/dirtyHandlerIds.js","../node_modules/dnd-core-cjs/lib/reducers/stateId.js","../node_modules/dnd-core-cjs/lib/reducers/index.js","../node_modules/dnd-core-cjs/lib/utils/coords.js","../node_modules/dnd-core-cjs/lib/DragDropMonitorImpl.js","../node_modules/asap/raw.js","../node_modules/asap/asap.js","../node_modules/dnd-core-cjs/lib/utils/getNextUniqueId.js","../node_modules/dnd-core-cjs/lib/contracts.js","../node_modules/dnd-core-cjs/lib/HandlerRegistryImpl.js","../node_modules/dnd-core-cjs/lib/DragDropManagerImpl.js","../node_modules/dnd-core-cjs/lib/factories.js","../node_modules/dnd-core-cjs/lib/index.js","../node_modules/react-dnd-cjs/lib/common/DndContext.js","../node_modules/react-dnd-cjs/lib/hooks/internal/useDragDropManager.js","../node_modules/react-dnd-cjs/lib/common/DragSourceMonitorImpl.js","../node_modules/react-dnd-cjs/lib/utils/cloneWithRef.js","../node_modules/react-dnd-cjs/lib/common/wrapConnectorHooks.js","../node_modules/react-dnd-cjs/lib/utils/isRef.js","../node_modules/react-dnd-cjs/lib/common/SourceConnector.js","../node_modules/react-dnd-cjs/lib/hooks/internal/drag.js","../node_modules/react-dnd-cjs/lib/hooks/useDrag.js","../node_modules/react-dnd-cjs/lib/common/TargetConnector.js","../node_modules/react-dnd-cjs/lib/common/DropTargetMonitorImpl.js","../node_modules/react-dnd-cjs/lib/hooks/internal/drop.js","../node_modules/react-dnd-cjs/lib/hooks/useDrop.js","../src/components/lists/DndListRow/ItemTypes.js","../src/components/lists/DndListRow/DndListRow.js","../src/components/lists/DndListRow/DndEmptyList.js","../src/components/lists/DndListRow/DndListContainer.js","../node_modules/react-dnd-cjs/lib/common/DndProvider.js","../node_modules/react-dnd-html5-backend-cjs/lib/utils/js_utils.js","../node_modules/react-dnd-html5-backend-cjs/lib/EnterLeaveCounter.js","../node_modules/react-dnd-html5-backend-cjs/lib/BrowserDetector.js","../node_modules/react-dnd-html5-backend-cjs/lib/MonotonicInterpolant.js","../node_modules/react-dnd-html5-backend-cjs/lib/OffsetUtils.js","../node_modules/react-dnd-html5-backend-cjs/lib/NativeTypes.js","../node_modules/react-dnd-html5-backend-cjs/lib/NativeDragSources/getDataFromDataTransfer.js","../node_modules/react-dnd-html5-backend-cjs/lib/NativeDragSources/nativeTypesConfig.js","../node_modules/react-dnd-html5-backend-cjs/lib/NativeDragSources/NativeDragSource.js","../node_modules/react-dnd-html5-backend-cjs/lib/NativeDragSources/index.js","../node_modules/react-dnd-html5-backend-cjs/lib/OptionsReader.js","../node_modules/react-dnd-html5-backend-cjs/lib/HTML5Backend.js","../node_modules/react-dnd-html5-backend-cjs/lib/getEmptyImage.js","../node_modules/react-dnd-html5-backend-cjs/lib/index.js","../src/components/lists/DndListRow/DndHTML5Provider.js","../src/components/emptyStates/EmptyState/EmptyState.js","../src/components/status/StatusMessage/StatusMessage.js","../src/components/states/BulletState/BulletState.js","../src/components/table/TableHeader/HeaderCell.js","../src/components/table/TableHeader/TableHeader.js","../src/components/table/TableBody/TableBody.js","../src/components/table/Table/Table.js","../src/components/dropdown/Dropdown.js","../src/components/dropdown/GradeDropdown/GradeDropdown.js","../src/components/widgets/WidgetWeather/WidgetWeather.js","../src/components/widgets/WidgetWeather/WidgetWeatherIcon.js","../src/components/widgets/WidgetDate/WidgetDate.js","../src/components/widgets/WidgetDate/WidgetDateShort.js","../src/components/widgets/WidgetCard/WidgetCard.js","../src/components/widgets/DigitalClock/DigitalClock.js","../src/components/widgets/TimeWidget/TimeWidget.js","../src/components/cards/ImageCard/ImageCard.js","../src/components/grids/CustomGrid/CustomGrid.js","../src/components/cards/PlaylistCard/PlaylistCard.js","../src/components/grids/Row/Row.js","../node_modules/react-horizontal-scrolling-menu/build/index.js","../src/components/carousels/Carousel/Carousel.js"],"sourcesContent":["function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}\n\nmodule.exports = _taggedTemplateLiteralLoose;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _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\nmodule.exports = _objectWithoutPropertiesLoose;","const IconName = [\n\t'assets',\n\t'dash',\n\t'date-time',\n\t'expand',\n\t'help',\n\t'image-big',\n\t'image',\n\t'left-navigation',\n\t'logout',\n\t'multimedia1',\n\t'playlist',\n\t'right-navigation',\n\t'weather',\n\t'video-big .path1',\n\t'video-big .path2',\n\t'virtual-ticket',\n\t'tv',\n\t'timer',\n\t'ticket-bold',\n\t'priority',\n\t'more-options',\n\t'move',\n\t'list',\n\t'grid',\n\t'settings-qmpad',\n\t'eye-closed',\n\t'refresh',\n\t'info',\n\t'duplicate',\n\t'checkbox-off',\n\t'checkbox-on',\n\t'radio-button-off',\n\t'radio-button-on',\n\t'management',\n\t'login',\n\t'data',\n\t'dashboard',\n\t'add',\n\t'arrow-down',\n\t'arrow-left',\n\t'arrow-right',\n\t'arrow-up',\n\t'calendar',\n\t'clock',\n\t'color',\n\t'download',\n\t'edit',\n\t'email',\n\t'error',\n\t'gear',\n\t'key',\n\t'language',\n\t'left-to-right',\n\t'link',\n\t'lock',\n\t'multimedia',\n\t'no-notications',\n\t'notifications',\n\t'on-off',\n\t'preview',\n\t'priority-ticket',\n\t'restore',\n\t'right-to-left',\n\t'rss',\n\t'save',\n\t'search',\n\t'select-down',\n\t'select-left',\n\t'select-right',\n\t'select-up',\n\t'sms',\n\t'stopwatch',\n\t'success',\n\t'text',\n\t'ticket',\n\t'transfer',\n\t'unlock',\n\t'update',\n\t'upload',\n\t'user',\n\t'warning',\n\t'zoom-in',\n\t'zoom-out',\n\t'cancel',\n\t'pause',\n\t'transfer-bold',\n\t'call',\n\t'end'\n]\n\nexport default IconName\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon as SemanticUIIcon } from 'semantic-ui-react'\nimport IconName from './IconName'\n\n/**\n * extends react semantic ui default icon\n * https://react.semantic-ui.com/elements/icon/\n * icon component\n */\nconst IconStyled = styled(({ color, ...props }) => <SemanticUIIcon {...props} />)`\n\tmargin: 0 !important;\n\tcolor: ${({ color }) => color} !important;\n\n\t&&&& {\n\t\theight: 1em;\n\t}\n\n\t&&&.disabled {\n\t\tcursor: not-allowed !important;\n\t\tpointer-events: none !important;\n\t}\n\n\t&&&.clickable {\n\t\tcursor: pointer;\n\t}\n`\n\nIconStyled.propTypes = {\n\t...SemanticUIIcon.propTypes,\n\t/** color of the icon */\n\tcolor: PropTypes.string\n}\n\nIconStyled.displayName = 'IconStyled'\n\nconst Icon = ({ icon, className, onClick, ...props }) => {\n\tconst combinedClassName = `icoqube${icon}${className ? ' '.concat(className) : ''}${onClick ? ' clickable' : ''}`\n\n\treturn <IconStyled {...props} onClick={onClick} className={combinedClassName} />\n}\n\nIcon.defaultProps = {\n\tclassName: '',\n\tcolor: 'black',\n\tonClick: undefined\n}\n\nIcon.propTypes = {\n\t/** icon of type iconName to be displayed (examples: success, add) */\n\ticon: PropTypes.oneOf(IconName).isRequired,\n\t/** css class name to be applied on the icon */\n\tclassName: PropTypes.string,\n\t/** string color value for the icon (examples: black, blue, #FFF) */\n\tcolor: PropTypes.string,\n\t/** onClick function handler */\n\tonClick: PropTypes.func\n}\n\nIcon.displayName = 'Icon'\n\n/** @component */\nexport default Icon\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport PropTypes from 'prop-types'\n\nexport const typographyStyles = css`\n\tfont-size: ${({ size, theme }) => theme.text.size[size]}!important;\n\tfont-style: ${({ italic }) => (italic ? 'italic' : 'normal')}!important;\n\tfont-weight: ${({ bold }) => (bold ? 'bold' : 'normal')}!important;\n\tcolor: ${({ color, theme }) => theme.text.colors[color]}!important;\n\ttext-transform: ${({ uppercase }) => (uppercase ? 'uppercase' : 'none')}!important;\n\tborder-bottom: ${({ color, underlined, theme }) =>\n\t\tunderlined ? `1px solid ${theme.text.colors[color]}` : '0'}!important;\n`\n\nconst TextDestructure = ({ size, italic, bold, color, uppercase, underlined, ...props }) => <div {...props} />\n\nconst Text = styled(TextDestructure)`\n\t${typographyStyles}\n`\n\nText.propTypes = {\n\tcolor: PropTypes.string.isRequired,\n\titalic: PropTypes.bool.isRequired,\n\tuppercase: PropTypes.bool.isRequired,\n\tsize: PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']).isRequired,\n\tbold: PropTypes.bool.isRequired,\n\tunderlined: PropTypes.bool.isRequired\n}\n\nText.displayName = 'Text'\n\nText.defaultProps = {\n\tcolor: 'default',\n\titalic: false,\n\tuppercase: false,\n\tsize: 'md',\n\tbold: false,\n\tunderlined: false\n}\n\nText.propTypes = {\n\tcolor: PropTypes.string,\n\titalic: PropTypes.bool,\n\tuppercase: PropTypes.bool,\n\tsize: PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),\n\tbold: PropTypes.bool,\n\tunderlined: PropTypes.bool\n}\n\nexport default Text\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Button as SemanticUIButton } from 'semantic-ui-react'\nimport { Icon, IconName } from '../../icons'\nimport Text from '../../text/Text'\n\nconst Button = ({ icon, content, iconColor, loading, children, size, ...props }) => (\n\t<ButtonStyled loading={loading} {...props}>\n\t\t<Text uppercase size={size} color={loading ? 'transparent' : 'button'}>\n\t\t\t{children || content}\n\t\t\t{icon && <Icon color={iconColor} icon={icon} />}\n\t\t</Text>\n\t</ButtonStyled>\n)\n\n/**\n * extends react semantic ui default button\n * https://react.semantic-ui.com/elements/button/#types-button\n * button component\n */\n\nconst ButtonStyled = styled(SemanticUIButton)`\n\tpadding-right: 16px !important;\n\tpadding-left: 16px !important;\n\n\tbackground-color: ${({ theme }) => theme.buttons.bg} !important;\n\tborder-radius: ${({ theme }) => theme.buttons.borderRadius} !important;\n\tpointer-events: ${({ loading }) => (loading ? 'none' : 'auto')} !important;\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\n\t&:active {\n\t\tbackground-color: ${({ theme }) => theme.buttons.activeBg} !important;\n\t}\n\n\ti.icon {\n\t\tmargin-right: 0 !important;\n\t\tmargin-left: 6px !important;\n\t}\n`\n\nButtonStyled.displayName = 'ButtonStyled'\n\nButton.defaultProps = {\n\tsize: 'lg',\n\ticonColor: 'white',\n\ticon: null,\n\tcontent: null,\n\tloading: false,\n\tchildren: null\n}\n\nButton.propTypes = {\n\t/** children */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\t/** Size of the text */\n\tsize: PropTypes.string,\n\t/** icon to be displayed */\n\ticon: PropTypes.oneOf(IconName),\n\t/** text visible on the button */\n\tcontent: PropTypes.string,\n\t/** color of the icon */\n\ticonColor: PropTypes.string,\n\t/** loading state of the button */\n\tloading: PropTypes.bool\n}\n\nButton.displayName = 'Button'\n\n/** @component */\nexport default Button\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Button as SemanticUIButton } from 'semantic-ui-react'\nimport { Icon, IconName } from '../../icons'\n\nconst IconButton = ({ icon, btnSize, iconSize, iconColor, ...props }) => (\n\t<IconButtonStyled {...props} btnSize={btnSize}>\n\t\t<Icon color={iconColor} size={iconSize} icon={icon} />\n\t</IconButtonStyled>\n)\n/**\n * extends react semantic ui default button\n * https://react.semantic-ui.com/elements/button/#types-button\n * button component\n */\n\nconst IconButtonStyled = styled(({ btnSize, ...props }) => <SemanticUIButton {...props} />)`\n\twidth: ${({ btnSize }) => btnSize} !important;\n\theight: ${({ btnSize }) => btnSize} !important;\n\tpadding: 0 !important;\n\tbackground-color: ${({ theme }) => theme.buttons.bg} !important;\n\tborder-radius: 50% !important;\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\ttext-transform: uppercase !important;\n\n\t&:active,\n\t&:focus {\n\t\tbackground-color: ${({ theme }) => theme.buttons.activeBg} !important;\n\t}\n`\n\nIconButtonStyled.displayName = 'IconButtonStyled'\n\nIconButton.defaultProps = {\n\ticonSize: 'small',\n\tbtnSize: '24px',\n\ticonColor: 'white'\n}\n\nIconButton.propTypes = {\n\t/** icon to be displayed */\n\ticon: PropTypes.oneOf(IconName).isRequired,\n\t/** color of the icon */\n\ticonColor: PropTypes.string,\n\t/** size of the icon */\n\ticonSize: PropTypes.string,\n\t/** size of the button */\n\tbtnSize: PropTypes.string\n}\n\nIconButton.displayName = 'IconButton'\n\nexport default IconButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport Text from '../../text/Text'\n\nconst Link = styled(({ disabled, ...props }) => (\n\t<Text uppercase color={disabled ? 'disabled' : 'link'} underlined {...props} />\n))`\n\tpadding: 0 !important;\n\tborder-radius: 0 !important;\n\tappearance: none !important;\n\tbackground: transparent !important;\n\t&:hover,\n\t&:focus {\n\t\tcolor: ${({ theme, disabled }) =>\n\t\t\tdisabled ? theme.text.colors.disabled : theme.text.colors.activeLink} !important;\n\t\toutline: 0 !important;\n\t}\n`\n\nLink.defaultProps = {\n\tdisabled: false\n}\n\nLink.propTypes = {\n\t/** boolean indicating whether disabled element should render */\n\tdisabled: PropTypes.bool\n}\n\nLink.displayName = 'Link'\n\n/** @component */\nexport default Link\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button as SemanticUIButton } from 'semantic-ui-react'\nimport Link from './Link'\n\nconst ButtonLink = ({ size, ...props }) => (\n\t<SemanticUIButton as={linkProps => <Link size={size} {...linkProps} />} {...props} />\n)\n\nButtonLink.defaultProps = {\n\tsize: 'lg'\n}\n\nButtonLink.propTypes = {\n\t/** string indicating size ['sm','md','lg','xl','xxl'] */\n\tsize: PropTypes.string\n}\n\nButtonLink.displayName = 'ButtonLink'\n\n/** @component */\nexport default ButtonLink\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nconst TopButtonStyled = styled.button`\n\tpadding: 8px 16px;\n\tbackground: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.jellyfish)};\n\tborder-width: 0;\n\tborder-bottom-left-radius: 16px;\n\tborder-bottom-right-radius: 16px;\n\tbox-shadow: ${({ disabled }) => (disabled ? 'none' : '0px 2px 6px rgba(0, 0, 0, 0.25)')};\n\tcolor: ${({ disabled, theme }) => (disabled ? theme.colors.gray : 'white')};\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\tfont-size: 14px;\n\ttext-transform: uppercase;\n\tuser-select: none;\n\n\t:active {\n\t\tbox-shadow: ${({ disabled }) => (disabled ? 'none' : '0px 2px 4px rgba(0, 0, 0, 0.25)')};\n\t\toutline: none;\n\t}\n`\n\nconst TopButton = props => <TopButtonStyled {...props} />\n\nTopButton.defaultProps = {\n\tchildren: 'Apply'\n}\n\nTopButton.propTypes = {\n\t/** Name of the button to be displayed */\n\tchildren: PropTypes.string\n}\n\nTopButton.displayName = 'TopButton'\n\nexport default TopButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst SelectButton = props => <SelectButtonStyled type='button' {...props} />\n\nconst SelectButtonStyled = styled.button`\n\tpadding: 8px;\n\tfont-size: 16px;\n\tline-height: 19px;\n\tborder: ${({ theme, selected, backgroundColor }) =>\n\t\t`1px solid ${selected ? backgroundColor || theme.colors.deepBlue : theme.colors.strokeGray}`};\n\tborder-radius: 4px;\n\tbackground-color: ${({ theme, selected, backgroundColor }) =>\n\t\tselected ? backgroundColor || theme.colors.deepBlue : theme.colors.white};\n\tcolor: ${({ theme, selected, colorText }) => (selected ? theme.colors.white : colorText || theme.colors.gray)};\n\tcursor: pointer;\n\toutline: none;\n`\n\nSelectButton.defaultProps = {\n\tselected: false\n}\n\nSelectButton.displayName = 'SelectButton'\n\nSelectButton.propTypes = {\n\tselected: PropTypes.bool\n}\n\nexport default SelectButton\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst SelectGroupButton = ({ children, childWidth, ...props }) => (\n\t<SelectGroupButtonWrapper childWidth={childWidth} {...props}>\n\t\t{children}\n\t</SelectGroupButtonWrapper>\n)\n\nconst SelectGroupButtonWrapper = styled.div`\n\twidth: 100%;\n\n\tbutton {\n\t\tborder-radius: 0;\n\t\twidth: ${({ childWidth }) => childWidth};\n\t}\n\n\tbutton:first-child {\n\t\tborder-radius: 4px 0px 0px 4px;\n\t}\n\n\tbutton:last-child {\n\t\tborder-radius: 0px 4px 4px 0px;\n\t}\n`\n\nSelectGroupButton.defaultProps = {\n\tchildWidth: '178px'\n}\n\nSelectGroupButton.propTypes = {\n\t/** Node with the childrens */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** Child width to apply for each child element */\n\tchildWidth: PropTypes.string\n}\n\nSelectGroupButton.displayName = 'SelectGroupButton'\nSelectGroupButtonWrapper.displayName = 'SelectGroupButtonWrapper'\n\nexport default SelectGroupButton\n","export default {\n\ttransparent: 'transparent',\n\twhite: '#FFFFFF',\n\tblack: '#424242',\n\n\t// primary\n\tdeepBlue: '#0D0CB5',\n\tactiveBlue: '#005BEA',\n\tpurple: '#4E2F60',\n\n\t// secondary\n\tyellow: '#FBB03B',\n\torange: '#EC8222',\n\tred: '#CF0A2C',\n\tdarkRed: '#A21D21',\n\tlightBlue: '#DAEDFF',\n\tmalibu: '#63BDE9',\n\tpacificBlue: '#1692CE',\n\tgreen: '#3EC28F',\n\tlightGreen: '#95C623',\n\tpurpleHeart: '#6A11CB',\n\tultraMarine: '#0D0CB5',\n\toliveDrab: '#679009',\n\tmariner: '#4265AA',\n\tsummerSky: '#36A8DF',\n\twhisper: '#ECECEC',\n\t// grayscale\n\tdarkGray: '#424242',\n\tmediumGray: '#6A6A6A',\n\tgray: '#B8B8B8',\n\tstrokeGray: '#DDDDDD',\n\tlightGray: '#F3F3F3',\n\n\t// gradient\n\tblueOcean: 'linear-gradient(90deg,#0D0CB5 0%,rgba(255, 255, 255, 0) 100%),#2681E0',\n\twine: 'linear-gradient(90deg,#4E2F60 0%,rgba(255, 255, 255, 0) 100%),#852D91',\n\tjellyfish: 'linear-gradient(90deg,#6A11CB 0%,rgba(255,255,255,0) 100%),#2575FC'\n}\n","import colors from './colors'\n\nconst SPACE_UNIT = 1\n\nexport default {\n\tname: 'DEFAULT',\n\tcolors,\n\tborderRadius: '0',\n\tnavbar: {\n\t\tbackgroundColor: colors.darkRed\n\t},\n\tbuttons: {\n\t\tborderRadius: '16px',\n\t\tbg: colors.activeBlue,\n\t\tactiveBg: colors.deepBlue,\n\t\ttext: colors.white,\n\t\tdropdown: {\n\t\t\tseparatorColor: colors.gray,\n\t\t\tactiveBackgroundColor: colors.gray\n\t\t}\n\t},\n\tlist: {\n\t\tpairCell: colors.lightGray,\n\t\tunPairCell: colors.white,\n\t\ttitle: colors.black,\n\t\tadditionalInfo: colors.gray,\n\t\tactiveCell: colors.lightBlue,\n\t\tboxShadow: '0 3px 3px rgba(0, 0, 0, 0.25)'\n\t},\n\tspan: {\n\t\tdefaultColor: colors.activeBlue,\n\t\tnegative: colors.red,\n\t\tpositive: colors.green,\n\t\tprimary: colors.activeBlue\n\t},\n\tblock: {\n\t\tborderRadius: '0',\n\t\tbackgroundColor: colors.darkRed,\n\t\tlabelColor: colors.darkGray,\n\t\tcolor: colors.darkGray\n\t},\n\tinput: {\n\t\tborderRadius: '0'\n\t},\n\tselect: {\n\t\tborderRadius: '4px',\n\t\tplaceholderColor: colors.darkGray,\n\t\tfocusedBackgroundColor: colors.whisper,\n\t\tselectedBackgroundColor: colors.activeBlue,\n\t\tmenuPadding: '5px 10px 5px 10px'\n\t},\n\ttoggle: {\n\t\tcolor: colors.green\n\t},\n\ttimePicker: {\n\t\terrorColor: colors.red,\n\t\tdisabledColor: colors.lightGray,\n\t\tprimaryColor: colors.activeBlue,\n\t\tactiveColor: colors.deepBlue,\n\t\thoverColor: colors.lightGray,\n\t\ttextColor: colors.darkGray\n\t},\n\tnumberSpinner: {\n\t\terrorColor: colors.red,\n\t\tdisabledColor: colors.lightGray,\n\t\tdisabledColorText: colors.gray,\n\t\tprimaryColor: colors.activeBlue,\n\t\tactiveColor: colors.deepBlue,\n\t\thoverColor: colors.lightGray,\n\t\ttextColor: colors.darkGray,\n\t\tborderColor: colors.white\n\t},\n\ttoast: {\n\t\ttitleColor: colors.darkGray,\n\t\tmessageColor: colors.mediumGray,\n\t\terrorColor: colors.red,\n\t\tsuccessColor: colors.green,\n\t\twarningColor: colors.yellow\n\t},\n\tpasswordStrengthMeter: {\n\t\tnone: colors.strokeGray,\n\t\tbad: colors.red,\n\t\tmedium: colors.yellow,\n\t\tgood: colors.lightGreen,\n\t\texcellent: colors.green\n\t},\n\tstatus: {\n\t\tbg: {\n\t\t\tsuccess: colors.green,\n\t\t\terror: colors.red,\n\t\t\tinfo: colors.lightBlue,\n\t\t\tblocked: colors.jellyfish\n\t\t},\n\t\tcolor: {\n\t\t\tsuccess: colors.white,\n\t\t\terror: colors.white,\n\t\t\tinfo: colors.darkGray,\n\t\t\tblocked: colors.white\n\t\t}\n\t},\n\tbulletState: {\n\t\tcolors: {\n\t\t\ton: colors.green,\n\t\t\taway: colors.yellow,\n\t\t\toff: colors.red\n\t\t}\n\t},\n\tinputRange: {\n\t\tborderColor: colors.strokeGray,\n\t\tbackgroundThumbColor: colors.white,\n\t\tgradient: value =>\n\t\t\t`linear-gradient(90deg, ${colors.purpleHeart} 0%, ${colors.ultraMarine} ${value}%, ${\n\t\t\t\tcolors.strokeGray\n\t\t\t} ${value}%, ${colors.strokeGray} 100%)`\n\t},\n\tgradeDropdown: {\n\t\tveryHigh: colors.darkRed,\n\t\thigh: colors.orange,\n\t\tnormal: colors.yellow,\n\t\tlow: colors.green,\n\t\tveryLow: colors.activeBlue\n\t},\n\tlabel: {\n\t\tdefaultColor: colors.activeBlue\n\t},\n\tlistCard: {\n\t\tdefaultBorder: colors.strokeGray,\n\t\terrorBorder: colors.red\n\t},\n\tdndList: {\n\t\tactive: colors.activeBlue,\n\t\tdragOver: colors.lightBlue\n\t},\n\tspace: {\n\t\txxs: `${SPACE_UNIT * 0.25}em`,\n\t\txs: `${SPACE_UNIT * 0.5}em`,\n\t\tsm: `${SPACE_UNIT * 0.75}em`,\n\t\tmd: `${SPACE_UNIT * 1.25}em`,\n\t\tlg: `${SPACE_UNIT * 2}em`,\n\t\txl: `${SPACE_UNIT * 3.25}em`,\n\t\txxl: `${SPACE_UNIT * 5.25}em`\n\t},\n\ttext: {\n\t\tsize: { sm: '12px', md: '13px', lg: '15px', xl: '18px', xxl: '22px' },\n\t\tcolors: {\n\t\t\tdefault: colors.darkGray,\n\t\t\tlabel: colors.mediumGray,\n\t\t\terror: colors.red,\n\t\t\tdisabled: colors.strokeGray,\n\t\t\ttransparent: colors.transparent,\n\t\t\tbutton: colors.white,\n\t\t\tlink: colors.activeBlue,\n\t\t\tactiveLink: colors.deepBlue\n\t\t}\n\t}\n}\n","export default (hex, lum = 0) => {\n\tlet rgb = '#'\n\tlet c\n\n\thex.slice(1)\n\t\t.match(/.{1,2}/g)\n\t\t.forEach(element => {\n\t\t\tc = parseInt(element, 16)\n\t\t\tc = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16)\n\t\t\trgb += `00${c}`.substr(c.length)\n\t\t})\n\n\treturn rgb\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { colorLuminance } from '../../../utils/functions'\n\nconst Ripple = styled.div`\n\tbackground-position: center;\n\ttransition: background 0.8s;\n\tuser-select: none;\n\tcursor: pointer;\n\n\t:hover {\n\t\tbackground: ${({ color }) => colorLuminance(color, 0.1)}\n\t\t\tradial-gradient(circle, transparent 1%, ${({ color }) => colorLuminance(color, 0.1)} 1%) center/15000%;\n\t}\n\n\t:active {\n\t\tbackground-color: ${({ color }) => colorLuminance(color, 0.3)};\n\t\tbackground-size: 100%;\n\t\ttransition: background 0s;\n\t}\n`\n\nRipple.propTypes = {\n\t/** color to be displayed in the ripple effect */\n\tcolor: PropTypes.string.isRequired\n}\n\nRipple.displayName = 'Ripple'\n\nexport default Ripple\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport DefaultTheme from '../../../themes/default'\nimport { Ripple } from '../../effects'\n\nconst SquareButton = ({ children, onClick, width, height, bgColor, textColor, ...props }) => (\n\t<SquareButtonStyled\n\t\tonClick={onClick}\n\t\twidth={width}\n\t\theight={height}\n\t\tbgColor={bgColor}\n\t\tcolor={bgColor || DefaultTheme.colors.strokeGray}\n\t\t{...props}\n\t>\n\t\t<Content textColor={textColor}>{children}</Content>\n\t</SquareButtonStyled>\n)\n\nconst SquareButtonStyled = styled(Ripple)`\n\tdisplay: flex;\n\tmin-width: 200px;\n\twidth: ${({ width }) => width};\n\theight: ${({ height }) => height};\n\n\talign-items: center;\n\tjustify-content: center;\n\n\tbackground-color: ${({ bgColor, theme }) => bgColor || theme.colors.white};\n\n\tfont-size: 28px;\n\tbox-shadow: 0px 0px 8px rgba(0, 0, 0, 0.15);\n\tborder-radius: 4px;\n`\n\nconst Content = styled.div`\n\tcolor: ${({ textColor }) => textColor};\n`\n\nSquareButton.defaultProps = {\n\twidth: '427px',\n\theight: '68px',\n\tbgColor: undefined,\n\ttextColor: DefaultTheme.colors.darkGray\n}\n\nSquareButton.propTypes = {\n\t/** onClick handler */\n\tonClick: PropTypes.func.isRequired,\n\t/** button width */\n\twidth: PropTypes.string,\n\t/** button height */\n\theight: PropTypes.string,\n\t/** button background color */\n\tbgColor: PropTypes.string,\n\t/** button text color */\n\ttextColor: PropTypes.string,\n\t/** main content of the button */\n\tchildren: PropTypes.string.isRequired\n}\n\nSquareButton.displayName = 'SquareButton'\n\nexport default SquareButton\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Menu as SemanticUIMenu } from 'semantic-ui-react'\n\nclass MenuExtended extends SemanticUIMenu {}\n\nMenuExtended.propTypes = {\n\t...SemanticUIMenu.propTypes,\n\tcolor: PropTypes.string.isRequired\n}\n\n/**\n * semantic UI Menu extended. Can be used as navbar\n * https://react.semantic-ui.com/collections/menu/\n */\nconst Navbar = styled(MenuExtended)`\n\tbackground-color: ${({ color }) => color} !important;\n\tbox-shadow: 0 2px 3px rgba(0, 0, 0, 0.4) !important;\n\n\t& .item {\n\t\tcolor: #fff !important;\n\t}\n\n\t&&& a.active.item {\n\t\tborder-color: #fff !important;\n\t\tfont-weight: 700;\n\t}\n\n\t&&& a.item:hover {\n\t\tborder-color: #fff !important;\n\t\tfont-weight: 700;\n\t}\n`\n\nNavbar.propTypes = {\n\t/** Navbar Color can be specified. Hexadecimal color ex: #a21d21 * */\n\tcolor: PropTypes.string.isRequired\n}\n\nNavbar.displayName = 'Navbar'\n\nexport default Navbar\n","import React from 'react'\nimport { Tab } from 'semantic-ui-react'\nimport styled from 'styled-components'\n\nconst Tabs = ({ panes, ...props }) => <TabStyled menu={{ secondary: true, pointing: true }} panes={panes} {...props} />\n\nconst TabStyled = styled(Tab)`\n\tborder-color: #cccccc !important;\n\n\t.active.item {\n\t\tborder-color: ${({ theme }) => theme.colors.activeBlue} !important;\n\t\tcolor: ${({ theme }) => theme.colors.activeBlue} !important;\n\t}\n\n\t.item {\n\t\tpadding: 8px 12px !important;\n\t\tcolor: #cccccc !important;\n\t\tfont-size: 15px !important;\n\t}\n`\n\nexport default Tabs\n","function _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\nmodule.exports = _assertThisInitialized;","function _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\nmodule.exports = _defineProperty;","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon } from '../../icons'\n\nconst SubNav = ({\n\tcollapse,\n\tactiveItem: { items, icon, title },\n\tisActive,\n\tsetRoute,\n\tsubNavBgColor,\n\tsubNavColor,\n\tsubNavColorTitle,\n\tsubNavHoverBgColor,\n\tsubNavHoverColor,\n\tsubNavHighlightBgColor,\n\tsubNavHighlightColor\n}) => {\n\tconst onClick = ({ onClickItem, path }) => (onClickItem ? onClickItem(path) : setRoute(path))\n\n\treturn (\n\t\t<SubNavStyled collapse={collapse} bgColor={subNavBgColor} data-test-id='submenu'>\n\t\t\t<Header>\n\t\t\t\t<FullWidth>\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<HeaderIcon\n\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\t\t\tcolor={subNavColorTitle}\n\t\t\t\t\t\t\tdata-test-id='submenu-icon'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</FullWidth>\n\t\t\t\t<Title color={subNavColorTitle} data-test-id='submenu-title'>\n\t\t\t\t\t{title}\n\t\t\t\t</Title>\n\t\t\t</Header>\n\t\t\t<SubNavList>\n\t\t\t\t{items.map(item => (\n\t\t\t\t\t<SubNavLink\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tactive={isActive(item)}\n\t\t\t\t\t\tonClick={() => onClick(item)}\n\t\t\t\t\t\tbgColor={subNavBgColor}\n\t\t\t\t\t\tcolor={subNavColor}\n\t\t\t\t\t\thoverBgColor={subNavHoverBgColor}\n\t\t\t\t\t\thoverColor={subNavHoverColor}\n\t\t\t\t\t\tsubNavHighlightBgColor={subNavHighlightBgColor}\n\t\t\t\t\t\thighlightColor={subNavHighlightColor}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</SubNavLink>\n\t\t\t\t))}\n\t\t\t</SubNavList>\n\t\t</SubNavStyled>\n\t)\n}\n\nexport const SubNavStyled = styled.div`\n\tz-index: 2;\n\tdisplay: ${({ collapse }) => (collapse ? 'block' : 'none')};\n\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 664px;\n\tpadding: 12px;\n\n\tbackground: ${({ bgColor }) => bgColor};\n\tbox-shadow: 2px 0px 2px rgba(0, 0, 0, 0.08);\n\tuser-select: none;\n`\n\nconst FullWidth = styled.div`\n\twidth: 100%;\n`\n\nconst Header = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tpadding-top: 28px;\n\tpadding-left: 16px;\n`\n\nexport const HeaderIcon = styled(({ collapse, ...props }) => <Icon {...props} />)`\n\t&&&.small.icon {\n\t\tcolor: ${({ color }) => color} !important;\n\t\tfont-size: 18px !important;\n\t}\n`\nHeaderIcon.displayName = 'HeaderIcon'\n\nconst Title = styled.div`\n\tz-index: 2;\n\tmargin-top: 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 16px;\n`\n\nconst SubNavList = styled.div`\n\tz-index: 2;\n\n\tmargin-top: 32px;\n`\n\nconst SubNavLink = styled.a`\n\tdisplay: flex;\n\n\theight: 40px;\n\talign-items: center;\n\tpadding-left: 16px;\n\n\tbackground: ${({ active, hoverBgColor, bgColor }) => (active ? hoverBgColor : bgColor)};\n\tborder-radius: 4px;\n\tcolor: ${({ active, highlightColor, color }) => (active ? highlightColor : color)};\n\tcursor: pointer;\n\ttext-decoration: none;\n\n\t&:hover {\n\t\tbackground: ${({ hoverBgColor }) => hoverBgColor};\n\t\tcolor: ${({ hoverColor }) => hoverColor};\n\t}\n\n\t&:active,\n\t&:focus {\n\t\tcolor: ${({ highlightColor }) => highlightColor};\n\t}\n`\nSubNavLink.displayName = 'SubNavLink'\n\nSubNav.propTypes = {\n\tsetRoute: PropTypes.func.isRequired,\n\tcollapse: PropTypes.bool.isRequired,\n\tisActive: PropTypes.func.isRequired,\n\tactiveItem: PropTypes.shape({\n\t\ttitle: PropTypes.string,\n\t\titems: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\ticon: PropTypes.string,\n\t\t\t\ttitle: PropTypes.string,\n\t\t\t\tpath: PropTypes.string,\n\t\t\t\titems: PropTypes.arrayOf(\n\t\t\t\t\tPropTypes.shape({\n\t\t\t\t\t\ttitle: PropTypes.string,\n\t\t\t\t\t\tpath: PropTypes.string\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t})\n\t\t)\n\t}).isRequired,\n\tsubNavBgColor: PropTypes.string.isRequired,\n\tsubNavColor: PropTypes.string.isRequired,\n\tsubNavColorTitle: PropTypes.string.isRequired,\n\tsubNavHoverBgColor: PropTypes.string.isRequired,\n\tsubNavHoverColor: PropTypes.string.isRequired,\n\tsubNavHighlightBgColor: PropTypes.string.isRequired,\n\tsubNavHighlightColor: PropTypes.string.isRequired\n}\n\nSubNav.displayName = 'SubNav'\n\nexport default SubNav\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon } from '../../icons'\n\nconst SideNavLink = ({\n\tcollapse,\n\titem,\n\tisActive,\n\tonClick,\n\tcolor,\n\thighlightColor,\n\thighlightBgColor,\n\thoverBgColor,\n\thoverColor\n}) => (\n\t<SideNavLinkStyled\n\t\tcollapse={collapse}\n\t\tactive={isActive(item)}\n\t\tonClick={() => onClick(item)}\n\t\tcolor={color}\n\t\thighlightBgColor={highlightBgColor}\n\t\thighlightColor={highlightColor}\n\t\thoverBgColor={hoverBgColor}\n\t\thoverColor={hoverColor}\n\t>\n\t\t<SideNavLinkWrapper collapse={collapse}>\n\t\t\t<Flex>\n\t\t\t\t{item.icon && <SideNavLinkIcon icon={item.icon} color={color} size='small' collapse={collapse} />}\n\t\t\t\t{item.title && <SideNavLinkText collapse={collapse}>{item.title}</SideNavLinkText>}\n\t\t\t</Flex>\n\t\t\t<SideNavLinkArrow className='arrow' icon='arrow-right' color={hoverColor} />\n\t\t</SideNavLinkWrapper>\n\t</SideNavLinkStyled>\n)\n\nconst SideNavLinkStyled = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 46px;\n\tjustify-content: ${({ collapse }) => (collapse ? 'center' : 'start')};\n\tpadding: ${({ collapse }) => (collapse ? '0 4px' : '0 32px')};\n\n\tbackground: ${({ active, highlightBgColor }) => (active ? highlightBgColor : undefined)};\n\tcursor: pointer;\n\ttext-decoration: none;\n\tuser-select: none;\n\n\tp {\n\t\tcolor: ${({ active, highlightColor, color }) => (active ? highlightColor : color)} !important;\n\t}\n\n\t.small.icon {\n\t\tcolor: ${({ highlightColor, active }) => (active ? highlightColor : undefined)} !important;\n\t}\n\n\t:hover {\n\t\tbackground: ${({ hoverBgColor, highlightBgColor, collapse }) => (collapse ? highlightBgColor : hoverBgColor)};\n\n\t\tp {\n\t\t\tcolor: ${({ hoverColor }) => hoverColor} !important;\n\t\t}\n\n\t\t.small.icon {\n\t\t\tcolor: ${({ highlightColor, hoverColor, collapse }) => (collapse ? highlightColor : hoverColor)} !important;\n\t\t}\n\n\t\t.arrow {\n\t\t\tdisplay: ${({ collapse }) => (collapse ? 'none' : 'block')} !important;\n\t\t}\n\t}\n`\nSideNavLinkStyled.displayName = 'SideNavLinkStyled'\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\talign-items: baseline;\n\tjustify-content: center;\n`\n\nconst SideNavLinkWrapper = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: ${({ collapse }) => (collapse ? 'center' : 'space-between')};\n\n\tcolor: white;\n\tfont-size: 15px;\n`\n\nconst SideNavLinkIcon = styled(({ collapse, ...props }) => <Icon {...props} />)`\n\tmargin: ${({ collapse }) => (collapse ? ' auto' : '0 20px 0 0')} !important;\n\n\t&&&.small.icon {\n\t\twidth: ${({ collapse }) => (collapse ? ' 100%' : null)} !important;\n\t\tfont-size: 15px;\n\t}\n`\n\nconst SideNavLinkText = styled.p`\n\tdisplay: ${({ collapse }) => (collapse ? 'none' : 'inline-block')};\n`\n\nconst SideNavLinkArrow = styled(Icon)`\n\tdisplay: none !important;\n\tmargin-left: 8px !important;\n\n\t&&&.icon.arrow {\n\t\tcolor: ${({ color }) => color} !important;\n\t}\n`\n\nSideNavLink.propTypes = {\n\titem: PropTypes.shape({\n\t\tid: PropTypes.string,\n\t\ticon: PropTypes.string,\n\t\ttitle: PropTypes.string,\n\t\tpath: PropTypes.string,\n\t\titems: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\ttitle: PropTypes.string,\n\t\t\t\tpath: PropTypes.string\n\t\t\t})\n\t\t)\n\t}).isRequired,\n\tisActive: PropTypes.func.isRequired,\n\tonClick: PropTypes.func.isRequired,\n\tcollapse: PropTypes.bool.isRequired,\n\tcolor: PropTypes.string.isRequired,\n\thoverBgColor: PropTypes.string.isRequired,\n\thoverColor: PropTypes.string.isRequired,\n\thighlightBgColor: PropTypes.string.isRequired,\n\thighlightColor: PropTypes.string.isRequired\n}\n\nSideNavLink.displayName = 'SideNavLink'\n\nexport default SideNavLink\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport SideNavLink from './SideNavLink'\n\nconst SideNavSection = ({\n\tcollapse,\n\tsection: { items, title },\n\tisActive,\n\tsetRoute,\n\tcolorTitle,\n\tcolor,\n\thoverBgColor,\n\thoverColor,\n\thighlightBgColor,\n\thighlightColor\n}) => {\n\tconst onClick = ({ onClickItem, path }) => (onClickItem ? onClickItem(path) : setRoute(path))\n\treturn (\n\t\t<section>\n\t\t\t<SideNavSectionStyled>\n\t\t\t\t<SideNavSectionTitle show={!!title} collapse={collapse} color={colorTitle}>\n\t\t\t\t\t{title}\n\t\t\t\t</SideNavSectionTitle>\n\t\t\t\t{items.map(item =>\n\t\t\t\t\titem.render ? (\n\t\t\t\t\t\tcollapse ? (\n\t\t\t\t\t\t\titem.render.collapsed\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\titem.render.expanded\n\t\t\t\t\t\t)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SideNavLink\n\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\t\t\tonClick={() => onClick(item)}\n\t\t\t\t\t\t\tisActive={isActive}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\thighlightColor={highlightColor}\n\t\t\t\t\t\t\thighlightBgColor={highlightBgColor}\n\t\t\t\t\t\t\thoverBgColor={hoverBgColor}\n\t\t\t\t\t\t\thoverColor={hoverColor}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</SideNavSectionStyled>\n\t\t</section>\n\t)\n}\n\nconst SideNavSectionStyled = styled.div`\n\tpadding-left: 0px;\n`\n\nexport const SideNavSectionTitle = styled.div`\n\tdisplay: ${({ show }) => (show ? 'block' : 'none')};\n\theight: 36px;\n\tpadding: ${({ collapse }) => (collapse ? '0' : '0 32px;')};\n\n\tcolor: ${({ color }) => color};\n\tfont-size: ${({ collapse }) => (collapse ? '11px' : '15px')};\n\ttext-align: ${({ collapse }) => (collapse ? 'center' : 'left')};\n\ttext-transform: uppercase;\n\n\ttransition: ${({ collapse }) => (collapse ? '0' : '0.3s')};\n`\n\nSideNavSection.propTypes = {\n\tsetRoute: PropTypes.func.isRequired,\n\tisActive: PropTypes.func.isRequired,\n\tcollapse: PropTypes.bool.isRequired,\n\tsection: PropTypes.shape({\n\t\ttitle: PropTypes.string,\n\t\titems: PropTypes.arrayOf(\n\t\t\tPropTypes.shape({\n\t\t\t\trender: PropTypes.shape({\n\t\t\t\t\tcollapsed: PropTypes.element.isRequired,\n\t\t\t\t\texpanded: PropTypes.element.isRequired\n\t\t\t\t}),\n\t\t\t\ticon: PropTypes.string,\n\t\t\t\ttitle: PropTypes.string,\n\t\t\t\tpath: PropTypes.string,\n\t\t\t\titems: PropTypes.arrayOf(\n\t\t\t\t\tPropTypes.shape({\n\t\t\t\t\t\ttitle: PropTypes.string,\n\t\t\t\t\t\tpath: PropTypes.string\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t})\n\t\t)\n\t}).isRequired,\n\tcolor: PropTypes.string.isRequired,\n\tcolorTitle: PropTypes.string.isRequired,\n\thoverBgColor: PropTypes.string.isRequired,\n\thoverColor: PropTypes.string.isRequired,\n\thighlightBgColor: PropTypes.string.isRequired,\n\thighlightColor: PropTypes.string.isRequired\n}\n\nSideNavSection.displayName = 'SideNavSection'\n\nexport default SideNavSection\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport QubeLogo from '../../../assets/logo/qube-logo.svg'\nimport QubeSymbol from '../../../assets/logo/qube-symbol.svg'\nimport theme from '../../../themes/default'\nimport { Icon } from '../../icons'\n\nimport SubNav from './SubNav'\nimport SideNavSection from './SideNavSection'\n\nclass SideNav extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.state = {\n\t\t\tonHover: false\n\t\t}\n\t}\n\n\tonMouseEnter = () => {\n\t\tthis.timeout = setTimeout(() => this.setState({ onHover: true }), 350)\n\t}\n\n\tonMouseLeave = () => {\n\t\tclearTimeout(this.timeout)\n\t\tthis.setState({ onHover: false })\n\t}\n\n\tgetActiveItem = ({ items }) => {\n\t\treturn items.find(item => this.isActive(item) || (item.items && this.getActiveItem(item)))\n\t}\n\n\tisActive = item => {\n\t\tconst { matchPath, location } = this.props\n\t\tconst params = item.matchPath ? { path: item.matchPath, exact: false } : item.path\n\t\tconst match = matchPath(location, params)\n\n\t\treturn match && (match.isExact || item.matchPath)\n\t}\n\n\tactiveSection = () => {\n\t\tconst { nav } = this.props\n\t\treturn nav.find(section => this.getActiveItem(section))\n\t}\n\n\tactiveItem = () => {\n\t\tconst activeSection = this.activeSection()\n\t\treturn activeSection && this.getActiveItem(activeSection)\n\t}\n\n\tactiveItemHasSubNav = () => {\n\t\treturn this.activeItem() && this.activeItem().items\n\t}\n\n\tisCollapsed = () => {\n\t\tconst { onHover } = this.state\n\t\treturn this.activeSection() !== undefined && this.activeItemHasSubNav() !== undefined && !onHover\n\t}\n\n\tnotLastElement = index => {\n\t\tconst { nav } = this.props\n\t\treturn index !== nav.length - 1\n\t}\n\n\trenderCollapseToggle = (isToggleCollapsed, setToggleCollapsed) => (\n\t\t<CollapseToggle onClick={() => setToggleCollapsed(!isToggleCollapsed)}>\n\t\t\t<ToggleIcon icon={!isToggleCollapsed ? 'select-left' : 'select-right'} color={theme.colors.darkGray} />\n\t\t</CollapseToggle>\n\t)\n\n\trender() {\n\t\tconst {\n\t\t\tnav,\n\t\t\tsetRoute,\n\t\t\tcustomActions,\n\t\t\tlogo,\n\t\t\tsymbol,\n\t\t\tbgColor,\n\t\t\tdividerColor,\n\t\t\tcolor,\n\t\t\thoverBgColor,\n\t\t\thoverColor,\n\t\t\thighlightColor,\n\t\t\thighlightBgColor,\n\t\t\tcolorTitle,\n\t\t\tsubNavBgColor,\n\t\t\tsubNavColor,\n\t\t\tsubNavColorTitle,\n\t\t\tsubNavHoverBgColor,\n\t\t\tsubNavHoverColor,\n\t\t\tsubNavHighlightBgColor,\n\t\t\tsubNavHighlightColor,\n\t\t\tcustomIconColor,\n\t\t\tsetToggleCollapsed,\n\t\t\tisToggleCollapsed\n\t\t} = this.props\n\t\tconst collapse = this.isCollapsed()\n\n\t\treturn (\n\t\t\t<SideNavStyled id='menu'>\n\t\t\t\t<Nav\n\t\t\t\t\tisToggleCollapsed={isToggleCollapsed}\n\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\tonMouseEnter={this.onMouseEnter}\n\t\t\t\t\tonMouseLeave={this.onMouseLeave}\n\t\t\t\t\tbgColor={bgColor}\n\t\t\t\t>\n\t\t\t\t\t{setToggleCollapsed && this.renderCollapseToggle(isToggleCollapsed, setToggleCollapsed)}\n\t\t\t\t\t{!isToggleCollapsed && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<LogoContainer>\n\t\t\t\t\t\t\t\t<Logo collapse={collapse} onClick={() => setRoute('/')}>\n\t\t\t\t\t\t\t\t\t<img src={logo} data-test-id='menu-logo' draggable='false' alt='logo' />\n\t\t\t\t\t\t\t\t</Logo>\n\t\t\t\t\t\t\t\t<LogoIcon collapse={collapse} onClick={() => setRoute('/')}>\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\tsrc={symbol}\n\t\t\t\t\t\t\t\t\t\tdata-test-id='menu-small-logo'\n\t\t\t\t\t\t\t\t\t\tdraggable='false'\n\t\t\t\t\t\t\t\t\t\talt='small logo'\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</LogoIcon>\n\t\t\t\t\t\t\t</LogoContainer>\n\n\t\t\t\t\t\t\t{nav.map((section, index) => (\n\t\t\t\t\t\t\t\t<div key={section.id}>\n\t\t\t\t\t\t\t\t\t<SideNavSection\n\t\t\t\t\t\t\t\t\t\tsection={section}\n\t\t\t\t\t\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\t\t\t\t\t\tisActive={this.isActive}\n\t\t\t\t\t\t\t\t\t\tsetRoute={route => {\n\t\t\t\t\t\t\t\t\t\t\tthis.onMouseLeave()\n\t\t\t\t\t\t\t\t\t\t\tsetRoute(route)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\thoverBgColor={hoverBgColor}\n\t\t\t\t\t\t\t\t\t\thoverColor={hoverColor}\n\t\t\t\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\t\t\t\tcolorTitle={colorTitle}\n\t\t\t\t\t\t\t\t\t\thighlightBgColor={highlightBgColor}\n\t\t\t\t\t\t\t\t\t\thighlightColor={highlightColor}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<DividerContainer>\n\t\t\t\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\t\t\t\tcolor={dividerColor}\n\t\t\t\t\t\t\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\t\t\t\t\t\t\tshow={this.notLastElement(index)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</DividerContainer>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t\t<CustomIconList collapse={collapse}>\n\t\t\t\t\t\t\t\t{customActions.map(({ icon, onClick }) => (\n\t\t\t\t\t\t\t\t\t<CustomIconRow key={icon}>\n\t\t\t\t\t\t\t\t\t\t<CustomIcon\n\t\t\t\t\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t\t\t\t\t\tcolor={customIconColor}\n\t\t\t\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</CustomIconRow>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</CustomIconList>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Nav>\n\n\t\t\t\t{this.activeItem() && this.activeItem().items && (\n\t\t\t\t\t<SubNav\n\t\t\t\t\t\tcollapse={collapse}\n\t\t\t\t\t\tactiveItem={this.activeItem()}\n\t\t\t\t\t\tisActive={item => this.isActive(item)}\n\t\t\t\t\t\tsetRoute={setRoute}\n\t\t\t\t\t\tsubNavBgColor={subNavBgColor}\n\t\t\t\t\t\tsubNavColor={subNavColor}\n\t\t\t\t\t\tsubNavColorTitle={subNavColorTitle}\n\t\t\t\t\t\tsubNavHoverBgColor={subNavHoverBgColor}\n\t\t\t\t\t\tsubNavHoverColor={subNavHoverColor}\n\t\t\t\t\t\tsubNavHighlightBgColor={subNavHighlightBgColor}\n\t\t\t\t\t\tsubNavHighlightColor={subNavHighlightColor}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</SideNavStyled>\n\t\t)\n\t}\n}\n\nconst CollapseToggle = styled.div`\n\tposition: absolute;\n\tright: -12px;\n\tdisplay: flex;\n\twidth: 30px;\n\theight: 30px;\n\n\talign-items: center;\n\tjustify-content: center;\n\tborder: 1px solid #dddddd;\n\n\tbackground: #ffffff;\n\tborder-radius: 50%;\n\tbox-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25);\n\n\tcursor: pointer;\n`\nCollapseToggle.displayName = 'CollapseToggle'\n\nconst ToggleIcon = styled(Icon)`\n\tcolor: black;\n`\n\nconst DividerContainer = styled.div`\n\tdisplay: flex;\n\theight: 60px;\n\tflex-direction: column;\n`\n\nconst Divider = styled.div`\n\tdisplay: ${({ show }) => (show ? 'block' : 'none')};\n\n\twidth: ${({ collapse }) => (collapse ? '56px' : '75%')};\n\tmargin: auto;\n\tborder: 1px solid ${({ color }) => color};\n`\n\nconst SideNavStyled = styled.div`\n\tz-index: 2;\n\tdisplay: flex;\n\theight: 100%;\n`\n\nconst Nav = styled.div`\n\tposition: relative;\n\tz-index: 3;\n\n\twidth: ${({ collapse, isToggleCollapsed }) => (collapse ? '56px' : isToggleCollapsed ? '20px' : '100%')};\n\theight: 100%;\n\tmin-height: 664px;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 32px 0;\n\n\tbackground: ${({ bgColor }) => bgColor};\n\tbox-shadow: ${({ collapse }) => (collapse ? 'none' : ' 2px 0px 2px rgba(0, 0, 0, 0.08)')};\n\ttransition: width 260ms cubic-bezier(0.2, 0, 0, 1) 0s;\n`\n\nNav.displayName = 'Nav'\n\nconst LogoContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 38px;\n\n\tjustify-content: center;\n\n\tmargin-top: 12px;\n\tmargin-bottom: 32px;\n`\n\nconst LogoIcon = styled.div`\n\tdisplay: ${({ collapse }) => (collapse ? 'block' : 'none')};\n\tmargin: auto;\n\tcursor: pointer;\n\n\timg {\n\t\tmin-width: 24px;\n\t\tmax-width: 32px;\n\t}\n`\nLogoIcon.displayName = 'LogoIcon'\n\nconst Logo = styled.div`\n\tdisplay: ${({ collapse }) => (collapse ? 'none' : 'flex')};\n\twidth: 100%;\n\tjustify-content: center;\n\tmargin: auto;\n\tcursor: pointer;\n\n\timg {\n\t\tmax-width: 154px;\n\t}\n`\nLogo.displayName = 'Logo'\n\nconst CustomIconList = styled.div`\n\tposition: absolute;\n\tbottom: 10px;\n\tleft: ${({ collapse }) => (collapse ? '18px' : '32px')} !important;\n`\n\nconst CustomIconRow = styled.div`\n\tpadding: 10px 0;\n`\n\nconst CustomIcon = styled(({ collapse, ...props }) => <Icon {...props} />)`\n\tcursor: pointer;\n\tfont-size: 17px !important;\n`\n\nCustomIcon.displayName = 'CustomIcon'\n\nSideNav.defaultProps = {\n\tlogo: QubeLogo,\n\tsymbol: QubeSymbol,\n\tbgColor: theme.colors.deepBlue,\n\tcolorTitle: theme.colors.white,\n\tcolor: theme.colors.white,\n\thoverBgColor: theme.colors.activeBlue,\n\thoverColor: theme.colors.white,\n\thighlightBgColor: theme.colors.white,\n\thighlightColor: theme.colors.deepBlue,\n\tdividerColor: theme.colors.white,\n\n\tsubNavBgColor: theme.colors.white,\n\tsubNavColor: theme.colors.black,\n\tsubNavColorTitle: theme.colors.deepBlue,\n\tsubNavHoverBgColor: theme.colors.lightGray,\n\tsubNavHoverColor: theme.colors.activeBlue,\n\tsubNavHighlightBgColor: theme.colors.lightGray,\n\tsubNavHighlightColor: theme.colors.deepBlue,\n\n\tcustomIconColor: theme.colors.white,\n\tcustomActions: [],\n\n\tisToggleCollapsed: false,\n\tsetToggleCollapsed: undefined\n}\n\nSideNav.propTypes = {\n\tsetRoute: PropTypes.func.isRequired,\n\tlocation: PropTypes.string.isRequired,\n\tmatchPath: PropTypes.func.isRequired,\n\tcustomActions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ticon: PropTypes.string.isRequired,\n\t\t\tonClick: PropTypes.func.isRequired\n\t\t})\n\t),\n\tnav: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttitle: PropTypes.string,\n\t\t\titems: PropTypes.arrayOf(\n\t\t\t\tPropTypes.shape({\n\t\t\t\t\ticon: PropTypes.string,\n\t\t\t\t\ttitle: PropTypes.string,\n\t\t\t\t\tpath: PropTypes.string,\n\t\t\t\t\titems: PropTypes.arrayOf(\n\t\t\t\t\t\tPropTypes.shape({\n\t\t\t\t\t\t\ttitle: PropTypes.string,\n\t\t\t\t\t\t\tpath: PropTypes.string\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t)\n\t\t})\n\t).isRequired,\n\t/* Custom logo image */\n\tlogo: PropTypes.string,\n\t/* Custom symbol image */\n\tsymbol: PropTypes.string,\n\t/* Background color of SideNav */\n\tbgColor: PropTypes.string,\n\t/* Font color of SideNav */\n\tcolor: PropTypes.string,\n\t/* Section title color of SideNav */\n\tcolorTitle: PropTypes.string,\n\t/* When Hover background color of SideNav */\n\thoverBgColor: PropTypes.string,\n\t/* When Hover font color of SideNav */\n\thoverColor: PropTypes.string,\n\t/* when active background color of SideNav */\n\thighlightBgColor: PropTypes.string,\n\t/* when active font color of SideNav */\n\thighlightColor: PropTypes.string,\n\t/* Divider color of SideNav */\n\tdividerColor: PropTypes.string,\n\t/* Background color of SubNav */\n\tsubNavBgColor: PropTypes.string,\n\t/* font color of SubNav */\n\tsubNavColor: PropTypes.string,\n\t/* title color of SubNav */\n\tsubNavColorTitle: PropTypes.string,\n\t/* When Hover background color of SubNav */\n\tsubNavHoverBgColor: PropTypes.string,\n\t/* When Hover font color of SubNav */\n\tsubNavHoverColor: PropTypes.string,\n\t/* When active background color of SubNav */\n\tsubNavHighlightBgColor: PropTypes.string,\n\t/* When active font color of SubNav */\n\tsubNavHighlightColor: PropTypes.string,\n\t/* Custom Icon color */\n\tcustomIconColor: PropTypes.string,\n\t/* if was collapse with toggle */\n\tisToggleCollapsed: PropTypes.bool,\n\t/* function to run when toggle */\n\tsetToggleCollapsed: PropTypes.func\n}\n\nSideNav.displayName = 'SideNav'\n\nexport default SideNav\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst AnchorMenuItem = ({ title, active, ...props }) => (\n\t<MenuItemStyled {...props}>\n\t\t{active && <Marker />}\n\t\t<NormalTextStyled active={active}>{title}</NormalTextStyled>\n\t</MenuItemStyled>\n)\n\nAnchorMenuItem.defaultProps = {\n\tactive: false\n}\n\nAnchorMenuItem.displayName = 'AnchorMenuItem'\n\nAnchorMenuItem.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tactive: PropTypes.bool,\n\tonClick: PropTypes.func.isRequired\n}\n\nconst Marker = styled.div`\n\tposition: absolute;\n\tleft: 6px;\n\twidth: 2px;\n\theight: 20px;\n\tbackground-color: ${({ theme }) => theme.colors.deepBlue};\n`\n\nMarker.displayName = 'Marker'\n\nconst MenuItemStyled = styled.div`\n\tdisplay: flex;\n\theight: 34px;\n\tflex-direction: column;\n\tjustify-content: center;\n\tpadding-left: 12px;\n\n\tborder: 0.5px solid ${({ theme }) => theme.colors.lightGray};\n\tcursor: pointer;\n\n\t&:focus span,\n\t&:hover span {\n\t\tcolor: ${({ theme }) => theme.colors.activeBlue};\n\t}\n`\n\nMenuItemStyled.displayName = 'MenuItemStyled'\n\nconst NormalTextStyled = styled.span`\n\tcolor: ${({ theme, active }) => (active ? `${theme.colors.deepBlue} !important` : theme.colors.black)};\n\tfont-weight: ${({ active }) => (active ? 'bold' : 'normal')};\n`\n\nNormalTextStyled.displayName = 'NormalTextStyled'\n\nexport default AnchorMenuItem\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport AnchorMenuItem from './AnchorMenuItem'\n\nconst AnchorMenuMapper = ({ items, ...props }) => (\n\t<AnchorMenuStyled {...props}>\n\t\t{items.map(({ title, ...rest }) => (\n\t\t\t<AnchorMenuItem key={title} title={title} {...rest} />\n\t\t))}\n\t</AnchorMenuStyled>\n)\n\nexport const AnchorMenuStyled = styled.div`\n\tposition: relative;\n\tborder: 0.5px solid ${({ theme }) => theme.colors.lightGray};\n\tborder-radius: 4px;\n`\n\nAnchorMenuMapper.propTypes = {\n\titems: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\tanchor: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n\t\t\tpath: PropTypes.string,\n\t\t\tactive: PropTypes.bool\n\t\t})\n\t).isRequired\n}\n\nexport default AnchorMenuMapper\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport AnchorMenuMapper from './AnchorMenuMapper'\n\nclass ScrollableAnchorMenu extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.lockClear = ''\n\t\tthis.state = {\n\t\t\tselectedItem: 0,\n\t\t\tlockSelectedItem: false,\n\t\t\tscrollingTo: -1\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\t}\n\n\tUNSAFE_componentWillUnmount() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t}\n\n\tsetSelectedItem = (selectedItem, lockSelectedItem, scrollingTo) => {\n\t\tthis.setState({\n\t\t\tselectedItem,\n\t\t\tlockSelectedItem,\n\t\t\tscrollingTo\n\t\t})\n\t}\n\n\tlimitValue = (val, min, max) => (val < min ? min : val > max ? max : val)\n\n\tgetCoords = elem => {\n\t\tconst { top } = elem.getBoundingClientRect()\n\n\t\tconst { body } = document\n\t\tconst docEl = document.documentElement\n\n\t\tconst scrollTop = window.scrollY || docEl.scrollTop || body.scrollTop\n\t\tconst clientTop = docEl.clientTop || body.clientTop || 0\n\n\t\treturn top + scrollTop - clientTop\n\t}\n\n\tfindCurrentSection = items => {\n\t\tconst sectionIndex = items.findIndex(\n\t\t\t({ anchor }) => this.getCoords(anchor.current) - document.documentElement.scrollTop > 0\n\t\t)\n\t\treturn sectionIndex >= 0 ? sectionIndex - 1 : items.length - 1\n\t}\n\n\tsearchItemsForCurrentSection = () => {\n\t\tconst { items } = this.props\n\t\tconst currentSection = this.limitValue(this.findCurrentSection(items), 0, items.length - 1)\n\t\treturn currentSection >= 0 ? currentSection : items.length - 1\n\t}\n\n\tclearLockTimeOut = () => {\n\t\tclearTimeout(this.lockClear)\n\t\tthis.lockClear = setTimeout(() => {\n\t\t\tthis.setSelectedItem(this.searchItemsForCurrentSection(), false, -1)\n\t\t}, 200)\n\t}\n\n\thandleScroll = () => {\n\t\tconst { selectedItem, lockSelectedItem, scrollingTo } = this.state\n\t\tif (!lockSelectedItem) {\n\t\t\tthis.setSelectedItem(this.searchItemsForCurrentSection(), false, -1)\n\t\t} else if (scrollingTo === document.documentElement.scrollTop) {\n\t\t\tclearTimeout(this.lockClear)\n\t\t\tthis.setSelectedItem(selectedItem, false, scrollingTo)\n\t\t} else {\n\t\t\tthis.clearLockTimeOut()\n\t\t}\n\t}\n\n\tonItemClick = (anchor, index) => {\n\t\tconst y = this.getCoords(anchor.current)\n\t\tthis.setSelectedItem(index, true, y)\n\t\twindow.scrollTo({ top: y, behavior: 'smooth' })\n\t}\n\n\trender() {\n\t\tconst { selectedItem } = this.state\n\t\tconst { items, ...props } = this.props\n\t\tconst computedItems = items.map((item, index) => ({\n\t\t\tonClick: () => this.onItemClick(item.anchor, index),\n\t\t\tactive: selectedItem === index,\n\t\t\t...item\n\t\t}))\n\t\treturn <AnchorMenuMapper items={computedItems} {...props} />\n\t}\n}\n\nScrollableAnchorMenu.displayName = 'ScrollableAnchorMenu'\n\nScrollableAnchorMenu.propTypes = {\n\titems: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tanchor: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n\t\t\ttitle: PropTypes.string.isRequired\n\t\t})\n\t).isRequired\n}\n\nexport default ScrollableAnchorMenu\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport AnchorMenuMapper from './AnchorMenuMapper'\n\nconst NavigationAnchorMenu = ({ items, onItemClick }) => {\n\tconst newItems = items.map(item => ({\n\t\tonClick: () => onItemClick(item.path),\n\t\t...item\n\t}))\n\treturn <AnchorMenuMapper items={newItems} />\n}\n\nNavigationAnchorMenu.displayName = 'NavigationAnchorMenu'\n\nNavigationAnchorMenu.propTypes = {\n\tonItemClick: PropTypes.func.isRequired,\n\titems: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tpath: PropTypes.string.isRequired,\n\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\tactive: PropTypes.bool\n\t\t})\n\t).isRequired\n}\n\nexport default NavigationAnchorMenu\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport ScrollableAnchorMenu from './ScrollableAnchorMenu'\nimport NavigationAnchorMenu from './NavigationAnchorMenu'\n\nconst AnchorMenu = ({ type, items, onItemClick, ...props }) =>\n\ttype === 'scrollable' ? (\n\t\t<ScrollableAnchorMenu items={items} {...props} />\n\t) : (\n\t\t<NavigationAnchorMenu items={items} onItemClick={onItemClick} {...props} />\n\t)\n\nAnchorMenu.defaultProps = {\n\tonItemClick: undefined\n}\n\nAnchorMenu.propTypes = {\n\ttype: PropTypes.oneOf(['scrollable', 'navigation']).isRequired,\n\titems: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\tanchor: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n\t\t\tpath: PropTypes.string,\n\t\t\tactive: PropTypes.bool\n\t\t})\n\t).isRequired,\n\tonItemClick: PropTypes.func\n}\n\nexport default AnchorMenu\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst BlockWrapper = styled.div`\n\tpadding: 24px 15px;\n\n\tbackground-color: ${({ theme, background }) => background || theme.block.backgroundColor} !important;\n\tborder-radius: ${({ theme }) => theme.block.borderRadius} !important;\n\tcolor: ${({ theme, color }) => color || theme.block.color} !important;\n\tvertical-align: middle;\n\n\tp {\n\t\tpadding: 0 !important;\n\t\tmargin: 0 !important;\n\t\ttext-align: center;\n\t}\n`\n\nBlockWrapper.displayName = 'BlockWrapper'\n\nBlockWrapper.propTypes = {\n\tcolor: PropTypes.string,\n\tbackground: PropTypes.string\n}\n\nexport default BlockWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport BlockWrapper from './BlockWrapper'\n\n/**\n * block component\n */\n\nconst Block = ({ value, label, ...props }) => (\n\t<BlockWrapper {...props}>\n\t\t<div>\n\t\t\t<p style={{ fontSize: 40 }}>{` ${value}`}</p>\n\t\t\t<p style={{ fontSize: 14, textTransform: 'uppercase' }}>{label}</p>\n\t\t</div>\n\t</BlockWrapper>\n)\n\nBlock.defaultProps = {\n\tcolor: '#fff',\n\tbackground: '#a21d21'\n}\n\nBlock.propTypes = {\n\t/** value present on the middle of the component */\n\tvalue: PropTypes.number.isRequired,\n\t/** text present below the value */\n\tlabel: PropTypes.string.isRequired,\n\t/** text color */\n\tcolor: PropTypes.string,\n\t/** background color [hex] */\n\tbackground: PropTypes.string\n}\n\nBlock.displayName = 'Block'\n\nexport default Block\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport BlockWrapper from '../Block/BlockWrapper'\n\nconst BlockBarWrapper = styled(BlockWrapper)`\n\tvertical-align: middle;\n\n\t&&& p {\n\t\tpadding: 0 !important;\n\t\tmargin: 0 !important;\n\t\ttext-align: left;\n\t}\n\n\t&&& div {\n\t\tpadding-left: 8px !important;\n\n\t\tborder-color: ${({ theme, labelColor }) => labelColor || theme.block.labelColor};\n\t\tborder-left-width: 5px;\n\t\tborder-left-style: solid;\n\t}\n`\n\nBlockBarWrapper.propTypes = {\n\tlabelColor: PropTypes.string\n}\n\nBlockBarWrapper.displayName = 'BlockBarWrapper'\n\nexport default BlockBarWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport BlockBarWrapper from './BlockBarWrapper'\n\n/**\n * block component\n */\n\nconst BlockBar = ({ value, label, labelColor, ...props }) => (\n\t<BlockBarWrapper labelColor={labelColor} {...props}>\n\t\t<div>\n\t\t\t<p style={{ fontSize: 40 }}>{` ${value}`}</p>\n\t\t\t<p style={{ fontSize: 14, textTransform: 'uppercase' }}>{label}</p>\n\t\t</div>\n\t</BlockBarWrapper>\n)\n\nBlockBar.defaultProps = {\n\tlabelColor: '#ffffff'\n}\n\nBlockBar.propTypes = {\n\tvalue: PropTypes.number.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tlabelColor: PropTypes.string\n}\n\nBlockBar.displayName = 'BlockBar'\n\n/** @component */\nexport default BlockBar\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst Span = styled.span`\n\tcolor: ${({ theme, type, color }) => (type ? theme.span[type] : color || theme.span.defaultColor)} !important;\n\tfont-weight: ${({ bold }) => (bold ? 700 : undefined)} !important;\n`\n\nSpan.propTypes = {\n\tbold: PropTypes.bool,\n\tcolor: PropTypes.string,\n\ttype: PropTypes.oneOf(['positive', 'negative', 'primary'])\n}\n\nSpan.displayName = 'Span'\n\nexport default Span\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Icon, IconName } from '../../icons'\n\nconst ModalIconP = styled.p`\n\tpadding-top: 0 !important;\n\tpadding-bottom: 8px !important;\n\tmargin: 0;\n\tfont-size: 15px !important;\n\n\ti {\n\t\twidth: 29px !important;\n\t\theight: 26px !important;\n\t\tfont-size: 26px !important;\n\t}\n`\n\nconst ModalIcon = ({ color, icon }) => (\n\t<ModalIconP>\n\t\t<Icon color={color} size='big' icon={icon} />\n\t</ModalIconP>\n)\n\nModalIcon.defaultProps = {\n\tcolor: 'black'\n}\n\nModalIcon.propTypes = {\n\ticon: PropTypes.oneOf(IconName).isRequired,\n\tcolor: PropTypes.string\n}\n\nModalIcon.displayName = 'ModalIcon'\n\nexport default ModalIcon\n","import styled from 'styled-components'\n\nconst ModalTitle = styled.p`\n\tpadding-top: 0 !important;\n\tpadding-bottom: 8px !important;\n\tmargin: 0;\n\tmargin-top: ${({ icon }) => (icon ? 0 : '8px')} !important;\n\n\tcolor: ${props => props.theme.colors.darkGray} !important;\n\tfont-size: 15px !important;\n`\n\nModalTitle.displayName = 'ModalTitle'\n\nexport default ModalTitle\n","import styled from 'styled-components'\n\nconst ModalText = styled.p`\n\tpadding-top: 0 !important;\n\tpadding-bottom: 16px !important;\n\tmargin: 0;\n\tfont-size: 13px !important;\n`\n\nModalText.displayName = 'ModalText'\n\nexport default ModalText\n","import React from 'react'\nimport { Modal as SemanticModal } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport ModalIcon from './ModalIcon'\nimport ModalTitle from './ModalTitle'\nimport ModalText from './ModalText'\n\nconst ModalStyled = styled(SemanticModal)`\n\tbackground: #fff !important;\n\tborder-radius: 4px !important;\n\tbox-shadow: 0 0 3px rgba(0, 0, 0, 0.25) !important;\n\tcolor: ${props => props.theme.colors.mediumGray} !important;\n\n\t.actions {\n\t\tborder-top: none !important;\n\t}\n\n\t&&.ui.modal > .content {\n\t\tpadding: 16px !important;\n\t}\n\n\t&&.ui.modal > .close {\n\t\ttop: 0 !important;\n\t\tright: 0 !important;\n\n\t\twidth: 10px !important;\n\t\theight: 10px !important;\n\t\tpadding: 0 !important;\n\t\tmargin: 8px !important;\n\n\t\tcolor: ${({ theme }) => theme.colors.gray} !important;\n\t\tfont-size: 15px !important;\n\t\topacity: 1 !important;\n\t}\n\n\t&&.ui.modal > .close:hover {\n\t\tcolor: ${({ theme }) => theme.colors.mediumGray} !important;\n\t}\n`\n\nModalStyled.Icon = ModalIcon\nModalStyled.Title = ModalTitle\nModalStyled.Text = ModalText\n\nModalStyled.displayName = 'ModalStyled'\n\nexport default ModalStyled\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { IconName } from '../../icons'\nimport { ButtonLink, Button } from '../../buttons'\n\nimport ModalStyled from '../styles/ModalStyled'\n\nconst Modal = ({\n\tchildren,\n\ticon,\n\ticonColor,\n\ttext,\n\ttitle,\n\tpositiveLabel,\n\tpositiveActionHandler,\n\tnegativeLabel,\n\tnegativeActionHandler,\n\tcloseOnDimmerClick,\n\tcloseIcon,\n\tloading,\n\t...props\n}) => (\n\t<ModalStyled dimmer='inverted' size='mini' closeOnDimmerClick={closeOnDimmerClick} closeIcon={closeIcon} {...props}>\n\t\t<ModalStyled.Content>\n\t\t\t{icon && <ModalStyled.Icon color={iconColor} icon={icon} />}\n\t\t\t{title && <ModalStyled.Title icon={!!icon}>{title}</ModalStyled.Title>}\n\t\t\t{text && <ModalStyled.Text>{text}</ModalStyled.Text>}\n\t\t\t{children && <div>{children}</div>}\n\t\t\t<Flex>\n\t\t\t\t<ButtonLink autoFocus={true} onClick={negativeActionHandler}>\n\t\t\t\t\t{negativeLabel}\n\t\t\t\t</ButtonLink>\n\t\t\t\t{positiveLabel && <Button onClick={positiveActionHandler} content={positiveLabel} loading={loading} />}\n\t\t\t</Flex>\n\t\t</ModalStyled.Content>\n\t</ModalStyled>\n)\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\tjustify-content: space-between;\n`\n\nModal.defaultProps = {\n\ticonColor: '#000',\n\tchildren: null,\n\ticon: null,\n\ttext: '',\n\ttitle: '',\n\tpositiveLabel: '',\n\tpositiveActionHandler: null,\n\tnegativeLabel: '',\n\tnegativeActionHandler: null,\n\tcloseOnDimmerClick: false,\n\tloading: false,\n\tcloseIcon: true\n}\n\nModal.propTypes = {\n\t/** Custom content that is added to modal content */\n\tchildren: PropTypes.node,\n\t/** name of the icon present on top */\n\ticon: PropTypes.oneOf(IconName),\n\t/** Color of the icon */\n\ticonColor: PropTypes.string,\n\t/** Simple text content for the Modal. */\n\ttext: PropTypes.string,\n\t/** Simple title content for the Modal. */\n\ttitle: PropTypes.string,\n\t/** Right button label */\n\tpositiveLabel: PropTypes.string,\n\t/** Right button click handler */\n\tpositiveActionHandler: PropTypes.func,\n\t/** Left button label */\n\tnegativeLabel: PropTypes.string,\n\t/** Left button click handler */\n\tnegativeActionHandler: PropTypes.func,\n\t/** Close modal clicking outside */\n\tcloseOnDimmerClick: PropTypes.bool,\n\t/** Loading on the modal positive button */\n\tloading: PropTypes.bool,\n\t/** Has icon to close modal */\n\tcloseIcon: PropTypes.bool\n}\n\nModal.Icon = ModalStyled.Icon\nModal.Title = ModalStyled.Title\nModal.Text = ModalStyled.Text\n\nModal.displayName = 'Modal'\n\nexport default Modal\n","import colors from './colors'\n\nexport default {\n\tname: 'SECONDARY',\n\tcolors,\n\tborderRadius: '0',\n\tnavbar: {\n\t\tbackgroundColor: colors.darkRed\n\t},\n\tbuttons: {\n\t\tborderRadius: '0',\n\t\tprimary: colors.activeBlue,\n\t\tdanger: colors.red,\n\t\tsuccess: colors.green,\n\t\twhite: colors.white,\n\t\tactiveBg: {\n\t\t\tprimary: colors.darkBlue,\n\t\t\tdanger: colors.darkRed,\n\t\t\tsuccess: colors.green,\n\t\t\twhite: colors.white\n\t\t},\n\t\tdropdown: {\n\t\t\tseparatorColor: colors.gray,\n\t\t\tactiveBackgroundColor: colors.gray\n\t\t}\n\t},\n\tlist: {\n\t\tpairCell: colors.lightGray,\n\t\tunPairCell: colors.white,\n\t\ttitle: colors.black,\n\t\tadditionalInfo: colors.gray,\n\t\tactiveCell: colors.lightBlue\n\t},\n\tspan: {\n\t\tdefaultColor: colors.activeBlue,\n\t\tnegative: colors.red,\n\t\tpositive: colors.green,\n\t\tprimary: colors.activeBlue\n\t},\n\tblock: {\n\t\tborderRadius: '0',\n\t\tbackgroundColor: colors.darkRed,\n\t\tlabelColor: colors.darkGray,\n\t\tcolor: colors.darkGray\n\t},\n\tinput: {\n\t\tborderRadius: '0'\n\t},\n\tselect: {\n\t\tborderRadius: '4px',\n\t\tplaceholderColor: '#424242',\n\t\tfocusedBackgroundColor: '#ECECEC',\n\t\tselectedBackgroundColor: '#005BEA',\n\t\tmenuPadding: '5px 10px 5px 10px'\n\t},\n\ttoggle: {\n\t\tcolor: colors.green\n\t},\n\ttimePicker: {\n\t\terrorColor: colors.red,\n\t\tdisabledColor: colors.lightGray,\n\t\tprimaryColor: colors.activeBlue,\n\t\tactiveColor: colors.deepBlue,\n\t\thoverColor: colors.lightGray,\n\t\ttextColor: colors.darkGray\n\t},\n\ttoast: {\n\t\ttitleColor: colors.darkGray,\n\t\tmessageColor: colors.mediumGray,\n\t\terrorColor: colors.red,\n\t\tsuccessColor: colors.green,\n\t\twarningColor: colors.yellow\n\t},\n\tstatus: {\n\t\tbg: {\n\t\t\tsuccess: colors.green,\n\t\t\terror: colors.red,\n\t\t\tinfo: colors.lightBlue\n\t\t},\n\t\tcolor: {\n\t\t\tsuccess: colors.white,\n\t\t\terror: colors.white,\n\t\t\tinfo: colors.darkGray\n\t\t}\n\t}\n}\n","import React from 'react'\nimport Modal from './Modal'\nimport { DefaultTheme } from '../../../themes'\n\nconst DeleteModal = props => <Modal icon='warning' iconColor={DefaultTheme.colors.red} {...props} />\n\nexport default DeleteModal\n","import React from 'react'\nimport styled, { createGlobalStyle } from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { ButtonLink } from '../../buttons/ButtonLink'\nimport ModalStyled from '../styles/ModalStyled'\nimport { Icon } from '../../icons'\nimport theme from '../../../themes/default'\n\nconst FullScreenModal = ({ negativeLabel, negativeActionHandler, children, ...props }) => (\n\t<>\n\t\t<ModalGlobalStyle />\n\t\t<FullModalStyled size='fullscreen' dimmer='inverted' closeIcon={true} {...props}>\n\t\t\t<ModalStyled.Content>\n\t\t\t\t<Top>\n\t\t\t\t\t<ButtonLink onClick={negativeActionHandler}>\n\t\t\t\t\t\t<IconSpaced icon='arrow-left' color={theme.colors.activeBlue} />\n\t\t\t\t\t\t{negativeLabel}\n\t\t\t\t\t</ButtonLink>\n\t\t\t\t</Top>\n\t\t\t\t{children && <CenteredContent>{children}</CenteredContent>}\n\t\t\t</ModalStyled.Content>\n\t\t</FullModalStyled>\n\t</>\n)\n\nconst IconSpaced = styled(Icon)`\n\tmargin-right: 4px !important;\n`\n\nconst CenteredContent = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-top: 136px;\n`\n\nCenteredContent.displayName = 'CenteredContent'\n\nconst Top = styled.div`\n\tposition: absolute;\n\ttop: 24px;\n\tleft: 24px;\n`\n\n// add global style to affect modal wrapper at the body\nconst ModalGlobalStyle = createGlobalStyle`\n\t.ui.dimmer {\n\t\tpadding: 0;\n\t}\n`\n\nconst FullModalStyled = styled(ModalStyled)`\n\t&&&& {\n\t\tright: 0;\n\t\tbottom: 0;\n\t\ttop: 0;\n\t\twidth: 100% !important;\n\t\theight: 100%;\n\t\tmargin: 0 !important;\n\t\tposition: relative;\n\t}\n`\n\nFullScreenModal.defaultProps = {\n\tchildren: null,\n\tnegativeLabel: '',\n\tnegativeActionHandler: null\n}\n\nFullScreenModal.propTypes = {\n\t/** Custom content that is added to modal content */\n\tchildren: PropTypes.node,\n\t/** Left button label */\n\tnegativeLabel: PropTypes.string,\n\t/** Left button click handler */\n\tnegativeActionHandler: PropTypes.func\n}\n\nexport default FullScreenModal\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = function (target) {\n dispatchGlobalEvent(_constant2.default.GLOBAL.HIDE, { target: target });\n };\n\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n target.rebuild = function () {\n dispatchGlobalEvent(_constant2.default.GLOBAL.REBUILD);\n };\n\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n target.show = function (target) {\n dispatchGlobalEvent(_constant2.default.GLOBAL.SHOW, { target: target });\n };\n\n target.prototype.globalRebuild = function () {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function (event) {\n if (this.mount) {\n // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n var e = { currentTarget: event.detail.target };\n this.showTooltip(e, true);\n }\n };\n\n target.prototype.globalHide = function (event) {\n if (this.mount) {\n var hasTarget = event && event.detail && event.detail.target && true || false;\n this.hideTooltip({ currentTarget: hasTarget && event.detail.target }, hasTarget);\n }\n };\n};\n\nvar _constant = require('../constant');\n\nvar _constant2 = _interopRequireDefault(_constant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar dispatchGlobalEvent = function dispatchGlobalEvent(eventName, opts) {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n var event = void 0;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true);\n event.detail = opts;\n }\n\n window.dispatchEvent(event);\n}; /**\n * Static methods for react-tooltip\n */","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n target.prototype.bindWindowEvents = function (resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(_constant2.default.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(_constant2.default.GLOBAL.HIDE, this.globalHide, false);\n\n // ReactTooltip.rebuild\n window.removeEventListener(_constant2.default.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(_constant2.default.GLOBAL.REBUILD, this.globalRebuild, false);\n\n // ReactTooltip.show\n window.removeEventListener(_constant2.default.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(_constant2.default.GLOBAL.SHOW, this.globalShow, false);\n\n // Resize\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function () {\n window.removeEventListener(_constant2.default.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(_constant2.default.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(_constant2.default.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n\n /**\n * invoked by resize event of window\n */\n target.prototype.onWindowResize = function () {\n if (!this.mount) return;\n this.hideTooltip();\n };\n};\n\nvar _constant = require('../constant');\n\nvar _constant2 = _interopRequireDefault(_constant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n target.prototype.isCustomEvent = function (ele) {\n var event = this.state.event;\n\n return event || !!ele.getAttribute('data-event');\n };\n\n /* Bind listener for custom event */\n target.prototype.customBindListener = function (ele) {\n var _this = this;\n\n var _state = this.state,\n event = _state.event,\n eventOff = _state.eventOff;\n\n var dataEvent = ele.getAttribute('data-event') || event;\n var dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n\n dataEvent.split(' ').forEach(function (event) {\n ele.removeEventListener(event, customListeners.get(ele, event));\n var customListener = checkStatus.bind(_this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(function (event) {\n ele.removeEventListener(event, _this.hideTooltip);\n ele.addEventListener(event, _this.hideTooltip, false);\n });\n }\n };\n\n /* Unbind listener for custom event */\n target.prototype.customUnbindListener = function (ele) {\n var _state2 = this.state,\n event = _state2.event,\n eventOff = _state2.eventOff;\n\n var dataEvent = event || ele.getAttribute('data-event');\n var dataEventOff = eventOff || ele.getAttribute('data-event-off');\n\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n};\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nvar checkStatus = function checkStatus(dataEventOff, e) {\n var show = this.state.show;\n var id = this.props.id;\n\n var dataIsCapture = e.currentTarget.getAttribute('data-iscapture');\n var isCapture = dataIsCapture && dataIsCapture === 'true' || this.props.isCapture;\n var currentItem = e.currentTarget.getAttribute('currentItem');\n\n if (!isCapture) e.stopPropagation();\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nvar setUntargetItems = function setUntargetItems(currentTarget, targetArray) {\n for (var i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nvar customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set: function set(target, event, listener) {\n if (this.id in target) {\n var map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: _defineProperty({}, event, listener)\n });\n }\n },\n get: function get(target, event) {\n var map = target[this.id];\n if (map !== undefined) {\n return map[event];\n }\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n target.prototype.isCapture = function (currentTarget) {\n return currentTarget && currentTarget.getAttribute('data-iscapture') === 'true' || this.props.isCapture || false;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n target.prototype.getEffect = function (currentTarget) {\n var dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (target) {\n target.prototype.bindRemovalTracker = function () {\n var _this = this;\n\n var MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n var observer = new MutationObserver(function (mutations) {\n for (var m1 = 0; m1 < mutations.length; m1++) {\n var mutation = mutations[m1];\n for (var m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n var element = mutation.removedNodes[m2];\n if (element === _this.state.currentTarget) {\n _this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function () {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n};\n\n/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nvar getMutationObserverClass = function getMutationObserverClass() {\n return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (e, target, node, place, desiredPlace, effect, offset) {\n var _getDimensions = getDimensions(node),\n tipWidth = _getDimensions.width,\n tipHeight = _getDimensions.height;\n\n var _getDimensions2 = getDimensions(target),\n targetWidth = _getDimensions2.width,\n targetHeight = _getDimensions2.height;\n\n var _getCurrentOffset = getCurrentOffset(e, target, effect),\n mouseX = _getCurrentOffset.mouseX,\n mouseY = _getCurrentOffset.mouseY;\n\n var defaultOffset = getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight);\n\n var _calculateOffset = calculateOffset(offset),\n extraOffset_X = _calculateOffset.extraOffset_X,\n extraOffset_Y = _calculateOffset.extraOffset_Y;\n\n var windowWidth = window.innerWidth;\n var windowHeight = window.innerHeight;\n\n var _getParent = getParent(node),\n parentTop = _getParent.parentTop,\n parentLeft = _getParent.parentLeft;\n\n // Get the edge offset of the tooltip\n\n\n var getTipOffsetLeft = function getTipOffsetLeft(place) {\n var offset_X = defaultOffset[place].l;\n return mouseX + offset_X + extraOffset_X;\n };\n var getTipOffsetRight = function getTipOffsetRight(place) {\n var offset_X = defaultOffset[place].r;\n return mouseX + offset_X + extraOffset_X;\n };\n var getTipOffsetTop = function getTipOffsetTop(place) {\n var offset_Y = defaultOffset[place].t;\n return mouseY + offset_Y + extraOffset_Y;\n };\n var getTipOffsetBottom = function getTipOffsetBottom(place) {\n var offset_Y = defaultOffset[place].b;\n return mouseY + offset_Y + extraOffset_Y;\n };\n\n //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n var outsideLeft = function outsideLeft(p) {\n return getTipOffsetLeft(p) < 0;\n };\n var outsideRight = function outsideRight(p) {\n return getTipOffsetRight(p) > windowWidth;\n };\n var outsideTop = function outsideTop(p) {\n return getTipOffsetTop(p) < 0;\n };\n var outsideBottom = function outsideBottom(p) {\n return getTipOffsetBottom(p) > windowHeight;\n };\n\n // Check whether the tooltip with orientation p is completely inside the client window\n var outside = function outside(p) {\n return outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n };\n var inside = function inside(p) {\n return !outside(p);\n };\n\n var placesList = ['top', 'bottom', 'left', 'right'];\n var insideList = [];\n for (var i = 0; i < 4; i++) {\n var p = placesList[i];\n if (inside(p)) {\n insideList.push(p);\n }\n }\n\n var isNewState = false;\n var newPlace = void 0;\n if (inside(desiredPlace) && desiredPlace !== place) {\n isNewState = true;\n newPlace = desiredPlace;\n } else if (insideList.length > 0 && outside(desiredPlace) && outside(place)) {\n isNewState = true;\n newPlace = insideList[0];\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: { place: newPlace }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n};\n\nvar getDimensions = function getDimensions(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n height = _node$getBoundingClie.height,\n width = _node$getBoundingClie.width;\n\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n};\n\n// Get current mouse offset\n/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nvar getCurrentOffset = function getCurrentOffset(e, currentTarget, effect) {\n var boundingClientRect = currentTarget.getBoundingClientRect();\n var targetTop = boundingClientRect.top;\n var targetLeft = boundingClientRect.left;\n\n var _getDimensions3 = getDimensions(currentTarget),\n targetWidth = _getDimensions3.width,\n targetHeight = _getDimensions3.height;\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nvar getDefaultPosition = function getDefaultPosition(effect, targetWidth, targetHeight, tipWidth, tipHeight) {\n var top = void 0;\n var right = void 0;\n var bottom = void 0;\n var left = void 0;\n var disToMouse = 3;\n var triangleHeight = 2;\n var cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return { top: top, bottom: bottom, left: left, right: right };\n};\n\n// Consider additional offset into position calculation\nvar calculateOffset = function calculateOffset(offset) {\n var extraOffset_X = 0;\n var extraOffset_Y = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/\\'/g, '\\\"'));\n }\n for (var key in offset) {\n if (key === 'top') {\n extraOffset_Y -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffset_Y += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffset_X -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffset_X += parseInt(offset[key], 10);\n }\n }\n\n return { extraOffset_X: extraOffset_X, extraOffset_Y: extraOffset_Y };\n};\n\n// Get the offset of the parent elements\nvar getParent = function getParent(currentTarget) {\n var currentParent = currentTarget;\n while (currentParent) {\n if (window.getComputedStyle(currentParent).getPropertyValue('transform') !== 'none') break;\n currentParent = currentParent.parentElement;\n }\n\n var parentTop = currentParent && currentParent.getBoundingClientRect().top || 0;\n var parentLeft = currentParent && currentParent.getBoundingClientRect().left || 0;\n\n return { parentTop: parentTop, parentLeft: parentLeft };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n var regexp = /<br\\s*\\/?>/;\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n }\n\n // Multiline tooltip content\n return tip.split(regexp).map(function (d, i) {\n return _react2.default.createElement(\n 'span',\n { key: i, className: 'multi-line' },\n d\n );\n });\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseAria = parseAria;\n/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nfunction parseAria(props) {\n var ariaObj = {};\n Object.keys(props).filter(function (prop) {\n // aria-xxx and role is acceptable\n return (/(^aria-\\w+$|^role$)/.test(prop)\n );\n }).forEach(function (prop) {\n ariaObj[prop] = props[prop];\n });\n\n return ariaObj;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (nodeList) {\n var length = nodeList.length;\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n return new Array(length).fill().map(function (index) {\n return nodeList[index];\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = '.__react_component_tooltip{border-radius:3px;display:inline-block;font-size:13px;left:-999em;opacity:0;padding:8px 21px;position:fixed;pointer-events:none;transition:opacity 0.3s ease-out;top:-999em;visibility:hidden;z-index:999}.__react_component_tooltip.allow_hover,.__react_component_tooltip.allow_click{pointer-events:auto}.__react_component_tooltip:before,.__react_component_tooltip:after{content:\"\";width:0;height:0;position:absolute}.__react_component_tooltip.show{opacity:0.9;margin-top:0px;margin-left:0px;visibility:visible}.__react_component_tooltip.type-dark{color:#fff;background-color:#222}.__react_component_tooltip.type-dark.place-top:after{border-top-color:#222;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-dark.place-bottom:after{border-bottom-color:#222;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-dark.place-left:after{border-left-color:#222;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-dark.place-right:after{border-right-color:#222;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-dark.border{border:1px solid #fff}.__react_component_tooltip.type-dark.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-dark.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-dark.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-dark.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-success{color:#fff;background-color:#8DC572}.__react_component_tooltip.type-success.place-top:after{border-top-color:#8DC572;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-success.place-bottom:after{border-bottom-color:#8DC572;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-success.place-left:after{border-left-color:#8DC572;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-success.place-right:after{border-right-color:#8DC572;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-success.border{border:1px solid #fff}.__react_component_tooltip.type-success.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-success.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-success.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-success.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-warning{color:#fff;background-color:#F0AD4E}.__react_component_tooltip.type-warning.place-top:after{border-top-color:#F0AD4E;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-warning.place-bottom:after{border-bottom-color:#F0AD4E;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-warning.place-left:after{border-left-color:#F0AD4E;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-warning.place-right:after{border-right-color:#F0AD4E;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-warning.border{border:1px solid #fff}.__react_component_tooltip.type-warning.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-warning.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-warning.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-warning.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-error{color:#fff;background-color:#BE6464}.__react_component_tooltip.type-error.place-top:after{border-top-color:#BE6464;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-error.place-bottom:after{border-bottom-color:#BE6464;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-error.place-left:after{border-left-color:#BE6464;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-error.place-right:after{border-right-color:#BE6464;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-error.border{border:1px solid #fff}.__react_component_tooltip.type-error.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-error.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-error.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-error.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-info{color:#fff;background-color:#337AB7}.__react_component_tooltip.type-info.place-top:after{border-top-color:#337AB7;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-info.place-bottom:after{border-bottom-color:#337AB7;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-info.place-left:after{border-left-color:#337AB7;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-info.place-right:after{border-right-color:#337AB7;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-info.border{border:1px solid #fff}.__react_component_tooltip.type-info.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-info.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-info.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-info.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-light{color:#222;background-color:#fff}.__react_component_tooltip.type-light.place-top:after{border-top-color:#fff;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-light.place-bottom:after{border-bottom-color:#fff;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-light.place-left:after{border-left-color:#fff;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-light.place-right:after{border-right-color:#fff;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-light.border{border:1px solid #222}.__react_component_tooltip.type-light.border.place-top:before{border-top:8px solid #222}.__react_component_tooltip.type-light.border.place-bottom:before{border-bottom:8px solid #222}.__react_component_tooltip.type-light.border.place-left:before{border-left:8px solid #222}.__react_component_tooltip.type-light.border.place-right:before{border-right:8px solid #222}.__react_component_tooltip.place-top{margin-top:-10px}.__react_component_tooltip.place-top:before{border-left:10px solid transparent;border-right:10px solid transparent;bottom:-8px;left:50%;margin-left:-10px}.__react_component_tooltip.place-top:after{border-left:8px solid transparent;border-right:8px solid transparent;bottom:-6px;left:50%;margin-left:-8px}.__react_component_tooltip.place-bottom{margin-top:10px}.__react_component_tooltip.place-bottom:before{border-left:10px solid transparent;border-right:10px solid transparent;top:-8px;left:50%;margin-left:-10px}.__react_component_tooltip.place-bottom:after{border-left:8px solid transparent;border-right:8px solid transparent;top:-6px;left:50%;margin-left:-8px}.__react_component_tooltip.place-left{margin-left:-10px}.__react_component_tooltip.place-left:before{border-top:6px solid transparent;border-bottom:6px solid transparent;right:-8px;top:50%;margin-top:-5px}.__react_component_tooltip.place-left:after{border-top:5px solid transparent;border-bottom:5px solid transparent;right:-6px;top:50%;margin-top:-4px}.__react_component_tooltip.place-right{margin-left:10px}.__react_component_tooltip.place-right:before{border-top:6px solid transparent;border-bottom:6px solid transparent;left:-8px;top:50%;margin-top:-5px}.__react_component_tooltip.place-right:after{border-top:5px solid transparent;border-bottom:5px solid transparent;left:-6px;top:50%;margin-top:-4px}.__react_component_tooltip .multi-line{display:block;padding:2px 0px;text-align:center}';","'use strict';\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 _class, _class2, _temp;\n\n/* Decorators */\n\n\n/* Utils */\n\n\n/* CSS */\n\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _staticMethods = require('./decorators/staticMethods');\n\nvar _staticMethods2 = _interopRequireDefault(_staticMethods);\n\nvar _windowListener = require('./decorators/windowListener');\n\nvar _windowListener2 = _interopRequireDefault(_windowListener);\n\nvar _customEvent = require('./decorators/customEvent');\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nvar _isCapture = require('./decorators/isCapture');\n\nvar _isCapture2 = _interopRequireDefault(_isCapture);\n\nvar _getEffect = require('./decorators/getEffect');\n\nvar _getEffect2 = _interopRequireDefault(_getEffect);\n\nvar _trackRemoval = require('./decorators/trackRemoval');\n\nvar _trackRemoval2 = _interopRequireDefault(_trackRemoval);\n\nvar _getPosition = require('./utils/getPosition');\n\nvar _getPosition2 = _interopRequireDefault(_getPosition);\n\nvar _getTipContent = require('./utils/getTipContent');\n\nvar _getTipContent2 = _interopRequireDefault(_getTipContent);\n\nvar _aria = require('./utils/aria');\n\nvar _nodeListToArray = require('./utils/nodeListToArray');\n\nvar _nodeListToArray2 = _interopRequireDefault(_nodeListToArray);\n\nvar _style = require('./style');\n\nvar _style2 = _interopRequireDefault(_style);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.default)(_class = (0, _customEvent2.default)(_class = (0, _isCapture2.default)(_class = (0, _getEffect2.default)(_class = (0, _trackRemoval2.default)(_class = (_temp = _class2 = function (_React$Component) {\n _inherits(ReactTooltip, _React$Component);\n\n function ReactTooltip(props) {\n _classCallCheck(this, ReactTooltip);\n\n var _this = _possibleConstructorReturn(this, (ReactTooltip.__proto__ || Object.getPrototypeOf(ReactTooltip)).call(this, props));\n\n _this.state = {\n place: props.place || 'top', // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: 'dark', // Color theme of tooltip\n effect: 'float', // float or fixed\n show: false,\n border: false,\n offset: {},\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null, // Current mouse event\n currentTarget: null, // Current target of mouse event\n ariaProps: (0, _aria.parseAria)(props), // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n originTooltip: null,\n isMultiline: false\n };\n\n _this.bind(['showTooltip', 'updateTooltip', 'hideTooltip', 'hideTooltipOnScroll', 'getTooltipContent', 'globalRebuild', 'globalShow', 'globalHide', 'onWindowResize', 'mouseOnToolTip']);\n\n _this.mount = true;\n _this.delayShowLoop = null;\n _this.delayHideLoop = null;\n _this.delayReshow = null;\n _this.intervalUpdateContent = null;\n return _this;\n }\n\n /**\n * For unify the bind and unbind listener\n */\n\n\n _createClass(ReactTooltip, [{\n key: 'bind',\n value: function bind(methodArray) {\n var _this2 = this;\n\n methodArray.forEach(function (method) {\n _this2[method] = _this2[method].bind(_this2);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n insecure = _props.insecure,\n resizeHide = _props.resizeHide;\n\n if (insecure) {\n this.setStyleHeader(); // Set the style to the <link>\n }\n this.bindListener(); // Bind listener for tooltip\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mount = false;\n\n this.clearTimer();\n\n this.unbindListener();\n this.removeScrollListener();\n this.unbindWindowEvents();\n }\n\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n\n }, {\n key: 'mouseOnToolTip',\n value: function mouseOnToolTip() {\n var show = this.state.show;\n\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n return this.tooltipRef.matches(':hover');\n }\n return false;\n }\n /**\n * Pick out corresponded target elements\n */\n\n }, {\n key: 'getTargetArray',\n value: function getTargetArray(id) {\n var targetArray = void 0;\n if (!id) {\n targetArray = document.querySelectorAll('[data-tip]:not([data-for])');\n } else {\n var escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n targetArray = document.querySelectorAll('[data-tip][data-for=\"' + escaped + '\"]');\n }\n // targetArray is a NodeList, convert it to a real array\n return (0, _nodeListToArray2.default)(targetArray);\n }\n\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n\n }, {\n key: 'bindListener',\n value: function bindListener() {\n var _this3 = this;\n\n var _props2 = this.props,\n id = _props2.id,\n globalEventOff = _props2.globalEventOff,\n isCapture = _props2.isCapture;\n\n var targetArray = this.getTargetArray(id);\n\n targetArray.forEach(function (target) {\n var isCaptureMode = _this3.isCapture(target);\n var effect = _this3.getEffect(target);\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n _this3.unbindBasicListener(target);\n\n if (_this3.isCustomEvent(target)) {\n _this3.customBindListener(target);\n return;\n }\n\n target.addEventListener('mouseenter', _this3.showTooltip, isCaptureMode);\n if (effect === 'float') {\n target.addEventListener('mousemove', _this3.updateTooltip, isCaptureMode);\n }\n target.addEventListener('mouseleave', _this3.hideTooltip, isCaptureMode);\n });\n\n // Global event to hide tooltip\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n }\n\n // Track removal of targetArray elements from DOM\n this.bindRemovalTracker();\n }\n\n /**\n * Unbind listeners on target elements\n */\n\n }, {\n key: 'unbindListener',\n value: function unbindListener() {\n var _this4 = this;\n\n var _props3 = this.props,\n id = _props3.id,\n globalEventOff = _props3.globalEventOff;\n\n var targetArray = this.getTargetArray(id);\n targetArray.forEach(function (target) {\n _this4.unbindBasicListener(target);\n if (_this4.isCustomEvent(target)) _this4.customUnbindListener(target);\n });\n\n if (globalEventOff) window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n\n }, {\n key: 'unbindBasicListener',\n value: function unbindBasicListener(target) {\n var isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n }, {\n key: 'getTooltipContent',\n value: function getTooltipContent() {\n var _props4 = this.props,\n getContent = _props4.getContent,\n children = _props4.children;\n\n // Generate tooltip content\n\n var content = void 0;\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return (0, _getTipContent2.default)(this.state.originTooltip, children, content, this.state.isMultiline);\n }\n }, {\n key: 'isEmptyTip',\n value: function isEmptyTip(placeholder) {\n return typeof placeholder === 'string' && placeholder === '' || placeholder === null;\n }\n\n /**\n * When mouse enter, show the tooltip\n */\n\n }, {\n key: 'showTooltip',\n value: function showTooltip(e, isGlobalCall) {\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n var targetArray = this.getTargetArray(this.props.id);\n var isMyElement = targetArray.some(function (ele) {\n return ele === e.currentTarget;\n });\n if (!isMyElement) return;\n }\n // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n var _props5 = this.props,\n multiline = _props5.multiline,\n getContent = _props5.getContent;\n\n var originTooltip = e.currentTarget.getAttribute('data-tip');\n var isMultiline = e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n var switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n // if it needs to skip adding hide listener to scroll\n var scrollHide = true;\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n }\n\n // Make sure the correct place is set\n var desiredPlace = e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n var effect = switchToSolid && 'solid' || this.getEffect(e.currentTarget);\n var offset = e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n var result = (0, _getPosition2.default)(e, e.currentTarget, this.tooltipRef, desiredPlace, desiredPlace, effect, offset);\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(result.position, e.currentTarget, this.tooltipRef, desiredPlace, desiredPlace, effect, offset);\n }\n\n var place = result.isNewState ? result.newState.place : desiredPlace;\n\n // To prevent previously created timers from triggering\n this.clearTimer();\n\n var target = e.currentTarget;\n\n var reshowDelay = this.state.show ? target.getAttribute('data-delay-update') || this.props.delayUpdate : 0;\n\n var self = this;\n\n var updateState = function updateState() {\n self.setState({\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n effect: effect,\n offset: offset,\n html: target.getAttribute('data-html') ? target.getAttribute('data-html') === 'true' : self.props.html || false,\n delayShow: target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide: target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate: target.getAttribute('data-delay-update') || self.props.delayUpdate || 0,\n border: target.getAttribute('data-border') ? target.getAttribute('data-border') === 'true' : self.props.border || false,\n extraClass: target.getAttribute('data-class') || self.props.class || self.props.className || '',\n disable: target.getAttribute('data-tip-disable') ? target.getAttribute('data-tip-disable') === 'true' : self.props.disable || false,\n currentTarget: target\n }, function () {\n if (scrollHide) self.addScrollListener(self.state.currentTarget);\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(function () {\n if (self.mount) {\n var _getContent = self.props.getContent;\n\n var placeholder = (0, _getTipContent2.default)(originTooltip, '', _getContent[0](), isMultiline);\n var isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({\n isEmptyTip: isEmptyTip\n });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n });\n };\n\n // If there is no delay call immediately, don't allow events to get in first.\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n\n /**\n * When mouse hover, update tool tip\n */\n\n }, {\n key: 'updateTooltip',\n value: function updateTooltip(e) {\n var _this5 = this;\n\n var _state = this.state,\n delayShow = _state.delayShow,\n disable = _state.disable;\n var afterShow = this.props.afterShow;\n\n var placeholder = this.getTooltipContent();\n var delayTime = parseInt(delayShow, 10);\n var eventTarget = e.currentTarget || e.target;\n\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n return;\n }\n\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n var updateState = function updateState() {\n if (Array.isArray(placeholder) && placeholder.length > 0 || placeholder) {\n var isInvisible = !_this5.state.show;\n _this5.setState({\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n }, function () {\n _this5.updatePosition();\n if (isInvisible && afterShow) afterShow(e);\n });\n }\n };\n\n clearTimeout(this.delayShowLoop);\n if (delayShow) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n updateState();\n }\n }\n\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n\n }, {\n key: 'listenForTooltipExit',\n value: function listenForTooltipExit() {\n var show = this.state.show;\n\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n }, {\n key: 'removeListenerForTooltipExit',\n value: function removeListenerForTooltipExit() {\n var show = this.state.show;\n\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n /**\n * When mouse leave, hide tooltip\n */\n\n }, {\n key: 'hideTooltip',\n value: function hideTooltip(e, hasTarget) {\n var _this6 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { isScroll: false };\n var disable = this.state.disable;\n var isScroll = options.isScroll;\n\n var delayHide = isScroll ? 0 : this.state.delayHide;\n var afterHide = this.props.afterHide;\n\n var placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n var targetArray = this.getTargetArray(this.props.id);\n var isMyElement = targetArray.some(function (ele) {\n return ele === e.currentTarget;\n });\n if (!isMyElement || !this.state.show) return;\n }\n\n var resetState = function resetState() {\n var isVisible = _this6.state.show;\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (_this6.mouseOnToolTip()) {\n _this6.listenForTooltipExit();\n return;\n }\n _this6.removeListenerForTooltipExit();\n\n _this6.setState({\n show: false\n }, function () {\n _this6.removeScrollListener();\n if (isVisible && afterHide) afterHide(e);\n });\n };\n\n this.clearTimer();\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n\n /**\n * When scroll, hide tooltip\n */\n\n }, {\n key: 'hideTooltipOnScroll',\n value: function hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, { isScroll: true });\n }\n\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n\n }, {\n key: 'addScrollListener',\n value: function addScrollListener(currentTarget) {\n var isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n }, {\n key: 'removeScrollListener',\n value: function removeScrollListener() {\n window.removeEventListener('scroll', this.hideTooltipOnScroll);\n }\n\n // Calculation the position\n\n }, {\n key: 'updatePosition',\n value: function updatePosition() {\n var _this7 = this;\n\n var _state2 = this.state,\n currentEvent = _state2.currentEvent,\n currentTarget = _state2.currentTarget,\n place = _state2.place,\n desiredPlace = _state2.desiredPlace,\n effect = _state2.effect,\n offset = _state2.offset;\n\n var node = this.tooltipRef;\n var result = (0, _getPosition2.default)(currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(result.position, currentEvent, currentTarget, node, place, desiredPlace, effect, offset);\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, function () {\n _this7.updatePosition();\n });\n }\n // Set tooltip position\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n\n /**\n * Set style tag in header\n * in this way we can insert default css\n */\n\n }, {\n key: 'setStyleHeader',\n value: function setStyleHeader() {\n var head = document.getElementsByTagName('head')[0];\n if (!head.querySelector('style[id=\"react-tooltip\"]')) {\n var tag = document.createElement('style');\n tag.id = 'react-tooltip';\n tag.innerHTML = _style2.default;\n /* eslint-disable */\n if (typeof __webpack_nonce__ !== 'undefined' && __webpack_nonce__) {\n tag.setAttribute('nonce', __webpack_nonce__);\n }\n /* eslint-enable */\n head.insertBefore(tag, head.firstChild);\n }\n }\n\n /**\n * CLear all kinds of timeout of interval\n */\n\n }, {\n key: 'clearTimer',\n value: function clearTimer() {\n clearTimeout(this.delayShowLoop);\n clearTimeout(this.delayHideLoop);\n clearTimeout(this.delayReshow);\n clearInterval(this.intervalUpdateContent);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this8 = this;\n\n var _state3 = this.state,\n extraClass = _state3.extraClass,\n html = _state3.html,\n ariaProps = _state3.ariaProps,\n disable = _state3.disable;\n\n var placeholder = this.getTooltipContent();\n var isEmptyTip = this.isEmptyTip(placeholder);\n var tooltipClass = (0, _classnames2.default)('__react_component_tooltip', { 'show': this.state.show && !disable && !isEmptyTip }, { 'border': this.state.border }, { 'place-top': this.state.place === 'top' }, { 'place-bottom': this.state.place === 'bottom' }, { 'place-left': this.state.place === 'left' }, { 'place-right': this.state.place === 'right' }, { 'type-dark': this.state.type === 'dark' }, { 'type-success': this.state.type === 'success' }, { 'type-warning': this.state.type === 'warning' }, { 'type-error': this.state.type === 'error' }, { 'type-info': this.state.type === 'info' }, { 'type-light': this.state.type === 'light' }, { 'allow_hover': this.props.delayUpdate }, { 'allow_click': this.props.clickable });\n\n var Wrapper = this.props.wrapper;\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n if (html) {\n return _react2.default.createElement(Wrapper, _extends({ className: tooltipClass + ' ' + extraClass,\n id: this.props.id,\n ref: function ref(_ref) {\n return _this8.tooltipRef = _ref;\n }\n }, ariaProps, {\n 'data-id': 'tooltip',\n dangerouslySetInnerHTML: { __html: placeholder } }));\n } else {\n return _react2.default.createElement(\n Wrapper,\n _extends({ className: tooltipClass + ' ' + extraClass,\n id: this.props.id\n }, ariaProps, {\n ref: function ref(_ref2) {\n return _this8.tooltipRef = _ref2;\n },\n 'data-id': 'tooltip' }),\n placeholder\n );\n }\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var ariaProps = prevState.ariaProps;\n\n var newAriaProps = (0, _aria.parseAria)(nextProps);\n var isChanged = Object.keys(newAriaProps).some(function (props) {\n return newAriaProps[props] !== ariaProps[props];\n });\n if (!isChanged) {\n return null;\n }\n return _extends({}, prevState, {\n ariaProps: newAriaProps\n });\n }\n }]);\n\n return ReactTooltip;\n}(_react2.default.Component), _class2.propTypes = {\n children: _propTypes2.default.any,\n place: _propTypes2.default.string,\n type: _propTypes2.default.string,\n effect: _propTypes2.default.string,\n offset: _propTypes2.default.object,\n multiline: _propTypes2.default.bool,\n border: _propTypes2.default.bool,\n insecure: _propTypes2.default.bool,\n class: _propTypes2.default.string,\n className: _propTypes2.default.string,\n id: _propTypes2.default.string,\n html: _propTypes2.default.bool,\n delayHide: _propTypes2.default.number,\n delayUpdate: _propTypes2.default.number,\n delayShow: _propTypes2.default.number,\n event: _propTypes2.default.string,\n eventOff: _propTypes2.default.string,\n watchWindow: _propTypes2.default.bool,\n isCapture: _propTypes2.default.bool,\n globalEventOff: _propTypes2.default.string,\n getContent: _propTypes2.default.any,\n afterShow: _propTypes2.default.func,\n afterHide: _propTypes2.default.func,\n overridePosition: _propTypes2.default.func,\n disable: _propTypes2.default.bool,\n scrollHide: _propTypes2.default.bool,\n resizeHide: _propTypes2.default.bool,\n wrapper: _propTypes2.default.string,\n clickable: _propTypes2.default.bool\n}, _class2.defaultProps = {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n}, _class2.supportedWrappers = ['div', 'span'], _class2.displayName = 'ReactTooltip', _temp)) || _class) || _class) || _class) || _class) || _class) || _class;\n\n/* export default not fit for standalone, it will exports {default:...} */\n\n\nmodule.exports = ReactTooltip;","import React from 'react'\nimport ReactTooltip from 'react-tooltip'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst StyledTooltip = styled(ReactTooltip)`\n\tbackground-color: ${({ theme }) => theme.colors.darkGray};\n\n\t&&&&.qube-tooltip:after {\n\t\tborder-top-color: ${({ theme, place }) => (place === 'top' ? theme.colors.darkGray : '')};\n\t\tborder-right-color: ${({ theme, place }) => (place === 'right' ? theme.colors.darkGray : '')};\n\t\tborder-bottom-color: ${({ theme, place }) => (place === 'bottom' ? theme.colors.darkGray : '')};\n\t\tborder-left-color: ${({ theme, place }) => (place === 'left' ? theme.colors.darkGray : '')};\n\t}\n\n\t&&&&.qube-tooltip {\n\t\tpadding: 12px;\n\n\t\tanimation: fadein 0.5s;\n\t\tbackground-color: ${({ theme }) => theme.colors.darkGray};\n\t\tborder-radius: none;\n\t\tbox-shadow: 1px 1px 4px rgba(0, 0, 0, 0.25);\n\t\tcolor: #fff;\n\t\tline-height: 18px;\n\t\topacity: 1;\n\t}\n`\n\nStyledTooltip.defaultProps = {\n\teffect: 'solid',\n\tclassName: 'qube-tooltip',\n\tsuppressClassNameWarning: true\n}\n\nStyledTooltip.propTypes = {\n\tid: PropTypes.string.isRequired,\n\ttext: PropTypes.string,\n\tplace: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n\tmultiline: PropTypes.bool,\n\t/** Supress styled component class name warning */\n\tsuppressClassNameWarning: PropTypes.bool\n}\n\nStyledTooltip.displayName = 'StyledTooltip'\n\nexport default StyledTooltip\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon, IconName } from '../../icons'\nimport { StyledTooltip } from '../StyledTooltip'\n\nconst HelpTooltip = ({ id, text, place, multiline, icon, color, disabled }) => (\n\t<Fragment>\n\t\t<IconStyled icon={icon} color={color} data-tip={text} data-for={id} disabled={disabled} />\n\t\t<StyledTooltip id={id} place={place} multiline={multiline} />\n\t</Fragment>\n)\n\nconst IconStyled = styled(Icon)`\n\tcursor: help;\n`\nIconStyled.displayName = 'IconStyled'\n\nHelpTooltip.defaultProps = {\n\ticon: 'management',\n\tcolor: '#EC8222',\n\tplace: 'top',\n\tmultiline: false,\n\tdisabled: false\n}\n\nHelpTooltip.propTypes = {\n\tid: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\tplace: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n\ticon: PropTypes.oneOf(IconName),\n\tcolor: PropTypes.string,\n\tmultiline: PropTypes.bool,\n\tdisabled: PropTypes.bool\n}\n\nHelpTooltip.displayName = 'HelpTooltip'\n\nexport default HelpTooltip\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { StyledTooltip } from '../StyledTooltip'\n\nconst Tooltip = ({ id, place, trigger, multiline, ...props }) => (\n\t<Fragment>\n\t\t{trigger}\n\t\t<StyledTooltip {...props} id={id} place={place} multiline={multiline} effect='solid' />\n\t</Fragment>\n)\n\nTooltip.defaultProps = {\n\tmultiline: false,\n\tplace: 'bottom'\n}\n\nTooltip.propTypes = {\n\tid: PropTypes.string.isRequired,\n\ttrigger: PropTypes.object.isRequired,\n\tplace: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n\tmultiline: PropTypes.bool\n}\n\nTooltip.displayName = 'Tooltip'\n\nexport default Tooltip\n","import React from 'react'\nimport { Grid, Header, Divider } from 'semantic-ui-react'\nimport Tooltip from './Tooltip'\nimport { Icon } from '../../icons'\nimport { Button } from '../../buttons'\n\nconst spanTrigger = (\n\t<span data-tip='Tooltip Example' data-for='spanTrigger'>\n\t\tDefault tooltip\n\t</span>\n)\n\nconst iconTrigger = <Icon icon='management' data-tip='Tooltip <br/> Example' data-for='iconTrigger' />\nconst buttonTrigger = (\n\t<Button icon='add' content='Example on a button' data-tip='Tooltip place top' data-for='buttonTrigger' />\n)\n\nconst TooltipExample = () => (\n\t<div>\n\t\t<Header as='h1'>Tooltip</Header>\n\t\t<Divider />\n\t\t<Grid columns={4} padded>\n\t\t\t<Grid.Row />\n\t\t\t<Grid.Row>\n\t\t\t\t<Grid.Column>\n\t\t\t\t\t<Tooltip trigger={spanTrigger} id='spanTrigger' />\n\t\t\t\t</Grid.Column>\n\t\t\t\t<Grid.Column>\n\t\t\t\t\tMultiline text\n\t\t\t\t\t<Tooltip trigger={iconTrigger} id='iconTrigger' multiline={true} />\n\t\t\t\t</Grid.Column>\n\t\t\t\t<Grid.Column>\n\t\t\t\t\t<Tooltip trigger={buttonTrigger} id='buttonTrigger' place='top' />\n\t\t\t\t</Grid.Column>\n\t\t\t</Grid.Row>\n\t\t\t<Grid.Row />\n\t\t\t<Grid.Row />\n\t\t</Grid>\n\t</div>\n)\n\nexport default TooltipExample\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon as SemanticUIIcon, Pagination as SemanticUIPagination } from 'semantic-ui-react'\nimport Icon from '../icons/Icon'\nimport { DefaultTheme as theme } from '../../themes'\n\nconst PaginationStyled = styled(({ activeColor, ...props }) => <SemanticUIPagination {...props} />)`\n\t&&&& > .active.item,\n\t&&&& > .active.item:hover {\n\t\tborder-color: ${({ activeColor }) => activeColor} !important;\n\t\tcolor: ${({ activeColor }) => activeColor} !important;\n\t}\n\n\t&&&& > .item:focus {\n\t\toutline: none !important;\n\t}\n\n\t&&&& > .item:hover {\n\t\tcolor: ${({ activeColor }) => activeColor} !important;\n\t}\n\n\t&&&& > a[type='ellipsisItem'] {\n\t\tpointer-events: none;\n\t}\n`\n\nconst Pagination = ({ activePage, totalPages, onPageChange, activeColor, ...props }) => (\n\t<PaginationStyled\n\t\tactivePage={activePage}\n\t\tfirstItem={null}\n\t\tonPageChange={onPageChange}\n\t\tlastItem={null}\n\t\tpointing\n\t\tsecondary\n\t\tactiveColor={activeColor}\n\t\tnextItem={{ content: <Icon icon='select-right' color={theme.colors.activeBlue} />, icon: true }}\n\t\tprevItem={{ content: <Icon icon='select-left' color={theme.colors.activeBlue} />, icon: true }}\n\t\tellipsisItem={{ content: <SemanticUIIcon name='ellipsis horizontal' />, icon: true }}\n\t\ttotalPages={totalPages}\n\t\t{...props}\n\t/>\n)\n\nPagination.defaultProps = {\n\tactiveColor: theme.colors.activeBlue\n}\n\nPagination.displayName = 'Pagination'\n\nPagination.propTypes = {\n\t/** Current page */\n\tactivePage: PropTypes.number.isRequired,\n\t/** Total number of pages */\n\ttotalPages: PropTypes.number.isRequired,\n\t/** Page change handler, return page number */\n\tonPageChange: PropTypes.func.isRequired,\n\t/** color for the icons and active text */\n\tactiveColor: PropTypes.string\n}\n\nexport default Pagination\nexport { PaginationStyled }\n","// export Foo and Bar as named exports\nimport Pagination from './Pagination'\n\nexport { Pagination }\n\n// you can optionally also set a default export for your module\nexport default { Pagination: Pagination }\n","import { Input as SemanticInput } from 'semantic-ui-react'\nimport styled from 'styled-components'\n\nconst Input = styled(SemanticInput)`\n\twidth: 100%;\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')} !important;\n\topacity: 1 !important;\n\n\ti.icon {\n\t\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.mediumGray)} !important;\n\t\topacity: 1 !important;\n\t\ttransition: none !important;\n\t}\n\n\t&&& input {\n\t\tpadding: 8px;\n\t\tborder-color: ${({ theme, error }) => (error ? theme.colors.red : theme.colors.strokeGray)};\n\t\tborder-radius: 4px;\n\t\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.darkGray)};\n\n\t\t:focus {\n\t\t\tborder-color: ${({ theme }) => theme.colors.activeBlue};\n\t\t}\n\n\t\t::placeholder {\n\t\t\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.gray)};\n\t\t\tuser-select: none;\n\t\t}\n\t}\n\n\t.label {\n\t\tborder-radius: 0 ${({ theme }) => theme.input.borderRadius} ${({ theme }) => theme.input.borderRadius} 0 !important;\n\t}\n\n\t:focus-within ::placeholder {\n\t\tcolor: ${({ theme }) => theme.colors.mediumGray} !important;\n\t}\n\n\t:focus-within i {\n\t\tcolor: ${({ theme }) => theme.colors.activeBlue} !important;\n\t}\n`\n\nInput.displayName = 'Input'\n\nexport default Input\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst LabelLink = styled.div`\n\tdisplay: inline-block !important;\n\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.activeBlue)};\n\tcursor: pointer;\n\tfloat: right !important;\n\tfont-size: 11px !important;\n\tfont-style: normal !important;\n\tfont-weight: normal !important;\n\tline-height: normal !important;\n\ttext-align: right !important;\n`\n\nLabelLink.defaultProps = {\n\tdisabled: false\n}\n\nLabelLink.propTypes = {\n\t/** Bool for the disabled state */\n\tdisabled: PropTypes.bool\n}\n\nLabelLink.displayName = 'LabelLink'\n\nexport default LabelLink\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Icon } from '../../icons'\n\nconst InputIcon = styled(Icon)`\n\tposition: relative;\n\ttop: -2px;\n\n\tmargin-right: 9px !important;\n\tmargin-bottom: 3px !important;\n\n\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.mediumGray)};\n\tfloat: left !important;\n\tfont-size: 16px !important;\n`\n\nInputIcon.defaultProps = {\n\tdisabled: false\n}\n\nInputIcon.propTypes = {\n\t/** Bool for the disabled state */\n\tdisabled: PropTypes.bool\n}\n\nInputIcon.displayName = 'IconInput'\n\nexport default InputIcon\n","import React from 'react'\nimport Text from '../Text'\n\nconst ErrorText = props => <Text size='sm' italic color='error' {...props} />\n\nErrorText.displayName = 'ErrorText'\n\nexport default ErrorText\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { ErrorText } from '../../text/ErrorText'\n\nconst Error = ({ children, ...props }) => (\n\t<ErrorText {...props}>\n\t\t<error-label>{children}</error-label>\n\t</ErrorText>\n)\n\nError.displayName = 'Error'\n\nError.propTypes = {\n\t/** child content to the error-label */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nexport default Error\n","import styled from 'styled-components'\nimport { Label as LabelSemanticUI } from 'semantic-ui-react'\nimport PropTypes from 'prop-types'\nimport React from 'react'\n\nconst ColorLabel = styled(({ color, ...props }) => <LabelSemanticUI {...props} />)`\n\t&& {\n\t\tfont-size: 12px;\n\t}\n\n\t&&& {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: ${({ color, theme }) => theme.colors[color] || theme.label.defaultColor} !important;\n\t\tcolor: ${({ theme }) => theme.colors.white};\n\t\tfont-style: normal;\n\t\tfont-weight: normal;\n\t\tline-height: 14px;\n\t\ttext-align: ${({ align }) => align || 'center'};\n\t}\n`\n\nColorLabel.displayName = 'Label'\n\nColorLabel.defaultProps = {\n\tcolor: undefined,\n\talign: undefined\n}\n\nColorLabel.propTypes = {\n\tcolor: PropTypes.string,\n\talign: PropTypes.oneOf(['left', 'right'])\n}\n\nexport default ColorLabel\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Text from '../Text'\n\nconst LabelText = ({ disabled, ...props }) => <Text color={disabled ? 'disabled' : 'label'} bold size='sm' {...props} />\n\nLabelText.defaultProps = {\n\tdisabled: false\n}\n\nLabelText.propTypes = {\n\tdisabled: PropTypes.bool\n}\n\nLabelText.displayName = 'LabelText'\n\nexport default LabelText\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport LabelText from '../../text/LabelText/LabelText'\n\nconst Label = ({ children, ...props }) => (\n\t<LabelText {...props}>\n\t\t<label>{children}</label>\n\t</LabelText>\n)\n\nLabel.defaultProps = {\n\tchildren: ''\n}\n\nLabel.propTypes = {\n\t/** Children of this component must be a string */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n}\n\nLabel.displayName = 'Label'\n\nexport default Label\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst BottomLabel = styled.div`\n\theight: 12px;\n\tmargin: 5px 0 11px 0;\n\tcolor: ${({ theme, disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.mediumGray)};\n\tfont-size: 12px;\n\tfont-style: italic;\n\tfont-weight: 400;\n`\n\nBottomLabel.defaultProps = {\n\tdisabled: false\n}\n\nBottomLabel.propTypes = {\n\t/** Bool for the disabled state */\n\tdisabled: PropTypes.bool\n}\n\nBottomLabel.displayName = 'BottomLabel'\n\nexport default BottomLabel\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { IconName } from '../../icons'\nimport { Input } from '../Input'\nimport LabelLink from './LabelLink'\nimport InputIcon from './InputIcon'\nimport { Error } from '../Error'\nimport { Label, BottomLabel } from '../../labels'\n\nconst InputField = ({\n\tlabel,\n\tid,\n\thint,\n\terror,\n\tdisabled,\n\tlabelIcon,\n\trightLabel,\n\trightLabelOnClick,\n\telement,\n\t...props\n}) => {\n\tconst Element = element\n\treturn (\n\t\t<InputFieldContainer>\n\t\t\t<div>\n\t\t\t\t{labelIcon && <InputIcon disabled={disabled} icon={labelIcon} />}\n\t\t\t\t{label && (\n\t\t\t\t\t<Label htmlFor={id} disabled={disabled}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t\t{rightLabel && (\n\t\t\t\t\t\t\t<LabelLink id={id} disabled={disabled} onClick={!disabled ? rightLabelOnClick : undefined}>\n\t\t\t\t\t\t\t\t{rightLabel}\n\t\t\t\t\t\t\t</LabelLink>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Label>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Element id={id} error={!!error} disabled={disabled} {...props} />\n\t\t\t{hint && (\n\t\t\t\t<BottomLabel data-test-id='hint' disabled={disabled}>\n\t\t\t\t\t{hint}\n\t\t\t\t</BottomLabel>\n\t\t\t)}\n\t\t\t{error && (\n\t\t\t\t<ListErrorWrapper>\n\t\t\t\t\t{[].concat(error).map((child, i) => (\n\t\t\t\t\t\t<Error key={i}>{child}</Error>\n\t\t\t\t\t))}\n\t\t\t\t</ListErrorWrapper>\n\t\t\t)}\n\t\t</InputFieldContainer>\n\t)\n}\n\nconst InputFieldContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 12px;\n`\n\nconst ListErrorWrapper = styled.div`\n\tdiv:last-child {\n\t\tmargin-bottom: 0;\n\t}\n`\n\nInputField.defaultProps = {\n\thint: '',\n\terror: '',\n\tlabel: '',\n\tid: '',\n\tdisabled: false,\n\tlabelIcon: undefined,\n\trightLabelOnClick: undefined,\n\trightLabel: undefined,\n\telement: Input\n}\n\nInputField.propTypes = {\n\t/** Text message hint */\n\thint: PropTypes.string,\n\t/** Text message error */\n\terror: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\t/** Text for the label */\n\tlabel: PropTypes.string,\n\t/** String to the ID attribute */\n\tid: PropTypes.string,\n\t/** Bool for the disabled state */\n\tdisabled: PropTypes.bool,\n\t/** Icon name for the Icon placed on the left of the label */\n\tlabelIcon: PropTypes.oneOf(IconName),\n\t/** Func to be called when LabelLink is clicked */\n\trightLabelOnClick: PropTypes.func,\n\t/** LabelLink's text */\n\trightLabel: PropTypes.string,\n\t/** Element to be rendered inside the component */\n\telement: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n}\n\nInputField.displayName = 'InputField'\n\nexport default InputField\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nimport { DefaultTheme as theme } from '../../../themes'\nimport Icon from '../../icons/Icon'\n\nclass InputFile extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.fieldField = React.createRef()\n\t\tthis.handleClick = this.handleClick.bind(this)\n\t}\n\n\thandleClick = () => {\n\t\tthis.fieldField.current.click()\n\t}\n\n\trender() {\n\t\tconst { inputFileLabel, disabled, color, ...props } = this.props\n\n\t\treturn (\n\t\t\t<InputFileContainer onClick={!disabled ? this.handleClick : undefined}>\n\t\t\t\t<InputFileHidden ref={this.fieldField} type='file' {...props} />\n\t\t\t\t<AddIcon color={color} disabled={disabled} icon='add' />\n\t\t\t\t<Label disabled={disabled}>{inputFileLabel}</Label>\n\t\t\t</InputFileContainer>\n\t\t)\n\t}\n}\n\nconst InputFileHidden = styled.input`\n\tdisplay: none;\n`\n\nconst Label = styled.span`\n\toverflow: hidden;\n\twidth: calc(100% - 40px);\n\tcolor: ${({ disabled }) => (disabled ? theme.colors.strokeGray : theme.colors.black)};\n\tfloat: left;\n\tfont-size: 14px;\n\tline-height: 34px;\n\ttext-overflow: ellipsis;\n\tuser-select: none;\n\twhite-space: nowrap;\n`\n\nconst AddIcon = styled(Icon)`\n\tmargin-right: 9px !important;\n\tmargin-left: 9px !important;\n\tcolor: ${({ disabled, color }) => (disabled ? theme.colors.strokeGray : color)};\n\tfloat: left;\n\tfont-size: 16px !important;\n\tline-height: 34px !important;\n\tuser-select: none;\n`\n\nconst InputFileContainer = styled.div`\n\tdisplay: flex;\n\theight: 34px;\n\tbox-sizing: border-box;\n\tborder: 1px solid #dddddd;\n\tborder-radius: 4px;\n\tcursor: pointer !important;\n\tuser-select: none;\n`\n\nInputFile.defaultProps = {\n\tdisabled: false,\n\tcolor: theme.colors.activeBlue\n}\n\nInputFile.propTypes = {\n\t/** Label to be showed inside the input */\n\tinputFileLabel: PropTypes.string.isRequired,\n\t/** Color of the input icon */\n\tcolor: PropTypes.string,\n\t/** Bool of the disabled state */\n\tdisabled: PropTypes.bool\n}\n\nInputFile.displayName = 'InputFile'\nInputFileHidden.displayName = 'InputFileHidden'\nInputFileContainer.displayName = 'InputFileContainer'\nAddIcon.displayName = 'AddIcon'\nLabel.displayName = 'Label'\n\nexport default InputFile\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { TextArea as SemanticUITextArea } from 'semantic-ui-react'\n\nconst TextArea = styled(({ error, disabled, ...props }) => <SemanticUITextArea disabled={disabled} {...props} />)`\n\twidth: 100%;\n\n\tpadding: 8px !important;\n\tborder-color: ${({ theme, error }) => (error ? theme.colors.red : theme.colors.strokeGray)} !important;\n\tborder-radius: 4px !important;\n\tcolor: ${({ theme }) => theme.colors.darkGray};\n\n\tcursor: ${({ disabled }) => disabled && 'not-allowed'} !important;\n\n\t&:focus {\n\t\tborder-color: ${({ theme }) => theme.colors.activeBlue} !important;\n\t}\n`\n\nTextArea.defaultProps = {\n\tdisabled: false,\n\terror: false\n}\n\nTextArea.propTypes = {\n\t/** Bool for the disabled state */\n\tdisabled: PropTypes.bool,\n\t/** Bool for the error state */\n\terror: PropTypes.bool\n}\n\nTextArea.displayName = 'TextArea'\n\nexport default TextArea\n","import React from 'react'\nimport { Checkbox } from 'semantic-ui-react'\nimport styled from 'styled-components'\n\nconst Toggle = styled(props => <Checkbox toggle {...props} />)`\n\tdisplay: block !important;\n\twidth: 36px !important;\n\theight: 22px !important;\n\n\t&&&& input ~ label {\n\t\twidth: 36px !important;\n\t\theight: 22px !important;\n\t}\n\n\t&&&& input ~ .box:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\n\t&&&& input ~ label:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t}\n\n\t&&&& input ~ .box:after {\n\t\ttop: 2px !important;\n\t\tleft: 0.05rem !important;\n\t\twidth: 18px !important;\n\t\theight: 18px !important;\n\t}\n\n\t&&&& input ~ label:after {\n\t\ttop: 2px !important;\n\t\tleft: 0.05rem !important;\n\t\twidth: 18px !important;\n\t\theight: 18px !important;\n\t}\n\n\t&&&& input:checked ~ label:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tbackground-color: ${({ theme }) => theme.toggle.color} !important;\n\t}\n\n\t&&&& input:checked ~ .box:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tbackground-color: ${({ theme }) => theme.toggle.color} !important;\n\t}\n\n\t&&&& input:focus:checked ~ label:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tbackground-color: ${({ theme }) => theme.toggle.color} !important;\n\t}\n\n\t&&&& input:focus:checked ~ .box:before {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tbackground-color: ${({ theme }) => theme.toggle.color} !important;\n\t}\n\n\t&&&& input:checked ~ .box:after {\n\t\ttop: 2px !important;\n\t\tleft: 1.15rem !important;\n\t\twidth: 18px !important;\n\t\theight: 18px !important;\n\t}\n\n\t&&&& input:checked ~ label:after {\n\t\ttop: 2px !important;\n\t\tleft: 1.15rem !important;\n\t\twidth: 18px !important;\n\t\theight: 18px !important;\n\t}\n`\n\nToggle.displayName = 'Toggle'\n\nexport default Toggle\n","import React, { Component, createRef } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport theme from '../../../themes/default'\nimport { Label } from '../../labels'\n\nclass Checkbox extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.hiddenCheckbox = createRef()\n\t}\n\n\thandleClick = () => {\n\t\tthis.hiddenCheckbox.click()\n\t}\n\n\trender() {\n\t\tconst { id, checked, color, background, label, labelPosition, height, width, disabled, ...props } = this.props\n\t\treturn (\n\t\t\t<CheckboxWrapper labelPosition={labelPosition} onClick={e => e.stopPropagation()}>\n\t\t\t\t<CheckboxContainer width={width} height={height} disabled={disabled} background={background}>\n\t\t\t\t\t<HiddenCheckbox\n\t\t\t\t\t\tdefaultChecked={checked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tref={checkbox => {\n\t\t\t\t\t\t\tthis.hiddenCheckbox = checkbox\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t\t{checked ? (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfillOpacity={disabled ? 0.5 : 1}\n\t\t\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\t\t\twidth='100%'\n\t\t\t\t\t\t\theight='100%'\n\t\t\t\t\t\t\tviewBox='0 0 14 14'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td='M12.4444 0H1.55556C0.7 0 0 0.7 0 1.55556V12.4444C0 13.3 0.7 14 1.55556 14H12.4444C13.3 14 14 13.3 14 12.4444V1.55556C14 0.7 13.3 0 12.4444 0ZM5.44444 10.8889L1.55556 7L2.64444 5.91111L5.44444 8.71111L11.3556 2.8L12.4444 3.88889L5.44444 10.8889Z'\n\t\t\t\t\t\t\t\tfill={color ? `${color}` : theme.colors.activeBlue}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfillOpacity={disabled ? 0.5 : 1}\n\t\t\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\t\t\twidth='100%'\n\t\t\t\t\t\t\theight='100%'\n\t\t\t\t\t\t\tviewBox='0 0 14 14'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td='M12.4444 0.915033C12.6138 0.915033 12.7742 0.982135 12.896 1.10396C13.0179 1.22581 13.085 1.38618 13.085 1.55556V12.4444C13.085 12.6138 13.0179 12.7742 12.896 12.896C12.7742 13.0179 12.6138 13.085 12.4444 13.085H1.55556C1.38618 13.085 1.22581 13.0179 1.10396 12.896C0.982134 12.7742 0.915033 12.6138 0.915033 12.4444V1.55556C0.915033 1.38618 0.982134 1.22581 1.10396 1.10396C1.22581 0.982135 1.38618 0.915033 1.55556 0.915033H12.4444ZM12.4444 0H1.55556C0.7 0 0 0.7 0 1.55556V12.4444C0 13.3 0.7 14 1.55556 14H12.4444C13.3 14 14 13.3 14 12.4444V1.55556C14 0.7 13.3 0 12.4444 0Z'\n\t\t\t\t\t\t\t\tfill={color ? `${color}` : theme.colors.darkGray}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t)}\n\t\t\t\t</CheckboxContainer>\n\t\t\t\t{label && (\n\t\t\t\t\t<LabelWrapper\n\t\t\t\t\t\theight={height}\n\t\t\t\t\t\tlabelPosition={labelPosition}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Label htmlFor={id}>{label}</Label>\n\t\t\t\t\t</LabelWrapper>\n\t\t\t\t)}\n\t\t\t</CheckboxWrapper>\n\t\t)\n\t}\n}\n\nconst CheckboxWrapper = styled.div`\n\tdisplay: inline-flex;\n\tflex-direction: ${({ labelPosition }) => (labelPosition === 'right' ? 'row' : 'row-reverse')};\n\talign-items: center;\n\tuser-select: none;\n`\n\nconst CheckboxContainer = styled.label`\n\tdisplay: block;\n\tcursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n\twidth: ${({ width }) => width}px;\n\theight: ${({ height }) => height}px;\n\tline-height: ${({ height }) => height}px;\n\tbackground: ${({ background }) => (background ? `${background}` : 'white')};\n\tborder-radius: 3px;\n`\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n\tposition: absolute !important;\n\theight: 0;\n\twidth: 0;\n\tvisibility: hidden;\n`\n\nconst LabelWrapper = styled.div`\n\theight: ${({ height }) => `${height}px`};\n\tline-height: ${({ height }) => `${height}px`};\n\tmargin-left: ${({ labelPosition }) => (labelPosition === 'right' ? '8px' : '0')};\n\tmargin-right: ${({ labelPosition }) => (labelPosition === 'left' ? '8px' : '0')};\n\topacity: ${({ disabled }) => (disabled ? '0.5' : '1')};\n\tcursor: default;\n`\n\nCheckboxWrapper.displayName = 'CheckboxWrapper'\nCheckboxContainer.displayName = 'CheckboxContainer'\nHiddenCheckbox.displayName = 'HiddenCheckbox'\nLabelWrapper.displayName = 'LabelWrapper'\nCheckbox.displayName = 'Checkbox'\n\nCheckbox.defaultProps = {\n\theight: 14,\n\twidth: 14,\n\tlabel: null,\n\tlabelPosition: 'right',\n\tid: '',\n\tdisabled: false,\n\tcolor: undefined,\n\tbackground: undefined\n}\n\nCheckbox.propTypes = {\n\t/* checkbox height in pixels */\n\theight: PropTypes.number,\n\t/* checkbox width in pixels */\n\twidth: PropTypes.number,\n\t/* boolean to checkbox status */\n\tchecked: PropTypes.bool.isRequired,\n\t/** customize checkbox color */\n\tcolor: PropTypes.string,\n\t/** css rule string to customize the checkbox background */\n\tbackground: PropTypes.string,\n\t/** label that will be displayed along with the checkbox */\n\tlabel: PropTypes.string,\n\t/** label position */\n\tlabelPosition: PropTypes.oneOf(['left', 'right']),\n\t/** label position */\n\tid: PropTypes.string,\n\t/** boolean to control the disabled attribute of the input checkbox */\n\tdisabled: PropTypes.bool\n}\n\nexport default Checkbox\n","import React, { Component, createRef } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport theme from '../../../themes/default'\nimport { Label } from '../../labels'\n\nclass Radio extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.hiddenRadio = createRef()\n\t}\n\n\thandleClick = () => {\n\t\tthis.hiddenRadio.click()\n\t}\n\n\trender() {\n\t\tconst { id, checked, color, background, label, labelPosition, height, width, disabled, ...props } = this.props\n\t\treturn (\n\t\t\t<RadioWrapper labelPosition={labelPosition} {...props}>\n\t\t\t\t<RadioContainer width={width} height={height} disabled={disabled} background={background}>\n\t\t\t\t\t<HiddenRadio\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tref={radio => {\n\t\t\t\t\t\t\tthis.hiddenRadio = radio\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t\t{checked ? (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfillOpacity={disabled ? 0.5 : 1}\n\t\t\t\t\t\t\twidth='100%'\n\t\t\t\t\t\t\theight='100%'\n\t\t\t\t\t\t\tviewBox='0 0 14 14'\n\t\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\t\t\t\td='M7 3.5C5.04 3.5 3.5 5.04 3.5 7C3.5 8.96 5.04 10.5 7 10.5C8.96 10.5 10.5 8.96 10.5 7C10.5 5.04 8.96 3.5 7 3.5ZM7 0C3.15 0 0 3.15 0 7C0 10.85 3.15 14 7 14C10.85 14 14 10.85 14 7C14 3.15 10.85 0 7 0ZM7 12.6C3.92 12.6 1.4 10.08 1.4 7C1.4 3.92 3.92 1.4 7 1.4C10.08 1.4 12.6 3.92 12.6 7C12.6 10.08 10.08 12.6 7 12.6Z'\n\t\t\t\t\t\t\t\tfill={color ? `${color}` : theme.colors.activeBlue}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tfillOpacity={disabled ? 0.5 : 1}\n\t\t\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\t\t\twidth='100%'\n\t\t\t\t\t\t\theight='100%'\n\t\t\t\t\t\t\tviewBox='0 0 14 14'\n\t\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tfillRule='evenodd'\n\t\t\t\t\t\t\t\tclipRule='evenodd'\n\t\t\t\t\t\t\t\td='M7 0C3.15 0 0 3.15 0 7C0 10.85 3.15 14 7 14C10.85 14 14 10.85 14 7C14 3.15 10.85 0 7 0ZM7 12.6C3.92 12.6 1.4 10.08 1.4 7C1.4 3.92 3.92 1.4 7 1.4C10.08 1.4 12.6 3.92 12.6 7C12.6 10.08 10.08 12.6 7 12.6Z'\n\t\t\t\t\t\t\t\tfill={color ? `${color}` : theme.colors.darkGray}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t)}\n\t\t\t\t</RadioContainer>\n\t\t\t\t{label && (\n\t\t\t\t\t<LabelWrapper\n\t\t\t\t\t\theight={height}\n\t\t\t\t\t\tlabelPosition={labelPosition}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tonClick={this.handleClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Label htmlFor={id}>{label}</Label>\n\t\t\t\t\t</LabelWrapper>\n\t\t\t\t)}\n\t\t\t</RadioWrapper>\n\t\t)\n\t}\n}\n\nconst RadioWrapper = styled.div`\n\tdisplay: inline-flex;\n\tflex-direction: ${({ labelPosition }) => (labelPosition === 'right' ? 'row' : 'row-reverse')};\n\talign-items: center;\n\tuser-select: none;\n`\n\nconst RadioContainer = styled.label`\n\tdisplay: block;\n\tcursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n\twidth: ${({ width }) => width}px;\n\theight: ${({ height }) => height}px;\n\tline-height: ${({ height }) => height}px;\n\tbackground: ${({ background }) => (background ? `${background}` : 'white')};\n\tborder-radius: 3px;\n`\n\nconst HiddenRadio = styled.input.attrs({ type: 'checkbox' })`\n\theight: 0;\n\twidth: 0;\n\tvisibility: hidden;\n`\n\nconst LabelWrapper = styled.div`\n\theight: ${({ height }) => `${height}px`};\n\tline-height: ${({ height }) => `${height}px`};\n\tmargin-left: ${({ labelPosition }) => (labelPosition === 'right' ? '8px' : '0')};\n\tmargin-right: ${({ labelPosition }) => (labelPosition === 'left' ? '8px' : '0')};\n\topacity: ${({ disabled }) => (disabled ? '0.5' : '1')};\n\tcursor: default;\n`\n\nRadioWrapper.displayName = 'RadioWrapper'\nRadioContainer.displayName = 'RadioContainer'\nHiddenRadio.displayName = 'HiddenRadio'\nLabelWrapper.displayName = 'LabelWrapper'\n\nRadio.defaultProps = {\n\tid: '',\n\theight: 14,\n\twidth: 14,\n\tlabel: null,\n\tlabelPosition: 'left',\n\tdisabled: false,\n\tcolor: undefined,\n\tbackground: undefined\n}\n\nRadio.propTypes = {\n\t/** String to the Id attribute */\n\tid: PropTypes.string,\n\t/* radio height in pixels */\n\theight: PropTypes.number,\n\t/* radio width in pixels */\n\twidth: PropTypes.number,\n\t/* boolean to radio status */\n\tchecked: PropTypes.bool.isRequired,\n\t/** customize radio color */\n\tcolor: PropTypes.string,\n\t/** css rule string to customize the radio background */\n\tbackground: PropTypes.string,\n\t/** label that will be displayed along with the radio */\n\tlabel: PropTypes.string,\n\t/** label position */\n\tlabelPosition: PropTypes.oneOf(['left', 'right']),\n\t/** onChange function handler */\n\tonChange: PropTypes.func.isRequired,\n\t/** boolean to control the disabled attribute of the input checkbox */\n\tdisabled: PropTypes.bool\n}\n\nexport default Radio\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Input as SemanticInput } from 'semantic-ui-react'\n\nconst TagContainer = styled(({ noBorder, ...props }) => <SemanticInput {...props} />)`\n\topacity: 1 !important;\n\n\t& input {\n\t\twidth: 40px !important;\n\t\tpadding: 1px 0 !important;\n\t\tborder: ${({ noBorder }) => (noBorder ? 0 : 'auto')} !important;\n\t\tborder-color: ${({ theme, error }) => (error ? theme.colors.red : 'transparent')} !important;\n\t\tbackground: transparent !important;\n\t\tcolor: ${({ color }) => color} !important;\n\n\t\tfont-size: 18px;\n\t\ttext-align: center !important;\n\t\ttext-transform: uppercase;\n\n\t\t&:hover {\n\t\t\tborder-color: ${({ theme, error }) => (error ? theme.colors.red : theme.colors.activeBlue)} !important;\n\t\t\tbackground: white !important;\n\t\t}\n\t\t&:focus {\n\t\t\tborder-color: ${({ theme }) => theme.colors.activeBlue} !important;\n\t\t\tbackground: white !important;\n\t\t}\n\t}\n`\n\nconst Tag = ({ onChange, ...props }) => (\n\t<TagContainer\n\t\tonChange={event => {\n\t\t\tconst regex = /[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,\\-.\\/:;<=>?@\\[\\]^_`´{|}~]/\n\t\t\tevent.target.value = event.target.value.replace(regex, '').toUpperCase()\n\t\t\tif (onChange !== undefined) {\n\t\t\t\tonChange(event)\n\t\t\t}\n\t\t}}\n\t\t{...props}\n\t/>\n)\n\nTag.defaultProps = {\n\tnoBorder: false,\n\tmaxLength: 2,\n\tonChange: undefined\n}\n\nTag.propTypes = {\n\t/** hex value of text color */\n\tcolor: PropTypes.string.isRequired,\n\t/** maximum character text length */\n\tmaxLength: PropTypes.number,\n\t/** onChange Value Handler */\n\tonChange: PropTypes.func,\n\t/** defines if input has border */\n\tnoBorder: PropTypes.bool\n}\n\nTag.displayName = 'Tag'\nTagContainer.displayName = 'TagContainer'\n\nexport default Tag\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { BottomLabel, Label } from '../../labels'\nimport { Error } from '../Error'\n\nconst InputGroup = ({ id, children, disabled, label, hint, errors, ...props }) => {\n\tconst getClassName = currentIndex => ['first-column', 'second-column', 'third-column'][currentIndex]\n\tconst getInputName = currentIndex => ['colour', 'tag', 'name'][currentIndex]\n\n\tconst errorsToArray = errors\n\t\t? Object.keys(errors).reduce((acc, element) => {\n\t\t\t\tif (element && Array.isArray(errors[element])) {\n\t\t\t\t\terrors[element].map(errorItem => acc.indexOf(errorItem) === -1 && acc.push(errorItem))\n\t\t\t\t} else if (element && errors[element] && acc.indexOf(errors[element]) === -1) {\n\t\t\t\t\tacc.push(errors[element])\n\t\t\t\t}\n\t\t\t\treturn acc\n\t\t }, [])\n\t\t: undefined\n\n\treturn (\n\t\t<>\n\t\t\t{label && (\n\t\t\t\t<Label htmlFor={id} disabled={disabled}>\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\n\t\t\t<InputGroupContainer>\n\t\t\t\t<InputGroupTable {...props}>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{children.map((element, index) => (\n\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\tkey={element.props.id}\n\t\t\t\t\t\t\t\t\tclassName={`${getClassName(index)} ${errors &&\n\t\t\t\t\t\t\t\t\t\t((Array.isArray(errors[getInputName(index)]) &&\n\t\t\t\t\t\t\t\t\t\t\terrors[getInputName(index)].length > 0) ||\n\t\t\t\t\t\t\t\t\t\t\terrors[getInputName(index)]) &&\n\t\t\t\t\t\t\t\t\t\t'errorBlock'}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{element}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</tbody>\n\t\t\t\t</InputGroupTable>\n\t\t\t\t{!errorsToArray && hint && (\n\t\t\t\t\t<BottomLabel data-test-id='hint' disabled={disabled}>\n\t\t\t\t\t\t{hint}\n\t\t\t\t\t</BottomLabel>\n\t\t\t\t)}\n\t\t\t\t{errorsToArray && errorsToArray.map(element => <Error key={element}>{element}</Error>)}\n\t\t\t</InputGroupContainer>\n\t\t</>\n\t)\n}\n\nconst InputGroupContainer = styled.div`\n\tmargin-top: 11px;\n\tmargin-bottom: 28px;\n`\n\nconst InputGroupTable = styled.table`\n\twidth: 100% !important;\n\tborder-spacing: 0;\n\ttable-layout: fixed;\n\tmargin: 0;\n\tpadding: 0;\n\n\t.first-column {\n\t\twidth: 40px;\n\t\theight: 34px;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tvertical-align: middle;\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.strokeGray}`};\n\t\tborder-top-left-radius: 4px !important;\n\t\tborder-bottom-left-radius: 4px !important;\n\t\tborder-right: 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.first-column:focus-within {\n\t\tborder-width: 1px 0 1px 1px;\n\t\tborder-style: solid;\n\t\tborder-color: ${({ theme }) => theme.colors.activeBlue};\n\t}\n\n\t.first-column:focus-within + .second-column {\n\t\tborder-left: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t}\n\n\t.first-column:focus-within + .second-column.errorBlock {\n\t\tborder-left: ${({ theme }) => `1px solid ${theme.colors.red} !important`};\n\t}\n\n\t.first-column.errorBlock:focus-within + .second-column.errorBlock {\n\t\tborder-left: 0 !important;\n\t}\n\n\t.second-column {\n\t\twidth: 40px;\n\t\tmax-width: 34px;\n\t\tmax-height: 34px;\n\t\tvertical-align: middle;\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.strokeGray}`};\n\t\tborder-right: 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.second-column:focus-within {\n\t\tborder-top: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t\tborder-bottom: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t\tborder-left: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t}\n\n\t.second-column:focus-within + .third-column {\n\t\tborder-left: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t}\n\n\t.second-column:focus-within + .third-column.errorBlock {\n\t\tborder-left: ${({ theme }) => `1px solid ${theme.colors.red}`};\n\t}\n\n\t.second-column.errorBlock:focus-within + .third-column.errorBlock {\n\t\tborder-left: 0 !important;\n\t}\n\n\t.third-column {\n\t\tmax-height: 34px;\n\t\tvertical-align: middle;\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.strokeGray}`};\n\t\tbox-sizing: border-box;\n\t\tborder-top-right-radius: 4px !important;\n\t\tborder-bottom-right-radius: 4px !important;\n\t}\n\n\t.third-column:focus-within {\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.activeBlue}`};\n\t}\n\n\t.first-column.errorBlock {\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.red}`};\n\t}\n\n\t.first-column.errorBlock + .second-column {\n\t\tborder-left: 0;\n\t}\n\n\t.second-column.errorBlock {\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.red}`};\n\t}\n\n\t.second-column.errorBlock + .first-column {\n\t\tborder-right: 0;\n\t}\n\n\t.second-column.errorBlock + .third-column {\n\t\tborder-left: 0;\n\t}\n\n\t.third-column.errorBlock {\n\t\tborder: ${({ theme }) => `1px solid ${theme.colors.red}`};\n\t}\n`\n\nInputGroup.defaultProps = {\n\tid: '',\n\tdisabled: false,\n\thint: '',\n\tlabel: undefined,\n\terrors: undefined\n}\n\nInputGroup.displayName = 'InputGroup'\n\nInputGroup.propTypes = {\n\t/** String to the Id attribute */\n\tid: PropTypes.string,\n\t/** Node it always have 3 children */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** Bool to disable */\n\tdisabled: PropTypes.bool,\n\t/** String for the hint */\n\thint: PropTypes.string,\n\t/** String with the label content */\n\tlabel: PropTypes.string,\n\t/** Shape with the errors content */\n\terrors: PropTypes.shape({\n\t\ttag: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\t\tname: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\t\tcolour: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])\n\t})\n}\n\nexport default InputGroup\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { DefaultTheme } from '../../themes'\n\nclass PasswordStrengthMeter extends Component {\n\tgetColor = () => {\n\t\tconst { passwordStrengthMeter } = DefaultTheme\n\t\tconst { score } = this.props\n\t\tconst colorArray = [\n\t\t\tpasswordStrengthMeter.none,\n\t\t\tpasswordStrengthMeter.bad,\n\t\t\tpasswordStrengthMeter.medium,\n\t\t\tpasswordStrengthMeter.good,\n\t\t\tpasswordStrengthMeter.excellent\n\t\t]\n\n\t\treturn colorArray[score]\n\t}\n\n\trender() {\n\t\tconst { score, ...props } = this.props\n\t\treturn (\n\t\t\t<PasswordStrengthStyled {...props}>\n\t\t\t\t<ProgressBar backgroundColor={this.getColor} score={score} />\n\t\t\t\t<BoxContainer>\n\t\t\t\t\t<Box />\n\t\t\t\t\t<Box />\n\t\t\t\t\t<Box />\n\t\t\t\t\t<Box />\n\t\t\t\t</BoxContainer>\n\t\t\t</PasswordStrengthStyled>\n\t\t)\n\t}\n}\n\nconst Box = styled.div`\n\twidth: 23.7%;\n\theight: 3px;\n\tbackground-color: gray;\n`\n\nconst BoxContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: start;\n\tjustify-content: space-between;\n\tbackground-color: white;\n\tmix-blend-mode: hard-light;\n`\n\nconst ProgressBar = styled.div`\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: ${({ score }) => `${score * 25}%`};\n\tmax-width: 100%;\n\theight: 3px;\n\tbackground-color: ${({ backgroundColor }) => backgroundColor};\n\ttransition: 0.75s;\n`\n\nconst PasswordStrengthStyled = styled.div`\n\tposition: relative;\n\twidth: 100%;\n\tmargin-top: 8px;\n\tbackground-color: ${({ theme }) => theme.passwordStrengthMeter.none};\n`\n\nPasswordStrengthMeter.propTypes = {\n\t/** Score of the password's strength */\n\tscore: PropTypes.number.isRequired\n}\n\nPasswordStrengthMeter.displayName = 'PasswordStrength'\nBox.displayName = 'Box'\nBoxContainer.displayName = 'BoxContainer'\nProgressBar.displayName = 'ProgressBar'\nPasswordStrengthStyled.displayName = 'PasswordStrengthStyled'\n\nexport default PasswordStrengthMeter\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport Input from '../Input/Input'\nimport { Icon } from '../../icons'\nimport PasswordStrengthMeter from '../../passwordStrengthMeter/PasswordStrengthMeter'\n\nclass InputPassword extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tthis.state = {\n\t\t\ttype: 'password'\n\t\t}\n\t}\n\n\tsetType = type => {\n\t\tthis.setState({\n\t\t\ttype\n\t\t})\n\t}\n\n\ticonInputElement = () => {\n\t\tconst { type } = this.state\n\t\treturn (\n\t\t\t<IconInput\n\t\t\t\ticon={type === 'password' ? 'preview' : 'eye-closed'}\n\t\t\t\tonClick={() => this.setType(type === 'password' ? 'text' : 'password')}\n\t\t\t/>\n\t\t)\n\t}\n\n\trender() {\n\t\tconst { type } = this.state\n\t\tconst { score, meter, ...props } = this.props\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Input type={type} icon={this.iconInputElement} {...props} />\n\t\t\t\t{meter && <PasswordStrengthMeter score={score} />}\n\t\t\t</>\n\t\t)\n\t}\n}\n\nconst IconInput = styled(Icon)`\n\tcursor: pointer !important;\n\tpointer-events: all !important;\n\t&&& {\n\t\tcolor: ${({ theme }) => theme.colors.activeBlue} !important;\n\t}\n`\n\nconst scoreValidation = (props, propName, componentName) => {\n\tif (props.meter && (props[propName] === null || props[propName] === undefined)) {\n\t\treturn new Error(\n\t\t\t`Failed prop type: '${propName}' is set to required when 'meter' is true, in ${componentName}.`\n\t\t)\n\t}\n}\n\nInputPassword.propTypes = {\n\t/** boolean indicating whether password strength validation should render */\n\tmeter: PropTypes.bool,\n\t/** custom prop validation function to check the score of the password if meter is true and score defined */\n\tscore: scoreValidation\n}\n\nInputPassword.defaultProps = {\n\tmeter: false\n}\n\nIconInput.displayName = 'IconInput'\nInputPassword.displayName = 'InputPassword'\n\n/** @component */\nexport default InputPassword\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst InputRange = ({ min, step, max, value, onChange, onUpdate, ...props }) => (\n\t<InputRangeStyled\n\t\ttype='range'\n\t\tmin={0}\n\t\tstep={(step / (max - min)) * 100}\n\t\tmax={100}\n\t\tvalue={((value - min) * 100) / (max - min)}\n\t\tonChange={e => onChange((e.target.value / 100) * (max - min) + min)}\n\t\tonMouseUp={e => onUpdate((e.target.value / 100) * (max - min) + min)}\n\t\t{...props}\n\t/>\n)\n\nconst InputRangeStyled = styled.input`\n\twidth: 100%;\n\theight: 8px;\n\tpadding: 0;\n\tmargin: 14px 0;\n\tappearance: none;\n\tbackground: ${({ value, theme }) => theme.inputRange.gradient(value)};\n\tborder-radius: 8px;\n\tcursor: pointer;\n\toutline: none;\n\tbox-shadow: none;\n\ttransition: background 450ms ease-in;\n\t::-webkit-slider-thumb {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tborder: 1px solid ${({ theme }) => theme.inputRange.borderColor};\n\t\tappearance: none;\n\t\tbackground: ${({ theme }) => theme.inputRange.backgroundThumbColor};\n\t\tborder-radius: 50%;\n\t}\n\t::-moz-range-thumb {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tborder: 1px solid ${({ theme }) => theme.inputRange.borderColor};\n\t\tappearance: none;\n\t\tbackground: ${({ theme }) => theme.inputRange.backgroundThumbColor};\n\t\tborder-radius: 50%;\n\t\toutline: 0;\n\t}\n\t::-moz-focus-outer {\n\t\tborder: 0;\n\t}\n`\n\nInputRange.defaultProps = {\n\tmin: 0,\n\tstep: 1,\n\tmax: 100\n}\n\nInputRange.propTypes = {\n\t/** minimum value of the input */\n\t// eslint-disable-next-line consistent-return\n\tmin: (props, propName, componentName) => {\n\t\tconst { min, max } = props\n\t\tif (typeof min === 'number' && min > max) {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a minimum number lower than ${max}.`\n\t\t\t)\n\t\t}\n\t\tif (typeof min !== 'number' && typeof min !== 'undefined') {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a number.`\n\t\t\t)\n\t\t}\n\t},\n\t/** step value of the input means that the value of the input will increase by the step */\n\t// eslint-disable-next-line consistent-return\n\tstep: (props, propName, componentName) => {\n\t\tconst { step, min, max } = props\n\t\tif (typeof step === 'number' && (step > max || step < min)) {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a step number between ${min} and ${max}`\n\t\t\t)\n\t\t}\n\t\tif (typeof step !== 'number' && typeof step !== 'undefined') {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a number.`\n\t\t\t)\n\t\t}\n\t},\n\t/** maximum value of the input */\n\tmax: PropTypes.number,\n\t/** value of the input */\n\t// eslint-disable-next-line consistent-return,react/require-default-props\n\tvalue: (props, propName, componentName) => {\n\t\tconst { min, max, value } = props\n\t\tif (typeof value === 'number' && (value < min || value > max)) {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a value number between ${min} and ${max}.`\n\t\t\t)\n\t\t}\n\t\tif (typeof value !== 'number') {\n\t\t\treturn new Error(\n\t\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a number.`\n\t\t\t)\n\t\t}\n\t},\n\t/** onChange function handler */\n\tonChange: PropTypes.func.isRequired,\n\t/** onUpdate function handler */\n\tonUpdate: PropTypes.func.isRequired\n}\n\nInputRange.displayName = 'InputRange'\n\nexport default InputRange\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport { Input as SemanticInput } from 'semantic-ui-react'\nimport PropTypes from 'prop-types'\nimport { Icon as DefaultIcon } from '../../icons'\n\nclass NumberSpinner extends Component {\n\tgetValue = event => {\n\t\tconst { max, min } = this.props\n\t\tconst numValue = Number(event.target.value.replace(/\\D/, ''))\n\t\treturn numValue > max ? max : numValue < min ? min : numValue\n\t}\n\n\tstepLimiter = newValue => {\n\t\tconst { max, min } = this.props\n\t\tconst numValue = Number(newValue)\n\t\treturn numValue > max ? min : numValue < min ? max : numValue\n\t}\n\n\tsetValueByStep = (event, newValue) => {\n\t\tconst { disabled, onChange } = this.props\n\t\t!disabled && onChange(event, this.stepLimiter(newValue))\n\t}\n\n\tsetValueWheel = e => {\n\t\tconst { scrollInput, value } = this.props\n\t\tif (scrollInput) {\n\t\t\te.stopPropagation()\n\t\t\tthis.setValueByStep(e, Number(value) + (e.deltaY > 0 ? -1 : 1))\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { onChange, name, min, max, value, disabled, readOnly, error, scrollInput, ...props } = this.props\n\t\tconst size = String(max).length\n\t\treturn (\n\t\t\t<Container>\n\t\t\t\t<div>\n\t\t\t\t\t<IconUp\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ticon='select-up'\n\t\t\t\t\t\tonClick={e => this.setValueByStep(e, Number(value) + 1)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Input\n\t\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\terror={error}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tinput={<input size={size} maxLength={size + 1} />}\n\t\t\t\t\t\tonWheel={this.setValueWheel}\n\t\t\t\t\t\tonChange={e => onChange(e, this.getValue(e))}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t\t<IconDown\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\ticon='select-up'\n\t\t\t\t\t\tonClick={e => this.setValueByStep(e, Number(value) - 1)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Container>\n\t\t)\n\t}\n}\n\nNumberSpinner.defaultProps = {\n\tmin: 0,\n\tmax: 10,\n\tvalue: 0,\n\tdisabled: false,\n\treadOnly: false,\n\terror: false,\n\tscrollInput: false\n}\n\nconst minPropValidation = (props, propName, componentName) => {\n\tconst { min, max } = props\n\tif (typeof min === 'number' && min > max) {\n\t\treturn new Error(\n\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a minimum number lower than ${max}.`\n\t\t)\n\t}\n\tif (typeof min !== 'number' && typeof min !== 'undefined') {\n\t\treturn new Error(\n\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a number.`\n\t\t)\n\t}\n}\n\nconst valuePropValidation = (props, propName, componentName) => {\n\tconst { min, max, value } = props\n\n\tif (typeof value === 'number' && (value < min || value > max)) {\n\t\treturn new Error(\n\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a value number between ${min} and ${max}.`\n\t\t)\n\t}\n\n\tif (typeof value === 'string' && (Number(value) < min || Number(value) > max)) {\n\t\treturn new Error(\n\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a value number inside the string between ${min} and ${max}.`\n\t\t)\n\t}\n\n\tif (typeof value !== 'number' && typeof value !== 'string') {\n\t\treturn new Error(\n\t\t\t`Invalid prop ${propName} supplied to ${componentName}. Validation failed. Please provide a number.`\n\t\t)\n\t}\n}\n\nNumberSpinner.propTypes = {\n\t/** onChange function handler */\n\tonChange: PropTypes.func.isRequired,\n\t/** name string to the input */\n\tname: PropTypes.string.isRequired,\n\t/** boolean to activate or deactivate the scroll input feature */\n\tscrollInput: PropTypes.bool,\n\t/** minimum value of the input */\n\tmin: minPropValidation,\n\t/** maximum value of the input */\n\tmax: PropTypes.number,\n\t/** value of the input */\n\tvalue: valuePropValidation,\n\t/** boolean to control the disabled attribute of the input */\n\tdisabled: PropTypes.bool,\n\t/** boolean to control the readOnly attribute of the input */\n\treadOnly: PropTypes.bool,\n\t/** boolean to control the error status of the input */\n\terror: PropTypes.bool\n}\n\nconst Input = styled(({ size, maxLength, ...props }) => <SemanticInput {...props} />)`\n\tinput {\n\t\tdisplay: block;\n\t\theight: 20px;\n\t\ttext-align: center !important;\n\t\tpadding: 0 !important;\n\t\tborder: 1px solid\n\t\t\t${({ error, disabled, theme }) =>\n\t\t\t\terror && !disabled ? theme.numberSpinner.errorColor : theme.numberSpinner.borderColor} !important;\n\t\tbackground-color: transparent !important;\n\t\tbox-shadow: none !important;\n\t\tcolor: ${({ disabled, theme }) =>\n\t\t\tdisabled ? theme.numberSpinner.disabledColorText : theme.numberSpinner.textColor} !important;\n\t\tpointer-events: ${({ disabled, readOnly }) => (disabled || readOnly ? 'none' : 'initial')};\n\t\ttransition: none !important;\n\t}\n\n\tinput:hover {\n\t\tbox-sizing: border-box !important;\n\t\tpadding: 0 !important;\n\t\tborder: ${({ disabled, readOnly }) => (disabled || readOnly ? 'none' : '1px solid')} !important;\n\t\tborder-color: ${({ disabled, error, theme }) =>\n\t\t\t(disabled && 'none') ||\n\t\t\t(error && theme.numberSpinner.errorColor) ||\n\t\t\ttheme.numberSpinner.hoverColor} !important;\n\t\tborder-radius: 4px !important;\n\t}\n\n\tinput:focus {\n\t\tbox-sizing: border-box !important;\n\t\tpadding: 0 !important;\n\t\tborder: ${({ disabled, readOnly }) => (disabled || readOnly ? 'none' : '1px solid')} !important;\n\t\tborder-color: ${({ disabled, error, theme }) =>\n\t\t\t(disabled && 'none') ||\n\t\t\t(error && theme.numberSpinner.errorColor) ||\n\t\t\ttheme.numberSpinner.primaryColor} !important;\n\t\tborder-radius: 4px !important;\n\t}\n`\n\nInput.displayName = 'Input'\n\nconst IconUp = styled(DefaultIcon)`\n\tdisplay: block !important;\n\tmargin: 0 auto !important;\n\tmargin-bottom: 4px !important;\n\topacity: 1;\n\tcolor: ${({ disabled, theme }) =>\n\t\tdisabled ? theme.numberSpinner.disabledColor : theme.numberSpinner.primaryColor} !important;\n\tpointer-events: ${({ disabled }) => (disabled ? 'none' : 'initial')};\n\t:active {\n\t\tcolor: ${({ disabled, theme }) =>\n\t\t\tdisabled ? theme.numberSpinner.disabledColor : theme.numberSpinner.activeColor} !important;\n\t}\n`\n\nIconUp.displayName = 'IconUp'\n\nconst IconDown = styled(IconUp)`\n\tmargin-top: 4px !important;\n\tmargin-bottom: 0px !important;\n\ttransform: rotate(180deg);\n`\n\nIconDown.displayName = 'IconDown'\n\nconst Container = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n`\n\nContainer.displayName = 'Container'\n\nexport default NumberSpinner\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n var l = str.length,\n h = l ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e, m).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e, m).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n switch (d.constructor) {\n case Array:\n for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n }\n\n break;\n\n case Function:\n S[A++] = d;\n break;\n\n case Boolean:\n Y = !!d | 0;\n }\n\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","(function (factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory()) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory()) :\n\t\t\t(window['stylisRuleSheet'] = factory())\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+content), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n","import memoize from '@emotion/memoize';\nimport unitless from '@emotion/unitless';\nimport hashString from '@emotion/hash';\nimport Stylis from '@emotion/stylis';\nimport stylisRuleSheet from 'stylis-rule-sheet';\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar processStyleName = memoize(function (styleName) {\n return styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\nvar processStyleValue = function processStyleValue(key, value) {\n if (value == null || typeof value === 'boolean') {\n return '';\n }\n\n if (unitless[key] !== 1 && key.charCodeAt(1) !== 45 && // custom properties\n !isNaN(value) && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n return oldProcessStyleValue(key, value);\n };\n}\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'function':\n if (process.env.NODE_ENV !== 'production') {\n console.error('Passing functions to cx is deprecated and will be removed in the next major version of Emotion.\\n' + 'Please call the function before passing it to cx.');\n }\n\n toAdd = classnames([arg()]);\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\nvar isBrowser = typeof document !== 'undefined';\n\n/*\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n- 'polyfills' on server side\n\n// usage\n\nimport StyleSheet from 'glamor/lib/sheet'\nlet styleSheet = new StyleSheet()\n\nstyleSheet.inject()\n- 'injects' the stylesheet into the page (or into memory if on server)\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction makeStyleTag(opts) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', opts.key || '');\n\n if (opts.nonce !== undefined) {\n tag.setAttribute('nonce', opts.nonce);\n }\n\n tag.appendChild(document.createTextNode('')) // $FlowFixMe\n ;\n (opts.container !== undefined ? opts.container : document.head).appendChild(tag);\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = process.env.NODE_ENV === 'production'; // the big drawback here is that the css won't be editable in devtools\n\n this.tags = [];\n this.ctr = 0;\n this.opts = options;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.inject = function inject() {\n if (this.injected) {\n throw new Error('already injected!');\n }\n\n this.tags[0] = makeStyleTag(this.opts);\n this.injected = true;\n };\n\n _proto.speedy = function speedy(bool) {\n if (this.ctr !== 0) {\n // cannot change speedy mode after inserting any rule to sheet. Either call speedy(${bool}) earlier in your app, or call flush() before speedy(${bool})\n throw new Error(\"cannot change speedy now\");\n }\n\n this.isSpeedy = !!bool;\n };\n\n _proto.insert = function insert(rule, sourceMap) {\n // this is the ultrafast version, works across browsers\n if (this.isSpeedy) {\n var tag = this.tags[this.tags.length - 1];\n var sheet = sheetForTag(tag);\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('illegal rule', rule); // eslint-disable-line no-console\n }\n }\n } else {\n var _tag = makeStyleTag(this.opts);\n\n this.tags.push(_tag);\n\n _tag.appendChild(document.createTextNode(rule + (sourceMap || '')));\n }\n\n this.ctr++;\n\n if (this.ctr % 65000 === 0) {\n this.tags.push(makeStyleTag(this.opts));\n }\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0; // todo - look for remnants in document.styleSheets\n\n this.injected = false;\n };\n\n return StyleSheet;\n}();\n\nfunction createEmotion(context, options) {\n if (context.__SECRET_EMOTION__ !== undefined) {\n return context.__SECRET_EMOTION__;\n }\n\n if (options === undefined) options = {};\n var key = options.key || 'css';\n\n if (process.env.NODE_ENV !== 'production') {\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var current;\n\n function insertRule(rule) {\n current += rule;\n\n if (isBrowser) {\n sheet.insert(rule, currentSourceMap);\n }\n }\n\n var insertionPlugin = stylisRuleSheet(insertRule);\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var caches = {\n registered: {},\n inserted: {},\n nonce: options.nonce,\n key: key\n };\n var sheet = new StyleSheet(options);\n\n if (isBrowser) {\n // 🚀\n sheet.inject();\n }\n\n var stylis = new Stylis(stylisOptions);\n stylis.use(options.stylisPlugins)(insertionPlugin);\n var currentSourceMap = '';\n\n function handleInterpolation(interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n return '';\n\n case 'function':\n if (interpolation.__emotion_styles !== undefined) {\n var selector = interpolation.toString();\n\n if (selector === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return selector;\n }\n\n if (this === undefined && process.env.NODE_ENV !== 'production') {\n console.error('Interpolating functions in css calls is deprecated and will be removed in the next major version of Emotion.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n return handleInterpolation.call(this, this === undefined ? interpolation() : // $FlowFixMe\n interpolation(this.mergedProps, this.context), couldBeSelectorInterpolation);\n\n case 'object':\n return createStringFromObject.call(this, interpolation);\n\n default:\n var cached = caches.registered[interpolation];\n return couldBeSelectorInterpolation === false && cached !== undefined ? cached : interpolation;\n }\n }\n\n var objectToStringCache = new WeakMap();\n\n function createStringFromObject(obj) {\n if (objectToStringCache.has(obj)) {\n // $FlowFixMe\n return objectToStringCache.get(obj);\n }\n\n var string = '';\n\n if (Array.isArray(obj)) {\n obj.forEach(function (interpolation) {\n string += handleInterpolation.call(this, interpolation, false);\n }, this);\n } else {\n Object.keys(obj).forEach(function (key) {\n if (typeof obj[key] !== 'object') {\n if (caches.registered[obj[key]] !== undefined) {\n string += key + \"{\" + caches.registered[obj[key]] + \"}\";\n } else {\n string += processStyleName(key) + \":\" + processStyleValue(key, obj[key]) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(obj[key]) && typeof obj[key][0] === 'string' && caches.registered[obj[key][0]] === undefined) {\n obj[key].forEach(function (value) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value) + \";\";\n });\n } else {\n string += key + \"{\" + handleInterpolation.call(this, obj[key], false) + \"}\";\n }\n }\n }, this);\n }\n\n objectToStringCache.set(obj, string);\n return string;\n }\n\n var name;\n var stylesWithLabel;\n var labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\n\n var createClassName = function createClassName(styles, identifierName) {\n return hashString(styles + identifierName) + identifierName;\n };\n\n if (process.env.NODE_ENV !== 'production') {\n var oldCreateClassName = createClassName;\n var sourceMappingUrlPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n\n createClassName = function createClassName(styles, identifierName) {\n return oldCreateClassName(styles.replace(sourceMappingUrlPattern, function (sourceMap) {\n currentSourceMap = sourceMap;\n return '';\n }), identifierName);\n };\n }\n\n var createStyles = function createStyles(strings) {\n var stringMode = true;\n var styles = '';\n var identifierName = '';\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation.call(this, strings, false);\n } else {\n styles += strings[0];\n }\n\n for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n interpolations.forEach(function (interpolation, i) {\n styles += handleInterpolation.call(this, interpolation, styles.charCodeAt(styles.length - 1) === 46 // .\n );\n\n if (stringMode === true && strings[i + 1] !== undefined) {\n styles += strings[i + 1];\n }\n }, this);\n stylesWithLabel = styles;\n styles = styles.replace(labelPattern, function (match, p1) {\n identifierName += \"-\" + p1;\n return '';\n });\n name = createClassName(styles, identifierName);\n return styles;\n };\n\n if (process.env.NODE_ENV !== 'production') {\n var oldStylis = stylis;\n\n stylis = function stylis(selector, styles) {\n oldStylis(selector, styles);\n currentSourceMap = '';\n };\n }\n\n function insert(scope, styles) {\n if (caches.inserted[name] === undefined) {\n current = '';\n stylis(scope, styles);\n caches.inserted[name] = current;\n }\n }\n\n var css = function css() {\n var styles = createStyles.apply(this, arguments);\n var selector = key + \"-\" + name;\n\n if (caches.registered[selector] === undefined) {\n caches.registered[selector] = stylesWithLabel;\n }\n\n insert(\".\" + selector, styles);\n return selector;\n };\n\n var keyframes = function keyframes() {\n var styles = createStyles.apply(this, arguments);\n var animation = \"animation-\" + name;\n insert('', \"@keyframes \" + animation + \"{\" + styles + \"}\");\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n var styles = createStyles.apply(this, arguments);\n insert('', styles);\n };\n\n function getRegisteredStyles(registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (caches.registered[className] !== undefined) {\n registeredStyles.push(className);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n }\n\n function merge(className, sourceMap) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles, sourceMap);\n }\n\n function cx() {\n for (var _len2 = arguments.length, classNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n classNames[_key2] = arguments[_key2];\n }\n\n return merge(classnames(classNames));\n }\n\n function hydrateSingleId(id) {\n caches.inserted[id] = true;\n }\n\n function hydrate(ids) {\n ids.forEach(hydrateSingleId);\n }\n\n function flush() {\n if (isBrowser) {\n sheet.flush();\n sheet.inject();\n }\n\n caches.inserted = {};\n caches.registered = {};\n }\n\n if (isBrowser) {\n var chunks = document.querySelectorAll(\"[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(chunks, function (node) {\n // $FlowFixMe\n sheet.tags[0].parentNode.insertBefore(node, sheet.tags[0]); // $FlowFixMe\n\n node.getAttribute(\"data-emotion-\" + key).split(' ').forEach(hydrateSingleId);\n });\n }\n\n var emotion = {\n flush: flush,\n hydrate: hydrate,\n cx: cx,\n merge: merge,\n getRegisteredStyles: getRegisteredStyles,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n css: css,\n sheet: sheet,\n caches: caches\n };\n context.__SECRET_EMOTION__ = emotion;\n return emotion;\n}\n\nexport default createEmotion;\n","import createEmotion from 'create-emotion';\n\nvar context = typeof global !== 'undefined' ? global : {};\n\nvar _createEmotion = createEmotion(context),\n flush = _createEmotion.flush,\n hydrate = _createEmotion.hydrate,\n cx = _createEmotion.cx,\n merge = _createEmotion.merge,\n getRegisteredStyles = _createEmotion.getRegisteredStyles,\n injectGlobal = _createEmotion.injectGlobal,\n keyframes = _createEmotion.keyframes,\n css = _createEmotion.css,\n sheet = _createEmotion.sheet,\n caches = _createEmotion.caches;\n\nexport { flush, hydrate, cx, merge, getRegisteredStyles, injectGlobal, keyframes, css, sheet, caches };\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: 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\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\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillReceiveProps',\n\t\tvalue: function componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar 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: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\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 * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\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\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_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.transitionGroup; // 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 var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\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 _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 var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\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(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\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) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\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(node, timeout, handler) {\n this.setNextCallback(handler);\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 this.props.addEndListener(node, this.nextCallback);\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 childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\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'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\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 * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `<Transition>` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\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 = _PropTypes.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. **Note:** Timeouts are still used as a fallback if provided.\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 * @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 * @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 * @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 * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\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 * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\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 = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\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 */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.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\n\nfunction 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\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.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}\n\nfunction 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 (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.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] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.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}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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 * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` 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 `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` 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\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_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(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\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 ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.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 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 children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` 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 `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` 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.default.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.default.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.default.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.default.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.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n * <Fade><div>I appear first</div></Fade>\n * <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","import React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { css, injectGlobal } from 'emotion';\nimport { createPortal, findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport raf from 'raf';\nimport AutosizeInput from 'react-input-autosize';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, cssKey, state, className) {\n var arr = [cssKey, className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n raf(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MenuPlacer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPlacement\", function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getUpdatedProps\", function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread({}, _this.props, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n });\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\n\n_defineProperty(MenuPlacer, \"contextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n var cn = cx(\n /*#__PURE__*/\n css(getStyles('menu', props)), {\n menu: true\n }, className);\n return React.createElement(\"div\", _extends({\n className: cn\n }, innerProps, {\n ref: innerRef\n }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isMulti = props.isMulti,\n innerRef = props.innerRef;\n return React.createElement(\"div\", {\n className: cx(\n /*#__PURE__*/\n css(getStyles('menuList', props)), {\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('noOptionsMessage', props)), {\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('loadingMessage', props)), {\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _getPrototypeOf3;\n\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _possibleConstructorReturn(this, (_getPrototypeOf3 = _getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"state\", {\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"getPortalPlacement\", function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n });\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n } // callback for occassions where the menu must \"flip\"\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n controlElement = _this$props2.controlElement,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = React.createElement(\"div\", {\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css(getStyles('menuPortal', state))\n }, children);\n return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\n_defineProperty(MenuPortal, \"childContextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // Custom handling for React\n\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n}\n\nvar diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n base: 'AA',\n letters: /[\\uA732]/g\n}, {\n base: 'AE',\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n base: 'AO',\n letters: /[\\uA734]/g\n}, {\n base: 'AU',\n letters: /[\\uA736]/g\n}, {\n base: 'AV',\n letters: /[\\uA738\\uA73A]/g\n}, {\n base: 'AY',\n letters: /[\\uA73C]/g\n}, {\n base: 'B',\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n base: 'C',\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n base: 'D',\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n base: 'DZ',\n letters: /[\\u01F1\\u01C4]/g\n}, {\n base: 'Dz',\n letters: /[\\u01F2\\u01C5]/g\n}, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n base: 'F',\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n base: 'G',\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n base: 'H',\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n base: 'J',\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n base: 'K',\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n base: 'LJ',\n letters: /[\\u01C7]/g\n}, {\n base: 'Lj',\n letters: /[\\u01C8]/g\n}, {\n base: 'M',\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n base: 'NJ',\n letters: /[\\u01CA]/g\n}, {\n base: 'Nj',\n letters: /[\\u01CB]/g\n}, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n base: 'OI',\n letters: /[\\u01A2]/g\n}, {\n base: 'OO',\n letters: /[\\uA74E]/g\n}, {\n base: 'OU',\n letters: /[\\u0222]/g\n}, {\n base: 'P',\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n base: 'Q',\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n base: 'T',\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n base: 'TZ',\n letters: /[\\uA728]/g\n}, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n base: 'V',\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n base: 'VY',\n letters: /[\\uA760]/g\n}, {\n base: 'W',\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n base: 'X',\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n base: 'Y',\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n base: 'Z',\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n base: 'aa',\n letters: /[\\uA733]/g\n}, {\n base: 'ae',\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n base: 'ao',\n letters: /[\\uA735]/g\n}, {\n base: 'au',\n letters: /[\\uA737]/g\n}, {\n base: 'av',\n letters: /[\\uA739\\uA73B]/g\n}, {\n base: 'ay',\n letters: /[\\uA73D]/g\n}, {\n base: 'b',\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n base: 'c',\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n base: 'd',\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n base: 'dz',\n letters: /[\\u01F3\\u01C6]/g\n}, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n base: 'f',\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n base: 'g',\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n base: 'h',\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n base: 'hv',\n letters: /[\\u0195]/g\n}, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n base: 'j',\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n base: 'k',\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n base: 'lj',\n letters: /[\\u01C9]/g\n}, {\n base: 'm',\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n base: 'nj',\n letters: /[\\u01CC]/g\n}, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n base: 'oi',\n letters: /[\\u01A3]/g\n}, {\n base: 'ou',\n letters: /[\\u0223]/g\n}, {\n base: 'oo',\n letters: /[\\uA74F]/g\n}, {\n base: 'p',\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n base: 'q',\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n base: 'tz',\n letters: /[\\uA729]/g\n}, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n base: 'v',\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n base: 'vy',\n letters: /[\\uA761]/g\n}, {\n base: 'w',\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n base: 'x',\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n base: 'z',\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n for (var i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n\n return str;\n};\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nvar A11yText = function A11yText(props) {\n return React.createElement(\"span\", _extends({\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css({\n label: 'a11yText',\n zIndex: 9999,\n border: 0,\n clip: 'rect(1px, 1px, 1px, 1px)',\n height: 1,\n width: 1,\n position: 'absolute',\n overflow: 'hidden',\n padding: 0,\n whiteSpace: 'nowrap',\n backgroundColor: 'red',\n color: 'blue'\n })\n }, props));\n};\n\nvar DummyInput =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DummyInput, _Component);\n\n function DummyInput() {\n _classCallCheck(this, DummyInput);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DummyInput).apply(this, arguments));\n }\n\n _createClass(DummyInput, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n inProp = _this$props.in,\n out = _this$props.out,\n onExited = _this$props.onExited,\n appear = _this$props.appear,\n enter = _this$props.enter,\n exit = _this$props.exit,\n innerRef = _this$props.innerRef,\n emotion = _this$props.emotion,\n props = _objectWithoutProperties(_this$props, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return React.createElement(\"input\", _extends({\n ref: innerRef\n }, props, {\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n })\n }));\n }\n }]);\n\n return DummyInput;\n}(Component);\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NodeResolver, _Component);\n\n function NodeResolver() {\n _classCallCheck(this, NodeResolver);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NodeResolver).apply(this, arguments));\n }\n\n _createClass(NodeResolver, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.innerRef(findDOMNode(this));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.props.innerRef(null);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollLock, _Component);\n\n function ScrollLock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollLock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollLock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"originalStyles\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"listenerOptions\", {\n capture: false,\n passive: false\n });\n\n return _this;\n }\n\n _createClass(ScrollLock, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n var _this$props = this.props,\n accountForScrollbars = _this$props.accountForScrollbars,\n touchScrollTarget = _this$props.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n var _this$props2 = this.props,\n accountForScrollbars = _this$props2.accountForScrollbars,\n touchScrollTarget = _this$props2.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return ScrollLock;\n}(Component);\n\n_defineProperty(ScrollLock, \"defaultProps\", {\n accountForScrollbars: true\n});\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollBlock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollBlock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n touchScrollTarget: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n\n _this.setState({\n touchScrollTarget: ref\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blurSelectInput\", function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n });\n\n return _this;\n }\n\n _createClass(ScrollBlock, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n isEnabled = _this$props.isEnabled;\n var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n if (!isEnabled) return children;\n /*\n * Div\n * ------------------------------\n * blocks scrolling on non-body elements behind the menu\n * NodeResolver\n * ------------------------------\n * we need a reference to the scrollable element to \"unlock\" scroll on\n * mobile devices\n * ScrollLock\n * ------------------------------\n * actually does the scroll locking\n */\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n onClick: this.blurSelectInput,\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css({\n position: 'fixed',\n left: 0,\n bottom: 0,\n right: 0,\n top: 0\n })\n }), React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, children), touchScrollTarget ? React.createElement(ScrollLock, {\n touchScrollTarget: touchScrollTarget\n }) : null);\n }\n }]);\n\n return ScrollBlock;\n}(PureComponent);\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollCaptor);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollCaptor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isBottom\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isTop\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollTarget\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"touchStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancelScroll\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEventDelta\", function (event, delta) {\n var _this$props = _this.props,\n onBottomArrive = _this$props.onBottomArrive,\n onBottomLeave = _this$props.onBottomLeave,\n onTopArrive = _this$props.onTopArrive,\n onTopLeave = _this$props.onTopLeave;\n var _this$scrollTarget = _this.scrollTarget,\n scrollTop = _this$scrollTarget.scrollTop,\n scrollHeight = _this$scrollTarget.scrollHeight,\n clientHeight = _this$scrollTarget.clientHeight;\n var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWheel\", function (event) {\n _this.handleEventDelta(event, event.deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n _this.handleEventDelta(event, deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n _this.scrollTarget = ref;\n });\n\n return _this;\n }\n\n _createClass(ScrollCaptor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListening(this.scrollTarget);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n }\n }, {\n key: \"startListening\",\n value: function startListening(el) {\n // bail early if no scroll available\n if (!el) return;\n if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"stopListening\",\n value: function stopListening(el) {\n // bail early if no scroll available\n if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, this.props.children);\n }\n }]);\n\n return ScrollCaptor;\n}(Component);\n\nvar ScrollCaptorSwitch =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(ScrollCaptorSwitch, _Component2);\n\n function ScrollCaptorSwitch() {\n _classCallCheck(this, ScrollCaptorSwitch);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ScrollCaptorSwitch).apply(this, arguments));\n }\n\n _createClass(ScrollCaptorSwitch, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n isEnabled = _this$props2.isEnabled,\n props = _objectWithoutProperties(_this$props2, [\"isEnabled\"]);\n\n return isEnabled ? React.createElement(ScrollCaptor, props) : this.props.children;\n }\n }]);\n\n return ScrollCaptorSwitch;\n}(Component);\n\n_defineProperty(ScrollCaptorSwitch, \"defaultProps\", {\n isEnabled: true\n});\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label,\n isDisabled = context.isDisabled;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu, press Tab to select the option and exit the menu.\");\n\n case 'input':\n return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(value, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('container', props)), {\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ValueContainer, _Component);\n\n function ValueContainer() {\n _classCallCheck(this, ValueContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ValueContainer).apply(this, arguments));\n }\n\n _createClass(ValueContainer, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n cx = _this$props.cx,\n isMulti = _this$props.isMulti,\n getStyles = _this$props.getStyles,\n hasValue = _this$props.hasValue;\n return React.createElement(\"div\", {\n className: cx(\n /*#__PURE__*/\n css(getStyles('valueContainer', this.props)), {\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, children);\n }\n }]);\n\n return ValueContainer;\n}(Component); // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n return React.createElement(\"div\", {\n className: cx(\n /*#__PURE__*/\n css(getStyles('indicatorsContainer', props)), {\n 'indicators': true\n }, className)\n }, children);\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return React.createElement(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css({\n display: 'inline-block',\n fill: 'currentColor',\n lineHeight: 1,\n stroke: 'currentColor',\n strokeWidth: 0\n })\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return React.createElement(Svg, _extends({\n size: 20\n }, props), React.createElement(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return React.createElement(Svg, _extends({\n size: 20\n }, props), React.createElement(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref2) {\n var isFocused = _ref2.isFocused,\n _ref2$theme = _ref2.theme,\n baseUnit = _ref2$theme.spacing.baseUnit,\n colors = _ref2$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({}, innerProps, {\n className: cx(\n /*#__PURE__*/\n css(getStyles('dropdownIndicator', props)), {\n 'indicator': true,\n 'dropdown-indicator': true\n }, className)\n }), children || React.createElement(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({}, innerProps, {\n className: cx(\n /*#__PURE__*/\n css(getStyles('clearIndicator', props)), {\n 'indicator': true,\n 'clear-indicator': true\n }, className)\n }), children || React.createElement(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref3) {\n var isDisabled = _ref3.isDisabled,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"span\", _extends({}, innerProps, {\n className: cx(\n /*#__PURE__*/\n css(getStyles('indicatorSeparator', props)), {\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar keyframesName = 'react-select-loading-indicator';\nvar keyframesInjected = false;\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref4) {\n var isFocused = _ref4.isFocused,\n size = _ref4.size,\n _ref4$theme = _ref4.theme,\n colors = _ref4$theme.colors,\n baseUnit = _ref4$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref5) {\n var color = _ref5.color,\n delay = _ref5.delay,\n offset = _ref5.offset;\n return React.createElement(\"span\", {\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css({\n animationDuration: '1s',\n animationDelay: \"\".concat(delay, \"ms\"),\n animationIterationCount: 'infinite',\n animationName: keyframesName,\n animationTimingFunction: 'ease-in-out',\n backgroundColor: color,\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n })\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isFocused = props.isFocused,\n isRtl = props.isRtl,\n colors = props.theme.colors;\n var color = isFocused ? colors.neutral80 : colors.neutral20;\n\n if (!keyframesInjected) {\n // eslint-disable-next-line no-unused-expressions\n injectGlobal(\"@keyframes \", keyframesName, \"{0%,80%,100%{opacity:0;}40%{opacity:1;}};\");\n keyframesInjected = true;\n }\n\n return React.createElement(\"div\", _extends({}, innerProps, {\n className: cx(\n /*#__PURE__*/\n css(getStyles('loadingIndicator', props)), {\n 'indicator': true,\n 'loading-indicator': true\n }, className)\n }), React.createElement(LoadingDot, {\n color: color,\n delay: 0,\n offset: isRtl\n }), React.createElement(LoadingDot, {\n color: color,\n delay: 160,\n offset: true\n }), React.createElement(LoadingDot, {\n color: color,\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css$1 = function css$$1(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return React.createElement(\"div\", _extends({\n ref: innerRef,\n className: cx(\n /*#__PURE__*/\n css(getStyles('control', props)), {\n 'control': true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return React.createElement(\"div\", {\n className: cx(\n /*#__PURE__*/\n css(getStyles('group', props)), {\n 'group': true\n }, className)\n }, React.createElement(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), React.createElement(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme,\n selectProps = props.selectProps,\n cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('groupHeading', _objectSpread({\n theme: theme\n }, cleanProps))), {\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme,\n selectProps = _ref2.selectProps,\n props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return React.createElement(\"div\", {\n className:\n /*#__PURE__*/\n\n /*#__PURE__*/\n css(getStyles('input', _objectSpread({\n theme: theme\n }, props)))\n }, React.createElement(AutosizeInput, _extends({\n className: cx(null, {\n 'input': true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return React.createElement(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nvar MultiValueRemove =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MultiValueRemove, _Component);\n\n function MultiValueRemove() {\n _classCallCheck(this, MultiValueRemove);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValueRemove).apply(this, arguments));\n }\n\n _createClass(MultiValueRemove, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n innerProps = _this$props.innerProps;\n return React.createElement(\"div\", innerProps, children || React.createElement(CrossIcon, {\n size: 14\n }));\n }\n }]);\n\n return MultiValueRemove;\n}(Component);\n\nvar MultiValue =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MultiValue, _Component2);\n\n function MultiValue() {\n _classCallCheck(this, MultiValue);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValue).apply(this, arguments));\n }\n\n _createClass(MultiValue, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n components = _this$props2.components,\n cx = _this$props2.cx,\n data = _this$props2.data,\n getStyles = _this$props2.getStyles,\n innerProps = _this$props2.innerProps,\n isDisabled = _this$props2.isDisabled,\n removeProps = _this$props2.removeProps,\n selectProps = _this$props2.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n\n var containerInnerProps = _objectSpread({\n className: cx(\n /*#__PURE__*/\n css(getStyles('multiValue', this.props)), {\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className)\n }, innerProps);\n\n var labelInnerProps = {\n className: cx(\n /*#__PURE__*/\n css(getStyles('multiValueLabel', this.props)), {\n 'multi-value__label': true\n }, className)\n };\n\n var removeInnerProps = _objectSpread({\n className: cx(\n /*#__PURE__*/\n css(getStyles('multiValueRemove', this.props)), {\n 'multi-value__remove': true\n }, className)\n }, removeProps);\n\n return React.createElement(Container, {\n data: data,\n innerProps: containerInnerProps,\n selectProps: selectProps\n }, React.createElement(Label, {\n data: data,\n innerProps: labelInnerProps,\n selectProps: selectProps\n }, children), React.createElement(Remove, {\n data: data,\n innerProps: removeInnerProps,\n selectProps: selectProps\n }));\n }\n }]);\n\n return MultiValue;\n}(Component);\n\n_defineProperty(MultiValue, \"defaultProps\", {\n cropWithEllipsis: true\n});\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: isSelected ? colors.primary : colors.primary50\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({\n ref: innerRef,\n className: cx(\n /*#__PURE__*/\n css(getStyles('option', props)), {\n 'option': true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className)\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('placeholder', props)), {\n 'placeholder': true\n }, className)\n }, innerProps), children);\n};\n\nvar css$2 = function css$$1(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return React.createElement(\"div\", _extends({\n className: cx(\n /*#__PURE__*/\n css(getStyles('singleValue', props)), {\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread({}, components, props.components);\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css$1,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$2,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\nvar baseUnit = 4;\n/* Used to calculate consistent margin/padding on elements */\n\nvar controlHeight = 38;\n/* The minimum height of the control */\n\nvar menuGutter = baseUnit * 2;\n/* The amount of space between the control and menu */\n\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Select, _Component);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Select).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n isComposing: false,\n menuOptions: {\n render: [],\n focusable: []\n },\n selectValue: []\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blockOptionHover\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearFocusValueOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"commonProps\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"components\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hasGroups\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchX\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchY\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputIsHiddenAfterUpdate\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"instancePrefix\", '');\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"openAfterFocus\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollToFocusedOptionOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"userIsDragging\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"controlRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getControlRef\", function (ref) {\n _this.controlRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focusedOptionRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getFocusedOptionRef\", function (ref) {\n _this.focusedOptionRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"menuListRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMenuListRef\", function (ref) {\n _this.menuListRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getInputRef\", function (ref) {\n _this.inputRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cacheComponents\", function (components$$1) {\n _this.components = defaultComponents({\n components: components$$1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focus\", _this.focusInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blur\", _this.blurInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _objectSpread({}, actionMeta, {\n name: name\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setValue\", function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.clearFocusValueOnUpdate = true;\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"selectOption\", function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"removeValue\", function (removedValue) {\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n _this.onChange(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearValue\", function () {\n var isMulti = _this.props.isMulti;\n\n _this.onChange(isMulti ? [] : null, {\n action: 'clear'\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popValue\", function () {\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(selectValue.slice(0, selectValue.length - 1), {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionLabel\", function (data) {\n return _this.props.getOptionLabel(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionValue\", function (data) {\n return _this.props.getOptionValue(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyles\", function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getElementId\", function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getActiveDescendentId\", function () {\n var menuIsOpen = _this.props.menuIsOpen;\n var _this$state = _this.state,\n menuOptions = _this$state.menuOptions,\n focusedOption = _this$state.focusedOption;\n if (!focusedOption || !menuIsOpen) return undefined;\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n return option && option.key;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveSelection\", function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveContext\", function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _objectSpread({}, context, {\n label: _this.props['aria-label']\n }))\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseDown\", function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseMove\", function (event) {\n _this.blockOptionHover = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlMouseDown\", function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n //$FlowFixMe\n if (event.target.tagName !== 'INPUT') {\n _this.onMenuClose();\n }\n } //$FlowFixMe\n\n\n if (event.target.tagName !== 'INPUT') {\n event.preventDefault();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n setTimeout(function () {\n return _this.focusInput();\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onScroll\", function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionStart\", function () {\n _this.setState({\n isComposing: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionEnd\", function () {\n _this.setState({\n isComposing: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchEnd\", function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var inputValue = event.currentTarget.value;\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n _this.onMenuOpen();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputFocus\", function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputBlur\", function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onOptionHover\", function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"shouldHideSelectedOptions\", function () {\n var _this$props6 = _this.props,\n hideSelectedOptions = _this$props6.hideSelectedOptions,\n isMulti = _this$props6.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n var _this$props7 = _this.props,\n isMulti = _this$props7.isMulti,\n backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n escapeClearsValue = _this$props7.escapeClearsValue,\n inputValue = _this$props7.inputValue,\n isClearable = _this$props7.isClearable,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen,\n onKeyDown = _this$props7.onKeyDown,\n tabSelectsValue = _this$props7.tabSelectsValue,\n openMenuOnFocus = _this$props7.openMenuOnFocus;\n var _this$state2 = _this.state,\n isComposing = _this$state2.isComposing,\n focusedOption = _this$state2.focusedOption,\n focusedValue = _this$state2.focusedValue,\n selectValue = _this$state2.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n });\n\n var value = _props.value;\n _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.cacheComponents(_props.components);\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var _selectValue = cleanValue(value);\n\n var _menuOptions = _this.buildMenuOptions(_props, _selectValue);\n\n _this.state.menuOptions = _menuOptions;\n _this.state.selectValue = _selectValue;\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this$props8 = this.props,\n options = _this$props8.options,\n value = _this$props8.value,\n inputValue = _this$props8.inputValue; // re-cache custom components\n\n this.cacheComponents(nextProps.components); // rebuild the menu options\n\n if (nextProps.value !== value || nextProps.options !== options || nextProps.inputValue !== inputValue) {\n var selectValue = cleanValue(nextProps.value);\n var menuOptions = this.buildMenuOptions(nextProps, selectValue);\n var focusedValue = this.getNextFocusedValue(selectValue);\n var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n this.setState({\n menuOptions: menuOptions,\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue\n });\n } // some updates should toggle the state of the input visibility\n\n\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n isDisabled = _this$props9.isDisabled,\n menuIsOpen = _this$props9.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n }\n\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n }, {\n key: \"onMenuOpen\",\n // ==============================\n // Consumer Handlers\n // ==============================\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n var _this$props10 = this.props,\n isSearchable = _this$props10.isSearchable,\n isMulti = _this$props10.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this$state3 = this.state,\n menuOptions = _this$state3.menuOptions,\n selectValue = _this$state3.selectValue,\n isFocused = _this$state3.isFocused;\n var isMulti = this.props.isMulti;\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.inputIsHiddenAfterUpdate = false;\n this.onMenuOpen();\n this.setState({\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n });\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$props11 = this.props,\n isMulti = _this$props11.isMulti,\n isSearchable = _this$props11.isSearchable;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus === -1 ? false : true,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var _this$state5 = this.state,\n focusedOption = _this$state5.focusedOption,\n menuOptions = _this$state5.menuOptions;\n var options = menuOptions.focusable;\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: isOptionDisabled(options[nextFocus])\n }\n });\n }\n }, {\n key: \"getTheme\",\n // ==============================\n // Getters\n // ==============================\n value: function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread({}, defaultTheme, this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n getStyles = this.getStyles,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var classNamePrefix = props.classNamePrefix,\n isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var selectValue = this.state.selectValue;\n var hasValue = this.hasValue();\n\n var getValue = function getValue() {\n return selectValue;\n };\n\n var cx = classNames.bind(null, classNamePrefix);\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"getNextFocusedValue\",\n value: function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n\n var _this$state6 = this.state,\n focusedValue = _this$state6.focusedValue,\n lastSelectValue = _this$state6.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n }\n }, {\n key: \"getNextFocusedOption\",\n value: function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.state.menuOptions.render.length;\n }\n }, {\n key: \"countOptions\",\n value: function countOptions() {\n return this.state.menuOptions.focusable.length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled$$1(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n var _this2 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this2.getOptionValue(i) === candidate;\n });\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel$$1(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n // ==============================\n // Composition Handlers\n // ==============================\n value: function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n // ==============================\n // Touch Handlers\n // ==============================\n value: function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"buildMenuOptions\",\n // ==============================\n // Menu Options\n // ==============================\n value: function buildMenuOptions(props, selectValue) {\n var _this3 = this;\n\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n options = props.options;\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this3.isOptionDisabled(option, selectValue);\n\n var isSelected = _this3.isOptionSelected(option, selectValue);\n\n var label = _this3.getOptionLabel(option);\n\n var value = _this3.getOptionValue(option);\n\n if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({\n label: label,\n value: value,\n data: option\n }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this3.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this3.selectOption(option);\n };\n var optionId = \"\".concat(_this3.getElementId('option'), \"-\").concat(id);\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n },\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: 'option',\n value: value\n };\n };\n\n return options.reduce(function (acc, item, itemIndex) {\n if (item.options) {\n // TODO needs a tidier implementation\n if (!_this3.hasGroups) _this3.hasGroups = true;\n var items = item.options;\n var children = items.map(function (child, i) {\n var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n if (option) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n\n if (children.length) {\n var groupId = \"\".concat(_this3.getElementId('group'), \"-\").concat(itemIndex);\n acc.render.push({\n type: 'group',\n key: groupId,\n data: item,\n options: children\n });\n }\n } else {\n var option = toOption(item, \"\".concat(itemIndex));\n\n if (option) {\n acc.render.push(option);\n acc.focusable.push(item);\n }\n }\n\n return acc;\n }, {\n render: [],\n focusable: []\n });\n } // ==============================\n // Renderers\n // ==============================\n\n }, {\n key: \"constructAriaLiveMessage\",\n value: function constructAriaLiveMessage() {\n var _this$state7 = this.state,\n ariaLiveContext = _this$state7.ariaLiveContext,\n selectValue = _this$state7.selectValue,\n focusedValue = _this$state7.focusedValue,\n focusedOption = _this$state7.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n }\n }, {\n key: \"renderInput\",\n value: function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input');\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return React.createElement(DummyInput, {\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: \"\"\n });\n } // aria attributes makes the JSX \"noisy\", separated for clarity\n\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return React.createElement(Input, _extends({\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n theme: theme,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _this$components = this.components,\n MultiValue = _this$components.MultiValue,\n MultiValueContainer = _this$components.MultiValueContainer,\n MultiValueLabel = _this$components.MultiValueLabel,\n MultiValueRemove = _this$components.MultiValueRemove,\n SingleValue = _this$components.SingleValue,\n Placeholder = _this$components.Placeholder;\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state8 = this.state,\n selectValue = _this$state8.selectValue,\n focusedValue = _this$state8.focusedValue,\n isFocused = _this$state8.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt) {\n var isOptionFocused = opt === focusedValue;\n return React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n removeProps: {\n onClick: function onClick() {\n return _this4.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this4.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this4.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$components2 = this.components,\n DropdownIndicator = _this$components2.DropdownIndicator,\n IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this5 = this;\n\n var _this$components3 = this.components,\n Group = _this$components3.Group,\n GroupHeading = _this$components3.GroupHeading,\n Menu$$1 = _this$components3.Menu,\n MenuList$$1 = _this$components3.MenuList,\n MenuPortal$$1 = _this$components3.MenuPortal,\n LoadingMessage$$1 = _this$components3.LoadingMessage,\n NoOptionsMessage$$1 = _this$components3.NoOptionsMessage,\n Option = _this$components3.Option;\n var commonProps = this.commonProps;\n var _this$state9 = this.state,\n focusedOption = _this$state9.focusedOption,\n menuOptions = _this$state9.menuOptions;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props) {\n // for performance, the menu options in state aren't changed when the\n // focused option changes so we calculate additional props based on that\n var isFocused = focusedOption === props.data;\n props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n return React.createElement(Option, _extends({}, commonProps, props, {\n isFocused: isFocused\n }), _this5.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutProperties(item, [\"type\"]);\n\n var headingId = \"\".concat(item.key, \"-heading\");\n return React.createElement(Group, _extends({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option);\n }));\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = React.createElement(LoadingMessage$$1, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = React.createElement(NoOptionsMessage$$1, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n var ref = _ref6.ref,\n _ref6$placerProps = _ref6.placerProps,\n placement = _ref6$placerProps.placement,\n maxHeight = _ref6$placerProps.maxHeight;\n return React.createElement(Menu$$1, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), React.createElement(ScrollCaptorSwitch, {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n }, React.createElement(ScrollBlock, {\n isEnabled: menuShouldBlockScroll\n }, React.createElement(MenuList$$1, _extends({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI))));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal$$1, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this6 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this6.getOptionValue(opt);\n }).join(delimiter);\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this6.getOptionValue(opt)\n });\n }) : React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return React.createElement(A11yText, {\n \"aria-live\": \"assertive\"\n }, React.createElement(\"p\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$components4 = this.components,\n Control = _this$components4.Control,\n IndicatorsContainer = _this$components4.IndicatorsContainer,\n SelectContainer = _this$components4.SelectContainer,\n ValueContainer = _this$components4.ValueContainer;\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }]);\n\n return Select;\n}(Component);\n\n_defineProperty(Select, \"defaultProps\", defaultProps);\n\nvar defaultProps$1 = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(StateManager, _Component);\n\n function StateManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, StateManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputChange\", function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuOpen\", function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuClose\", function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n });\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n defaultInputValue = _this$props2.defaultInputValue,\n defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n defaultValue = _this$props2.defaultValue,\n props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$1), _temp;\n};\n\nvar defaultProps$2 = {\n cacheOptions: false,\n defaultOptions: false,\n filterOption: null\n};\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Async, _Component);\n\n function Async(props) {\n var _this;\n\n _classCallCheck(this, Async);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Async).call(this));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastRequest\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"optionsCache\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n cacheOptions = _this$props.cacheOptions,\n onInputChange = _this$props.onInputChange; // TODO\n\n var inputValue = handleInputChange(newValue, actionMeta, onInputChange);\n\n if (!inputValue) {\n delete _this.lastRequest;\n\n _this.setState({\n inputValue: '',\n loadedInputValue: '',\n loadedOptions: [],\n isLoading: false,\n passEmptyOptions: false\n });\n\n return;\n }\n\n if (cacheOptions && _this.optionsCache[inputValue]) {\n _this.setState({\n inputValue: inputValue,\n loadedInputValue: inputValue,\n loadedOptions: _this.optionsCache[inputValue],\n isLoading: false,\n passEmptyOptions: false\n });\n } else {\n var request = _this.lastRequest = {};\n\n _this.setState({\n inputValue: inputValue,\n isLoading: true,\n passEmptyOptions: !_this.state.loadedInputValue\n }, function () {\n _this.loadOptions(inputValue, function (options) {\n if (!_this.mounted) return;\n\n if (options) {\n _this.optionsCache[inputValue] = options;\n }\n\n if (request !== _this.lastRequest) return;\n delete _this.lastRequest;\n\n _this.setState({\n isLoading: false,\n loadedInputValue: inputValue,\n loadedOptions: options || [],\n passEmptyOptions: false\n });\n });\n });\n }\n\n return inputValue;\n });\n\n _this.state = {\n defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',\n isLoading: props.defaultOptions === true ? true : false,\n loadedOptions: [],\n passEmptyOptions: false\n };\n return _this;\n }\n\n _createClass(Async, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.mounted = true;\n var defaultOptions = this.props.defaultOptions;\n var inputValue = this.state.inputValue;\n\n if (defaultOptions === true) {\n this.loadOptions(inputValue, function (options) {\n if (!_this2.mounted) return;\n var isLoading = !!_this2.lastRequest;\n\n _this2.setState({\n defaultOptions: options || [],\n isLoading: isLoading\n });\n });\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n // if the cacheOptions prop changes, clear the cache\n if (nextProps.cacheOptions !== this.props.cacheOptions) {\n this.optionsCache = {};\n }\n\n if (nextProps.defaultOptions !== this.props.defaultOptions) {\n this.setState({\n defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"loadOptions\",\n value: function loadOptions(inputValue, callback) {\n var loadOptions = this.props.loadOptions;\n if (!loadOptions) return callback();\n var loader = loadOptions(inputValue, callback);\n\n if (loader && typeof loader.then === 'function') {\n loader.then(callback, function () {\n return callback();\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n loadOptions = _this$props2.loadOptions,\n props = _objectWithoutProperties(_this$props2, [\"loadOptions\"]);\n\n var _this$state = this.state,\n defaultOptions = _this$state.defaultOptions,\n inputValue = _this$state.inputValue,\n isLoading = _this$state.isLoading,\n loadedInputValue = _this$state.loadedInputValue,\n loadedOptions = _this$state.loadedOptions,\n passEmptyOptions = _this$state.passEmptyOptions;\n var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this3.select = _ref;\n },\n options: options,\n isLoading: isLoading,\n onInputChange: this.handleInputChange\n }));\n }\n }]);\n\n return Async;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$2), _temp;\n};\nvar SelectState = manageState(Select);\nvar Async = makeAsyncSelect(SelectState);\n\nvar compareOption = function compareOption() {\n var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var option = arguments.length > 1 ? arguments[1] : undefined;\n var candidate = String(inputValue).toLowerCase();\n var optionValue = String(option.value).toLowerCase();\n var optionLabel = String(option.label).toLowerCase();\n return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n formatCreateLabel: function formatCreateLabel(inputValue) {\n return \"Create \\\"\".concat(inputValue, \"\\\"\");\n },\n isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n return !(!inputValue || selectValue.some(function (option) {\n return compareOption(inputValue, option);\n }) || selectOptions.some(function (option) {\n return compareOption(inputValue, option);\n }));\n },\n getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n return {\n label: optionLabel,\n value: inputValue,\n __isNew__: true\n };\n }\n};\nvar defaultProps$3 = _objectSpread({\n allowCreateWhileLoading: false,\n createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Creatable, _Component);\n\n function Creatable(props) {\n var _this;\n\n _classCallCheck(this, Creatable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Creatable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n getNewOptionData = _this$props.getNewOptionData,\n inputValue = _this$props.inputValue,\n isMulti = _this$props.isMulti,\n onChange = _this$props.onChange,\n onCreateOption = _this$props.onCreateOption,\n value = _this$props.value;\n\n if (actionMeta.action !== 'select-option') {\n return onChange(newValue, actionMeta);\n }\n\n var newOption = _this.state.newOption;\n var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n if (valueArray[valueArray.length - 1] === newOption) {\n if (onCreateOption) onCreateOption(inputValue);else {\n var newOptionData = getNewOptionData(inputValue, inputValue);\n var newActionMeta = {\n action: 'create-option'\n };\n\n if (isMulti) {\n onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n } else {\n onChange(newOptionData, newActionMeta);\n }\n }\n return;\n }\n\n onChange(newValue, actionMeta);\n });\n\n var options = props.options || [];\n _this.state = {\n newOption: undefined,\n options: options\n };\n return _this;\n }\n\n _createClass(Creatable, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n createOptionPosition = nextProps.createOptionPosition,\n formatCreateLabel = nextProps.formatCreateLabel,\n getNewOptionData = nextProps.getNewOptionData,\n inputValue = nextProps.inputValue,\n isLoading = nextProps.isLoading,\n isValidNewOption = nextProps.isValidNewOption,\n value = nextProps.value;\n var options = nextProps.options || [];\n var newOption = this.state.newOption;\n\n if (isValidNewOption(inputValue, cleanValue(value), options)) {\n newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n } else {\n newOption = undefined;\n }\n\n this.setState({\n newOption: newOption,\n options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n });\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var props = _extends({}, this.props);\n\n var options = this.state.options;\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n options: options,\n onChange: this.onChange\n }));\n }\n }]);\n\n return Creatable;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$3), _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nvar SelectCreatable$1 = makeCreatableSelect(Select);\nvar SelectCreatableState = manageState(SelectCreatable$1);\nvar AsyncCreatable = makeAsyncSelect(SelectCreatableState);\n\n// strip transition props off before spreading onto select component\n// note we need to be explicit about innerRef for flow\nvar AnimatedInput = function AnimatedInput(WrappedComponent) {\n return function (_ref) {\n var inProp = _ref.in,\n onExited = _ref.onExited,\n appear = _ref.appear,\n enter = _ref.enter,\n exit = _ref.exit,\n props = _objectWithoutProperties(_ref, [\"in\", \"onExited\", \"appear\", \"enter\", \"exit\"]);\n\n return React.createElement(WrappedComponent, props);\n };\n};\n\nvar Fade = function Fade(_ref) {\n var Tag = _ref.component,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 1 : _ref$duration,\n inProp = _ref.in,\n onExited = _ref.onExited,\n props = _objectWithoutProperties(_ref, [\"component\", \"duration\", \"in\", \"onExited\"]);\n\n var transition = {\n entering: {\n opacity: 0\n },\n entered: {\n opacity: 1,\n transition: \"opacity \".concat(duration, \"ms\")\n },\n exiting: {\n opacity: 0\n },\n exited: {\n opacity: 0\n }\n };\n return React.createElement(Transition, {\n mountOnEnter: true,\n unmountOnExit: true,\n in: inProp,\n timeout: duration\n }, function (state) {\n var innerProps = {\n style: _objectSpread({}, transition[state])\n };\n return React.createElement(Tag, _extends({\n innerProps: innerProps\n }, props));\n });\n}; // ==============================\n// Collapse Transition\n// ==============================\n\nvar collapseDuration = 260;\n// wrap each MultiValue with a collapse transition; decreases width until\n// finally removing from DOM\nvar Collapse =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Collapse, _Component);\n\n function Collapse() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Collapse);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Collapse)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"duration\", collapseDuration);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"rafID\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n width: 'auto'\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"transition\", {\n exiting: {\n width: 0,\n transition: \"width \".concat(_this.duration, \"ms ease-out\")\n },\n exited: {\n width: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getWidth\", function (ref) {\n if (ref && isNaN(_this.state.width)) {\n /*\n Here we're invoking requestAnimationFrame with a callback invoking our\n call to getBoundingClientRect and setState in order to resolve an edge case\n around portalling. Certain portalling solutions briefly remove children from the DOM\n before appending them to the target node. This is to avoid us trying to call getBoundingClientrect\n while the Select component is in this state.\n */\n // cannot use `offsetWidth` because it is rounded\n _this.rafID = window.requestAnimationFrame(function () {\n var _ref$getBoundingClien = ref.getBoundingClientRect(),\n width = _ref$getBoundingClien.width;\n\n _this.setState({\n width: width\n });\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyle\", function (width) {\n return {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n width: width\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTransition\", function (state) {\n return _this.transition[state];\n });\n\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.rafID) {\n window.cancelAnimationFrame(this.rafID);\n }\n } // width must be calculated; cannot transition from `undefined` to `number`\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in;\n var width = this.state.width;\n return React.createElement(Transition, {\n enter: false,\n mountOnEnter: true,\n unmountOnExit: true,\n in: inProp,\n timeout: this.duration\n }, function (state) {\n var style = _objectSpread({}, _this2.getStyle(width), _this2.getTransition(state));\n\n return React.createElement(\"div\", {\n ref: _this2.getWidth,\n style: style\n }, children);\n });\n }\n }]);\n\n return Collapse;\n}(Component);\n\nvar AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) {\n return function (_ref) {\n var inProp = _ref.in,\n onExited = _ref.onExited,\n props = _objectWithoutProperties(_ref, [\"in\", \"onExited\"]);\n\n return React.createElement(Collapse, {\n in: inProp,\n onExited: onExited\n }, React.createElement(WrappedComponent, _extends({\n cropWithEllipsis: inProp\n }, props)));\n };\n};\n\nvar AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) {\n return function (props) {\n return React.createElement(Fade, _extends({\n component: WrappedComponent,\n duration: props.isMulti ? collapseDuration : 1\n }, props));\n };\n};\n\nvar AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) {\n return function (props) {\n return React.createElement(Fade, _extends({\n component: WrappedComponent\n }, props));\n };\n};\n\n// make ValueContainer a transition group\nvar AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) {\n return function (props) {\n return React.createElement(TransitionGroup, _extends({\n component: WrappedComponent\n }, props));\n };\n};\n\nvar makeAnimated = function makeAnimated() {\n var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var components$$1 = defaultComponents({\n components: externalComponents\n });\n\n var Input = components$$1.Input,\n MultiValue = components$$1.MultiValue,\n Placeholder = components$$1.Placeholder,\n SingleValue = components$$1.SingleValue,\n ValueContainer = components$$1.ValueContainer,\n rest = _objectWithoutProperties(components$$1, [\"Input\", \"MultiValue\", \"Placeholder\", \"SingleValue\", \"ValueContainer\"]);\n\n return _objectSpread({\n Input: AnimatedInput(Input),\n MultiValue: AnimatedMultiValue(MultiValue),\n Placeholder: AnimatedPlaceholder(Placeholder),\n SingleValue: AnimatedSingleValue(SingleValue),\n ValueContainer: AnimatedValueContainer(ValueContainer)\n }, rest);\n};\n\nvar AnimatedComponents = makeAnimated();\nvar Input$1 = AnimatedComponents.Input;\nvar MultiValue$1 = AnimatedComponents.MultiValue;\nvar Placeholder$1 = AnimatedComponents.Placeholder;\nvar SingleValue$1 = AnimatedComponents.SingleValue;\nvar ValueContainer$1 = AnimatedComponents.ValueContainer;\nvar index = memoizeOne(makeAnimated, exportedEqual);\n\nvar index$1 = manageState(Select);\n\nexport default index$1;\nexport { Select as SelectBase, Async, makeAsyncSelect, AsyncCreatable, Creatable, makeCreatableSelect, createFilter, index as makeAnimated, components, mergeStyles, defaultTheme };\n","import React from 'react'\nimport { components } from 'react-select'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Checkbox } from '../../inputs/Checkbox'\n\nconst MultiInputOption = ({ children, isSelected, ...props }) => (\n\t<components.Option {...props}>\n\t\t<CheckboxEventLess>\n\t\t\t<Checkbox label={children} checked={isSelected} />\n\t\t</CheckboxEventLess>\n\t</components.Option>\n)\n\nconst CheckboxEventLess = styled.div`\n\tpointer-events: none;\n`\n\nMultiInputOption.defaultProps = {\n\tclassNamePrefix: 'multi-input-option',\n\tchildren: null,\n\tisSelected: false\n}\n\nMultiInputOption.displayName = 'MultiInputOption'\n\nMultiInputOption.propTypes = {\n\tisSelected: PropTypes.bool,\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\tclassNamePrefix: PropTypes.string\n}\n\nexport { CheckboxEventLess }\nexport default MultiInputOption\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { components } from 'react-select'\n\nconst MultiInputValueContainer = ({ children, getValue, selectProps, ...props }) => {\n\tconst valueLength = getValue().length\n\tconst { inputValue, formatMessage } = selectProps\n\n\treturn (\n\t\t<components.ValueContainer {...props}>\n\t\t\t{!inputValue && formatMessage(valueLength)}\n\t\t\t{React.Children.map(children, child => {\n\t\t\t\treturn child && child.type === components.Input ? child : null\n\t\t\t})}\n\t\t</components.ValueContainer>\n\t)\n}\n\nMultiInputValueContainer.defaultProps = {\n\tgetValue: undefined,\n\tselectProps: {},\n\tchildren: null\n}\n\nMultiInputValueContainer.propTypes = {\n\tgetValue: PropTypes.func,\n\tselectProps: PropTypes.shape({\n\t\tinputValue: PropTypes.string,\n\t\tformatMessage: PropTypes.func\n\t}),\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n}\n\nexport default MultiInputValueContainer\n","import React from 'react'\nimport ReactSelect from 'react-select'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nimport MultiInputOption from './MultiInputOption'\nimport MultiInputValueContainer from './MultiInputValueContainer'\n\nconst SelectStyled = styled(ReactSelect)`\n\t& .select__placeholder {\n\t\tcolor: ${({ theme }) => theme.select.placeholderColor};\n\t}\n\t& .select__control {\n\t\tmin-height: 34px;\n\t\tborder-radius: ${({ theme }) => theme.select.borderRadius};\n\t}\n\t& .select__menu {\n\t\tz-index: 3;\n\t\tpadding: ${({ theme }) => theme.select.menuPadding};\n\t\tborder-radius: ${({ theme }) => theme.select.borderRadius};\n\t}\n\t& .select__option {\n\t\tmargin-top: 2px;\n\t\tmargin-bottom: 2px;\n\t\tborder-radius: ${({ theme }) => theme.select.borderRadius} !important;\n\t\tcursor: pointer;\n\t}\n\t& .select__option--is-focused {\n\t\tbackground-color: ${({ theme }) => theme.select.focusedBackgroundColor} !important;\n\t}\n\t& .select__option--is-selected {\n\t\tbackground-color: ${({ theme }) => theme.select.selectedBackgroundColor} !important;\n\t}\n\t& .select__value-container {\n\t\tpadding: 0 8px;\n\t}\n\t& .select__indicator {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t}\n\t& .select__indicator-separator {\n\t\tdisplay: none;\n\t}\n`\n\nconst Select = ({ isMulti, ...props }) => {\n\tif (isMulti) {\n\t\tprops = {\n\t\t\t...props,\n\t\t\tisMulti,\n\t\t\thideSelectedOptions: false,\n\t\t\tcloseMenuOnSelect: false,\n\t\t\tcomponents: {\n\t\t\t\tOption: MultiInputOption,\n\t\t\t\tValueContainer: MultiInputValueContainer\n\t\t\t}\n\t\t}\n\t}\n\n\treturn <SelectStyled {...props} />\n}\n\nSelect.defaultProps = {\n\tisMulti: false,\n\tclassNamePrefix: 'select',\n\tformatMessage: elem => elem\n}\n\nSelect.displayName = 'Select'\n\nSelect.propTypes = {\n\t/** If users are allowed to select more than one option */\n\tisMulti: PropTypes.bool,\n\t/** String to be pre-appended to internal classNames */\n\tclassNamePrefix: PropTypes.string,\n\t/** Function to format multi select label container */\n\tformatMessage: PropTypes.func\n}\n\nexport default Select\n","import React, { Fragment, useState } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Spring } from 'react-spring'\n\nconst Collapse = ({ trigger, children }) => {\n\tconst [open, setOpen] = useState(false)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<Wrapper onClick={() => setOpen(!open)}>{trigger}</Wrapper>\n\t\t\t<Spring\n\t\t\t\tfrom={{ height: open ? 0 : 'auto', opacity: open ? 0 : 1 }}\n\t\t\t\tto={{ height: open ? 'auto' : 0, opacity: open ? 1 : 0 }}\n\t\t\t\tafter={{ display: open ? 'block' : 'none' }}\n\t\t\t>\n\t\t\t\t{props => (\n\t\t\t\t\t<div open={open} className='show' style={props}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Spring>\n\t\t</Fragment>\n\t)\n}\n\nconst Wrapper = styled.div`\n\tdisplay: inline-block;\n\tcursor: pointer;\n`\nWrapper.displayName = 'Wrapper'\n\nCollapse.displayName = 'Collapse'\n\nCollapse.defaultPropTypes = {\n\tchildren: null,\n\ttrigger: null\n}\n\nCollapse.propTypes = {\n\t/** Trigger element */\n\ttrigger: PropTypes.node.isRequired,\n\t/** hidden element */\n\tchildren: PropTypes.node.isRequired\n}\n\nexport default Collapse\n","import React, { Fragment } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nimport { Icon } from '../../icons'\nimport { HelpTooltip } from '../../tooltip'\nimport colors from '../../../themes/colors'\n\nconst Expandable = ({ title, icon, tooltip, children, open, disabled, onClick, headerComponent, ...props }) => {\n\tconst id = title.replace(/ /g, '-')\n\tconst color = disabled ? colors.gray : colors.yellow\n\tconst text = disabled ? '' : tooltip\n\tconst handleOnClick = e => (disabled ? e.stopPropagation() : onClick())\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<ExpandableHeader onClick={handleOnClick} open={open} disabled={disabled} {...props}>\n\t\t\t\t<Flex>\n\t\t\t\t\t<Title disabled={disabled}>{title}</Title>\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<HelpTooltip\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\ttext={text}\n\t\t\t\t\t\t\tplace='bottom'\n\t\t\t\t\t\t\tmultiline={true}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Flex>\n\t\t\t\t{headerComponent && (\n\t\t\t\t\t<HeaderComponentContainer onClick={e => e.stopPropagation()}>\n\t\t\t\t\t\t{headerComponent}\n\t\t\t\t\t</HeaderComponentContainer>\n\t\t\t\t)}\n\t\t\t\t<IconAnimated open={open} icon='select-down' color='#FFF' disabled={disabled} />\n\t\t\t</ExpandableHeader>\n\t\t\t<ExpandableContent open={open} disabled={disabled}>\n\t\t\t\t{children}\n\t\t\t</ExpandableContent>\n\t\t</Fragment>\n\t)\n}\n\nconst HeaderComponentContainer = styled.div`\n\tdisplay: inline-flex;\n\tmargin-right: 18px;\n\tmargin-left: auto;\n`\n\nHeaderComponentContainer.displayName = 'HeaderComponentContainer'\n\nconst ExpandableHeader = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 12px 20px;\n\n\tbackground: ${({ open, disabled, theme }) =>\n\t\tdisabled ? theme.colors.strokeGray : open ? theme.colors.deepBlue : theme.colors.activeBlue};\n\tborder-radius: ${({ open }) => (open ? '4px 4px 0 0' : '4px')};\n\tcolor: white;\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n`\nExpandableHeader.displayName = 'ExpandableHeader'\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n`\n\nconst IconAnimated = styled(Icon)`\n\tcolor: ${({ disabled, theme }) => (disabled ? theme.colors.gray : 'white')} !important;\n\ttransform: ${({ open }) => open && 'rotate(180deg)'};\n\ttransition: 0.33s;\n`\nIconAnimated.displayName = 'IconAnimated'\n\nconst Title = styled.div`\n\tmargin-right: 6px;\n\tcolor: ${({ disabled, theme }) => (disabled ? theme.colors.gray : 'white')};\n\tfont-size: 13px;\n\ttext-transform: uppercase;\n`\n\nconst ExpandableContent = styled.div`\n\tdisplay: ${({ open }) => (open ? 'block' : 'none')};\n\tpadding: 20px;\n\tborder: thin solid ${({ disabled, theme }) => (disabled ? theme.colors.strokeGray : theme.colors.deepBlue)};\n\tborder-radius: 0 0 4px 4px;\n`\nExpandableContent.displayName = 'ExpandableContent'\n\nExpandable.displayName = 'Expandable'\n\nExpandable.defaultProps = {\n\ticon: null,\n\ttooltip: null,\n\tdisabled: false,\n\theaderComponent: null\n}\n\nExpandable.propTypes = {\n\t/** Title */\n\ttitle: PropTypes.string.isRequired,\n\t/** Disabled flag */\n\tdisabled: PropTypes.bool,\n\t/** Warning icon name */\n\ticon: PropTypes.string,\n\t/** Anything that can be rendered */\n\tchildren: PropTypes.node.isRequired,\n\t/** Tooltip text message */\n\ttooltip: PropTypes.string,\n\t/** If it is open prop */\n\topen: PropTypes.bool.isRequired,\n\t/** Set onClick handler */\n\tonClick: PropTypes.func.isRequired,\n\t/** Displayed component to the arrow's left side */\n\theaderComponent: PropTypes.node\n}\n\nexport default Expandable\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Expandable from './Expandable'\n\nconst ExpandableSection = ({ title, icon, children, tooltip, disabled, ...props }) => {\n\tconst [open, setOpen] = useState(false)\n\n\treturn (\n\t\t<Expandable\n\t\t\ttitle={title}\n\t\t\ticon={icon}\n\t\t\ttooltip={tooltip}\n\t\t\tonClick={() => setOpen(!open)}\n\t\t\topen={open}\n\t\t\tdisabled={disabled}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Expandable>\n\t)\n}\n\nExpandableSection.displayName = 'ExpandableSection'\n\nExpandableSection.defaultProps = {\n\ticon: null,\n\ttooltip: null,\n\tdisabled: false,\n\theaderComponent: null\n}\n\nExpandableSection.propTypes = {\n\t/** Title */\n\ttitle: PropTypes.string.isRequired,\n\t/** Warning icon name */\n\ticon: PropTypes.string,\n\t/** Anything that can be rendered */\n\tchildren: PropTypes.node.isRequired,\n\t/** Tooltip text message */\n\ttooltip: PropTypes.string,\n\t/** Disabled flag */\n\tdisabled: PropTypes.bool,\n\t/** Displayed component to the arrow's left side */\n\theaderComponent: PropTypes.node\n}\n\nexport default ExpandableSection\n","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","var moment = require('moment');\n\nfunction isValidMoment(testMoment) {\n if (typeof moment.isMoment === 'function' && !moment.isMoment(testMoment)) {\n return false;\n }\n\n /* istanbul ignore else */\n if (typeof testMoment.isValid === 'function') {\n // moment 1.7.0+\n return testMoment.isValid();\n }\n\n /* istanbul ignore next */\n return !isNaN(testMoment);\n}\n\nmodule.exports = {\n isValidMoment : isValidMoment,\n};\n","var messages = {\n invalidPredicate: '`predicate` must be a function',\n invalidPropValidator: '`propValidator` must be a function',\n requiredCore: 'is marked as required',\n invalidTypeCore: 'Invalid input type',\n predicateFailureCore: 'Failed to succeed with predicate',\n anonymousMessage: '<<anonymous>>',\n baseInvalidMessage: 'Invalid ',\n};\n\nfunction constructPropValidatorVariations(propValidator) {\n if (typeof propValidator !== 'function') {\n throw new Error(messages.invalidPropValidator);\n }\n\n var requiredPropValidator = propValidator.bind(null, false, null);\n requiredPropValidator.isRequired = propValidator.bind(null, true, null);\n\n requiredPropValidator.withPredicate = function predicateApplication(predicate) {\n if (typeof predicate !== 'function') {\n throw new Error(messages.invalidPredicate);\n }\n var basePropValidator = propValidator.bind(null, false, predicate);\n basePropValidator.isRequired = propValidator.bind(null, true, predicate);\n return basePropValidator;\n };\n\n return requiredPropValidator;\n}\n\nfunction createInvalidRequiredErrorMessage(propName, componentName, value) {\n return new Error(\n 'The prop `' + propName + '` ' + messages.requiredCore +\n ' in `' + componentName + '`, but its value is `' + value + '`.'\n );\n}\n\nvar independentGuardianValue = -1;\n\nfunction preValidationRequireCheck(isRequired, componentName, propFullName, propValue) {\n var isPropValueUndefined = typeof propValue === 'undefined';\n var isPropValueNull = propValue === null;\n\n if (isRequired) {\n if (isPropValueUndefined) {\n return createInvalidRequiredErrorMessage(propFullName, componentName, 'undefined');\n } else if (isPropValueNull) {\n return createInvalidRequiredErrorMessage(propFullName, componentName, 'null');\n }\n }\n\n if (isPropValueUndefined || isPropValueNull) {\n return null;\n }\n\n return independentGuardianValue;\n}\n\nfunction createMomentChecker(type, typeValidator, validator, momentType) {\n\n function propValidator(\n isRequired, // Bound parameter to indicate with the propType is required\n predicate, // Bound parameter to allow user to add dynamic validation\n props,\n propName,\n componentName,\n location,\n propFullName\n ) {\n var propValue = props[ propName ];\n var propType = typeof propValue;\n\n componentName = componentName || messages.anonymousMessage;\n propFullName = propFullName || propName;\n\n var preValidationRequireCheckValue = preValidationRequireCheck(\n isRequired, componentName, propFullName, propValue\n );\n\n if (preValidationRequireCheckValue !== independentGuardianValue) {\n return preValidationRequireCheckValue;\n }\n\n if (typeValidator && !typeValidator(propValue)) {\n return new Error(\n messages.invalidTypeCore + ': `' + propName + '` of type `' + propType + '` ' +\n 'supplied to `' + componentName + '`, expected `' + type + '`.'\n );\n }\n\n if (!validator(propValue)) {\n return new Error(\n messages.baseInvalidMessage + location + ' `' + propName + '` of type `' + propType + '` ' +\n 'supplied to `' + componentName + '`, expected `' + momentType + '`.'\n );\n }\n\n if (predicate && !predicate(propValue)) {\n var predicateName = predicate.name || messages.anonymousMessage;\n return new Error(\n messages.baseInvalidMessage + location + ' `' + propName + '` of type `' + propType + '` ' +\n 'supplied to `' + componentName + '`. ' + messages.predicateFailureCore + ' `' +\n predicateName + '`.'\n );\n }\n\n return null;\n\n }\n\n return constructPropValidatorVariations(propValidator);\n\n}\n\nmodule.exports = {\n constructPropValidatorVariations: constructPropValidatorVariations,\n createMomentChecker: createMomentChecker,\n messages: messages,\n};\n","var moment = require('moment');\nvar momentValidationWrapper = require('./moment-validation-wrapper');\nvar core = require('./core');\n\nmodule.exports = {\n\n momentObj : core.createMomentChecker(\n 'object',\n function(obj) {\n return typeof obj === 'object';\n },\n function isValid(value) {\n return momentValidationWrapper.isValidMoment(value);\n },\n 'Moment'\n ),\n\n momentString : core.createMomentChecker(\n 'string',\n function(str) {\n return typeof str === 'string';\n },\n function isValid(value) {\n return momentValidationWrapper.isValidMoment(moment(value));\n },\n 'Moment'\n ),\n\n momentDurationObj : core.createMomentChecker(\n 'object',\n function(obj) {\n return typeof obj === 'object';\n },\n function isValid(value) {\n return moment.isDuration(value);\n },\n 'Duration'\n ),\n\n};\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { momentObj } from 'react-moment-proptypes'\n\nimport { DateRangePicker } from 'react-dates'\n\nimport { Icon } from '../../icons'\nimport 'react-dates/initialize'\nimport 'react-dates/lib/css/_datepicker.css'\nimport { DefaultTheme as theme } from '../../../themes'\n\nconst DatePicker = props => (\n\t<DatePickerStyledWrapper>\n\t\t<DateRangePicker\n\t\t\t{...props}\n\t\t\thideKeyboardShortcutsPanel={true}\n\t\t\tcustomInputIcon={<Icon icon='calendar' color={theme.colors.activeBlue} />}\n\t\t/>\n\t</DatePickerStyledWrapper>\n)\n\nconst DatePickerStyledWrapper = styled.div`\n\t.DayPicker__withBorder {\n\t\tbox-shadow: 0px 2px 4px rgba(0, 0, 0, 0.25);\n\t}\n\t.DateRangePickerInput {\n\t\tdisplay: flex;\n\t\tbackground-color: ${theme.colors.white};\n\t}\n\n\t.DateRangePickerInput__withBorder {\n\t\tborder: thin solid ${theme.colors.strokeGray};\n\t\tborder-radius: 4px;\n\t}\n\n\t.DateRangePickerInput_calendarIcon {\n\t\twidth: 34px;\n\t\theight: 34px;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toutline: none;\n\t}\n\n\t.DateInput {\n\t\twidth: 50%;\n\t}\n\n\t.DateInput:before {\n\t\tposition: absolute;\n\t\ttop: 20%;\n\t\tbottom: 20%;\n\t\tborder-right: thin solid ${theme.colors.strokeGray};\n\t\tcontent: '';\n\t}\n\n\t.DateInput_input {\n\t\tpadding: 7px 7px 5px 7px;\n\t\tfont-size: 15px;\n\t\tline-height: 20px;\n\t}\n\n\t.DateInput_input__focused {\n\t\tborder-bottom: 2px solid ${theme.colors.activeBlue};\n\t}\n\n\t.DateRangePickerInput_arrow {\n\t\tdisplay: none;\n\t\twidth: 0;\n\t\tmargin: 0 4px;\n\t}\n\n\t.DateRangePickerInput_arrow svg {\n\t\twidth: 22px;\n\t}\n\n\t/* NOTE: the order of these styles DO matter */\n\n\t.CalendarDay__default {\n\t\tborder: 1px solid transparent;\n\t\tbackground: ${theme.colors.white};\n\t\tcolor: ${theme.colors.black};\n\t}\n\n\t.CalendarDay__blocked_out_of_range:active,\n\t.CalendarDay__blocked_out_of_range:hover {\n\t\tborder: 1px solid transparent;\n\t\tbackground: ${theme.colors.lightGray};\n\t\tcolor: ${theme.colors.strokeGray};\n\t}\n\t/* Will edit everything selected including everything between a range of dates */\n\t.CalendarDay__selected_span {\n\t\tborder: 1px solid transparent; /* default styles include a border */\n\t\tbackground: ${theme.colors.strokeGray}; /* background */\n\t\tcolor: ${theme.colors.black}; /* text */\n\t}\n\n\t.CalendarDay__selected_span:hover {\n\t\tborder: 1px solid transparent;\n\t\tbackground: ${theme.colors.activeBlue}; /* background */\n\t\tcolor: ${theme.colors.white}; /* text */\n\t}\n\n\t/* Will edit selected date or the endpoints of a range of dates */\n\t.CalendarDay__selected {\n\t\tborder: 1px solid transparent; /* default styles include a border */\n\t\tbackground: ${theme.colors.deepBlue};\n\t\tcolor: ${theme.colors.white};\n\t}\n\n\t/* Will edit when hovered over. _span style also has this property */\n\t.CalendarDay__selected:hover {\n\t\tborder: 1px solid transparent;\n\t\tbackground: ${theme.colors.activeBlue};\n\t\tcolor: ${theme.colors.white};\n\t}\n\n\t/* Will edit when the second date (end date) in a range of dates */\n\t/* is not yet selected. Edits the dates between your mouse and said date */\n\t.CalendarDay__hovered_span {\n\t\tborder: 1px solid transparent;\n\t\tbackground: ${theme.colors.lightBlue}; /* background */\n\t}\n\n\t.CalendarDay__hovered_span:hover {\n\t\tborder: 1px solid transparent; /* default styles include a border */\n\t\tbackground: ${theme.colors.lightBlue}; /* background */\n\t\tcolor: ${theme.colors.activeBlue};\n\t}\n`\n\nDatePicker.displayName = 'DatePicker'\n\nDatePicker.defaultProps = {\n\tstartDatePlaceholderText: '',\n\tendDatePlaceholderText: '',\n\tstartDate: null,\n\tendDate: null,\n\tstartDateId: 'startDate',\n\tendDateId: 'endDate'\n}\n\nDatePicker.propTypes = {\n\t/** starDate placeholder text */\n\tstartDatePlaceholderText: PropTypes.string,\n\t/** endDate placeholder text */\n\tendDatePlaceholderText: PropTypes.string,\n\t/** momentPropTypes.momentObj or null */\n\tstartDate: momentObj,\n\t/** momentPropTypes.momentObj or null */\n\tendDate: momentObj,\n\t/** triggers when Dates changes */\n\tonDatesChange: PropTypes.func.isRequired,\n\t/** triggers when focus changes */\n\tonFocusChange: PropTypes.func.isRequired,\n\t/** START_DATE, END_DATE or null */\n\tfocusedInput: PropTypes.oneOf(['startDate', 'endDate']),\n\tstartDateId: PropTypes.string,\n\tendDateId: PropTypes.string\n}\n\nexport default DatePicker\n","import React from 'react'\nimport { CustomPicker } from 'react-color'\nimport { EditableInput, Hue, Saturation } from 'react-color/lib/components/common'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst CustomColorPicker = ({ hex, hsl, hsv, onChange }) => (\n\t<CustomColorPickerContainer>\n\t\t<SaturationContainer>\n\t\t\t<Saturation hsl={hsl} hsv={hsv} onChange={onChange} />\n\t\t</SaturationContainer>\n\t\t<HueContainer>\n\t\t\t<Hue hsl={hsl} onChange={onChange} />\n\t\t</HueContainer>\n\t\t<EditableInputContainer>\n\t\t\t<EditableInput label='hex' value={hex} onChange={onChange} />\n\t\t</EditableInputContainer>\n\t</CustomColorPickerContainer>\n)\n\nCustomColorPicker.displayName = 'ColorPicker'\nCustomColorPicker.defaultProps = {\n\thex: null,\n\thsv: null,\n\thsl: null,\n\tonChange: null\n}\nCustomColorPicker.propTypes = {\n\thex: PropTypes.string,\n\thsl: PropTypes.shape({\n\t\th: PropTypes.number,\n\t\ts: PropTypes.number,\n\t\tl: PropTypes.number,\n\t\ta: PropTypes.number\n\t}),\n\thsv: PropTypes.shape({\n\t\th: PropTypes.number,\n\t\ts: PropTypes.number,\n\t\tv: PropTypes.number,\n\t\ta: PropTypes.number\n\t}),\n\tonChange: PropTypes.func\n}\n\nconst CustomColorPickerContainer = styled.div`\n\twidth: 180px;\n`\nconst SaturationContainer = styled.div`\n\tposition: relative;\n\theight: 180px;\n\n\t& .saturation-white > div > div {\n\t\twidth: 8px !important;\n\t\theight: 8px !important;\n\t\ttransform: translate(-4px, -4px) !important;\n\t}\n`\n\nconst HueContainer = styled.div`\n\tposition: relative;\n\theight: 14px;\n\tmargin: 16px;\n\t& .hue-horizontal {\n\t\tborder-radius: 5% / 50%;\n\t\t//Hue picker indicator\n\t\t& > div > div {\n\t\t\tmargin-top: 0 !important;\n\t\t\twidth: 14px !important;\n\t\t\tborder-radius: 50% !important;\n\t\t\theight: 14px !important;\n\t\t\ttransform: translateX(-7px) !important;\n\t\t}\n\t}\n`\n\nconst EditableInputContainer = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tmargin: 16px;\n\n\t& > div {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-direction: row-reverse;\n\t}\n\t& span {\n\t\twidth: 25%;\n\t\tpadding-right: 8px;\n\t\tfont-weight: bold;\n\t}\n\t& input {\n\t\tborder: 1px solid ${({ theme }) => theme.colors.strokeGray} !important;\n\t\tborder-radius: 4px !important;\n\t\tpadding: 7px;\n\t\twidth: 75%;\n\t\t:focus {\n\t\t\tborder: 1px solid ${({ theme }) => theme.colors.deepBlue} !important;\n\t\t\toutline: 0;\n\t\t}\n\t}\n`\n\nexport { EditableInputContainer, CustomColorPickerContainer }\n\nexport default CustomPicker(CustomColorPicker)\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Icon } from '../../icons'\nimport CustomColorPicker from './CustomColorPicker'\n\nclass ColorPicker extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tconst { color } = props\n\t\tthis.state = { color }\n\n\t\tthis.setWrapperRef = this.setWrapperRef.bind(this)\n\t\tthis.handleClickOutside = this.handleClickOutside.bind(this)\n\t}\n\n\tcomponentDidMount() {\n\t\tdocument.addEventListener('mousedown', this.handleClickOutside)\n\t}\n\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener('mousedown', this.handleClickOutside)\n\t}\n\n\tsetWrapperRef(node) {\n\t\tthis.wrapperRef = node\n\t}\n\n\thandleOnClose = () => {\n\t\tconst { onClose, setColor } = this.props\n\t\tconst { color } = this.state\n\t\tsetColor(color)\n\t\tonClose()\n\t}\n\n\thandleClickOutside(event) {\n\t\tconst { isVisible, isDisplayerMode } = this.props\n\t\tif (this.wrapperRef && !this.wrapperRef.contains(event.target) && isVisible && isDisplayerMode) {\n\t\t\tthis.handleOnClose()\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { isVisible, isDisplayerMode, setColor, ...props } = this.props\n\t\tconst { color } = this.state\n\n\t\treturn (\n\t\t\t<ColorPickerStyled\n\t\t\t\tclassName={`${isVisible && 'isActive'}`}\n\t\t\t\tisVisible={isVisible}\n\t\t\t\tisDisplayerMode={isDisplayerMode}\n\t\t\t\tref={this.setWrapperRef}\n\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t<TopHeader>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tstyle={{ cursor: 'pointer' }}\n\t\t\t\t\t\ticon='error'\n\t\t\t\t\t\tcolor='white'\n\t\t\t\t\t\tsize='tiny'\n\t\t\t\t\t\tonClick={this.handleOnClose}\n\t\t\t\t\t/>\n\t\t\t\t</TopHeader>\n\t\t\t\t<CustomColorPicker\n\t\t\t\t\t{...props}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\tonChangeComplete={colorValue =>\n\t\t\t\t\t\tthis.setState({ color: colorValue }) || (!isDisplayerMode && setColor(colorValue))\n\t\t\t\t\t}\n\t\t\t\t\tdisableAlpha={true}\n\t\t\t\t\tclassName='color-picker'\n\t\t\t\t/>\n\t\t\t</ColorPickerStyled>\n\t\t)\n\t}\n}\n\nconst ColorPickerStyled = styled.div`\n\tposition: ${({ isDisplayerMode }) => (isDisplayerMode ? 'absolute' : 'inherit')};\n\tz-index: 5;\n\n\tdisplay: ${({ isVisible }) => (isVisible ? 'inline-block' : 'none')};\n\tbox-shadow: rgba(0, 0, 0, 0.3) 0px 0px 2px, rgba(0, 0, 0, 0.3) 0px 4px 8px;\n\tbackground-color: ${({ theme }) => theme.colors.white};\n`\nColorPickerStyled.displayName = 'ColorPickerStyled'\n\nconst TopHeader = styled.div`\n\tdisplay: flex;\n\twidth: 180px;\n\theight: 20px;\n\tflex-direction: row-reverse;\n\talign-items: center;\n\n\tpadding: 5px;\n\n\tbackground: #424242;\n`\n\nColorPicker.displayName = 'ColorPicker'\n\nColorPicker.defaultProps = {\n\tisVisible: true,\n\tisDisplayerMode: true\n}\n\nColorPicker.propTypes = {\n\tisVisible: PropTypes.bool,\n\tcolor: PropTypes.shape({\n\t\thex: PropTypes.string.isRequired\n\t}).isRequired,\n\tsetColor: PropTypes.func.isRequired,\n\tonClose: PropTypes.func.isRequired,\n\tisDisplayerMode: PropTypes.bool\n}\n\nexport default ColorPicker\n","import React, { Fragment, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport ColorPicker from './ColorPicker'\n\nconst ColorDisplayer = ({ escKeyCall, color, style, onChange, activeFocus, disabled, ...props }) => {\n\tconst [display, setDisplay] = useState(false)\n\tconst inputFocus = React.createRef()\n\n\tconst handleEscKey = event => {\n\t\tif (event.keyCode === 27) {\n\t\t\tescKeyCall()\n\t\t\tsetDisplay(false)\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', handleEscKey)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleEscKey)\n\t\t}\n\t})\n\n\tconst handleOpen = flag => {\n\t\tif (activeFocus && flag) {\n\t\t\tinputFocus.current.focus()\n\t\t}\n\t\tsetDisplay(flag)\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<ColorButtonContainer\n\t\t\t\tonClick={event => {\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tif (!disabled) handleOpen(!display)\n\t\t\t\t}}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<ColorBox color={color} disabled={disabled} />\n\t\t\t</ColorButtonContainer>\n\t\t\t{activeFocus && <InputHidden ref={inputFocus} />}\n\t\t\t<ColorPicker\n\t\t\t\t{...props}\n\t\t\t\tisVisible={display}\n\t\t\t\tcolor={color}\n\t\t\t\tsetColor={onChange}\n\t\t\t\tonClose={() => setDisplay(false)}\n\t\t\t/>\n\t\t</Fragment>\n\t)\n}\n\nconst InputHidden = styled.input`\n\tposition: fixed;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder: 0;\n\tbackground: transparent;\n\toutline: 0;\n`\n\nconst ColorBox = styled(({ color, disabled, ...props }) => <div {...props} />)`\n\twidth: 100%;\n\theight: 100%;\n\tbackground: ${({ theme, color, disabled }) => (disabled ? theme.colors.lightGray : color.hex)};\n\tborder-radius: 50%;\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'inherit')};\n`\n\nColorBox.displayName = 'ColorBox'\n\nconst ColorButtonContainer = styled.div`\n\tdisplay: inline-block;\n\twidth: 22px;\n\theight: 22px;\n\tbackground: transparent;\n\tcursor: pointer;\n`\nColorButtonContainer.displayName = 'ColorButtonContainer'\n\nColorDisplayer.displayName = 'ColorDisplayer'\n\nColorDisplayer.defaultProps = {\n\tescKeyCall: () => {},\n\tcolor: { hex: '#e10020' },\n\tactiveFocus: false,\n\tstyle: {},\n\tdisabled: false\n}\n\nColorDisplayer.propTypes = {\n\tescKeyCall: PropTypes.func,\n\tonChange: PropTypes.func.isRequired,\n\tstyle: PropTypes.shape({}),\n\tcolor: PropTypes.shape({\n\t\thex: PropTypes.string.isRequired\n\t}),\n\tactiveFocus: PropTypes.bool,\n\tdisabled: PropTypes.bool\n}\n\nexport default ColorDisplayer\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport moment from 'moment'\nimport { NumberSpinner } from '../../inputs/NumberSpinner'\n\nclass TimePicker extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tconst { value, hours, minutes, seconds } = this.props\n\t\tthis.state = {\n\t\t\thoursValue: hours ? this.formatMomentDuration(value, 'HH') : 0,\n\t\t\tminutesValue: minutes ? this.formatMomentDuration(value, 'mm') : 0,\n\t\t\tsecondsValue: seconds ? this.formatMomentDuration(value, 'ss') : 0\n\t\t}\n\t}\n\n\tcomponentDidUpdate(prevProps, prevState) {\n\t\tconst { value } = this.props\n\n\t\tif (value.hours() !== Number(prevState.hoursValue)) {\n\t\t\tthis.setState({\n\t\t\t\thoursValue: this.formatMomentDuration(value, 'HH')\n\t\t\t})\n\t\t}\n\t\tif (value.minutes() !== Number(prevState.minutesValue)) {\n\t\t\tthis.setState({\n\t\t\t\tminutesValue: this.formatMomentDuration(value, 'mm')\n\t\t\t})\n\t\t}\n\t\tif (value.seconds() !== Number(prevState.secondsValue)) {\n\t\t\tthis.setState({\n\t\t\t\tsecondsValue: this.formatMomentDuration(value, 'ss')\n\t\t\t})\n\t\t}\n\t}\n\n\tformatMomentDuration = (value, format) => moment.utc(value.asMilliseconds()).format(format)\n\n\tformatTimeItem = value => `${value || ''}00`.substr(0, 2)\n\n\tisNumber = value => Number.isInteger(Number(value)) && String(value) === String(Number(value))\n\n\tisValidTime = (event, type, value) => {\n\t\tswitch (type) {\n\t\t\tcase 'hours':\n\t\t\t\treturn (\n\t\t\t\t\tevent.target.selectionEnd === 0 ||\n\t\t\t\t\t(event.target.selectionEnd === 1 && Number(value.charAt(0)) < 3) ||\n\t\t\t\t\t(event.target.selectionEnd === 2 && Number(value.charAt(0)) < 2) ||\n\t\t\t\t\t(event.target.selectionEnd === 2 && Number(value.charAt(0)) === 2 && Number(value.charAt(1)) < 4)\n\t\t\t\t)\n\t\t\tcase 'minutes':\n\t\t\tcase 'seconds':\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\tevent.target.selectionEnd !== 1 || (event.target.selectionEnd === 1 && Number(value.charAt(0)) < 6)\n\t\t\t\t)\n\t\t}\n\t}\n\n\tonInputChange = (event, type) => {\n\t\tconst { [type]: oldValue } = this.state\n\t\tconst {\n\t\t\ttarget: { value: inputValue, selectionEnd: position }\n\t\t} = event\n\t\tconst isTyped = inputValue.length > oldValue.length\n\t\tconst cursorCharacter = inputValue[position - 1]\n\t\tconst addedCharacter = isTyped ? cursorCharacter : null\n\t\tconst removedCharacter = isTyped ? null : oldValue[position - 1]\n\t\tconst replacedSingleCharacter = inputValue.length === oldValue.length ? oldValue[position - 1] : null\n\n\t\tlet newValue = oldValue\n\t\tlet newPosition = position\n\n\t\tif (addedCharacter !== null) {\n\t\t\tif (position > 2) {\n\t\t\t\tnewPosition = 2\n\t\t\t} else if (this.isNumber(addedCharacter)) {\n\t\t\t\tif (position === 2) {\n\t\t\t\t\tnewValue = `${inputValue.substr(0, 1)}${inputValue.substr(1, 1)}`\n\t\t\t\t}\n\t\t\t\tif (position === 1) {\n\t\t\t\t\tnewValue = `${inputValue.substr(0, 1)}${inputValue.substr(2, 1)}`\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewPosition = position - 1\n\t\t\t}\n\t\t} else if (replacedSingleCharacter !== null) {\n\t\t\tif (this.isNumber(cursorCharacter)) {\n\t\t\t\tnewValue = inputValue\n\t\t\t} else {\n\t\t\t\tnewValue = oldValue\n\t\t\t\tnewPosition = position - 1\n\t\t\t}\n\t\t} else if (removedCharacter !== null) {\n\t\t\tif (position === 0) newValue = `0${inputValue.substr(0, 1)}`\n\t\t\telse newValue = inputValue.substr(0, 1)\n\t\t}\n\n\t\treturn { newValue, newPosition }\n\t}\n\n\tonChange = (event, type, value) => {\n\t\tconst { onChange } = this.props\n\t\tconst { hoursValue, minutesValue, secondsValue } = this.state\n\t\tconst {\n\t\t\ttarget,\n\t\t\tnativeEvent,\n\t\t\ttarget: { selectionEnd }\n\t\t} = event\n\t\tconst durationObject = {\n\t\t\thours: hoursValue,\n\t\t\tminutes: minutesValue,\n\t\t\tseconds: secondsValue\n\t\t}\n\t\tconst typeValue = `${type}Value`\n\n\t\tif (nativeEvent.type === 'click') {\n\t\t\tthis.setState({ [typeValue]: value })\n\t\t\tonChange(\n\t\t\t\tmoment.duration({\n\t\t\t\t\t...durationObject,\n\t\t\t\t\t[type]: value\n\t\t\t\t})\n\t\t\t)\n\t\t} else {\n\t\t\tlet { newValue, newPosition } = this.onInputChange(event, typeValue)\n\n\t\t\tnewValue = this.formatTimeItem(newValue)\n\n\t\t\tif (this.isValidTime(event, type, newValue)) {\n\t\t\t\tthis.setState({ [typeValue]: newValue }, () => {\n\t\t\t\t\ttarget.selectionStart = newPosition\n\t\t\t\t\ttarget.selectionEnd = newPosition\n\t\t\t\t})\n\t\t\t\tonChange(\n\t\t\t\t\tmoment.duration({\n\t\t\t\t\t\t...durationObject,\n\t\t\t\t\t\t[type]: newValue\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tthis.setState({}, () => {\n\t\t\t\t\ttarget.selectionStart = selectionEnd - 1\n\t\t\t\t\ttarget.selectionEnd = selectionEnd - 1\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tonBlur = () => {\n\t\tconst { onBlur } = this.props\n\t\tconst { hoursValue, minutesValue, secondsValue } = this.state\n\n\t\tonBlur(\n\t\t\tmoment.duration({\n\t\t\t\thours: hoursValue,\n\t\t\t\tminutes: minutesValue,\n\t\t\t\tseconds: secondsValue\n\t\t\t})\n\t\t)\n\t}\n\n\trender() {\n\t\tconst { disabled, error, hours, minutes, seconds, onChange, onBlur, value, ...props } = this.props\n\t\tconst { hoursValue, minutesValue, secondsValue } = this.state\n\t\treturn (\n\t\t\t<Container>\n\t\t\t\t{hours && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NumberSpinner\n\t\t\t\t\t\t\tname='hours'\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\terror={error}\n\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\tmax={23}\n\t\t\t\t\t\t\tonChange={(event, val) => this.onChange(event, 'hours', val)}\n\t\t\t\t\t\t\tonBlur={this.onBlur}\n\t\t\t\t\t\t\tvalue={hoursValue}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{minutes && hours && <MiddleColumn disabled={disabled}>:</MiddleColumn>}\n\t\t\t\t{minutes && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NumberSpinner\n\t\t\t\t\t\t\tname='minutes'\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\terror={error}\n\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\tmax={59}\n\t\t\t\t\t\t\tonChange={(event, val) => this.onChange(event, 'minutes', val)}\n\t\t\t\t\t\t\tonBlur={this.onBlur}\n\t\t\t\t\t\t\tvalue={minutesValue}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{seconds && minutes && <MiddleColumn disabled={disabled}>:</MiddleColumn>}\n\t\t\t\t{seconds && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NumberSpinner\n\t\t\t\t\t\t\tname='seconds'\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\terror={error}\n\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\tmax={59}\n\t\t\t\t\t\t\tonChange={(event, val) => this.onChange(event, 'seconds', val)}\n\t\t\t\t\t\t\tonBlur={this.onBlur}\n\t\t\t\t\t\t\tvalue={secondsValue}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t)\n\t}\n}\n\nconst hoursPropValidation = (props, propName, componentName) => {\n\tconst { minutes, seconds, hours } = props\n\tif (props[propName] === undefined || typeof props[propName] !== 'boolean') {\n\t\treturn new Error(\n\t\t\t`Failed prop format: The prop '${propName}' is marked as required in ${componentName}, but its value is ${typeof props[\n\t\t\t\tpropName\n\t\t\t]}.`\n\t\t)\n\t}\n\tif (\n\t\t(minutes === false && seconds === true && hours === true) ||\n\t\t(minutes === false && seconds === false && hours === false)\n\t) {\n\t\treturn new Error('Please provide a valid time combination!')\n\t}\n\treturn null\n}\n\nTimePicker.defaultProps = {\n\tdisabled: false,\n\terror: false,\n\tonBlur: () => {}\n}\n\nTimePicker.displayName = 'TimePicker'\n\nTimePicker.propTypes = {\n\tonChange: PropTypes.func.isRequired,\n\tonBlur: PropTypes.func,\n\tname: PropTypes.string.isRequired,\n\tvalue: PropTypes.objectOf(moment).isRequired,\n\tdisabled: PropTypes.bool,\n\terror: PropTypes.bool,\n\tseconds: PropTypes.bool.isRequired,\n\tminutes: PropTypes.bool.isRequired,\n\thours: hoursPropValidation\n}\n\nconst Container = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n`\n\nContainer.displayName = 'Container'\n\nconst MiddleColumn = styled.div`\n\twidth: 5px;\n\tpadding-bottom: 2px;\n\tcolor: ${({ disabled, theme }) =>\n\t\tdisabled ? theme.timePicker.disabledColor : theme.timePicker.textColor} !important;\n\ttext-align: center;\n`\n\nMiddleColumn.displayName = 'MiddleColumn'\n\nexport default TimePicker\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Header as SemanticUIHeader } from 'semantic-ui-react'\nimport Text from '../Text'\n\nconst Header = ({ bold, italic, underlined, uppercase, size, color, ...props }) => (\n\t<SemanticUIHeader\n\t\tas={textProps => (\n\t\t\t<Text size={size} color={color} bold={bold} underlined={underlined} uppercase={uppercase} {...textProps} />\n\t\t)}\n\t\t{...props}\n\t/>\n)\n\nHeader.displayName = 'Header'\n\nHeader.defaultProps = {\n\tcolor: 'default',\n\titalic: false,\n\tuppercase: false,\n\tsize: 'xl',\n\tbold: true,\n\tunderlined: false\n}\n\nHeader.propTypes = {\n\tcolor: PropTypes.string,\n\titalic: PropTypes.bool,\n\tuppercase: PropTypes.bool,\n\tsize: PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),\n\tbold: PropTypes.bool,\n\tunderlined: PropTypes.bool\n}\nexport default Header\n","import React from 'react'\nimport { Header } from '../Header'\n\nconst BigHeader = props => <Header size='xxl' {...props} />\n\nBigHeader.displayName = 'BigHeader'\n\nexport default BigHeader\n","import React from 'react'\nimport { Header } from '../Header'\n\nconst SubHeader = props => <Header size='lg' {...props} />\n\nSubHeader.displayName = 'SubHeader'\n\nexport default SubHeader\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport { Tooltip } from '../../tooltip'\n\nconst TextTruncate = ({ text, length, place }) => {\n\tconst ending = '...'\n\tconst truncatedString = `${text.substring(0, length - ending.length)}${ending}`\n\tconst slashedString = `${text.split(' ').join('_')}-tooltip`\n\n\tif (text.length < length) return text\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<Tooltip\n\t\t\t\tmultiline={true}\n\t\t\t\tid={slashedString}\n\t\t\t\tplace={place}\n\t\t\t\ttrigger={\n\t\t\t\t\t<div data-tip={text} data-for={slashedString}>\n\t\t\t\t\t\t{truncatedString}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t/>\n\t\t</Fragment>\n\t)\n}\n\nTextTruncate.defaultProps = {\n\tlength: 38,\n\tplace: 'top'\n}\n\nTextTruncate.propTypes = {\n\t/** The string to truncate */\n\ttext: PropTypes.string.isRequired,\n\t/** Tooltip position */\n\tplace: PropTypes.oneOf(['top', 'right', 'left', 'bottom']),\n\t/** The max length of the visible string */\n\tlength: PropTypes.number\n}\n\nexport default TextTruncate\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport moment from 'moment'\n\nimport { LabelText } from '../../text'\nimport TimePicker from '../TimePicker/TimePicker'\n\nconst FROM_LOWER_LIMIT = moment.duration('00:00').asMilliseconds()\nconst FROM_HIGHER_LIMIT = moment.duration('23:58').asMilliseconds()\nconst TO_LOWER_LIMIT = moment.duration('00:01').asMilliseconds()\nconst TO_HIGHER_LIMIT = moment.duration('23:59').asMilliseconds()\n\nconst TimePickerGroup = ({\n\tfrom,\n\tto,\n\tonChange,\n\tdisabled,\n\thours,\n\tminutes,\n\tseconds,\n\tfromLabel,\n\ttoLabel,\n\tmiddleLabel,\n\t...props\n}) => {\n\tconst [beginTime, setBeginTime] = useState(from)\n\tconst [endTime, setEndTime] = useState(to)\n\n\tconst getLeastSignificantValue = () => {\n\t\treturn seconds ? 's' : minutes ? 'm' : 'h'\n\t}\n\n\tconst checkBounds = (value, isFrom = false) =>\n\t\tisFrom\n\t\t\t? value >= FROM_LOWER_LIMIT && value <= FROM_HIGHER_LIMIT\n\t\t\t: value >= TO_LOWER_LIMIT && value <= TO_HIGHER_LIMIT\n\n\tconst handleChangeFrom = value => {\n\t\tif (checkBounds(value, true)) {\n\t\t\tlet newEndTime = endTime\n\t\t\tif (value.asMilliseconds() >= endTime.asMilliseconds()) {\n\t\t\t\tnewEndTime = value.clone().add(moment.duration(1, getLeastSignificantValue()))\n\t\t\t\tsetEndTime(newEndTime)\n\t\t\t}\n\t\t\tsetBeginTime(value)\n\t\t\tonChange({ from: value, to: newEndTime })\n\t\t} else {\n\t\t\tsetBeginTime(beginTime.clone())\n\t\t}\n\t}\n\n\tconst handleChangeTo = value => {\n\t\tif (checkBounds(value)) {\n\t\t\tlet newBeginTime = beginTime\n\t\t\tif (beginTime.asMilliseconds() >= value.asMilliseconds()) {\n\t\t\t\tnewBeginTime = value.clone().subtract(moment.duration(1, getLeastSignificantValue()))\n\t\t\t\tsetBeginTime(newBeginTime)\n\t\t\t}\n\t\t\tsetEndTime(value)\n\t\t\tonChange({ from: newBeginTime, to: value })\n\t\t} else {\n\t\t\tsetEndTime(endTime.clone())\n\t\t}\n\t}\n\n\treturn (\n\t\t<Container middleLabel={middleLabel} {...props}>\n\t\t\t<TimePickerWithLabel>\n\t\t\t\t{fromLabel && <LabelText>{fromLabel}</LabelText>}\n\t\t\t\t<TimePicker\n\t\t\t\t\tname='TimePickerFrom'\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonChange={handleChangeFrom}\n\t\t\t\t\thours={hours}\n\t\t\t\t\tminutes={minutes}\n\t\t\t\t\tseconds={seconds}\n\t\t\t\t\tvalue={beginTime}\n\t\t\t\t/>\n\t\t\t</TimePickerWithLabel>\n\t\t\t<MiddleLabel>{middleLabel && <SpanStyled>{middleLabel}</SpanStyled>}</MiddleLabel>\n\t\t\t<TimePickerWithLabel>\n\t\t\t\t{toLabel && <LabelText>{toLabel}</LabelText>}\n\t\t\t\t<TimePicker\n\t\t\t\t\tname='TimePickerTo'\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonChange={handleChangeTo}\n\t\t\t\t\thours={hours}\n\t\t\t\t\tminutes={minutes}\n\t\t\t\t\tseconds={seconds}\n\t\t\t\t\tvalue={endTime}\n\t\t\t\t/>\n\t\t\t</TimePickerWithLabel>\n\t\t</Container>\n\t)\n}\n\nconst Container = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n`\n\nContainer.displayName = 'Container'\n\nconst MiddleLabel = styled.div`\n\tmargin: 0 15px;\n`\n\nconst TimePickerWithLabel = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n`\n\nconst SpanStyled = styled.span`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding-left: 0;\n\tpadding-right: 0;\n\theight: 100%;\n\tfont-weight: bold;\n`\n\nTimePickerGroup.defaultProps = {\n\tfromLabel: '',\n\ttoLabel: '',\n\tdisabled: false,\n\thours: true,\n\tminutes: true,\n\tseconds: false,\n\tmiddleLabel: ''\n}\n\nTimePickerGroup.propTypes = {\n\tfrom: PropTypes.objectOf(moment).isRequired,\n\tto: PropTypes.objectOf(moment).isRequired,\n\tfromLabel: PropTypes.string,\n\ttoLabel: PropTypes.string,\n\tonChange: PropTypes.func.isRequired,\n\tdisabled: PropTypes.bool,\n\thours: PropTypes.bool,\n\tminutes: PropTypes.bool,\n\tseconds: PropTypes.bool,\n\tmiddleLabel: PropTypes.string\n}\n\nexport default TimePickerGroup\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { DefaultTheme as theme } from '../../../../themes'\n\nconst SmileyVeryBad = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 88 88' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M43.9955 0C19.7366 0 0 19.7366 0 43.9965C0 68.2583 19.7366 87.996 43.9955 87.996C68.2583 87.996 87.998 68.2583 87.998 43.9965C87.998 19.7366 68.2593 0 43.9955 0ZM43.9955 81.9499C23.0716 81.9499 6.04707 64.9234 6.04707 43.9965C6.04707 23.0716 23.0716 6.04707 43.9955 6.04707C64.9244 6.04707 81.9509 23.0716 81.9509 43.9965C81.9509 64.9234 64.9244 81.9499 43.9955 81.9499Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M44.0327 15.0532C27.882 15.0532 14.7427 28.1935 14.7427 44.3432C14.7427 60.4929 27.882 73.6322 44.0327 73.6322C60.1844 73.6322 73.3247 60.4929 73.3247 44.3432C73.3257 28.1925 60.1854 15.0532 44.0327 15.0532ZM28.784 31.1001C29.2587 30.2939 30.2998 30.0187 31.1111 30.4924L41.4516 36.5526C42.2629 37.0293 42.53 38.0674 42.0603 38.8787C41.7439 39.4179 41.1744 39.7192 40.5919 39.7192C40.3954 39.7192 40.1938 39.6708 40.0053 39.6013C39.958 39.6991 39.9227 39.7988 39.8693 39.8976C38.9168 41.5162 36.8336 42.0604 35.216 41.1121C33.5924 40.1627 33.0542 38.0764 34.0016 36.4599C34.051 36.3752 34.1155 36.3046 34.1689 36.228L29.3917 33.4303C28.5804 32.9515 28.3113 31.9104 28.784 31.1001ZM58.7331 57.2981C58.1052 57.9945 57.0288 58.0469 56.3354 57.417C52.9571 54.3723 48.5972 50.6775 44.0488 50.6775C39.4863 50.6775 35.1163 54.3814 31.738 57.4422C31.4134 57.7385 31.0053 57.8846 30.5981 57.8846C30.1375 57.8846 29.6769 57.6962 29.3403 57.3253C28.7084 56.6319 28.7618 55.5565 29.4562 54.9296C33.4604 51.2984 38.6427 47.2781 44.0518 47.2781C49.4418 47.2781 54.613 51.2822 58.6101 54.8933C59.3106 55.5273 59.363 56.6026 58.7331 57.2981ZM58.6767 33.4293L53.8975 36.223C53.9589 36.3036 54.0194 36.3742 54.0668 36.4588C55.0192 38.0754 54.4739 40.1617 52.8543 41.1111C51.2368 42.0564 49.1495 41.5112 48.2052 39.8946C48.1517 39.7978 48.1124 39.6981 48.0671 39.5953C47.8746 39.6668 47.6791 39.7152 47.4805 39.7152C46.8939 39.7152 46.3265 39.4169 46.0121 38.8757C45.5374 38.0664 45.8075 37.0283 46.6168 36.5516L56.9613 30.4914C57.7686 30.0167 58.8097 30.2848 59.2844 31.0991C59.7571 31.9104 59.487 32.9515 58.6767 33.4293Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nSmileyVeryBad.defaultProps = {\n\tfill: theme.colors.red,\n\twidth: 24,\n\theight: 24\n}\n\nSmileyVeryBad.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default SmileyVeryBad\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { DefaultTheme as theme } from '../../../../themes'\n\nconst SmileyBad = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 89 88' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M44.0305 14.7104C27.8808 14.7104 14.7415 27.8507 14.7415 44.0015C14.7415 60.1512 27.8798 73.2904 44.0305 73.2904C60.1813 73.2904 73.3225 60.1512 73.3225 44.0015C73.3215 27.8497 60.1813 14.7104 44.0305 14.7104ZM50.8597 31.736C52.7393 31.736 54.2632 33.2568 54.2632 35.1364C54.2632 37.011 52.7393 38.5369 50.8597 38.5369C48.9841 38.5369 47.4622 37.011 47.4622 35.1364C47.4622 33.2568 48.9841 31.736 50.8597 31.736ZM36.7025 31.736C38.5862 31.736 40.102 33.2568 40.102 35.1364C40.102 37.011 38.5862 38.5369 36.7025 38.5369C34.8289 38.5369 33.305 37.011 33.305 35.1364C33.305 33.2568 34.8289 31.736 36.7025 31.736ZM58.7632 54.9366C58.1373 55.634 57.0589 55.6894 56.3635 55.0605C52.9913 52.0138 48.6293 50.3358 44.0799 50.3358C39.5214 50.3358 35.1494 52.0209 31.7731 55.0867C31.4466 55.379 31.0374 55.5272 30.6292 55.5272C30.1686 55.5272 29.708 55.3397 29.3714 54.9698C28.7395 54.2754 28.7949 53.2001 29.4914 52.5691C33.4955 48.9399 38.6779 46.9373 44.0799 46.9373C49.4739 46.9373 54.6442 48.9268 58.6423 52.5399C59.3357 53.1688 59.3911 54.2402 58.7632 54.9366Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M44.0025 0C19.7386 0 0 19.7366 0 43.9975C0 68.2603 19.7386 88 44.0025 88C68.2624 88 88.002 68.2603 88.002 43.9975C88.002 19.7366 68.2624 0 44.0025 0ZM44.0025 81.9529C23.0746 81.9529 6.04707 64.9264 6.04707 43.9975C6.04707 23.0716 23.0746 6.04707 44.0025 6.04707C64.9304 6.04707 81.9549 23.0716 81.9549 43.9975C81.9549 64.9264 64.9304 81.9529 44.0025 81.9529Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nSmileyBad.defaultProps = {\n\tfill: theme.colors.red,\n\twidth: 24,\n\theight: 24\n}\n\nSmileyBad.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default SmileyBad\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SmileyBlank = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 89 88' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M44.0025 0C19.7386 0 0 19.7366 0 43.9975C0 68.2603 19.7386 88 44.0025 88C68.2624 88 88.002 68.2603 88.002 43.9975C88.002 19.7366 68.2624 0 44.0025 0ZM44.0025 81.9529C23.0746 81.9529 6.04707 64.9264 6.04707 43.9975C6.04707 23.0716 23.0746 6.04707 44.0025 6.04707C64.9304 6.04707 81.9549 23.0716 81.9549 43.9975C81.9549 64.9264 64.9304 81.9529 44.0025 81.9529Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M44.0328 14.7126C27.8821 14.7126 14.7428 27.8519 14.7428 44.0016C14.7428 60.1513 27.8821 73.2896 44.0328 73.2896C60.1835 73.2896 73.3228 60.1503 73.3228 44.0006C73.3228 27.8509 60.1845 14.7126 44.0328 14.7126ZM51.1159 31.7341C52.9895 31.7341 54.5093 33.257 54.5093 35.1366C54.5093 37.0112 52.9895 38.5361 51.1159 38.5361C49.2383 38.5361 47.7165 37.0112 47.7165 35.1366C47.7165 33.257 49.2373 31.7341 51.1159 31.7341ZM36.9587 31.7341C38.8343 31.7341 40.3562 33.257 40.3562 35.1366C40.3562 37.0112 38.8343 38.5361 36.9587 38.5361C35.0771 38.5361 33.5552 37.0112 33.5552 35.1366C33.5552 33.257 35.0771 31.7341 36.9587 31.7341ZM53.4622 54.5235H34.6044C33.6691 54.5235 32.9092 53.7606 32.9092 52.8243C32.9092 51.885 33.6691 51.1241 34.6044 51.1241H53.4622C54.4015 51.1241 55.1614 51.885 55.1614 52.8243C55.1604 53.7606 54.4015 54.5235 53.4622 54.5235Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nSmileyBlank.defaultProps = {\n\tfill: '#FBDC3B',\n\twidth: 24,\n\theight: 24\n}\n\nSmileyBlank.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default SmileyBlank\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SmileyGood = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 89 88' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M44.0025 0C19.7386 0 0 19.7366 0 43.9975C0 68.2603 19.7386 88 44.0025 88C68.2624 88 88.002 68.2603 88.002 43.9975C88.002 19.7366 68.2624 0 44.0025 0ZM44.0025 81.9529C23.0746 81.9529 6.04707 64.9264 6.04707 43.9975C6.04707 23.0716 23.0746 6.04707 44.0025 6.04707C64.9304 6.04707 81.9549 23.0716 81.9549 43.9975C81.9549 64.9264 64.9304 81.9529 44.0025 81.9529Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M44.0325 14.7126C27.8818 14.7126 14.7426 27.8519 14.7426 44.0016C14.7426 60.1513 27.8818 73.2896 44.0325 73.2896C60.1833 73.2896 73.3225 60.1503 73.3225 44.0006C73.3225 27.8509 60.1843 14.7126 44.0325 14.7126ZM51.1157 31.7341C52.9893 31.7341 54.5091 33.257 54.5091 35.1366C54.5091 37.0112 52.9893 38.5361 51.1157 38.5361C49.2381 38.5361 47.7162 37.0112 47.7162 35.1366C47.7162 33.257 49.2371 31.7341 51.1157 31.7341ZM36.9212 31.7341C38.7988 31.7341 40.3227 33.257 40.3227 35.1366C40.3227 37.0112 38.7988 38.5361 36.9212 38.5361C35.0416 38.5361 33.5237 37.0112 33.5237 35.1366C33.5237 33.257 35.0416 31.7341 36.9212 31.7341ZM58.5697 50.1777C54.5857 53.9259 50.6077 57.792 44.0114 57.792C37.4745 57.792 33.3262 53.9894 29.4188 50.1424C28.7526 49.4863 28.675 48.4402 29.3029 47.7448C29.9288 47.0514 31.0051 47 31.7026 47.6279C35.0768 50.6917 37.9643 54.3935 44.0114 54.3935C50.0585 54.3935 52.9207 50.7018 56.293 47.6541C56.9894 47.0252 58.0628 47.0806 58.6927 47.773C59.3195 48.4745 59.2671 49.5458 58.5697 50.1777Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nSmileyGood.defaultProps = {\n\tfill: '#44A40A',\n\twidth: 24,\n\theight: 24\n}\n\nSmileyGood.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default SmileyGood\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SmileyVeryGood = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 88 88' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M44.0025 0C19.7397 0 0 19.7366 0 43.9975C0 68.2603 19.7397 88 44.0025 88C68.2634 88 88.001 68.2603 88.001 43.9975C88.001 19.7366 68.2634 0 44.0025 0ZM44.0025 81.9529C23.0746 81.9529 6.04707 64.9264 6.04707 43.9975C6.04707 23.0716 23.0746 6.04707 44.0025 6.04707C64.9294 6.04707 81.9539 23.0716 81.9539 43.9975C81.9539 64.9264 64.9294 81.9529 44.0025 81.9529Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M59.0276 46.9375H28.9757C28.6703 46.9375 28.4345 47.0212 28.3277 47.1653C28.2229 47.3104 28.2148 47.5603 28.3065 47.8526C28.4597 48.3283 32.2099 59.5799 44.0027 59.5799C54.4561 59.5799 59.457 47.768 59.5074 47.649C59.6384 47.3275 59.6071 47.1431 59.5709 47.0897C59.5346 47.0363 59.3764 46.9375 59.0276 46.9375Z'\n\t\t\tfill={fill}\n\t\t/>\n\t\t<path\n\t\t\td='M43.9988 14.7126C27.8501 14.7126 14.7119 27.8519 14.7119 44.0016C14.7119 60.1513 27.8491 73.2906 43.9988 73.2906C60.1506 73.2906 73.2908 60.1513 73.2908 44.0016C73.2908 27.8519 60.1516 14.7126 43.9988 14.7126ZM51.3773 28.1936C54.1922 28.1936 56.481 30.4814 56.481 33.2953C56.481 34.2346 55.7211 34.9955 54.7818 34.9955C53.8424 34.9955 53.0825 34.2346 53.0825 33.2953C53.0825 32.354 52.3166 31.59 51.3763 31.59C50.4369 31.59 49.668 32.355 49.668 33.2953C49.668 34.2346 48.9101 34.9955 47.9707 34.9955C47.0375 34.9955 46.2735 34.2346 46.2735 33.2953C46.2745 30.4824 48.5624 28.1936 51.3773 28.1936ZM36.6254 28.1936C39.4383 28.1936 41.7271 30.4814 41.7271 33.2953C41.7271 34.2346 40.9672 34.9955 40.0299 34.9955C39.0926 34.9955 38.3307 34.2346 38.3307 33.2953C38.3307 32.354 37.5627 31.59 36.6244 31.59C35.6831 31.59 34.9202 32.355 34.9202 33.2953C34.9202 34.2346 34.1562 34.9955 33.2209 34.9955C32.2836 34.9955 31.5197 34.2346 31.5197 33.2953C31.5207 30.4824 33.8105 28.1936 36.6254 28.1936ZM62.3033 48.797C62.0725 49.3614 56.5001 62.6034 44.0029 62.6034C29.9676 62.6034 25.4676 48.9028 25.4242 48.7647C25.0372 47.5442 25.2065 46.3096 25.8889 45.3794C26.5712 44.4491 27.6959 43.914 28.9749 43.914H59.0268C60.332 43.914 61.4436 44.4582 62.0806 45.4046C62.7175 46.3529 62.7992 47.5896 62.3033 48.797Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nSmileyVeryGood.defaultProps = {\n\tfill: '#44A40A',\n\twidth: 24,\n\theight: 24\n}\n\nSmileyVeryGood.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default SmileyVeryGood\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { DefaultTheme as theme } from '../../../themes'\n\nconst Star = ({ fill, width, height }) => (\n\t<svg width={width} height={height} viewBox='0 0 26 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\n\t\t<path\n\t\t\td='M12.7502 0L16.6898 7.90022L25.5 9.16742L19.1249 15.3165L20.6298 24L12.7502 19.9004L4.87022 24L6.37512 15.3165L0 9.16742L8.81023 7.90022L12.7502 0Z'\n\t\t\tfill={fill}\n\t\t/>\n\t</svg>\n)\n\nStar.displayName = 'Star'\n\nStar.defaultProps = {\n\tfill: theme.colors.gray,\n\twidth: 26,\n\theight: 24\n}\n\nStar.propTypes = {\n\tfill: PropTypes.string,\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default Star\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { DefaultTheme as theme } from '../../../themes'\nimport { SmileyVeryBad, SmileyBad, SmileyNormal, SmileyGood, SmileyVeryGood } from './smileys'\nimport Star from './Star'\n\nconst Rating = ({ number, type }) => {\n\tconst { yellow, gray, orange } = theme.colors\n\n\tconst threeStars = [yellow, yellow, gray]\n\tconst fiveStars = [yellow, yellow, yellow, gray, gray]\n\n\tconst threeSmileys = [() => <SmileyBad />, () => <SmileyNormal />, () => <SmileyGood />]\n\tconst fiveSmileys = [\n\t\t() => <SmileyVeryBad />,\n\t\t() => <SmileyBad fill={orange} />,\n\t\t() => <SmileyNormal />,\n\t\t() => <SmileyGood fill='#95C623' />,\n\t\t() => <SmileyVeryGood />\n\t]\n\n\tconst stars = number === 3 ? threeStars : fiveStars\n\tconst smileys = number === 3 ? threeSmileys : fiveSmileys\n\n\tconst renderSmileys = () => {\n\t\treturn smileys.map((Smiley, index) => (\n\t\t\t<SvgContainer key={index}>\n\t\t\t\t<Smiley />\n\t\t\t</SvgContainer>\n\t\t))\n\t}\n\n\tconst renderStars = () => {\n\t\treturn stars.map((color, index) => (\n\t\t\t<SvgContainer key={index}>\n\t\t\t\t<Star fill={color} />\n\t\t\t</SvgContainer>\n\t\t))\n\t}\n\n\treturn <div>{type === 'stars' ? renderStars(stars) : renderSmileys(smileys)}</div>\n}\n\nconst SvgContainer = styled.div`\n\tdisplay: inline-block;\n\tmargin: 0 2px;\n`\n\nRating.displayName = 'Rating'\n\nRating.defaultProps = {\n\tnumber: 3,\n\ttype: 'stars'\n}\n\nRating.propTypes = {\n\t/** number of Rating elements */\n\tnumber: PropTypes.oneOf([3, 5]),\n\t/** type of Rating */\n\ttype: PropTypes.oneOf(['stars', 'smileys'])\n}\n\nexport default Rating\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst WidgetCardWrapper = styled.div`\n\twidth: ${({ width }) => width}px;\n\theight: ${({ height }) => height}px;\n\tbox-sizing: border-box;\n\tborder: thin ${({ borderStyle }) => borderStyle};\n\tborder-color: ${({ theme, selected }) => (selected ? theme.colors.deepBlue : theme.colors.strokeGray)};\n\tborder-radius: 4px;\n\tbox-shadow: ${({ borderStyle }) => borderStyle === 'dashed' && '0px 0px 4px rgba(0, 0, 0, 0.25)'};\n\n\t:active,\n\t:hover {\n\t\tborder-color: ${({ theme }) => theme.colors.deepBlue};\n\t}\n\tcursor: pointer;\n\tuser-select: none;\n`\nWidgetCardWrapper.displayName = 'WidgetCardWrapper'\n\nWidgetCardWrapper.defaultProps = {\n\tborderStyle: 'solid',\n\twidth: 57,\n\theight: 57,\n\tselected: false\n}\n\nWidgetCardWrapper.propTypes = {\n\tborderStyle: PropTypes.oneOf(['dashed', 'solid']),\n\twidth: PropTypes.number,\n\theight: PropTypes.number,\n\tselected: PropTypes.bool\n}\n\nexport default WidgetCardWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport WidgetCardWrapper from './WidgetCardWrapper'\n\nconst WidgetCardContainer = ({ borderStyle, selected, children, width, height, ...props }) => (\n\t<WidgetCardWrapper borderStyle={borderStyle} selected={selected} width={width} height={height} {...props}>\n\t\t{children}\n\t</WidgetCardWrapper>\n)\n\nWidgetCardContainer.defaultProps = {\n\tborderStyle: 'solid',\n\tchildren: undefined,\n\twidth: 57,\n\theight: 57,\n\tselected: false\n}\n\nWidgetCardContainer.propTypes = {\n\t/** Style of the border (can be dashed or solid) */\n\tborderStyle: PropTypes.oneOf(['dashed', 'solid']),\n\t/** Card content */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\t/** Card Width in pixels */\n\twidth: PropTypes.number,\n\t/** Card Height in pixels */\n\theight: PropTypes.number,\n\t/** is selected */\n\tselected: PropTypes.bool\n}\n\nWidgetCardContainer.displayName = 'WidgetCardContainer'\n\nexport default WidgetCardContainer\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nimport { WidgetCardContainer } from '../../widgets/WidgetCardContainer'\nimport Rating from './Rating'\n\nconst RatingBox = ({ number, label, type }) => (\n\t<RatingBoxStyled>\n\t\t<RatingBoxWrapper width={169} height={60} number={number}>\n\t\t\t<Rating number={number} type={type} />\n\t\t</RatingBoxWrapper>\n\t\t{label && <Label className='Rating-label'>{label}</Label>}\n\t</RatingBoxStyled>\n)\n\nconst RatingBoxStyled = styled.div`\n\twidth: fit-content;\n\ttext-align: center;\n\n\t:hover {\n\t\t.Rating-label {\n\t\t\tcolor: ${({ theme }) => theme.colors.deepBlue};\n\t\t}\n\t}\n`\n\nconst RatingBoxWrapper = styled(WidgetCardContainer)`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n`\n\nconst Label = styled.div`\n\tcolor: ${({ theme }) => theme.colors.mediumGray};\n\tfont-size: 12px;\n`\n\nRatingBox.displayName = 'RatingBox'\n\nRatingBox.defaultProps = {\n\tnumber: 3,\n\tlabel: undefined,\n\ttype: 'stars'\n}\n\nRatingBox.propTypes = {\n\t/** number of Rating elements */\n\tnumber: PropTypes.oneOf([3, 5]),\n\t/** type of Rating */\n\ttype: PropTypes.oneOf(['stars', 'smileys']),\n\t/** Label bellow the box */\n\tlabel: PropTypes.string\n}\n\nexport default RatingBox\n","\"use strict\";\n\nexports.__esModule = true;\nexports.ACTION = exports.TYPE = exports.POSITION = void 0;\nvar POSITION = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\nexports.POSITION = POSITION;\nvar TYPE = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default'\n};\nexports.TYPE = TYPE;\nvar ACTION = {\n SHOW: 0,\n CLEAR: 1,\n DID_MOUNT: 2,\n WILL_UNMOUNT: 3,\n ON_CHANGE: 4\n};\nexports.ACTION = ACTION;","\"use strict\";\n\nexports.__esModule = true;\nexports.isValidDelay = isValidDelay;\nexports.objectValues = objectValues;\nexports.falseOrElement = exports.falseOrDelay = void 0;\n\nvar _react = require(\"react\");\n\nfunction isValidDelay(val) {\n return typeof val === 'number' && !isNaN(val) && val > 0;\n}\n\nfunction objectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nfunction withRequired(fn) {\n fn.isRequired = function (props, propName, componentName) {\n var prop = props[propName];\n\n if (typeof prop === 'undefined') {\n return new Error(\"The prop \" + propName + \" is marked as required in \\n \" + componentName + \", but its value is undefined.\");\n }\n\n fn(props, propName, componentName);\n };\n\n return fn;\n}\n\nvar falseOrDelay = withRequired(function (props, propName, componentName) {\n var prop = props[propName];\n\n if (prop !== false && !isValidDelay(prop)) {\n return new Error(componentName + \" expect \" + propName + \" \\n to be a valid Number > 0 or equal to false. \" + prop + \" given.\");\n }\n\n return null;\n});\nexports.falseOrDelay = falseOrDelay;\nvar falseOrElement = withRequired(function (props, propName, componentName) {\n var prop = props[propName];\n\n if (prop !== false && !(0, _react.isValidElement)(prop)) {\n return new Error(componentName + \" expect \" + propName + \" \\n to be a valid react element or equal to false. \" + prop + \" given.\");\n }\n\n return null;\n});\nexports.falseOrElement = falseOrElement;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _constant = require(\"./../utils/constant\");\n\nvar _propValidator = require(\"../utils/propValidator\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction ProgressBar(_ref) {\n var _animationEvent;\n\n var delay = _ref.delay,\n isRunning = _ref.isRunning,\n closeToast = _ref.closeToast,\n type = _ref.type,\n hide = _ref.hide,\n className = _ref.className,\n userStyle = _ref.style,\n controlledProgress = _ref.controlledProgress,\n progress = _ref.progress,\n isProgressDone = _ref.isProgressDone,\n rtl = _ref.rtl;\n\n var style = _extends({}, userStyle, {\n animationDuration: delay + \"ms\",\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1,\n transform: controlledProgress ? \"scaleX(\" + progress + \")\" : null\n });\n\n var classNames = (0, _classnames.default)('Toastify__progress-bar', controlledProgress ? 'Toastify__progress-bar--controlled' : 'Toastify__progress-bar--animated', \"Toastify__progress-bar--\" + type, {\n 'Toastify__progress-bar--rtl': rtl\n }, className);\n var animationEvent = (_animationEvent = {}, _animationEvent[controlledProgress && isProgressDone ? 'onTransitionEnd' : 'onAnimationEnd'] = controlledProgress && !isProgressDone ? null : closeToast, _animationEvent);\n return _react.default.createElement(\"div\", _extends({\n className: classNames,\n style: style\n }, animationEvent));\n}\n\nProgressBar.propTypes = {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: _propValidator.falseOrDelay.isRequired,\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: _propTypes.default.bool.isRequired,\n\n /**\n * Func to close the current toast\n */\n closeToast: _propTypes.default.func.isRequired,\n\n /**\n * Support rtl content\n */\n rtl: _propTypes.default.bool.isRequired,\n\n /**\n * Optional type : info, success ...\n */\n type: _propTypes.default.string,\n\n /**\n * Hide or not the progress bar\n */\n hide: _propTypes.default.bool,\n\n /**\n * Optionnal className\n */\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n\n /**\n * Controlled progress value\n */\n progress: _propTypes.default.number,\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress: _propTypes.default.bool,\n\n /**\n * Helper to close the toast when using controlled progress value\n */\n isProgressDone: _propTypes.default.bool\n};\nProgressBar.defaultProps = {\n type: _constant.TYPE.DEFAULT,\n hide: false\n};\nvar _default = ProgressBar;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ProgressBar = _interopRequireDefault(require(\"./ProgressBar\"));\n\nvar _constant = require(\"./../utils/constant\");\n\nvar _propValidator = require(\"./../utils/propValidator\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction getX(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientX : e.clientX;\n}\n\nfunction getY(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientY : e.clientY;\n}\n\nvar noop = function noop() {};\n\nvar Toast =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Toast, _Component);\n\n function Toast() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n isRunning: true,\n preventExitTransition: false\n };\n _this.flag = {\n canCloseOnClick: true,\n canDrag: false\n };\n _this.drag = {\n start: 0,\n x: 0,\n y: 0,\n deltaX: 0,\n removalDistance: 0\n };\n _this.ref = null;\n\n _this.pauseToast = function () {\n if (_this.props.autoClose) {\n _this.setState({\n isRunning: false\n });\n }\n };\n\n _this.playToast = function () {\n if (_this.props.autoClose) {\n _this.setState({\n isRunning: true\n });\n }\n };\n\n _this.onDragStart = function (e) {\n _this.flag.canCloseOnClick = true;\n _this.flag.canDrag = true;\n _this.ref.style.transition = '';\n _this.drag.start = _this.drag.x = getX(e.nativeEvent);\n _this.drag.removalDistance = _this.ref.offsetWidth * (_this.props.draggablePercent / 100);\n };\n\n _this.onDragMove = function (e) {\n if (_this.flag.canDrag) {\n if (_this.state.isRunning) {\n _this.pauseToast();\n }\n\n _this.drag.x = getX(e);\n _this.drag.deltaX = _this.drag.x - _this.drag.start; // prevent false positif during a toast click\n\n _this.drag.start !== _this.drag.x && (_this.flag.canCloseOnClick = false);\n _this.ref.style.transform = \"translateX(\" + _this.drag.deltaX + \"px)\";\n _this.ref.style.opacity = 1 - Math.abs(_this.drag.deltaX / _this.drag.removalDistance);\n }\n };\n\n _this.onDragEnd = function (e) {\n if (_this.flag.canDrag) {\n _this.flag.canDrag = false;\n\n if (Math.abs(_this.drag.deltaX) > _this.drag.removalDistance) {\n _this.setState({\n preventExitTransition: true\n }, _this.props.closeToast);\n\n return;\n }\n\n _this.drag.y = getY(e);\n _this.ref.style.transition = 'transform 0.2s, opacity 0.2s';\n _this.ref.style.transform = 'translateX(0)';\n _this.ref.style.opacity = 1;\n }\n };\n\n _this.onDragTransitionEnd = function () {\n var _this$ref$getBounding = _this.ref.getBoundingClientRect(),\n top = _this$ref$getBounding.top,\n bottom = _this$ref$getBounding.bottom,\n left = _this$ref$getBounding.left,\n right = _this$ref$getBounding.right;\n\n if (_this.props.pauseOnHover && _this.drag.x >= left && _this.drag.x <= right && _this.drag.y >= top && _this.drag.y <= bottom) {\n _this.pauseToast();\n } else {\n _this.playToast();\n }\n };\n\n return _this;\n }\n\n var _proto = Toast.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.props.onOpen(this.props.children.props);\n\n if (this.props.draggable) {\n this.bindDragEvents();\n } // Maybe I could bind the event in the ToastContainer and rely on delegation\n\n\n if (this.props.pauseOnFocusLoss) {\n this.bindFocusEvents();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.draggable !== this.props.draggable) {\n if (this.props.draggable) {\n this.bindDragEvents();\n } else {\n this.unbindDragEvents();\n }\n }\n\n if (prevProps.pauseOnFocusLoss !== this.props.pauseOnFocusLoss) {\n if (this.props.pauseOnFocusLoss) {\n this.bindFocusEvents();\n } else {\n this.unbindFocusEvents();\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.props.onClose(this.props.children.props);\n\n if (this.props.draggable) {\n this.unbindDragEvents();\n }\n\n if (this.props.pauseOnFocusLoss) {\n this.unbindFocusEvents();\n }\n };\n\n _proto.bindFocusEvents = function bindFocusEvents() {\n window.addEventListener('focus', this.playToast);\n window.addEventListener('blur', this.pauseToast);\n };\n\n _proto.unbindFocusEvents = function unbindFocusEvents() {\n window.removeEventListener('focus', this.playToast);\n window.removeEventListener('blur', this.pauseToast);\n };\n\n _proto.bindDragEvents = function bindDragEvents() {\n document.addEventListener('mousemove', this.onDragMove);\n document.addEventListener('mouseup', this.onDragEnd);\n document.addEventListener('touchmove', this.onDragMove);\n document.addEventListener('touchend', this.onDragEnd);\n };\n\n _proto.unbindDragEvents = function unbindDragEvents() {\n document.removeEventListener('mousemove', this.onDragMove);\n document.removeEventListener('mouseup', this.onDragEnd);\n document.removeEventListener('touchmove', this.onDragMove);\n document.removeEventListener('touchend', this.onDragEnd);\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n closeButton = _this$props.closeButton,\n children = _this$props.children,\n autoClose = _this$props.autoClose,\n pauseOnHover = _this$props.pauseOnHover,\n closeOnClick = _this$props.closeOnClick,\n type = _this$props.type,\n hideProgressBar = _this$props.hideProgressBar,\n closeToast = _this$props.closeToast,\n Transition = _this$props.transition,\n position = _this$props.position,\n onExited = _this$props.onExited,\n className = _this$props.className,\n bodyClassName = _this$props.bodyClassName,\n progressClassName = _this$props.progressClassName,\n progressStyle = _this$props.progressStyle,\n updateId = _this$props.updateId,\n role = _this$props.role,\n progress = _this$props.progress,\n isProgressDone = _this$props.isProgressDone,\n rtl = _this$props.rtl;\n var toastProps = {\n className: (0, _classnames.default)('Toastify__toast', \"Toastify__toast--\" + type, {\n 'Toastify__toast--rtl': rtl\n }, className)\n };\n\n if (autoClose && pauseOnHover) {\n toastProps.onMouseEnter = this.pauseToast;\n toastProps.onMouseLeave = this.playToast;\n } // prevent toast from closing when user drags the toast\n\n\n if (closeOnClick) {\n toastProps.onClick = function () {\n return _this2.flag.canCloseOnClick && closeToast();\n };\n }\n\n var controlledProgress = parseFloat(progress) === progress;\n return _react.default.createElement(Transition, {\n in: this.props.in,\n appear: true,\n unmountOnExit: true,\n onExited: onExited,\n position: position,\n preventExitTransition: this.state.preventExitTransition\n }, _react.default.createElement(\"div\", _extends({}, toastProps, {\n ref: function ref(_ref) {\n return _this2.ref = _ref;\n },\n onMouseDown: this.onDragStart,\n onTouchStart: this.onDragStart,\n onTransitionEnd: this.onDragTransitionEnd\n }), _react.default.createElement(\"div\", _extends({}, this.props.in && {\n role: role\n }, {\n className: (0, _classnames.default)('Toastify__toast-body', bodyClassName)\n }), children), closeButton && closeButton, (autoClose || controlledProgress) && _react.default.createElement(_ProgressBar.default, _extends({}, updateId && !controlledProgress ? {\n key: \"pb-\" + updateId\n } : {}, {\n rtl: rtl,\n delay: autoClose,\n isRunning: this.state.isRunning,\n closeToast: closeToast,\n hide: hideProgressBar,\n type: type,\n style: progressStyle,\n className: progressClassName,\n controlledProgress: controlledProgress,\n isProgressDone: isProgressDone,\n progress: progress\n }))));\n };\n\n return Toast;\n}(_react.Component);\n\nToast.propTypes = {\n closeButton: _propValidator.falseOrElement.isRequired,\n autoClose: _propValidator.falseOrDelay.isRequired,\n children: _propTypes.default.node.isRequired,\n closeToast: _propTypes.default.func.isRequired,\n position: _propTypes.default.oneOf((0, _propValidator.objectValues)(_constant.POSITION)).isRequired,\n pauseOnHover: _propTypes.default.bool.isRequired,\n pauseOnFocusLoss: _propTypes.default.bool.isRequired,\n closeOnClick: _propTypes.default.bool.isRequired,\n transition: _propTypes.default.func.isRequired,\n rtl: _propTypes.default.bool.isRequired,\n hideProgressBar: _propTypes.default.bool.isRequired,\n draggable: _propTypes.default.bool.isRequired,\n draggablePercent: _propTypes.default.number.isRequired,\n in: _propTypes.default.bool,\n onExited: _propTypes.default.func,\n onOpen: _propTypes.default.func,\n onClose: _propTypes.default.func,\n type: _propTypes.default.oneOf((0, _propValidator.objectValues)(_constant.TYPE)),\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n bodyClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n progressClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n progressStyle: _propTypes.default.object,\n progress: _propTypes.default.number,\n isProgressDone: _propTypes.default.bool,\n updateId: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n ariaLabel: _propTypes.default.string\n};\nToast.defaultProps = {\n type: _constant.TYPE.DEFAULT,\n in: true,\n onOpen: noop,\n onClose: noop,\n className: null,\n bodyClassName: null,\n progressClassName: null,\n updateId: null,\n role: 'alert'\n};\nvar _default = Toast;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction CloseButton(_ref) {\n var closeToast = _ref.closeToast,\n type = _ref.type,\n ariaLabel = _ref.ariaLabel;\n return _react.default.createElement(\"button\", {\n className: \"Toastify__close-button Toastify__close-button--\" + type,\n type: \"button\",\n onClick: closeToast,\n \"aria-label\": ariaLabel\n }, \"\\u2716\");\n}\n\nCloseButton.propTypes = {\n closeToast: _propTypes.default.func,\n arialLabel: _propTypes.default.string\n};\nCloseButton.defaultProps = {\n ariaLabel: 'close'\n};\nvar _default = CloseButton;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"react-transition-group/Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar noop = function noop() {};\n\nfunction _default(_ref) {\n var enter = _ref.enter,\n exit = _ref.exit,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 750 : _ref$duration,\n _ref$appendPosition = _ref.appendPosition,\n appendPosition = _ref$appendPosition === void 0 ? false : _ref$appendPosition;\n return function Animation(_ref2) {\n var children = _ref2.children,\n position = _ref2.position,\n preventExitTransition = _ref2.preventExitTransition,\n props = _objectWithoutPropertiesLoose(_ref2, [\"children\", \"position\", \"preventExitTransition\"]);\n\n var enterClassName = appendPosition ? enter + \"--\" + position : enter;\n var exitClassName = appendPosition ? exit + \"--\" + position : exit;\n var enterDuration, exitDuration;\n\n if (Array.isArray(duration) && duration.length === 2) {\n enterDuration = duration[0];\n exitDuration = duration[1];\n } else {\n enterDuration = exitDuration = duration;\n }\n\n var onEnter = function onEnter(node) {\n node.classList.add(enterClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = enterDuration * 0.001 + \"s\";\n };\n\n var onEntered = function onEntered(node) {\n node.classList.remove(enterClassName);\n node.style.cssText = '';\n };\n\n var onExit = function onExit(node) {\n node.classList.add(exitClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = exitDuration * 0.001 + \"s\";\n };\n\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n timeout: preventExitTransition ? 0 : {\n enter: enterDuration,\n exit: exitDuration\n },\n onEnter: onEnter,\n onEntered: onEntered,\n onExit: preventExitTransition ? noop : onExit\n }), children);\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.Flip = exports.Zoom = exports.Slide = exports.Bounce = void 0;\n\nvar _cssTransition = _interopRequireDefault(require(\"./../utils/cssTransition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Bounce = (0, _cssTransition.default)({\n enter: 'Toastify__bounce-enter',\n exit: 'Toastify__bounce-exit',\n appendPosition: true\n});\nexports.Bounce = Bounce;\nvar Slide = (0, _cssTransition.default)({\n enter: 'Toastify__slide-enter',\n exit: 'Toastify__slide-exit',\n duration: [450, 750],\n appendPosition: true\n});\nexports.Slide = Slide;\nvar Zoom = (0, _cssTransition.default)({\n enter: 'Toastify__zoom-enter',\n exit: 'Toastify__zoom-exit'\n});\nexports.Zoom = Zoom;\nvar Flip = (0, _cssTransition.default)({\n enter: 'Toastify__flip-enter',\n exit: 'Toastify__flip-exit'\n});\nexports.Flip = Flip;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar eventManager = {\n list: new Map(),\n on: function on(event, callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event).push(callback);\n return this;\n },\n off: function off(event) {\n this.list.delete(event);\n return this;\n },\n emit: function emit(event) {\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 if (!this.list.has(event)) {\n return false;\n }\n\n this.list.get(event).forEach(function (callback) {\n return setTimeout(function () {\n return callback.call.apply(callback, [null].concat(args));\n }, 0);\n });\n return true;\n }\n};\nvar _default = eventManager;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"react-transition-group/TransitionGroup\"));\n\nvar _Toast = _interopRequireDefault(require(\"./Toast\"));\n\nvar _CloseButton = _interopRequireDefault(require(\"./CloseButton\"));\n\nvar _Transitions = require(\"./Transitions\");\n\nvar _constant = require(\"./../utils/constant\");\n\nvar _eventManager = _interopRequireDefault(require(\"./../utils/eventManager\"));\n\nvar _propValidator = require(\"./../utils/propValidator\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar ToastContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(ToastContainer, _Component);\n\n function ToastContainer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n toast: []\n };\n _this.toastKey = 1;\n _this.collection = {};\n\n _this.isToastActive = function (id) {\n return _this.state.toast.indexOf(id) !== -1;\n };\n\n return _this;\n }\n\n var _proto = ToastContainer.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n _eventManager.default.on(_constant.ACTION.SHOW, function (content, options) {\n return _this2.show(content, options);\n }).on(_constant.ACTION.CLEAR, function (id) {\n return !id ? _this2.clear() : _this2.removeToast(id);\n }).emit(_constant.ACTION.DID_MOUNT, this);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n _eventManager.default.off(_constant.ACTION.SHOW).off(_constant.ACTION.CLEAR).emit(_constant.ACTION.WILL_UNMOUNT);\n };\n\n _proto.removeToast = function removeToast(id) {\n this.setState({\n toast: this.state.toast.filter(function (v) {\n return v !== id;\n })\n }, this.dispatchChange);\n };\n\n _proto.dispatchChange = function dispatchChange() {\n _eventManager.default.emit(_constant.ACTION.ON_CHANGE, this.state.toast.length);\n };\n\n _proto.makeCloseButton = function makeCloseButton(toastClose, toastId, type) {\n var _this3 = this;\n\n var closeButton = this.props.closeButton;\n\n if ((0, _react.isValidElement)(toastClose) || toastClose === false) {\n closeButton = toastClose;\n }\n\n return closeButton === false ? false : (0, _react.cloneElement)(closeButton, {\n closeToast: function closeToast() {\n return _this3.removeToast(toastId);\n },\n type: type\n });\n };\n\n _proto.getAutoCloseDelay = function getAutoCloseDelay(toastAutoClose) {\n return toastAutoClose === false || (0, _propValidator.isValidDelay)(toastAutoClose) ? toastAutoClose : this.props.autoClose;\n };\n\n _proto.canBeRendered = function canBeRendered(content) {\n return (0, _react.isValidElement)(content) || typeof content === 'string' || typeof content === 'number' || typeof content === 'function';\n };\n\n _proto.parseClassName = function parseClassName(prop) {\n if (typeof prop === 'string') {\n return prop;\n } else if (prop !== null && typeof prop === 'object' && 'toString' in prop) {\n return prop.toString();\n }\n\n return null;\n };\n\n _proto.show = function show(content, options) {\n var _this4 = this,\n _extends2;\n\n if (!this.canBeRendered(content)) {\n throw new Error(\"The element you provided cannot be rendered. You provided an element of type \" + typeof content);\n }\n\n var toastId = options.toastId;\n\n var closeToast = function closeToast() {\n return _this4.removeToast(toastId);\n };\n\n var toastOptions = {\n id: toastId,\n // ⚠️ if no options.key, this.toastKey - 1 is assigned\n key: options.key || this.toastKey++,\n type: options.type,\n closeToast: closeToast,\n updateId: options.updateId,\n rtl: this.props.rtl,\n position: options.position || this.props.position,\n transition: options.transition || this.props.transition,\n className: this.parseClassName(options.className || this.props.toastClassName),\n bodyClassName: this.parseClassName(options.bodyClassName || this.props.bodyClassName),\n closeButton: this.makeCloseButton(options.closeButton, toastId, options.type),\n pauseOnHover: typeof options.pauseOnHover === 'boolean' ? options.pauseOnHover : this.props.pauseOnHover,\n pauseOnFocusLoss: typeof options.pauseOnFocusLoss === 'boolean' ? options.pauseOnFocusLoss : this.props.pauseOnFocusLoss,\n draggable: typeof options.draggable === 'boolean' ? options.draggable : this.props.draggable,\n draggablePercent: typeof options.draggablePercent === 'number' && !isNaN(options.draggablePercent) ? options.draggablePercent : this.props.draggablePercent,\n closeOnClick: typeof options.closeOnClick === 'boolean' ? options.closeOnClick : this.props.closeOnClick,\n progressClassName: this.parseClassName(options.progressClassName || this.props.progressClassName),\n progressStyle: this.props.progressStyle,\n autoClose: this.getAutoCloseDelay(options.autoClose),\n hideProgressBar: typeof options.hideProgressBar === 'boolean' ? options.hideProgressBar : this.props.hideProgressBar,\n progress: parseFloat(options.progress),\n isProgressDone: options.isProgressDone\n };\n typeof options.onOpen === 'function' && (toastOptions.onOpen = options.onOpen);\n typeof options.onClose === 'function' && (toastOptions.onClose = options.onClose); // add closeToast function to react component only\n\n if ((0, _react.isValidElement)(content) && typeof content.type !== 'string' && typeof content.type !== 'number') {\n content = (0, _react.cloneElement)(content, {\n closeToast: closeToast\n });\n } else if (typeof content === 'function') {\n content = content({\n closeToast: closeToast\n });\n }\n\n this.collection = _extends({}, this.collection, (_extends2 = {}, _extends2[toastId] = {\n position: toastOptions.position,\n options: toastOptions,\n content: content\n }, _extends2));\n this.setState({\n toast: (toastOptions.updateId ? _toConsumableArray(this.state.toast) : _toConsumableArray(this.state.toast).concat([toastId])).filter(function (id) {\n return id !== options.staleToastId;\n })\n }, this.dispatchChange);\n };\n\n _proto.makeToast = function makeToast(content, options) {\n return _react.default.createElement(_Toast.default, _extends({}, options, {\n isDocumentHidden: this.state.isDocumentHidden,\n key: \"toast-\" + options.key\n }), content);\n };\n\n _proto.clear = function clear() {\n this.setState({\n toast: []\n });\n };\n\n _proto.renderToast = function renderToast() {\n var _this5 = this;\n\n var toastToRender = {};\n var _this$props = this.props,\n className = _this$props.className,\n style = _this$props.style,\n newestOnTop = _this$props.newestOnTop;\n var collection = newestOnTop ? Object.keys(this.collection).reverse() : Object.keys(this.collection); // group toast by position\n\n collection.forEach(function (toastId) {\n var _this5$collection$toa = _this5.collection[toastId],\n position = _this5$collection$toa.position,\n options = _this5$collection$toa.options,\n content = _this5$collection$toa.content;\n toastToRender[position] || (toastToRender[position] = []);\n\n if (_this5.state.toast.indexOf(options.id) !== -1) {\n toastToRender[position].push(_this5.makeToast(content, options));\n } else {\n toastToRender[position].push(null);\n delete _this5.collection[toastId];\n }\n });\n return Object.keys(toastToRender).map(function (position) {\n var disablePointer = toastToRender[position].length === 1 && toastToRender[position][0] === null;\n var props = {\n className: (0, _classnames.default)('Toastify__toast-container', \"Toastify__toast-container--\" + position, {\n 'Toastify__toast-container--rtl': _this5.props.rtl\n }, _this5.parseClassName(className)),\n style: disablePointer ? _extends({}, style, {\n pointerEvents: 'none'\n }) : _extends({}, style)\n };\n return _react.default.createElement(_TransitionGroup.default, _extends({}, props, {\n key: \"container-\" + position\n }), toastToRender[position]);\n });\n };\n\n _proto.render = function render() {\n return _react.default.createElement(\"div\", {\n className: \"Toastify\"\n }, this.renderToast());\n };\n\n return ToastContainer;\n}(_react.Component);\n\nToastContainer.propTypes = {\n /**\n * Set toast position\n */\n position: _propTypes.default.oneOf((0, _propValidator.objectValues)(_constant.POSITION)),\n\n /**\n * Disable or set autoClose delay\n */\n autoClose: _propValidator.falseOrDelay,\n\n /**\n * Disable or set a custom react element for the close button\n */\n closeButton: _propValidator.falseOrElement,\n\n /**\n * Hide or not progress bar when autoClose is enabled\n */\n hideProgressBar: _propTypes.default.bool,\n\n /**\n * Pause toast duration on hover\n */\n pauseOnHover: _propTypes.default.bool,\n\n /**\n * Dismiss toast on click\n */\n closeOnClick: _propTypes.default.bool,\n\n /**\n * Newest on top\n */\n newestOnTop: _propTypes.default.bool,\n\n /**\n * An optional className\n */\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n\n /**\n * An optional style\n */\n style: _propTypes.default.object,\n\n /**\n * An optional className for the toast\n */\n toastClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n\n /**\n * An optional className for the toast body\n */\n bodyClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n\n /**\n * An optional className for the toast progress bar\n */\n progressClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n\n /**\n * An optional style for the toast progress bar\n */\n progressStyle: _propTypes.default.object,\n\n /**\n * Define enter and exit transition using react-transition-group\n */\n transition: _propTypes.default.func,\n\n /**\n * Support rtl display\n */\n rtl: _propTypes.default.bool,\n\n /**\n * Allow toast to be draggable\n */\n draggable: _propTypes.default.bool,\n\n /**\n * The percentage of the toast's width it takes for a drag to dismiss a toast\n */\n draggablePercent: _propTypes.default.number,\n\n /**\n * Pause the toast on focus loss\n */\n pauseOnFocusLoss: _propTypes.default.bool\n};\nToastContainer.defaultProps = {\n position: _constant.POSITION.TOP_RIGHT,\n transition: _Transitions.Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: _react.default.createElement(_CloseButton.default, null),\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: 80,\n className: null,\n style: null,\n toastClassName: null,\n bodyClassName: null,\n progressClassName: null,\n progressStyle: null\n};\nvar _default = ToastContainer;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _eventManager = _interopRequireDefault(require(\"./utils/eventManager\"));\n\nvar _constant = require(\"./utils/constant\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nvar container = null;\nvar queue = [];\n\nvar noop = function noop() {\n return false;\n};\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\n\n\nfunction mergeOptions(options, type) {\n return _extends({}, options, {\n type: type,\n toastId: getToastId(options)\n });\n}\n/**\n * Generate a random toastId\n */\n\n\nfunction generateToastId() {\n return (Math.random().toString(36) + Date.now().toString(36)).substr(2, 10);\n}\n/**\n * Generate the toastId either automatically or by provided toastId\n */\n\n\nfunction getToastId(options) {\n if (options && (typeof options.toastId === 'string' || typeof options.toastId === 'number' && !isNaN(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n/**\n * Dispatch toast. If the container is not mounted, the toast is enqueued\n */\n\n\nfunction emitEvent(content, options) {\n if (container !== null) {\n _eventManager.default.emit(_constant.ACTION.SHOW, content, options);\n } else {\n queue.push({\n action: _constant.ACTION.SHOW,\n content: content,\n options: options\n });\n }\n\n return options.toastId;\n}\n\nvar toast = _extends(function (content, options) {\n return emitEvent(content, mergeOptions(options, options && options.type || _constant.TYPE.DEFAULT));\n}, {\n success: function success(content, options) {\n return emitEvent(content, mergeOptions(options, _constant.TYPE.SUCCESS));\n },\n info: function info(content, options) {\n return emitEvent(content, mergeOptions(options, _constant.TYPE.INFO));\n },\n warn: function warn(content, options) {\n return emitEvent(content, mergeOptions(options, _constant.TYPE.WARNING));\n },\n warning: function warning(content, options) {\n return emitEvent(content, mergeOptions(options, _constant.TYPE.WARNING));\n },\n error: function error(content, options) {\n return emitEvent(content, mergeOptions(options, _constant.TYPE.ERROR));\n },\n dismiss: function dismiss(id) {\n if (id === void 0) {\n id = null;\n }\n\n return container && _eventManager.default.emit(_constant.ACTION.CLEAR, id);\n },\n isActive: noop,\n update: function update(toastId, options) {\n setTimeout(function () {\n if (container && typeof container.collection[toastId] !== 'undefined') {\n var _container$collection = container.collection[toastId],\n oldOptions = _container$collection.options,\n oldContent = _container$collection.content;\n\n var nextOptions = _extends({}, oldOptions, options, {\n toastId: options.toastId || toastId\n });\n\n if (!options.toastId || options.toastId === toastId) {\n nextOptions.updateId = generateToastId();\n } else {\n nextOptions.staleToastId = toastId;\n }\n\n var content = typeof nextOptions.render !== 'undefined' ? nextOptions.render : oldContent;\n delete nextOptions.render;\n emitEvent(content, nextOptions);\n }\n }, 0);\n },\n done: function done(id, progress) {\n if (progress === void 0) {\n progress = 1;\n }\n\n toast.update(id, {\n progress: progress,\n isProgressDone: true\n });\n },\n onChange: function onChange(callback) {\n if (typeof callback === 'function') {\n _eventManager.default.on(_constant.ACTION.ON_CHANGE, callback);\n }\n },\n POSITION: _constant.POSITION,\n TYPE: _constant.TYPE\n});\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\n\n\n_eventManager.default.on(_constant.ACTION.DID_MOUNT, function (containerInstance) {\n container = containerInstance;\n\n toast.isActive = function (id) {\n return container.isToastActive(id);\n };\n\n queue.forEach(function (item) {\n _eventManager.default.emit(item.action, item.content, item.options);\n });\n queue = [];\n}).on(_constant.ACTION.WILL_UNMOUNT, function () {\n container = null;\n toast.isActive = noop;\n});\n\nvar _default = toast;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _ToastContainer = _interopRequireDefault(require(\"./components/ToastContainer\"));\n\nexports.ToastContainer = _ToastContainer.default;\n\nvar _Transitions = require(\"./components/Transitions\");\n\nexports.Bounce = _Transitions.Bounce;\nexports.Slide = _Transitions.Slide;\nexports.Zoom = _Transitions.Zoom;\nexports.Flip = _Transitions.Flip;\n\nvar _constant = require(\"./utils/constant\");\n\nexports.ToastPosition = _constant.POSITION;\nexports.ToastType = _constant.TYPE;\n\nvar _toast = _interopRequireDefault(require(\"./toast\"));\n\nexports.toast = _toast.default;\n\nvar _cssTransition = _interopRequireDefault(require(\"./utils/cssTransition\"));\n\nexports.cssTransition = _cssTransition.default;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Icon, IconName } from '../../icons'\nimport { DefaultTheme as theme } from '../../../themes'\n\nconst ToastIconWrapper = styled.div`\n\tdisplay: flex;\n\n\twidth: 60px;\n\theight: 60px;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\n\tbackground: ${({ bgColor }) => bgColor};\n`\n\nToastIconWrapper.displayName = 'ToastIconWrapper'\n\nconst ToastIcon = ({ bgColor, icon, size, color, ...props }) => (\n\t<ToastIconWrapper bgColor={bgColor} {...props}>\n\t\t<Icon icon={icon} size={size} color={color} />\n\t</ToastIconWrapper>\n)\n\nToastIcon.defaultProps = {\n\tbgColor: theme.toast.successColor,\n\tsize: 'big',\n\tcolor: 'white'\n}\n\nToastIcon.propTypes = {\n\tbgColor: PropTypes.string,\n\ticon: PropTypes.oneOf(IconName).isRequired,\n\tsize: PropTypes.string,\n\tcolor: PropTypes.string\n}\n\nToastIcon.displayName = 'ToastIcon'\n\nexport default ToastIcon\nexport { ToastIcon, ToastIconWrapper }\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst ToastTitle = styled.div`\n\tpadding: 8px 16px;\n\n\tcolor: ${({ theme }) => theme.toast.titleColor};\n\tfont-size: 15px;\n\tfont-weight: bold;\n`\n\nconst ToastMessage = styled.div`\n\tpadding-left: 16px;\n\n\tcolor: ${({ theme }) => theme.toast.messageColor};\n\tfont-size: 13px;\n`\n\nconst ToastBody = ({ title, message }) => (\n\t<div>\n\t\t<ToastTitle>{title}</ToastTitle>\n\t\t<ToastMessage>{message}</ToastMessage>\n\t</div>\n)\n\nToastBody.defaultProps = {\n\ttitle: ''\n}\n\nToastBody.propTypes = {\n\t/** Text that will show on top in the body */\n\ttitle: PropTypes.string,\n\t/** Text that will show on bottom in the body, bellow title if exists */\n\tmessage: PropTypes.string.isRequired\n}\n\nToastBody.displayName = 'ToastBody'\n\nexport default ToastBody\nexport { ToastMessage, ToastTitle }\n","import React, { Fragment } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\nimport { ToastIcon } from './ToastIcon'\nimport ToastBody from './ToastBody'\nimport { DefaultTheme as theme } from '../../../themes'\nimport { IconName } from '../../icons'\n\nconst ToastWrapper = styled(ToastContainer)`\n\t.Toastify__toast {\n\t\tmin-height: 0;\n\t\tpadding: 0;\n\t}\n\n\t.Toastify__toast-body {\n\t\tdisplay: flex;\n\t\tmargin: 0;\n\t}\n\n\t.Toastify__close-button.Toastify__close-button--default .qube {\n\t\twidth: 300px !important;\n\t\theight: 60px !important;\n\n\t\tbackground: transparent;\n\t\tborder-radius: 4px;\n\n\t\tbox-shadow: 0 0 3px rgba(0, 0, 0, 0.25);\n\t}\n`\n\nToastWrapper.defaultProps = {\n\tsuppressClassNameWarning: true\n}\n\nToastWrapper.displayName = 'ToastWrapper'\n\nconst Toast = ({ bgColor, icon, title, message, size, color }) => (\n\t<Fragment>\n\t\t<ToastIcon bgColor={bgColor} icon={icon} size={size} color={color} />\n\n\t\t<ToastBody title={title} message={message} />\n\t</Fragment>\n)\n\nToast.defaultProps = {\n\tbgColor: theme.toast.successColor,\n\tsize: 'big',\n\ttitle: '',\n\tcolor: 'white'\n}\n\nToast.propTypes = {\n\tbgColor: PropTypes.string,\n\ticon: PropTypes.oneOf(IconName).isRequired,\n\ttitle: PropTypes.string,\n\tmessage: PropTypes.string.isRequired,\n\tsize: PropTypes.string,\n\tcolor: PropTypes.string\n}\n\nToast.displayName = 'Toast'\n\nexport { ToastWrapper }\nexport default Toast\n","import React from 'react'\nimport { toast } from 'react-toastify'\nimport { DefaultTheme as theme } from '../../../themes'\nimport Toast from './Toast'\n\nconst notify = (bgColor, icon, title, message, size, color, options) => {\n\ttoast(<Toast bgColor={bgColor} icon={icon} title={title} message={message} size={size} color={color} />, {\n\t\t...options\n\t})\n}\n\nconst notifyError = (title, message, options) => {\n\ttoast(\n\t\t<Toast\n\t\t\tbgColor={theme.toast.errorColor}\n\t\t\ticon='error'\n\t\t\ttitle={title}\n\t\t\tmessage={message}\n\t\t\tsize='big'\n\t\t\tcolor='white'\n\t\t/>,\n\t\t{\n\t\t\thideProgressBar: true,\n\t\t\tcloseButton: false,\n\t\t\tautoClose: 5000,\n\t\t\tpauseOnFocusLoss: false,\n\t\t\tposition: 'bottom-right',\n\t\t\t...options\n\t\t}\n\t)\n}\n\nconst notifySuccess = (title, message, options) => {\n\ttoast(\n\t\t<Toast\n\t\t\tbgColor={theme.toast.successColor}\n\t\t\ticon='success'\n\t\t\ttitle={title}\n\t\t\tmessage={message}\n\t\t\tsize='big'\n\t\t\tcolor='white'\n\t\t/>,\n\t\t{\n\t\t\thideProgressBar: true,\n\t\t\tcloseButton: false,\n\t\t\tautoClose: 5000,\n\t\t\tpauseOnFocusLoss: false,\n\t\t\tposition: 'bottom-right',\n\t\t\t...options\n\t\t}\n\t)\n}\n\nconst notifyWarning = (title, message, options) => {\n\ttoast(\n\t\t<Toast\n\t\t\tbgColor={theme.toast.warningColor}\n\t\t\ticon='warning'\n\t\t\ttitle={title}\n\t\t\tmessage={message}\n\t\t\tsize='big'\n\t\t\tcolor='white'\n\t\t/>,\n\t\t{\n\t\t\thideProgressBar: true,\n\t\t\tcloseButton: false,\n\t\t\tautoClose: 5000,\n\t\t\tpauseOnFocusLoss: false,\n\t\t\tposition: 'bottom-right',\n\t\t\t...options\n\t\t}\n\t)\n}\n\nexport { notify, notifyError, notifySuccess, notifyWarning }\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Grid } from 'semantic-ui-react'\n\nconst CenteredGridStyled = styled.div`\n\tdisplay: block;\n\twidth: ${({ width }) => (width.toString().indexOf('%') !== -1 ? width : `${width}px`)};\n\theight: ${({ height }) => (height.toString().indexOf('%') !== -1 ? height : `${height}px`)};\n\tmargin: 0 auto;\n`\n\n/**\n * @param children\n * @param props height and width\n */\nconst CenteredGrid = ({ children, ...props }) => (\n\t<CenteredGridStyled {...props}>\n\t\t<Grid verticalAlign='middle' style={{ height: '100%' }}>\n\t\t\t<Grid.Row>\n\t\t\t\t<Grid.Column>{children}</Grid.Column>\n\t\t\t</Grid.Row>\n\t\t</Grid>\n\t</CenteredGridStyled>\n)\n\nCenteredGrid.defaultProps = {\n\twidth: '100%',\n\theight: '100%'\n}\n\nCenteredGrid.propTypes = {\n\t/** children nodes */\n\tchildren: PropTypes.node.isRequired,\n\t/** width in pixels or percentage ('100' - pixels; '100%' - percentage) */\n\twidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\t/** height in pixels or percentage ('100' - pixels; '100%' - percentage) */\n\theight: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}\n\nexport default CenteredGrid\n","import React from 'react'\nimport styled from 'styled-components'\nimport { DefaultTheme as theme } from '../../../themes'\n\nconst Section = styled.div`\n\tposition: relative;\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 20px;\n\tmargin-bottom: 17px;\n\tborder: thin solid ${theme.colors.strokeGray};\n\tborder-radius: 4px;\n`\n\nSection.displayName = 'Section'\n\nexport default Section\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst Crumb = ({ crumbIndex, crumbs, onClick, children, ...props }) => {\n\tconst newPath = ['', ...crumbs.slice(0, crumbIndex + 1)].join('/')\n\n\treturn (\n\t\t<StyledCrumb key={newPath}>\n\t\t\t<StyledCrumbSpan index={crumbIndex} onClick={() => crumbIndex !== 0 && onClick(newPath)} {...props}>\n\t\t\t\t{children}\n\t\t\t</StyledCrumbSpan>\n\t\t</StyledCrumb>\n\t)\n}\n\nCrumb.displayName = 'Crumb'\n\nCrumb.propTypes = {\n\t/** specific location of the breadcrumb in the crumbs array */\n\tcrumbIndex: PropTypes.number.isRequired,\n\t/** Array of crumb keys to be translated */\n\tcrumbs: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n\t/** onClick crumb handler */\n\tonClick: PropTypes.func.isRequired,\n\t/** children nodes */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nconst StyledCrumb = styled.span`\n\tdisplay: inline;\n\n\t:after {\n\t\tcontent: ' > ';\n\t}\n`\n\nStyledCrumb.displayName = 'StyledCrumb'\n\nconst StyledCrumbSpan = styled.a`\n\tcolor: ${({ theme }) => theme.colors.gray} !important;\n\tcursor: ${({ index }) => index !== 0 && 'pointer'};\n\tuser-select: ${({ index }) => index === 0 && 'none'};\n\n\t:hover {\n\t\ttext-decoration: ${({ index }) => index !== 0 && 'underline'};\n\t}\n`\n\nStyledCrumbSpan.displayName = 'StyledCrumbSpan'\n\nexport default Crumb\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nimport { Text } from '../../text'\nimport Crumb from './Crumb'\nimport { DefaultTheme } from '../../../themes'\n\nconst isNotNumber = segment => Number.isNaN(Number(segment))\n\nconst BreadCrumbs = ({ path, finalItem, onClick, translationFunction, ...props }) => {\n\tlet items = path.split('/').filter(item => item)\n\tconst lastItem = items.length > 1 ? items[items.length - 1] : null\n\titems = items.slice(0, items.length - 1)\n\n\treturn (\n\t\t<Text {...props} color={DefaultTheme.colors.gray} size='sm'>\n\t\t\t{items.filter(isNotNumber).map((crumb, index) => (\n\t\t\t\t<Crumb key={crumb} crumbIndex={index} crumbs={items} onClick={onClick} {...props}>\n\t\t\t\t\t{translationFunction(crumb)}\n\t\t\t\t</Crumb>\n\t\t\t))}\n\t\t\t{lastItem && <NoUserSelect>{finalItem || translationFunction(lastItem)}</NoUserSelect>}\n\t\t</Text>\n\t)\n}\n\nBreadCrumbs.defaultProps = {\n\tfinalItem: ''\n}\n\nBreadCrumbs.displayName = 'BreadCrumbs'\n\nBreadCrumbs.propTypes = {\n\t/** Path of the page: with react router -> props.location.pathname */\n\tpath: PropTypes.string.isRequired,\n\t/** Custom Name for the last crumb name */\n\tfinalItem: PropTypes.string,\n\t/** Action for the crumb click */\n\tonClick: PropTypes.func.isRequired,\n\t/** translation function applied to reach crumb item */\n\ttranslationFunction: PropTypes.func.isRequired\n}\n\nconst BreadCrumbsStyled = styled.p`\n\tcolor: ${({ theme }) => theme.colors.gray} !important;\n\tfont-size: 11px;\n`\n\nBreadCrumbsStyled.displayName = 'BreadCrumbsStyled'\n\nconst NoUserSelect = styled.span`\n\tuser-select: none;\n`\n\nexport default BreadCrumbs\nexport { BreadCrumbsStyled }\n","(typeof navigator !== \"undefined\") && (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(function() {\r\n return factory(root);\r\n });\r\n } else if (typeof module === \"object\" && module.exports) {\r\n module.exports = factory(root);\r\n } else {\r\n root.lottie = factory(root);\r\n root.bodymovin = root.lottie;\r\n }\r\n}((window || {}), function(window) {\r\n \"use strict\";\r\n var svgNS = \"http://www.w3.org/2000/svg\";\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\nvar subframeEnabled = true;\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bm_rounder = Math.round;\r\nvar bm_rnd;\r\nvar bm_pow = Math.pow;\r\nvar bm_sqrt = Math.sqrt;\r\nvar bm_abs = Math.abs;\r\nvar bm_floor = Math.floor;\r\nvar bm_max = Math.max;\r\nvar bm_min = Math.min;\r\nvar blitter = 10;\r\n\r\nvar BMMath = {};\r\n(function(){\r\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\"];\r\n var i, len = propertyNames.length;\r\n for(i=0;i<len;i+=1){\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface(){return {};}\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function(val){\r\n var tOfVal = typeof val;\r\n if(tOfVal === 'object' && val.length){\r\n var absArr = createSizedArray(val.length);\r\n var i, len = val.length;\r\n for(i=0;i<len;i+=1){\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI/180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag){\r\n if(flag){\r\n bm_rnd = Math.round;\r\n }else{\r\n bm_rnd = function(val){\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element){\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = element.style.webkitTransformStyle = element.style.mozTransformStyle = \"preserve-3d\";\r\n}\r\n\r\nfunction BMEnterFrameEvent(n,c,t,d){\r\n this.type = n;\r\n this.currentTime = c;\r\n this.totalTime = t;\r\n this.direction = d < 0 ? -1:1;\r\n}\r\n\r\nfunction BMCompleteEvent(n,d){\r\n this.type = n;\r\n this.direction = d < 0 ? -1:1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(n,c,t,d){\r\n this.type = n;\r\n this.currentLoop = t;\r\n this.totalLoops = c;\r\n this.direction = d < 0 ? -1:1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(n,f,t){\r\n this.type = n;\r\n this.firstFrame = f;\r\n this.totalFrames = t;\r\n}\r\n\r\nfunction BMDestroyEvent(n,t){\r\n this.type = n;\r\n this.target = t;\r\n}\r\n\r\nvar createElementID = (function(){\r\n var _count = 0;\r\n return function createID() {\r\n return '__lottie_element_' + ++_count\r\n }\r\n}())\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r, g, b, i, f, p, q, t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n }\r\n return [ r,\r\n g,\r\n b ];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b), min = Math.min(r, g, b),\r\n d = max - min,\r\n h,\r\n s = (max === 0 ? 0 : d / max),\r\n v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color,offset){\r\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n }\r\n else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color,offset){\r\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n }\r\n else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color,offset) {\r\n var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);\r\n hsv[0] += offset/360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n }\r\n else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0],hsv[1],hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function(){\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for(i=0;i<256;i+=1){\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length == 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function(r, g, b) {\r\n if(r<0){\r\n r = 0;\r\n }\r\n if(g<0){\r\n g = 0;\r\n }\r\n if(b<0){\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\nfunction BaseEvent(){}\r\nBaseEvent.prototype = {\r\n\ttriggerEvent: function (eventName, args) {\r\n\t if (this._cbs[eventName]) {\r\n\t var len = this._cbs[eventName].length;\r\n\t for (var i = 0; i < len; i++){\r\n\t this._cbs[eventName][i](args);\r\n\t }\r\n\t }\r\n\t},\r\n\taddEventListener: function (eventName, callback) {\r\n\t if (!this._cbs[eventName]){\r\n\t this._cbs[eventName] = [];\r\n\t }\r\n\t this._cbs[eventName].push(callback);\r\n\r\n\t\treturn function() {\r\n\t\t\tthis.removeEventListener(eventName, callback);\r\n\t\t}.bind(this);\r\n\t},\r\n\tremoveEventListener: function (eventName,callback){\r\n\t if (!callback){\r\n\t this._cbs[eventName] = null;\r\n\t }else if(this._cbs[eventName]){\r\n\t var i = 0, len = this._cbs[eventName].length;\r\n\t while(i<len){\r\n\t if(this._cbs[eventName][i] === callback){\r\n\t this._cbs[eventName].splice(i,1);\r\n\t i -=1;\r\n\t len -= 1;\r\n\t }\r\n\t i += 1;\r\n\t }\r\n\t if(!this._cbs[eventName].length){\r\n\t this._cbs[eventName] = null;\r\n\t }\r\n\t }\r\n\t}\r\n};\r\nvar createTypedArray = (function(){\r\n\tfunction createRegularArray(type, len){\r\n\t\tvar i = 0, arr = [], value;\r\n\t\tswitch(type) {\r\n\t\t\tcase 'int16':\r\n\t\t\tcase 'uint8c':\r\n\t\t\t\tvalue = 1;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tvalue = 1.1;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tarr.push(value);\r\n\t\t}\r\n\t\treturn arr;\r\n\t}\r\n\tfunction createTypedArray(type, len){\r\n\t\tif(type === 'float32') {\r\n\t\t\treturn new Float32Array(len);\r\n\t\t} else if(type === 'int16') {\r\n\t\t\treturn new Int16Array(len);\r\n\t\t} else if(type === 'uint8c') {\r\n\t\t\treturn new Uint8ClampedArray(len);\r\n\t\t}\r\n\t}\r\n\tif(typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n\t\treturn createTypedArray;\r\n\t} else {\r\n\t\treturn createRegularArray;\r\n\t}\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n\treturn Array.apply(null,{length:len});\r\n}\r\nfunction createNS(type) {\r\n\t//return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n\treturn document.createElementNS(svgNS, type);\r\n}\r\nfunction createTag(type) {\r\n\t//return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n\treturn document.createElement(type);\r\n}\r\nfunction DynamicPropertyContainer(){};\r\nDynamicPropertyContainer.prototype = {\r\n\taddDynamicProperty: function(prop) {\r\n\t\tif(this.dynamicProperties.indexOf(prop) === -1) {\r\n\t this.dynamicProperties.push(prop);\r\n\t this.container.addDynamicProperty(this);\r\n\t \tthis._isAnimated = true;\r\n\t }\r\n\t},\r\n\titerateDynamicProperties: function(){\r\n\t this._mdf = false;\r\n\t var i, len = this.dynamicProperties.length;\r\n\t for(i=0;i<len;i+=1){\r\n\t this.dynamicProperties[i].getValue();\r\n\t if(this.dynamicProperties[i]._mdf) {\r\n\t this._mdf = true;\r\n\t }\r\n\t }\r\n\t},\r\n\tinitDynamicPropertyContainer: function(container){\r\n\t this.container = container;\r\n\t this.dynamicProperties = [];\r\n\t this._mdf = false;\r\n\t this._isAnimated = false;\r\n\t}\r\n}\r\nvar getBlendMode = (function() {\r\n\r\n\tvar blendModeEnums = {\r\n 0:'source-over',\r\n 1:'multiply',\r\n 2:'screen',\r\n 3:'overlay',\r\n 4:'darken',\r\n 5:'lighten',\r\n 6:'color-dodge',\r\n 7:'color-burn',\r\n 8:'hard-light',\r\n 9:'soft-light',\r\n 10:'difference',\r\n 11:'exclusion',\r\n 12:'hue',\r\n 13:'saturation',\r\n 14:'color',\r\n 15:'luminosity'\r\n }\r\n\r\n\treturn function(mode) {\r\n\t\treturn blendModeEnums[mode] || '';\r\n\t}\r\n}())\r\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 */\r\n\r\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 */\r\n\r\nvar Matrix = (function(){\r\n\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset(){\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if(angle === 0){\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle){\r\n if(angle === 0){\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle){\r\n if(angle === 0){\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle){\r\n if(angle === 0){\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx,sy){\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay){\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle){\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n //return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if(!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if(sx === 1 && sy === 1 && sz === 1){\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if(tx !== 0 || ty !== 0 || tz !== 0){\r\n return this._t(1,0,0,0,0,1,0,0,0,0,1,0,tx,ty,tz,1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n\r\n var _p = this.props;\r\n\r\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){\r\n //NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n //if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] = _p[15] * p2;\r\n //}\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2 ;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2 ;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2 ;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2 ;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2 ;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2 ;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2 ;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2 ;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2 ;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2 ;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2 ;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2 ;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2 ;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2 ;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2 ;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if(!this._identityCalculated){\r\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);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr){\r\n var i = 0;\r\n while (i < 16) {\r\n if(matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i+=1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr){\r\n var i;\r\n for(i=0;i<16;i+=1){\r\n matr.props[i] = this.props[i];\r\n }\r\n }\r\n\r\n function cloneFromProps(props){\r\n var i;\r\n for(i=0;i<16;i+=1){\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\r\n };\r\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 };*/\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function inversePoint(pt) {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5]/determinant;\r\n var b = - this.props[1]/determinant;\r\n var c = - this.props[4]/determinant;\r\n var d = this.props[0]/determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12])/determinant;\r\n var f = - (this.props[0] * this.props[13] - this.props[1] * this.props[12])/determinant;\r\n return [pt[0] * a + pt[1] * c + e, pt[0] * b + pt[1] * d + f, 0];\r\n }\r\n\r\n function inversePoints(pts){\r\n var i, len = pts.length, retPts = [];\r\n for(i=0;i<len;i+=1){\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if(this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0], p1 = this.props[1], p4 = this.props[4], p5 = this.props[5], p12 = this.props[12], p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x,y,z){\r\n var arr;\r\n if(this.isIdentity()) {\r\n arr = [x,y,z];\r\n } else {\r\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]];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if(this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\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;\r\n }\r\n\r\n function toCSS() {\r\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.\r\n /*if(this.isIdentity()) {\r\n return '';\r\n }*/\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while(i<16){\r\n cssValue += _rnd(props[i]*v)/v;\r\n cssValue += i === 15 ? ')':',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\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.\r\n /*if(this.isIdentity()) {\r\n return '';\r\n }*/\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return \"matrix(\" + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + \")\";\r\n }\r\n\r\n return function(){\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\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 */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\nvar BezierFactory = (function(){\r\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 */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a,b,c,d,nm){\r\n var str = nm || ('bez_' + a+'_'+b+'_'+c+'_'+d).replace(/\\./g, 'p');\r\n if(beziers[str]){\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a,b,c,d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === \"function\";\r\n\r\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C (aA1) { return 3.0 * aA1; }\r\n\r\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier (aT, aA1, aA2) {\r\n return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;\r\n }\r\n\r\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope (aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\r\n var currentX, currentT, i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing (points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2)\r\n this._calcSampleValues();\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } else if (initialSlope === 0.0) {\r\n return guessForT;\r\n } else {\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n }\r\n }\r\n };\r\n\r\n return ob;\r\n\r\n}());\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if(!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function (callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n if(!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\nfunction extendPrototype(sources,destination){\r\n var i, len = sources.length, sourcePrototype;\r\n for (i = 0;i < len;i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (sourcePrototype.hasOwnProperty(attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n\tfunction ProxyFunction(){}\r\n\tProxyFunction.prototype = prototype;\r\n\treturn ProxyFunction;\r\n}\r\nfunction bezFunction(){\r\n\r\n var easingFunctions = [];\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1,y1, x2,y2, x3,y3){\r\n var det1 = (x1*y2) + (y1*x3) + (x2*y3) - (x3*y2) - (y3*x1) - (x2*y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1,y1,z1, x2,y2,z2, x3,y3,z3){\r\n if(z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1,y1, x2,y2, x3,y3);\r\n }\r\n var dist1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2));\r\n var dist2 = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2) + Math.pow(z3 - z1, 2));\r\n var dist3 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2) + Math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if(dist1 > dist2){\r\n if(dist1 > dist3){\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if(dist3 > dist2){\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function(){\r\n\r\n return function(pt1,pt2,pt3,pt4){\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i, len;\r\n var ptCoord,perc,addedLength = 0;\r\n var ptDistance;\r\n var point = [],lastPoint = [];\r\n var lengthData = bezier_length_pool.newElement();\r\n len = pt3.length;\r\n for(k=0;k<curveSegments;k+=1){\r\n perc = k/(curveSegments-1);\r\n ptDistance = 0;\r\n for(i=0;i<len;i+=1){\r\n ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*pt3[i]+3*(1-perc)*bm_pow(perc,2)*pt4[i]+bm_pow(perc,3)*pt2[i];\r\n point[i] = ptCoord;\r\n if(lastPoint[i] !== null){\r\n ptDistance += bm_pow(point[i] - lastPoint[i],2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if(ptDistance){\r\n ptDistance = bm_sqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segments_length_pool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i, len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for(i=0;i<len-1;i+=1){\r\n lengths[i] = getBezierLength(pathV[i],pathV[i+1],pathO[i],pathI[i+1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if(closed && len){\r\n lengths[i] = getBezierLength(pathV[i],pathV[0],pathO[i],pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length){\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial,point){\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function(){\r\n\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4){\r\n var bezierName = (pt1[0]+'_'+pt1[1]+'_'+pt2[0]+'_'+pt2[1]+'_'+pt3[0]+'_'+pt3[1]+'_'+pt4[0]+'_'+pt4[1]).replace(/\\./g, 'p');\r\n if(!storedData[bezierName]){\r\n var curveSegments = defaultCurveSegments;\r\n var k, i, len;\r\n var ptCoord,perc,addedLength = 0;\r\n var ptDistance;\r\n var point,lastPoint = null;\r\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])){\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1){\r\n ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*(pt1[i] + pt3[i])+3*(1-perc)*bm_pow(perc,2)*(pt2[i] + pt4[i])+bm_pow(perc,3)*pt2[i];\r\n point[i] = ptCoord;\r\n if(lastPoint !== null){\r\n ptDistance += bm_pow(point[i] - lastPoint[i],2);\r\n }\r\n }\r\n ptDistance = bm_sqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc,bezierData){\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bm_floor((len-1)*perc);\r\n var lengthPos = perc*bezierData.addedLength;\r\n var lPerc = 0;\r\n if(initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]){\r\n return percents[initPos];\r\n }else{\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while(flag){\r\n if(lengths[initPos] <= lengthPos && lengths[initPos+1] > lengthPos){\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos+1] - lengths[initPos]);\r\n flag = false;\r\n }else{\r\n initPos += dir;\r\n }\r\n if(initPos < 0 || initPos >= len - 1){\r\n //FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if(initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos+1] - percents[initPos])*lPerc;\r\n }\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent,bezierData);\r\n var u0 = 1;\r\n var u1 = 1 - t1;\r\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;\r\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;\r\n return [ptX, ptY];\r\n }\r\n\r\n function getSegmentArray() {\r\n\r\n }\r\n\r\n var bezier_segment_points = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1,pt2,pt3,pt4,startPerc,endPerc, bezierData){\r\n\r\n startPerc = startPerc < 0 ? 0 : startPerc > 1 ? 1 : startPerc;\r\n var t0 = getDistancePerc(startPerc,bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc,bezierData);\r\n var i, len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0*u0*u0;\r\n var t0u0u0_3 = t0*u0*u0*3;\r\n var t0t0u0_3 = t0*t0*u0*3;\r\n var t0t0t0 = t0*t0*t0;\r\n //\r\n var u0u0u1 = u0*u0*u1;\r\n var t0u0u1_3 = t0*u0*u1 + u0*t0*u1 + u0*u0*t1;\r\n var t0t0u1_3 = t0*t0*u1 + u0*t0*t1 + t0*u0*t1;\r\n var t0t0t1 = t0*t0*t1;\r\n //\r\n var u0u1u1 = u0*u1*u1;\r\n var t0u1u1_3 = t0*u1*u1 + u0*t1*u1 + u0*u1*t1;\r\n var t0t1u1_3 = t0*t1*u1 + u0*t1*t1 + t0*u1*t1;\r\n var t0t1t1 = t0*t1*t1;\r\n //\r\n var u1u1u1 = u1*u1*u1;\r\n var t1u1u1_3 = t1*u1*u1 + u1*t1*u1 + u1*u1*t1;\r\n var t1t1u1_3 = t1*t1*u1 + u1*t1*t1 + t1*u1*t1;\r\n var t1t1t1 = t1*t1*t1;\r\n for(i=0;i<len;i+=1){\r\n bezier_segment_points[i * 4] = Math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000;\r\n bezier_segment_points[i * 4 + 1] = Math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000;\r\n bezier_segment_points[i * 4 + 2] = Math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000;\r\n bezier_segment_points[i * 4 + 3] = Math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000;\r\n }\r\n\r\n return bezier_segment_points;\r\n }\r\n\r\n return {\r\n getSegmentsLength : getSegmentsLength,\r\n getNewSegment : getNewSegment,\r\n getPointInSegment : getPointInSegment,\r\n buildBezierData : buildBezierData,\r\n pointOnLine2D : pointOnLine2D,\r\n pointOnLine3D : pointOnLine3D\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\nfunction dataFunctionManager(){\r\n\r\n //var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps, fontManager){\r\n var layerData;\r\n var animArray, lastFrame;\r\n var i, len = layers.length;\r\n var j, jLen, k, kLen;\r\n for(i=0;i<len;i+=1){\r\n layerData = layers[i];\r\n if(!('ks' in layerData) || layerData.completed){\r\n continue;\r\n }\r\n layerData.completed = true;\r\n if(layerData.tt){\r\n layers[i-1].td = layerData.tt;\r\n }\r\n animArray = [];\r\n lastFrame = -1;\r\n if(layerData.hasMask){\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(maskProps[j].pt.k.i){\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n }else{\r\n kLen = maskProps[j].pt.k.length;\r\n for(k=0;k<kLen;k+=1){\r\n if(maskProps[j].pt.k[k].s){\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if(maskProps[j].pt.k[k].e){\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if(layerData.ty===0){\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers,comps, fontManager);\r\n }else if(layerData.ty === 4){\r\n completeShapes(layerData.shapes);\r\n }else if(layerData.ty == 5){\r\n completeText(layerData, fontManager);\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id,comps){\r\n var i = 0, len = comps.length;\r\n while(i<len){\r\n if(comps[i].id === id){\r\n if(!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function completeShapes(arr){\r\n var i, len = arr.length;\r\n var j, jLen;\r\n var hasPaths = false;\r\n for(i=len-1;i>=0;i-=1){\r\n if(arr[i].ty == 'sh'){\r\n if(arr[i].ks.k.i){\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n }else{\r\n jLen = arr[i].ks.k.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(arr[i].ks.k[j].s){\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if(arr[i].ks.k[j].e){\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n hasPaths = true;\r\n }else if(arr[i].ty == 'gr'){\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n /*if(hasPaths){\r\n //mx: distance\r\n //ss: sensitivity\r\n //dc: decay\r\n arr.splice(arr.length-1,0,{\r\n \"ty\": \"ms\",\r\n \"mx\":20,\r\n \"ss\":10,\r\n \"dc\":0.001,\r\n \"maxDist\":200\r\n });\r\n }*/\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path){\r\n var i, len = path.i.length;\r\n for(i=0;i<len;i+=1){\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum,animVersionString){\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100,100,100];\r\n if(minimum[0]>animVersion[0]){\r\n return true;\r\n } else if(animVersion[0] > minimum[0]){\r\n return false;\r\n }\r\n if(minimum[1]>animVersion[1]){\r\n return true;\r\n } else if(animVersion[1] > minimum[1]){\r\n return false;\r\n }\r\n if(minimum[2]>animVersion[2]){\r\n return true;\r\n } else if(animVersion[2] > minimum[2]){\r\n return false;\r\n }\r\n }\r\n\r\n var checkText = (function(){\r\n var minimumVersion = [4,4,14];\r\n\r\n function updateTextLayer(textLayer){\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s:documentData,\r\n t:0\r\n }\r\n ]\r\n };\r\n }\r\n\r\n function iterateLayers(layers){\r\n var i, len = layers.length;\r\n for(i=0;i<len;i+=1){\r\n if(layers[i].ty === 5){\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData){\r\n if(checkVersion(minimumVersion,animationData.v)){\r\n iterateLayers(animationData.layers);\r\n if(animationData.assets){\r\n var i, len = animationData.assets.length;\r\n for(i=0;i<len;i+=1){\r\n if(animationData.assets[i].layers){\r\n iterateLayers(animationData.assets[i].layers);\r\n\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function() {\r\n var minimumVersion = [4,7,99];\r\n return function (animationData){\r\n if(animationData.chars && !checkVersion(minimumVersion,animationData.v)){\r\n var i, len = animationData.chars.length, j, jLen, k, kLen;\r\n var pathData, paths;\r\n for(i = 0; i < len; i += 1) {\r\n if(animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for(j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if(!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function(){\r\n var minimumVersion = [4,1,9];\r\n\r\n function iterateShapes(shapes){\r\n var i, len = shapes.length;\r\n var j, jLen;\r\n for(i=0;i<len;i+=1){\r\n if(shapes[i].ty === 'gr'){\r\n iterateShapes(shapes[i].it);\r\n }else if(shapes[i].ty === 'fl' || shapes[i].ty === 'st'){\r\n if(shapes[i].c.k && shapes[i].c.k[0].i){\r\n jLen = shapes[i].c.k.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(shapes[i].c.k[j].s){\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if(shapes[i].c.k[j].e){\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers){\r\n var i, len = layers.length;\r\n for(i=0;i<len;i+=1){\r\n if(layers[i].ty === 4){\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData){\r\n if(checkVersion(minimumVersion,animationData.v)){\r\n iterateLayers(animationData.layers);\r\n if(animationData.assets){\r\n var i, len = animationData.assets.length;\r\n for(i=0;i<len;i+=1){\r\n if(animationData.assets[i].layers){\r\n iterateLayers(animationData.assets[i].layers);\r\n\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function(){\r\n var minimumVersion = [4,4,18];\r\n\r\n\r\n\r\n function completeShapes(arr){\r\n var i, len = arr.length;\r\n var j, jLen;\r\n var hasPaths = false;\r\n for(i=len-1;i>=0;i-=1){\r\n if(arr[i].ty == 'sh'){\r\n if(arr[i].ks.k.i){\r\n arr[i].ks.k.c = arr[i].closed;\r\n }else{\r\n jLen = arr[i].ks.k.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(arr[i].ks.k[j].s){\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if(arr[i].ks.k[j].e){\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n hasPaths = true;\r\n }else if(arr[i].ty == 'gr'){\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers){\r\n var layerData;\r\n var i, len = layers.length;\r\n var j, jLen, k, kLen;\r\n for(i=0;i<len;i+=1){\r\n layerData = layers[i];\r\n if(layerData.hasMask){\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(maskProps[j].pt.k.i){\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n }else{\r\n kLen = maskProps[j].pt.k.length;\r\n for(k=0;k<kLen;k+=1){\r\n if(maskProps[j].pt.k[k].s){\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if(maskProps[j].pt.k[k].e){\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if(layerData.ty === 4){\r\n completeShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData){\r\n if(checkVersion(minimumVersion,animationData.v)){\r\n iterateLayers(animationData.layers);\r\n if(animationData.assets){\r\n var i, len = animationData.assets.length;\r\n for(i=0;i<len;i+=1){\r\n if(animationData.assets[i].layers){\r\n iterateLayers(animationData.assets[i].layers);\r\n\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData, fontManager){\r\n if(animationData.__complete){\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets, fontManager);\r\n animationData.__complete = true;\r\n //blitAnimation(animationData, animationData.assets, fontManager);\r\n }\r\n\r\n function completeText(data, fontManager){\r\n if(data.t.a.length === 0 && !('m' in data.t.p)){\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n\r\n return moduleOb;\r\n}\r\n\r\nvar dataManager = dataFunctionManager();\r\nvar FontManager = (function(){\r\n\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size:0,\r\n shapes:[]\r\n };\r\n var combinedCharacters = [];\r\n //Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366\r\n , 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379\r\n , 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n function setUpNode(font, family){\r\n var parentNode = createTag('span');\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerHTML = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = font + ', '+family;\r\n return {node:node, w:width, parent:parentNode};\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i, len = this.fonts.length;\r\n var node, w;\r\n var loadedCount = len;\r\n for(i=0;i<len; i+= 1){\r\n if(this.fonts[i].loaded){\r\n loadedCount -= 1;\r\n continue;\r\n }\r\n if(this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0){\r\n this.fonts[i].loaded = true;\r\n } else{\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if(node.offsetWidth !== w){\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }else{\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if(node.offsetWidth !== w){\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if(this.fonts[i].loaded){\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if(loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime){\r\n setTimeout(this.checkLoadedFonts.bind(this),20);\r\n }else{\r\n setTimeout(function(){this.isLoaded = true;}.bind(this),0);\r\n\r\n }\r\n }\r\n\r\n function createHelper(def, fontData){\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n //tHelper.style.fontFamily = fontData.fFamily;\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontData.fStyle);\r\n tHelper.setAttribute('font-weight', fontData.fWeight);\r\n tHelper.textContent = '1';\r\n if(fontData.fClass){\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px '+ fontData.fFamily;\r\n //tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs){\r\n if(!fontData){\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if(this.chars){\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n\r\n var fontArr = fontData.list;\r\n var i, len = fontArr.length;\r\n var _pendingFonts = len;\r\n for(i=0; i<len; i+= 1){\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily,'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily,'sans-serif');\r\n if(!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n }else if(fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3){\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"'+ fontArr[i].fFamily +'\"], style[f-origin=\"3\"][f-family=\"'+ fontArr[i].fFamily +'\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = \"text/css\";\r\n s.innerHTML = \"@font-face {\" + \"font-family: \"+fontArr[i].fFamily+\"; font-style: normal; src: url('\"+fontArr[i].fPath+\"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if(fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1){\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j++) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = \"text/css\";\r\n l.rel = \"stylesheet\";\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if(fontArr[i].fOrigin === 't' || fontArr[i].origin === 2){\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j++) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel','stylesheet');\r\n sc.setAttribute('href',fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs,fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n //On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n //Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars){\r\n if(!chars){\r\n return;\r\n }\r\n if(!this.chars){\r\n this.chars = [];\r\n }\r\n var i, len = chars.length;\r\n var j, jLen = this.chars.length, found;\r\n for(i=0;i<len;i+=1){\r\n j = 0;\r\n found = false;\r\n while(j<jLen){\r\n if(this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch){\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if(!found){\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font){\r\n var i = 0, len = this.chars.length;\r\n while( i < len) {\r\n if(this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font){\r\n return this.chars[i];\r\n }\r\n i+= 1;\r\n }\r\n if(console && console.warn) {\r\n console.warn('Missing character from exported characters list: ', char, style, font);\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if(!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n //Canvas version\r\n //fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n //SVG version\r\n //console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize)/100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength())/100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name){\r\n var i = 0, len = this.fonts.length;\r\n while(i<len){\r\n if(this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function getCombinedCharacterCodes() {\r\n return combinedCharacters;\r\n }\r\n\r\n function loaded() {\r\n return this.isLoaded;\r\n }\r\n\r\n var Font = function(){\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this.initTime = Date.now();\r\n };\r\n //TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it. \r\n Font.getCombinedCharacterCodes = getCombinedCharacterCodes;\r\n\r\n Font.prototype.addChars = addChars;\r\n Font.prototype.addFonts = addFonts;\r\n Font.prototype.getCharData = getCharData;\r\n Font.prototype.getFontByName = getFontByName;\r\n Font.prototype.measureText = measureText;\r\n Font.prototype.checkLoadedFonts = checkLoadedFonts;\r\n Font.prototype.loaded = loaded;\r\n\r\n return Font;\r\n\r\n}());\r\nvar PropertyFactory = (function(){\r\n\r\n var initFrame = initialDefaultFrame;\r\n var math_abs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1, flag = true;\r\n var keyData, nextKeyData;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime){\r\n if(keyData.h){\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum){\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1){\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n var k, kLen, perc, jLen, j, fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyData.bezierData) {\r\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyData.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength*perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1){\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX, outY, inX, inY, keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n \r\n } else {\r\n for(i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if(frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if(keyData.o.x.constructor === Array) {\r\n if (!keyData.__fnct) {\r\n keyData.__fnct = [];\r\n }\r\n if (!keyData.__fnct[i]) {\r\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyData.__fnct[i];\r\n }\r\n } else {\r\n if (!keyData.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct = fnc;\r\n } else {\r\n fnc = keyData.__fnct;\r\n }\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime ));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (len === 1) {\r\n newValue = keyValue;\r\n } else {\r\n newValue[i] = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n //based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\r\n bx = b[0], by = b[1], bz = b[2], bw = b[3]\r\n\r\n var omega, cosom, sinom, scale0, scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2*qy*qw-2*qx*qz , 1 - 2*qy*qy - 2*qz*qz)\r\n var attitude = Math.asin(2*qx*qy + 2*qz*qw) \r\n var bank = Math.atan2(2*qx*qw-2*qy*qz , 1 - 2*qx*qx - 2*qz*qz);\r\n out[0] = heading/degToRads;\r\n out[1] = attitude/degToRads;\r\n out[2] = bank/degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x,y,z,w];\r\n }\r\n\r\n function getValueAtCurrentTime(){\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length- 1].t-this.offsetTime;\r\n if(!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))){\r\n if(this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if(this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if(math_abs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0, len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (math_abs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if(this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n } \r\n if(this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var multipliedValue;\r\n var i, len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for(i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container){\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i, len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n var arr = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1};\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container){\r\n this.propType = 'multidimensional';\r\n var i, len = data.k.length;\r\n var s, e,to,ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i].e) {\r\n s = data.k[i].s;\r\n e = data.k[i].e;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\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]))){\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if(s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if(s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray('float32', arrLen)};\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem,data,type, mult, container) {\r\n var p;\r\n if(!data.k.length){\r\n p = new ValueProperty(elem,data, mult, container);\r\n }else if(typeof(data.k[0]) === 'number'){\r\n p = new MultiDimensionalProperty(elem,data, mult, container);\r\n }else{\r\n switch(type){\r\n case 0:\r\n p = new KeyframedValueProperty(elem,data,mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem,data,mult, container);\r\n break;\r\n }\r\n }\r\n if(p.effectsSequence.length){\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp\r\n };\r\n return ob;\r\n}());\r\nvar TransformPropertyFactory = (function() {\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\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]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender){\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if(this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if(this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4){\r\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]);\r\n }\r\n if (this.autoOriented) {\r\n var v1,v2, frameRate = this.elem.globalData.frameRate;\r\n if(this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame+this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate,0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if(this.p._caching.lastFrame+this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if(this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px, py = this.py, frameRate;\r\n if (px._caching.lastFrame+px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate,0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate,0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate,0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate,0);\r\n } else if(px._caching.lastFrame+px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate),0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate),0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate,0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate,0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame+px.offsetTime - 0.01) / frameRate,px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame+py.offsetTime - 0.01) / frameRate,py.offsetTime);\r\n }\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if(this.data.p && this.data.p.s){\r\n if(this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n }else{\r\n this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if(!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if(!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if(this.sk) {\r\n if(!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if(!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n } else {\r\n return;\r\n }\r\n } else if(!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\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]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient(){\r\n //\r\n //var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem,data,container){\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n //Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if(data.p && data.p.s){\r\n this.px = PropertyFactory.getProp(elem,data.p.x,0,0,this);\r\n this.py = PropertyFactory.getProp(elem,data.p.y,0,0,this);\r\n if(data.p.z){\r\n this.pz = PropertyFactory.getProp(elem,data.p.z,0,0,this);\r\n }\r\n }else{\r\n this.p = PropertyFactory.getProp(elem,data.p || {k:[0,0,0]},1,0,this);\r\n }\r\n if(data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if(data.or.k[0].ti) {\r\n var i, len = data.or.k.length;\r\n for(i=0;i<len;i+=1) {\r\n data.or.k[i].to = data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n //sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || {k: 0}, 0, degToRads, this);\r\n }\r\n if(data.sk){\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem,data.a || {k:[0,0,0]},1,0,this);\r\n this.s = PropertyFactory.getProp(elem,data.s || {k:[100,100,100]},1,0.01,this);\r\n // 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.\r\n if(data.o){\r\n this.o = PropertyFactory.getProp(elem,data.o,0,0.01,elem);\r\n } else {\r\n this.o = {_mdf:false,v:1};\r\n }\r\n this._isDirty = true;\r\n if(!this.dynamicProperties.length){\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem,data,container){\r\n return new TransformProperty(elem,data,container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty\r\n };\r\n\r\n}());\r\nfunction ShapePath(){\r\n\tthis.c = false;\r\n\tthis._length = 0;\r\n\tthis._maxLength = 8;\r\n\tthis.v = createSizedArray(this._maxLength);\r\n\tthis.o = createSizedArray(this._maxLength);\r\n\tthis.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function(closed, len) {\r\n\tthis.c = closed;\r\n\tthis.setLength(len);\r\n\tvar i = 0;\r\n\twhile(i < len){\r\n\t\tthis.v[i] = point_pool.newElement();\r\n\t\tthis.o[i] = point_pool.newElement();\r\n\t\tthis.i[i] = point_pool.newElement();\r\n\t\ti += 1;\r\n\t}\r\n};\r\n\r\nShapePath.prototype.setLength = function(len) {\r\n\twhile(this._maxLength < len) {\r\n\t\tthis.doubleArrayLength();\r\n\t}\r\n\tthis._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function() {\r\n\tthis.v = this.v.concat(createSizedArray(this._maxLength));\r\n\tthis.i = this.i.concat(createSizedArray(this._maxLength));\r\n\tthis.o = this.o.concat(createSizedArray(this._maxLength));\r\n\tthis._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function(x, y, type, pos, replace) {\r\n\tvar arr;\r\n\tthis._length = Math.max(this._length, pos + 1);\r\n\tif(this._length >= this._maxLength) {\r\n\t\tthis.doubleArrayLength();\r\n\t}\r\n\tswitch(type){\r\n\t\tcase 'v':\r\n\t\t\tarr = this.v;\r\n\t\t\tbreak;\r\n\t\tcase 'i':\r\n\t\t\tarr = this.i;\r\n\t\t\tbreak;\r\n\t\tcase 'o':\r\n\t\t\tarr = this.o;\r\n\t\t\tbreak;\r\n\t}\r\n\tif(!arr[pos] || (arr[pos] && !replace)){\r\n\t\tarr[pos] = point_pool.newElement();\r\n\t}\r\n\tarr[pos][0] = x;\r\n\tarr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function(vX,vY,oX,oY,iX,iY,pos, replace) {\r\n\tthis.setXYAt(vX,vY,'v',pos, replace);\r\n\tthis.setXYAt(oX,oY,'o',pos, replace);\r\n\tthis.setXYAt(iX,iY,'i',pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function() {\r\n\tvar newPath = new ShapePath();\r\n\tnewPath.setPathData(this.c, this._length);\r\n\tvar vertices = this.v, outPoints = this.o, inPoints = this.i;\r\n\tvar init = 0;\r\n\tif (this.c) {\r\n\t\tnewPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n \tnewPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\nvar ShapePropertyFactory = (function(){\r\n\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS,keyPropE,isHold, j, k, jLen, kLen, perc, vertexValue;\r\n var kf = this.keyframes;\r\n if(frameNum < kf[0].t-this.offsetTime){\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n }else if(frameNum >= kf[kf.length - 1].t-this.offsetTime){\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\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 }*/\r\n isHold = true;\r\n }else{\r\n var i = iterationIndex;\r\n var len = kf.length- 1,flag = true,keyData,nextKeyData;\r\n while(flag){\r\n keyData = kf[i];\r\n nextKeyData = kf[i+1];\r\n if((nextKeyData.t - this.offsetTime) > frameNum){\r\n break;\r\n }\r\n if(i < len - 1){\r\n i += 1;\r\n }else{\r\n flag = false;\r\n }\r\n }\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if(!isHold){\r\n if(frameNum >= nextKeyData.t-this.offsetTime){\r\n perc = 1;\r\n }else if(frameNum < keyData.t-this.offsetTime){\r\n perc = 0;\r\n }else{\r\n var fnc;\r\n if(keyData.__fnct){\r\n fnc = keyData.__fnct;\r\n }else{\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for(j=0;j<jLen;j+=1){\r\n for(k=0;k<kLen;k+=1){\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k]+(keyPropE.i[j][k]-keyPropS.i[j][k])*perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k]+(keyPropE.o[j][k]-keyPropS.o[j][k])*perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k]+(keyPropE.v[j][k]-keyPropS.v[j][k])*perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime(){\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if(!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))){\r\n ////\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n ////\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape(){\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if(shape1._length !== shape2._length || shape1.c !== shape2.c){\r\n return false;\r\n }\r\n var i, len = shape1._length;\r\n for(i = 0; i < len; i += 1) {\r\n if(shape1.v[i][0] !== shape2.v[i][0] \r\n || shape1.v[i][1] !== shape2.v[i][1] \r\n || shape1.o[i][0] !== shape2.o[i][0] \r\n || shape1.o[i][1] !== shape2.o[i][1] \r\n || shape1.i[i][0] !== shape2.i[i][0] \r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if(!shapesEqual(this.v, newPath)) {\r\n this.v = shape_pool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if(this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if(this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;\r\n var i, len = this.effectsSequence.length;\r\n for(i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n };\r\n\r\n function ShapeProperty(elem, data, type){\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shape_pool.clone(pathData);\r\n this.pv = shape_pool.clone(this.v);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem,data,type){\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.k = true;\r\n this.kf = true;\r\n var i, len = this.keyframes[0].s[0].i.length;\r\n var jLen = this.keyframes[0].s[0].i[0].length;\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shape_pool.clone(this.v);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = {lastFrame: initFrame, lastIndex: 0};\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function(){\r\n\r\n var cPoint = roundCorner;\r\n\r\n function EllShapeProperty(elem,data) {\r\n /*this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n };*/\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem,data.p,1,0,this);\r\n this.s = PropertyFactory.getProp(elem,data.s,1,0,this);\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n };\r\n\r\n EllShapeProperty.prototype = {\r\n reset: resetShape,\r\n getValue: function (){\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if(this._mdf){\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function() {\r\n var p0 = this.p.v[0], p1 = this.p.v[1], s0 = this.s.v[0]/2, s1 = this.s.v[1]/2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n }\r\n }\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapeProperty);\r\n\r\n return EllShapeProperty;\r\n }());\r\n\r\n var StarShapeProperty = (function() {\r\n\r\n function StarShapeProperty(elem,data) {\r\n this.v = shape_pool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if(data.sy === 1){\r\n this.ir = PropertyFactory.getProp(elem,data.ir,0,0,this);\r\n this.is = PropertyFactory.getProp(elem,data.is,0,0.01,this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem,data.pt,0,0,this);\r\n this.p = PropertyFactory.getProp(elem,data.p,1,0,this);\r\n this.r = PropertyFactory.getProp(elem,data.r,0,degToRads,this);\r\n this.or = PropertyFactory.getProp(elem,data.or,0,0,this);\r\n this.os = PropertyFactory.getProp(elem,data.os,0,0.01,this);\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n };\r\n\r\n StarShapeProperty.prototype = {\r\n reset: resetShape,\r\n getValue: function() {\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if(this._mdf){\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function() {\r\n var numPts = Math.floor(this.pt.v)*2;\r\n var angle = Math.PI*2/numPts;\r\n /*this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts;*/\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = 2*Math.PI*longRad/(numPts*2);\r\n var shortPerimSegment = 2*Math.PI*shortRad/(numPts*2);\r\n var i, rad,roundness,perimSegment, currentAng = -Math.PI/ 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for(i=0;i<numPts;i+=1){\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);\r\n var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);\r\n x += + this.p.v[0];\r\n y += + this.p.v[1];\r\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);\r\n\r\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;*/\r\n longFlag = !longFlag;\r\n currentAng += angle*dir;\r\n }\r\n },\r\n convertPolygonToPath: function() {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = Math.PI*2/numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = 2*Math.PI*rad/(numPts*4);\r\n var i, currentAng = -Math.PI/ 2;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for(i=0;i<numPts;i+=1){\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);\r\n var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);\r\n x += + this.p.v[0];\r\n y += + this.p.v[1];\r\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);\r\n currentAng += angle*dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n }\r\n\r\n }\r\n extendPrototype([DynamicPropertyContainer], StarShapeProperty);\r\n\r\n return StarShapeProperty;\r\n }());\r\n\r\n var RectShapeProperty = (function() {\r\n\r\n function RectShapeProperty(elem,data) {\r\n this.v = shape_pool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollection_pool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem,data.p,1,0,this);\r\n this.s = PropertyFactory.getProp(elem,data.s,1,0,this);\r\n this.r = PropertyFactory.getProp(elem,data.r,0,0,this);\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n };\r\n\r\n RectShapeProperty.prototype = {\r\n convertRectToPath: function (){\r\n var p0 = this.p.v[0], p1 = this.p.v[1], v0 = this.s.v[0]/2, v1 = this.s.v[1]/2;\r\n var round = bm_min(v0,v1,this.r.v);\r\n var cPoint = round*(1-roundCorner);\r\n this.v._length = 0;\r\n\r\n if(this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0+v0, p1-v1+round,p0+v0, p1-v1+round,p0+v0,p1-v1+cPoint,0, true);\r\n this.v.setTripleAt(p0+v0, p1+v1-round,p0+v0, p1+v1-cPoint,p0+v0, p1+v1-round,1, true);\r\n if(round!== 0){\r\n this.v.setTripleAt(p0+v0-round, p1+v1,p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,2, true);\r\n this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,p0-v0+round,p1+v1,3, true);\r\n this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,4, true);\r\n this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,p0-v0,p1-v1+round,5, true);\r\n this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,6, true);\r\n this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,p0+v0-round,p1-v1,7, true);\r\n } else {\r\n this.v.setTripleAt(p0-v0,p1+v1,p0-v0+cPoint,p1+v1,p0-v0,p1+v1,2);\r\n this.v.setTripleAt(p0-v0,p1-v1,p0-v0,p1-v1+cPoint,p0-v0,p1-v1,3);\r\n }\r\n }else{\r\n this.v.setTripleAt(p0+v0,p1-v1+round,p0+v0,p1-v1+cPoint,p0+v0,p1-v1+round,0, true);\r\n if(round!== 0){\r\n this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,1, true);\r\n this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,p0-v0+round,p1-v1,2, true);\r\n this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,3, true);\r\n this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,p0-v0,p1+v1-round,4, true);\r\n this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,5, true);\r\n this.v.setTripleAt(p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,p0+v0-round,p1+v1,6, true);\r\n this.v.setTripleAt(p0+v0,p1+v1-round,p0+v0,p1+v1-round,p0+v0,p1+v1-cPoint,7, true);\r\n } else {\r\n this.v.setTripleAt(p0-v0,p1-v1,p0-v0+cPoint,p1-v1,p0-v0,p1-v1,1, true);\r\n this.v.setTripleAt(p0-v0,p1+v1,p0-v0,p1+v1-cPoint,p0-v0,p1+v1,2, true);\r\n this.v.setTripleAt(p0+v0,p1+v1,p0+v0-cPoint,p1+v1,p0+v0,p1+v1,3, true);\r\n\r\n }\r\n }\r\n },\r\n getValue: function(frameNum){\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if(this._mdf){\r\n this.convertRectToPath();\r\n }\r\n\r\n },\r\n reset: resetShape\r\n }\r\n extendPrototype([DynamicPropertyContainer], RectShapeProperty);\r\n\r\n return RectShapeProperty;\r\n }());\r\n\r\n function getShapeProp(elem,data,type){\r\n var prop;\r\n if(type === 3 || type === 4){\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if(keys.length){\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n }else{\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n }else if(type === 5){\r\n prop = new RectShapeProperty(elem, data);\r\n }else if(type === 6){\r\n prop = new EllShapeProperty(elem, data);\r\n }else if(type === 7){\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if(prop.k){\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\nvar ShapeModifiers = (function(){\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm,factory){\r\n if(!modifiers[nm]){\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm,elem, data){\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier(){}\r\nShapeModifier.prototype.initModifierProperties = function(){};\r\nShapeModifier.prototype.addShapeToModifier = function(){};\r\nShapeModifier.prototype.addShape = function(data){\r\n if(!this.closed){\r\n var shapeData = {shape:data.sh, data: data, localShapeCollection:shapeCollection_pool.newShapeCollection()};\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if(this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function(elem,data){\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem,data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function(){\r\n if(this.elem.globalData.frameId === this.frameId){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\nfunction TrimModifier(){\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function(elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function(shapeData){\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i, len = segments.length, segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength) {\r\n \r\n } else {\r\n var shapeS, shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if(segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function(pathsData) {\r\n var i, len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segments_length_pool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function(_isFirstFrame) {\r\n var s, e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n s = (this.s.v > 1 ? 1 : this.s.v < 0 ? 0 : this.s.v) + o;\r\n e = (this.e.v > 1 ? 1 : this.e.v < 0 ? 0 : this.e.v) + o;\r\n if (s === e) {\r\n\r\n }\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i, len = this.shapes.length, j, jLen;\r\n var pathsData, pathData, totalShapeLength, totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n }\r\n } else if (!((e === 1 && s === 0) || (e===0 && s === 1))){\r\n var segments = [], shapeData, localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s, shapeE = e, addedLength = 0, edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n //if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s:shapeData.totalShapeLength * shapeS,\r\n e:shapeData.totalShapeLength * shapeE\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s:shapeData.totalShapeLength * (shapeS - 1),\r\n e:shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n } else {\r\n segments.push({\r\n s:shapeData.totalShapeLength * shapeS,\r\n e:shapeData.totalShapeLength\r\n });\r\n segments.push({\r\n s:0,\r\n e:shapeData.totalShapeLength * (shapeE - 1)\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData,segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n } \r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n \r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n //Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n //Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {\r\n var i, len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if(newShape){\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if(newShape){\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i, len = shapeData.shape.paths._length, j, jLen;\r\n var addedLength = 0;\r\n var currentLengthData,segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shape_pool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j +=1) {\r\n currentLengthData = lengths[j-1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if(addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\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]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\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]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1],'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shape_pool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\nfunction RoundCornersModifier(){}\r\nextendPrototype([ShapeModifier],RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function(elem,data){\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem,data.r,0,null,this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function(path, round){\r\n var cloned_path = shape_pool.newElement();\r\n cloned_path.c = path.c;\r\n var i, len = path._length;\r\n var currentV,currentI,currentO,closerV, newV,newO,newI,distance,newPosPerc,index = 0;\r\n var vX,vY,oX,oY,iX,iY;\r\n for(i=0;i<len;i+=1){\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if(currentV[0]===currentO[0] && currentV[1]===currentO[1] && currentV[0]===currentI[0] && currentV[1]===currentI[1]){\r\n if((i===0 || i === len - 1) && !path.c){\r\n cloned_path.setTripleAt(currentV[0],currentV[1],currentO[0],currentO[1],currentI[0],currentI[1],index);\r\n /*cloned_path.v[index] = currentV;\r\n cloned_path.o[index] = currentO;\r\n cloned_path.i[index] = currentI;*/\r\n index += 1;\r\n } else {\r\n if(i===0){\r\n closerV = path.v[len-1];\r\n } else {\r\n closerV = path.v[i-1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));\r\n newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;\r\n vX = iX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;\r\n vY = iY = currentV[1]-(currentV[1]-closerV[1])*newPosPerc;\r\n oX = vX-(vX-currentV[0])*roundCorner;\r\n oY = vY-(vY-currentV[1])*roundCorner;\r\n cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);\r\n index += 1;\r\n\r\n if(i === len - 1){\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i+1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));\r\n newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;\r\n vX = oX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;\r\n vY = oY = currentV[1]+(closerV[1]-currentV[1])*newPosPerc;\r\n iX = vX-(vX-currentV[0])*roundCorner;\r\n iY = vY-(vY-currentV[1])*roundCorner;\r\n cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);\r\n index += 1;\r\n }\r\n } else {\r\n cloned_path.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);\r\n index += 1;\r\n }\r\n }\r\n return cloned_path;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function(_isFirstFrame){\r\n var shapePaths;\r\n var i, len = this.shapes.length;\r\n var j, jLen;\r\n var rd = this.rd.v;\r\n\r\n if(rd !== 0){\r\n var shapeData, newPaths, localShapeCollection;\r\n for(i=0;i<len;i+=1){\r\n shapeData = this.shapes[i];\r\n newPaths = shapeData.shape.paths;\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if(!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)){\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for(j=0;j<jLen;j+=1){\r\n localShapeCollection.addShape(this.processPath(shapePaths[j],rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n\r\n }\r\n if(!this.dynamicProperties.length){\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd',RoundCornersModifier);\r\nfunction RepeaterModifier(){}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function(elem,data){\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem,data.c,0,null,this);\r\n this.o = PropertyFactory.getProp(elem,data.o,0,null,this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem,data.tr,this);\r\n this.so = PropertyFactory.getProp(elem,data.tr.so,0,0.01,this);\r\n this.eo = PropertyFactory.getProp(elem,data.tr.eo,0,0.01,this);\r\n this.data = data;\r\n if(!this.dynamicProperties.length){\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv){\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1/scaleX : scaleX, inv ? 1/scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem,arr[pos]);\r\n var cont = 0;\r\n while(pos>0){\r\n pos -= 1;\r\n //this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n cont += 1;\r\n }\r\n if(this.dynamicProperties.length){\r\n this.k = true;\r\n }else{\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function(elements){\r\n var i, len = elements.length;\r\n for(i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if(elements[i].ty === 'gr'){\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function(elements){\r\n var i, len = elements.length;\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {\r\n var i, len = elements.length;\r\n for(i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if(elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function(_isFirstFrame) {\r\n var items, itemsTransform, i, dir, cont;\r\n if(this._mdf || _isFirstFrame){\r\n var copies = Math.ceil(this.c.v);\r\n if(this._groups.length < copies){\r\n while(this._groups.length < copies){\r\n var group = {\r\n it:this.cloneElements(this._elements),\r\n ty:'gr'\r\n };\r\n group.it.push({\"a\":{\"a\":0,\"ix\":1,\"k\":[0,0]},\"nm\":\"Transform\",\"o\":{\"a\":0,\"ix\":7,\"k\":100},\"p\":{\"a\":0,\"ix\":2,\"k\":[0,0]},\"r\":{\"a\":1,\"ix\":6,\"k\":[{s:0,e:0,t:0},{s:0,e:0,t:1}]},\"s\":{\"a\":0,\"ix\":3,\"k\":[100,100]},\"sa\":{\"a\":0,\"ix\":5,\"k\":0},\"sk\":{\"a\":0,\"ix\":4,\"k\":0},\"ty\":\"tr\"});\r\n \r\n this.arr.splice(0,0,group);\r\n this._groups.splice(0,0,group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for(i = 0; i <= this._groups.length - 1; i += 1){\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n cont += 1;\r\n }\r\n \r\n this._currentCopies = copies;\r\n ////\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset%1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var k;\r\n var tMat = this.tr.v.props;\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if(offset > 0) {\r\n while(iteration<roundOffset){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if(offsetModulo){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if(offset < 0) {\r\n while(iteration>roundOffset){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if(offsetModulo){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, - offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j, jLen;\r\n while(cont){\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n if(iteration !== 0){\r\n if((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)){\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\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]);\r\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]);\r\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]);\r\n \r\n for(j=0;j<jLen;j+=1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for(j=0;j<jLen;j+=1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while(cont){\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function(){};\r\n\r\nShapeModifiers.registerModifier('rp',RepeaterModifier);\r\nfunction ShapeCollection(){\r\n\tthis._length = 0;\r\n\tthis._maxLength = 4;\r\n\tthis.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function(shapeData){\r\n\tif(this._length === this._maxLength){\r\n\t\tthis.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n\t\tthis._maxLength *= 2;\r\n\t}\r\n\tthis.shapes[this._length] = shapeData;\r\n\tthis._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function(){\r\n\tvar i;\r\n\tfor(i = 0; i < this._length; i += 1) {\r\n\t\tshape_pool.release(this.shapes[i]);\r\n\t}\r\n\tthis._length = 0;\r\n};\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i, len = data.length || 0, prop;\r\n for(i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem,data[i].v,0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = {n:data[i].n,p:prop};\r\n }\r\n if(!this.k){\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function(forceRender) {\r\n if(this.elem.globalData.frameId === this.frameId && !forceRender){\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0, len = this.dataProps.length;\r\n if(this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for(i=0;i<len;i+=1){\r\n if(this.dataProps[i].n != 'o'){\r\n if(this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n }else{\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n }else{\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\nfunction GradientProperty(elem,data,container){\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p*4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p*4) : data.k.k.length - data.p*4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem,data.k,1,null,this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function(values, points) {\r\n var i = 0, len = this.o.length/2, diff;\r\n while(i < len) {\r\n diff = Math.abs(values[i*4] - values[points*4 + i*2]);\r\n if(diff > 0.01){\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function() {\r\n if (this.o.length/2 !== this.c.length/4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0, len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if(!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function(forceRender){\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if(this.prop._mdf || forceRender){\r\n var i, len = this.data.p*4;\r\n var mult, val;\r\n for(i=0;i<len;i+=1){\r\n mult = i%4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i]*mult);\r\n if(this.c[i] !== val){\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if(this.o.length){\r\n len = this.prop.v.length;\r\n for(i=this.data.p*4;i<len;i+=1){\r\n mult = i%2 === 0 ? 100 : 1;\r\n val = i%2 === 0 ? Math.round(this.prop.v[i]*100):this.prop.v[i];\r\n if(this.o[i-this.data.p*4] !== val){\r\n this.o[i-this.data.p*4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\nvar buildShapeString = function(pathNodes, length, closed, mat) {\r\n\tif(length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i, shapeString = \" M\" + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for(i = 1; i < length; i += 1) {\r\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]);\r\n }\r\n if (closed && length) {\r\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]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n}\r\nvar ImagePreloader = (function(){\r\n\r\n var proxyImage = (function(){\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = '#FF0000';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }())\r\n\r\n function imageLoaded(){\r\n this.loadedAssets += 1;\r\n if(this.loadedAssets === this.totalImages){\r\n if(this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, original_path) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if(assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = original_path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded.bind(this), false);\r\n img.addEventListener('error', function() {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData\r\n }\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb){\r\n this.imagesLoadedCb = cb;\r\n var i, len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if(!assets[i].layers){\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n }\r\n }\r\n }\r\n\r\n function setPath(path){\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path){\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getImage(assetData) {\r\n var i = 0, len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loaded() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n return function ImagePreloader(){\r\n this.loadAssets = loadAssets;\r\n this.setAssetsPath = setAssetsPath;\r\n this.setPath = setPath;\r\n this.loaded = loaded;\r\n this.destroy = destroy;\r\n this.getImage = getImage;\r\n this._createImageData = createImageData;\r\n this._imageLoaded = imageLoaded;\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.loadedAssets = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n };\r\n}());\r\nvar featureSupport = (function(){\r\n\tvar ob = {\r\n\t\tmaskType: true\r\n\t};\r\n\tif (/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)) {\r\n\t ob.maskType = false;\r\n\t}\r\n\treturn ob;\r\n}());\r\nvar filtersFactory = (function(){\r\n\tvar ob = {};\r\n\tob.createFilter = createFilter;\r\n\tob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n\tfunction createFilter(filId){\r\n \tvar fil = createNS('filter');\r\n \tfil.setAttribute('id',filId);\r\n fil.setAttribute('filterUnits','objectBoundingBox');\r\n fil.setAttribute('x','0%');\r\n fil.setAttribute('y','0%');\r\n fil.setAttribute('width','100%');\r\n fil.setAttribute('height','100%');\r\n return fil;\r\n\t}\r\n\r\n\tfunction createAlphaToLuminanceFilter(){\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type','matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters','sRGB');\r\n feColorMatrix.setAttribute('values','0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n\t}\r\n\r\n\treturn ob;\r\n}());\r\nvar assetLoader = (function(){\r\n\r\n\tfunction formatResponse(xhr) {\r\n\t\tif(xhr.response && typeof xhr.response === 'object') {\r\n\t\t\treturn xhr.response;\r\n\t\t} else if(xhr.response && typeof xhr.response === 'string') {\r\n\t\t\treturn JSON.parse(xhr.response);\r\n\t\t} else if(xhr.responseText) {\r\n\t\t\treturn JSON.parse(xhr.responseText);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction loadAsset(path, callback, errorCallback) {\r\n\t\tvar response;\r\n\t\tvar xhr = new XMLHttpRequest();\r\n\t\txhr.open('GET', path, true);\r\n\t\t// set responseType after calling open or IE will break.\r\n\t\txhr.responseType = \"json\";\r\n\t xhr.send();\r\n\t xhr.onreadystatechange = function () {\r\n\t if (xhr.readyState == 4) {\r\n\t if(xhr.status == 200){\r\n\t \tresponse = formatResponse(xhr);\r\n\t \tcallback(response);\r\n\t }else{\r\n\t try{\r\n\t \t\tresponse = formatResponse(xhr);\r\n\t \t\tcallback(response);\r\n\t }catch(err){\r\n\t \tif(errorCallback) {\r\n\t \t\terrorCallback(err);\r\n\t \t}\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\t}\r\n\treturn {\r\n\t\tload: loadAsset\r\n\t}\r\n}())\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem){\r\n this._isFirstFrame = true;\r\n\tthis._hasMaskedPath = false;\r\n\tthis._frameId = -1;\r\n\tthis._textData = textData;\r\n\tthis._renderType = renderType;\r\n this._elem = elem;\r\n\tthis._animatorsData = createSizedArray(this._textData.a.length);\r\n\tthis._pathData = {};\r\n\tthis._moreOptions = {\r\n\t\talignment: {}\r\n\t};\r\n\tthis.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function(){\r\n var i, len = this._textData.a.length, animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for(i=0;i<len;i+=1){\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if(this._textData.p && 'm' in this._textData.p){\r\n this._pathData = {\r\n f: getProp(this._elem,this._textData.p.f,0,0,this),\r\n l: getProp(this._elem,this._textData.p.l,0,0,this),\r\n r: this._textData.p.r,\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem,this._textData.m.a,1,0,this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag){\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if(!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var data = this.data;\r\n var xPos,yPos;\r\n var i, len;\r\n var letters = documentData.l, pathInfo, currentLength, currentPoint, segmentLength, flag, pointInd, segmentInd, prevPoint, points, segments, partialLength, totalLength, perc, tanAngle, mask;\r\n if(this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if(!this._pathData.n || this._pathData._mdf){\r\n var paths = mask.v;\r\n if(this._pathData.r){\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: []\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i]\r\n , paths.v[i + 1]\r\n , [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]\r\n , [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i]\r\n , paths.v[0]\r\n , [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]\r\n , [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps, animatorSelector;\r\n var j, jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n var lastLetter;\r\n\r\n var mult, ind = -1, offf, xPathPos, yPathPos;\r\n var initPathPos = currentLength,initSegmentInd = segmentInd, initPointInd = pointInd, currentLine = -1;\r\n var elemOpacity;\r\n var sc,sw,fc,k;\r\n var lineLength = 0;\r\n var letterSw, letterSc, letterFc, letterM = '', letterP = this.defaultPropsArray, letterO;\r\n\r\n //\r\n if(documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if(animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v*mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v*mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if(animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while(lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for( i = 0; i < len; i += 1) {\r\n\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if(letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos ;\r\n firstLine = false;\r\n lineLength = 0;\r\n if(this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterO = letterSw = letterFc = letterM = '';\r\n letterP = this.defaultPropsArray;\r\n }else{\r\n if(this._hasMaskedPath) {\r\n if(currentLine !== letters[i].line){\r\n switch(documentData.j){\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line])/2;\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += alignment[0] * letters[i].an / 200;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n if(mult.length){\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else{\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n if(mult.length){\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else{\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n\r\n }\r\n }\r\n flag = true;\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate(-alignment[0]*letters[i].an/200, -(alignment[1] * yOff / 100));\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an/2 - letters[i].add;\r\n matrixHelper.translate(-offf,0,0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate(-alignment[0]*letters[i].an/200, -alignment[1]*yOff/100, 0);\r\n }\r\n\r\n lineLength += letters[i].l/2;\r\n for(j=0;j<jLen;j+=1){\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n //This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if(xPos !== 0 || documentData.j !== 0) {\r\n if(this._hasMaskedPath) {\r\n if(mult.length) {\r\n currentLength += animatorProps.t.v*mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v*mult;\r\n }\r\n }else{\r\n if(mult.length) {\r\n xPos += animatorProps.t.v*mult[0];\r\n } else {\r\n xPos += animatorProps.t.v*mult;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lineLength += letters[i].l/2;\r\n if(documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if(documentData.strokeColorAnim) {\r\n if(documentData.sc){\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n }else{\r\n sc = [0,0,0];\r\n }\r\n }\r\n if(documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for(j=0;j<jLen;j+=1){\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n\r\n if(mult.length){\r\n matrixHelper.translate(-animatorProps.a.v[0]*mult[0], -animatorProps.a.v[1]*mult[1], animatorProps.a.v[2]*mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0]*mult, -animatorProps.a.v[1]*mult, animatorProps.a.v[2]*mult);\r\n }\r\n }\r\n }\r\n for(j=0;j<jLen;j+=1){\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n if(mult.length){\r\n matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult[0]),1+((animatorProps.s.v[1]-1)*mult[1]),1);\r\n } else {\r\n matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult),1+((animatorProps.s.v[1]-1)*mult),1);\r\n }\r\n }\r\n }\r\n for(j=0;j<jLen;j+=1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if(mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if(mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n\r\n if(mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v*mult[1]);\r\n }else{\r\n matrixHelper.rotateY(animatorProps.ry.v*mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if(mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v*mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v*mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if(mult.length) {\r\n elemOpacity += ((animatorProps.o.v)*mult[0] - elemOpacity)*mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v)*mult - elemOpacity)*mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if(mult.length) {\r\n sw += animatorProps.sw.v*mult[0];\r\n } else {\r\n sw += animatorProps.sw.v*mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for(k=0;k<3;k+=1){\r\n if(mult.length) {\r\n sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult[0];\r\n } else {\r\n sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if(animatorProps.fc.propType){\r\n for(k=0;k<3;k+=1){\r\n if(mult.length) {\r\n fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult[0];\r\n } else {\r\n fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult;\r\n }\r\n }\r\n }\r\n if(animatorProps.fh.propType){\r\n if(mult.length) {\r\n fc = addHueToRGB(fc,animatorProps.fh.v*mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc,animatorProps.fh.v*mult);\r\n }\r\n }\r\n if(animatorProps.fs.propType){\r\n if(mult.length) {\r\n fc = addSaturationToRGB(fc,animatorProps.fs.v*mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc,animatorProps.fs.v*mult);\r\n }\r\n }\r\n if(animatorProps.fb.propType){\r\n if(mult.length) {\r\n fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for(j=0;j<jLen;j+=1){\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);\r\n if(this._hasMaskedPath) {\r\n if(mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }else{\r\n if(mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n \r\n }\r\n }\r\n }\r\n }\r\n if(documentData.strokeWidthAnim){\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if(documentData.strokeColorAnim){\r\n letterSc = 'rgb('+Math.round(sc[0]*255)+','+Math.round(sc[1]*255)+','+Math.round(sc[2]*255)+')';\r\n }\r\n if(documentData.fillColorAnim && documentData.fc){\r\n letterFc = 'rgb('+Math.round(fc[0]*255)+','+Math.round(fc[1]*255)+','+Math.round(fc[2]*255)+')';\r\n }\r\n\r\n if(this._hasMaskedPath) {\r\n matrixHelper.translate(0,-documentData.ls);\r\n\r\n matrixHelper.translate(0, alignment[1]*yOff/100 + yPos,0);\r\n if (textData.p.p) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate(-rot * Math.PI / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= alignment[0]*letters[i].an/200;\r\n if(letters[i+1] && ind !== letters[i+1].ind){\r\n currentLength += letters[i].an / 2;\r\n currentLength += documentData.tr/1000*documentData.finalSize;\r\n }\r\n }else{\r\n\r\n matrixHelper.translate(xPos,yPos,0);\r\n\r\n if(documentData.ps){\r\n //matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);\r\n }\r\n switch(documentData.j){\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]),0,0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line])/2,0,0);\r\n break;\r\n }\r\n matrixHelper.translate(0,-documentData.ls);\r\n matrixHelper.translate(offf,0,0);\r\n matrixHelper.translate(alignment[0]*letters[i].an/200,alignment[1]*yOff/100,0);\r\n xPos += letters[i].l + documentData.tr/1000*documentData.finalSize;\r\n }\r\n if(renderType === 'html'){\r\n letterM = matrixHelper.toCSS();\r\n }else if(renderType === 'svg'){\r\n letterM = matrixHelper.to2dCSS();\r\n }else{\r\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]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if(renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO,letterSw,letterSc,letterFc,letterM,letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function(){\r\n\tif(this._elem.globalData.frameId === this._frameId){\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n\tvar defaultData = {propType:false};\r\n\tvar getProp = PropertyFactory.getProp;\r\n\tvar textAnimator_animatables = animatorProps.a;\r\n\tthis.a = {\r\n\t\tr: textAnimator_animatables.r ? getProp(elem, textAnimator_animatables.r, 0, degToRads, container) : defaultData,\r\n\t\trx: textAnimator_animatables.rx ? getProp(elem, textAnimator_animatables.rx, 0, degToRads, container) : defaultData,\r\n\t\try: textAnimator_animatables.ry ? getProp(elem, textAnimator_animatables.ry, 0, degToRads, container) : defaultData,\r\n\t\tsk: textAnimator_animatables.sk ? getProp(elem, textAnimator_animatables.sk, 0, degToRads, container) : defaultData,\r\n\t\tsa: textAnimator_animatables.sa ? getProp(elem, textAnimator_animatables.sa, 0, degToRads, container) : defaultData,\r\n\t\ts: textAnimator_animatables.s ? getProp(elem, textAnimator_animatables.s, 1, 0.01, container) : defaultData,\r\n\t\ta: textAnimator_animatables.a ? getProp(elem, textAnimator_animatables.a, 1, 0, container) : defaultData,\r\n\t\to: textAnimator_animatables.o ? getProp(elem, textAnimator_animatables.o, 0, 0.01, container) : defaultData,\r\n\t\tp: textAnimator_animatables.p ? getProp(elem,textAnimator_animatables.p, 1, 0, container) : defaultData,\r\n\t\tsw: textAnimator_animatables.sw ? getProp(elem, textAnimator_animatables.sw, 0, 0, container) : defaultData,\r\n\t\tsc: textAnimator_animatables.sc ? getProp(elem, textAnimator_animatables.sc, 1, 0, container) : defaultData,\r\n\t\tfc: textAnimator_animatables.fc ? getProp(elem, textAnimator_animatables.fc, 1, 0, container) : defaultData,\r\n\t\tfh: textAnimator_animatables.fh ? getProp(elem, textAnimator_animatables.fh, 0, 0, container) : defaultData,\r\n\t\tfs: textAnimator_animatables.fs ? getProp(elem, textAnimator_animatables.fs, 0, 0.01, container) : defaultData,\r\n\t\tfb: textAnimator_animatables.fb ? getProp(elem, textAnimator_animatables.fb, 0, 0.01, container) : defaultData,\r\n\t\tt: textAnimator_animatables.t ? getProp(elem, textAnimator_animatables.t, 0, 0, container) : defaultData\r\n\t};\r\n\r\n\tthis.s = TextSelectorProp.getTextSelectorProp(elem,animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\nfunction LetterProps(o, sw, sc, fc, m, p){\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n \to: true,\r\n \tsw: !!sw,\r\n \tsc: !!sc,\r\n \tfc: !!fc,\r\n \tm: true,\r\n \tp: true\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function(o, sw, sc, fc, m, p) {\r\n\tthis._mdf.o = false;\r\n\tthis._mdf.sw = false;\r\n\tthis._mdf.sc = false;\r\n\tthis._mdf.fc = false;\r\n\tthis._mdf.m = false;\r\n\tthis._mdf.p = false;\r\n\tvar updated = false;\r\n\r\n\tif(this.o !== o) {\r\n\t\tthis.o = o;\r\n\t\tthis._mdf.o = true;\r\n\t\tupdated = true;\r\n\t}\r\n\tif(this.sw !== sw) {\r\n\t\tthis.sw = sw;\r\n\t\tthis._mdf.sw = true;\r\n\t\tupdated = true;\r\n\t}\r\n\tif(this.sc !== sc) {\r\n\t\tthis.sc = sc;\r\n\t\tthis._mdf.sc = true;\r\n\t\tupdated = true;\r\n\t}\r\n\tif(this.fc !== fc) {\r\n\t\tthis.fc = fc;\r\n\t\tthis._mdf.fc = true;\r\n\t\tupdated = true;\r\n\t}\r\n\tif(this.m !== m) {\r\n\t\tthis.m = m;\r\n\t\tthis._mdf.m = true;\r\n\t\tupdated = true;\r\n\t}\r\n\tif(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])) {\r\n\t\tthis.p = p;\r\n\t\tthis._mdf.p = true;\r\n\t\tupdated = true;\r\n\t}\r\n\treturn updated;\r\n};\r\nfunction TextProperty(elem, data){\r\n\tthis._frameId = initialDefaultFrame;\r\n\tthis.pv = '';\r\n\tthis.v = '';\r\n\tthis.kf = false;\r\n\tthis._isFirstFrame = true;\r\n\tthis._mdf = false;\r\n this.data = data;\r\n\tthis.elem = elem;\r\n this.comp = this.elem.comp;\r\n\tthis.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n\tthis.currentData = {\r\n\t\tascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz:0,\r\n ps:null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize:0,\r\n finalText:[],\r\n finalLineHeight: 0,\r\n __complete: false\r\n\r\n\t};\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if(!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0,0];\r\n\r\nTextProperty.prototype.copyData = function(obj, data) {\r\n for(var s in data) {\r\n if(data.hasOwnProperty(s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n}\r\n\r\nTextProperty.prototype.setCurrentData = function(data){\r\n if(!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function() {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function() {\r\n this.kf = this.data.d.k.length > 1;\r\n if(this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n}\r\n\r\nTextProperty.prototype.addEffect = function(effectFunction) {\r\n\tthis.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function(_finalValue) {\r\n if((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if(this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var multipliedValue;\r\n var i, len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for(i = 0; i < len; i += 1) {\r\n //Checking if index changed to prevent creating a new object every time the expression updates.\r\n if(currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if(currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.pv = this.v = this.currentData;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n}\r\n\r\nTextProperty.prototype.getKeyframeValue = function() {\r\n var textKeys = this.data.d.k, textDocumentData;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0, len = textKeys.length;\r\n while(i <= len - 1) {\r\n textDocumentData = textKeys[i].s;\r\n if(i === len - 1 || textKeys[i+1].t > frameNum){\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if(this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function(text) {\r\n var combinedCharacters = FontManager.getCombinedCharacterCodes();\r\n var charactersArray = [];\r\n var i = 0, len = text.length;\r\n while (i < len) {\r\n if (combinedCharacters.indexOf(text.charCodeAt(i)) !== -1) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n}\r\n\r\nTextProperty.prototype.completeTextData = function(documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i, len;\r\n var newLineFlag, index = 0, val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0, currentPos = 0, currentLine = 0, lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j, jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData, cLength = 0;\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal', fStyle = 'normal';\r\n len = styles.length;\r\n var styleName;\r\n for(i=0;i<len;i+=1){\r\n styleName = styles[i].toLowerCase();\r\n switch(styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n }\r\n }\r\n documentData.fWeight = fontData.fWeight || fWeight;\r\n documentData.fStyle = fStyle;\r\n len = documentData.t.length;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = documentData.tr/1000*documentData.finalSize;\r\n var charCode;\r\n if(documentData.sz){\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight, finalText;\r\n while(flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = documentData.tr/1000*documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for(i=0;i<len;i+=1){\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if(finalText[i] === ' '){\r\n lastSpaceIndex = i;\r\n }else if(charCode === 13 || charCode === 3){\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;\r\n }\r\n if(fontManager.chars){\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;\r\n }else{\r\n //tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if(lineWidth + cLength > boxWidth && finalText[i] !== ' '){\r\n if(lastSpaceIndex === -1){\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0,\"\\r\");\r\n //finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n }else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += fontData.ascent*documentData.finalSize/100;\r\n if(this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n\r\n }\r\n lineWidth = - trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0;i < len ;i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (currentChar === ' '){\r\n val = '\\u00A0';\r\n } else if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = - 2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n }else{\r\n val = documentData.finalText[i];\r\n }\r\n if(fontManager.chars){\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;\r\n }else{\r\n //var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n //tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if(currentChar === ' '){\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({l:cLength,an:cLength,add:currentSize,n:newLineFlag, anIndexes:[], val: val, line: currentLine, animatorJustifyOffset: 0});\r\n if(anchorGrouping == 2){\r\n currentSize += cLength;\r\n if(val === '' || val === '\\u00A0' || i === len - 1){\r\n if(val === '' || val === '\\u00A0'){\r\n currentSize -= cLength;\r\n }\r\n while(currentPos<=i){\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n }else if(anchorGrouping == 3){\r\n currentSize += cLength;\r\n if(val === '' || i === len - 1){\r\n if(val === ''){\r\n currentSize -= cLength;\r\n }\r\n while(currentPos<=i){\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n }else{\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if(documentData.sz){\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n }else{\r\n documentData.boxWidth = maxLineWidth;\r\n switch(documentData.j){\r\n case 1:\r\n documentData.justifyOffset = - documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = - documentData.boxWidth/2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a, animatorData, letterData;\r\n jLen = animators.length;\r\n var based, ind, indexes = [];\r\n for(j=0;j<jLen;j+=1){\r\n animatorData = animators[j];\r\n if(animatorData.a.sc){\r\n documentData.strokeColorAnim = true;\r\n }\r\n if(animatorData.a.sw){\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if(animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb){\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for(i=0;i<len;i+=1){\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== '\\u00A0') || (based == 3 && (letterData.n || letterData.val == '\\u00A0' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))){\r\n if(animatorData.s.rn === 1){\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1, newInd;\r\n if(animatorData.s.rn === 1){\r\n for(i = 0; i < len; i += 1){\r\n letterData = letters[i];\r\n if(currentInd != letterData.anIndexes[j]){\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random()*indexes.length),1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize*1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = fontData.ascent*documentData.finalSize/100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function(newData, index) {\r\n\tindex = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function(index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n}\r\n\r\nTextProperty.prototype.canResizeFont = function(_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function(_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nvar TextSelectorProp = (function(){\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorProp(elem,data){\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem,data.s || {k:0},0,0,this);\r\n if('e' in data){\r\n this.e = PropertyFactory.getProp(elem,data.e,0,0,this);\r\n }else{\r\n this.e = {v:100};\r\n }\r\n this.o = PropertyFactory.getProp(elem,data.o || {k:0},0,0,this);\r\n this.xe = PropertyFactory.getProp(elem,data.xe || {k:0},0,0,this);\r\n this.ne = PropertyFactory.getProp(elem,data.ne || {k:0},0,0,this);\r\n this.a = PropertyFactory.getProp(elem,data.a,0,0.01,this);\r\n if(!this.dynamicProperties.length){\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorProp.prototype = {\r\n getMult: function(ind) {\r\n if(this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n //var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var easer = BezierFactory.getBezierEasing(this.ne.v/100,0,1-this.xe.v/100,1).get;\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if(type == 2){\r\n if(e === s){\r\n mult = ind >= e ? 1 : 0;\r\n }else{\r\n mult = max(0,min(0.5/(e-s) + (ind-s)/(e-s),1));\r\n }\r\n mult = easer(mult);\r\n }else if(type == 3){\r\n if(e === s){\r\n mult = ind >= e ? 0 : 1;\r\n }else{\r\n mult = 1 - max(0,min(0.5/(e-s) + (ind-s)/(e-s),1));\r\n }\r\n\r\n mult = easer(mult);\r\n }else if(type == 4){\r\n if(e === s){\r\n mult = 0;\r\n }else{\r\n mult = max(0,min(0.5/(e-s) + (ind-s)/(e-s),1));\r\n if(mult<0.5){\r\n mult *= 2;\r\n }else{\r\n mult = 1 - 2*(mult-0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n }else if(type == 5){\r\n if(e === s){\r\n mult = 0;\r\n }else{\r\n var tot = e - s;\r\n /*ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/\r\n ind = min(max(0,ind+0.5-s),e-s);\r\n var x = -tot/2+ind;\r\n var a = tot/2;\r\n mult = Math.sqrt(1 - (x*x)/(a*a));\r\n }\r\n mult = easer(mult);\r\n }else if(type == 6){\r\n if(e === s){\r\n mult = 0;\r\n }else{\r\n ind = min(max(0,ind+0.5-s),e-s);\r\n mult = (1+(Math.cos((Math.PI+Math.PI*2*(ind)/(e-s)))))/2;\r\n /*\r\n ind = Math.min(Math.max(s,ind),e-1);\r\n mult = (1+(Math.cos((Math.PI+Math.PI*2*(ind-s)/(e-1-s)))))/2;\r\n mult = Math.max(mult,(1/(e-1-s))/(e-1-s));*/\r\n }\r\n mult = easer(mult);\r\n }else {\r\n if(ind >= floor(s)){\r\n if(ind-s < 0){\r\n mult = 1 - (s - ind);\r\n }else{\r\n mult = max(0,min(e-ind,1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n return mult*this.a.v;\r\n },\r\n getValue: function(newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if(newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v/divisor;\r\n var s = this.s.v/divisor + o;\r\n var e = (this.e.v/divisor) + o;\r\n if(s>e){\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n }\r\n }\r\n extendPrototype([DynamicPropertyContainer], TextSelectorProp);\r\n\r\n function getTextSelectorProp(elem, data,arr) {\r\n return new TextSelectorProp(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp\r\n };\r\n}());\r\n\r\n \r\nvar pool_factory = (function() {\r\n\treturn function(initialLength, _create, _release, _clone) {\r\n\r\n\t\tvar _length = 0;\r\n\t\tvar _maxLength = initialLength;\r\n\t\tvar pool = createSizedArray(_maxLength);\r\n\r\n\t\tvar ob = {\r\n\t\t\tnewElement: newElement,\r\n\t\t\trelease: release\r\n\t\t};\r\n\r\n\t\tfunction newElement(){\r\n\t\t\tvar element;\r\n\t\t\tif(_length){\r\n\t\t\t\t_length -= 1;\r\n\t\t\t\telement = pool[_length];\r\n\t\t\t} else {\r\n\t\t\t\telement = _create();\r\n\t\t\t}\r\n\t\t\treturn element;\r\n\t\t}\r\n\r\n\t\tfunction release(element) {\r\n\t\t\tif(_length === _maxLength) {\r\n\t\t\t\tpool = pooling.double(pool);\r\n\t\t\t\t_maxLength = _maxLength*2;\r\n\t\t\t}\r\n\t\t\tif (_release) {\r\n\t\t\t\t_release(element);\r\n\t\t\t}\r\n\t\t\tpool[_length] = element;\r\n\t\t\t_length += 1;\r\n\t\t}\r\n\r\n\t\tfunction clone() {\r\n\t\t\tvar clonedElement = newElement();\r\n\t\t\treturn _clone(clonedElement);\r\n\t\t}\r\n\r\n\t\treturn ob;\r\n\t};\r\n}());\r\n\r\nvar pooling = (function(){\r\n\r\n\tfunction double(arr){\r\n\t\treturn arr.concat(createSizedArray(arr.length));\r\n\t}\r\n\r\n\treturn {\r\n\t\tdouble: double\r\n\t};\r\n}());\r\nvar point_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn createTypedArray('float32', 2);\r\n\t}\r\n\treturn pool_factory(8, create);\r\n}());\r\nvar shape_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn new ShapePath();\r\n\t}\r\n\r\n\tfunction release(shapePath) {\r\n\t\tvar len = shapePath._length, i;\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tpoint_pool.release(shapePath.v[i]);\r\n\t\t\tpoint_pool.release(shapePath.i[i]);\r\n\t\t\tpoint_pool.release(shapePath.o[i]);\r\n\t\t\tshapePath.v[i] = null;\r\n\t\t\tshapePath.i[i] = null;\r\n\t\t\tshapePath.o[i] = null;\r\n\t\t}\r\n\t\tshapePath._length = 0;\r\n\t\tshapePath.c = false;\r\n\t}\r\n\r\n\tfunction clone(shape) {\r\n\t\tvar cloned = factory.newElement();\r\n\t\tvar i, len = shape._length === undefined ? shape.v.length : shape._length;\r\n\t\tcloned.setLength(len);\r\n\t\tcloned.c = shape.c;\r\n\t\tvar pt;\r\n\t\t\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tcloned.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);\r\n\t\t}\r\n\t\treturn cloned;\r\n\t}\r\n\r\n\tvar factory = pool_factory(4, create, release);\r\n\tfactory.clone = clone;\r\n\r\n\treturn factory;\r\n}());\r\nvar shapeCollection_pool = (function(){\r\n\tvar ob = {\r\n\t\tnewShapeCollection: newShapeCollection,\r\n\t\trelease: release\r\n\t};\r\n\r\n\tvar _length = 0;\r\n\tvar _maxLength = 4;\r\n\tvar pool = createSizedArray(_maxLength);\r\n\r\n\tfunction newShapeCollection(){\r\n\t\tvar shapeCollection;\r\n\t\tif(_length){\r\n\t\t\t_length -= 1;\r\n\t\t\tshapeCollection = pool[_length];\r\n\t\t} else {\r\n\t\t\tshapeCollection = new ShapeCollection();\r\n\t\t}\r\n\t\treturn shapeCollection;\r\n\t}\r\n\r\n\tfunction release(shapeCollection) {\r\n\t\tvar i, len = shapeCollection._length;\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tshape_pool.release(shapeCollection.shapes[i]);\r\n\t\t}\r\n\t\tshapeCollection._length = 0;\r\n\r\n\t\tif(_length === _maxLength) {\r\n\t\t\tpool = pooling.double(pool);\r\n\t\t\t_maxLength = _maxLength*2;\r\n\t\t}\r\n\t\tpool[_length] = shapeCollection;\r\n\t\t_length += 1;\r\n\t}\r\n\r\n\treturn ob;\r\n}());\r\nvar segments_length_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn {\r\n\t\t\tlengths: [],\r\n\t\t\ttotalLength: 0\r\n\t\t};\r\n\t}\r\n\r\n\tfunction release(element) {\r\n\t\tvar i, len = element.lengths.length;\r\n\t\tfor(i=0;i<len;i+=1) {\r\n\t\t\tbezier_length_pool.release(element.lengths[i]);\r\n\t\t}\r\n\t\telement.lengths.length = 0;\r\n\t}\r\n\r\n\treturn pool_factory(8, create, release);\r\n}());\r\nvar bezier_length_pool = (function(){\r\n\r\n\tfunction create() {\r\n\t\treturn {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n\t}\r\n\treturn pool_factory(8, create);\r\n}());\r\nfunction BaseRenderer(){}\r\nBaseRenderer.prototype.checkLayers = function(num){\r\n var i, len = this.layers.length, data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i--) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))\r\n {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers:false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function(layer){\r\n switch(layer.ty){\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n }\r\n return this.createNull(layer);\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function(){\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function(){\r\n var i, len = this.layers.length;\r\n for(i=0;i<len;i+=1){\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function(newLayers){\r\n this.completeLayers = false;\r\n var i, len = newLayers.length;\r\n var j, jLen = this.layers.length;\r\n for(i=0;i<len;i+=1){\r\n j = 0;\r\n while(j<jLen){\r\n if(this.layers[j].id == newLayers[i].id){\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function(pInterface){\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function(){\r\n if(!this.globalData.progressiveLoad){\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i=0, len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) {\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if(layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function(element){\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function(assets){\r\n var i, len = assets.length;\r\n for(i=0;i<len;i+=1){\r\n if(assets[i].xt){\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h\r\n }\r\n}\r\nfunction SVGRenderer(animationItem, config){\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel)\r\n }\r\n var defs = createNS( 'defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true,\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || ''\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n\r\n}\r\n\r\nextendPrototype([BaseRenderer],SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data,this.globalData,this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data,this.globalData,this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextElement(data,this.globalData,this);\r\n\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data,this.globalData,this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data,this.globalData,this);\r\n\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data,this.globalData,this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function(animData){\r\n this.svgElement.setAttribute('xmlns','http://www.w3.org/2000/svg');\r\n if(this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox',this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox','0 0 '+animData.w+' '+animData.h);\r\n }\r\n\r\n if(!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width',animData.w);\r\n this.svgElement.setAttribute('height',animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n }\r\n if(this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio',this.renderConfig.preserveAspectRatio);\r\n //this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n //this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n //Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS( 'clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width',animData.w);\r\n rect.setAttribute('height',animData.h);\r\n rect.setAttribute('x',0);\r\n rect.setAttribute('y',0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute(\"clip-path\", \"url(\" + locationHref + \"#\"+maskId+\")\");\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n this.animationItem.wrapper.innerHTML = '';\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i, len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i++) {\r\n if(this.elements[i]){\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function(pos){\r\n var elements = this.elements;\r\n if(elements[pos] || this.layers[pos].ty == 99){\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if(expressionsPlugin){\r\n if(this.layers[pos].ty === 0){\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element,pos);\r\n if(this.layers[pos].tt){\r\n if(!this.elements[pos - 1] || this.elements[pos - 1] === true){\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function(){\r\n while(this.pendingElements.length){\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if(element.data.tt){\r\n var i = 0, len = this.elements.length;\r\n while(i<len){\r\n if(this.elements[i] === element){\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function(num){\r\n if(this.renderedFrame === num || this.destroyed){\r\n return;\r\n }\r\n if(num === null){\r\n num = this.renderedFrame;\r\n }else{\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i, len = this.layers.length;\r\n if(!this.completeLayers){\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i--) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if(this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function(element, pos){\r\n var newElement = element.getBaseElement();\r\n if(!newElement){\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while(i<pos){\r\n if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement()){\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if(nextElement){\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function(){\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function(){\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\nfunction CanvasRenderer(animationItem, config){\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n className: (config && config.className) || ''\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer],CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function(props){\r\n if(props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0){\r\n return;\r\n }\r\n if(!this.renderConfig.clearCanvas){\r\n this.canvasContext.transform(props[0],props[1],props[4],props[5],props[12],props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0],cProps[1],cProps[2],cProps[3],cProps[4],cProps[5],cProps[6],cProps[7],cProps[8],cProps[9],cProps[10],cProps[11],cProps[12],cProps[13],cProps[14],cProps[15]);\r\n //this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0],trProps[1],trProps[4],trProps[5],trProps[12],trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function(op){\r\n /*if(op === 1){\r\n return;\r\n }*/\r\n if(!this.renderConfig.clearCanvas){\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if(this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function(){\r\n if(!this.renderConfig.clearCanvas){\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function(actionFlag){\r\n if(!this.renderConfig.clearCanvas){\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if(actionFlag){\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if(this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i, arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function(actionFlag){\r\n if(!this.renderConfig.clearCanvas){\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if(actionFlag){\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i,arr = this.contextData.cTr.props;\r\n for(i=0;i<16;i+=1){\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0],popped[1],popped[4],popped[5],popped[12],popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if(this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function(animData){\r\n if(this.animationItem.wrapper){\r\n this.animationItem.container = createTag('canvas');\r\n this.animationItem.container.style.width = '100%';\r\n this.animationItem.container.style.height = '100%';\r\n //this.animationItem.container.style.transform = 'translate3d(0,0,0)';\r\n //this.animationItem.container.style.webkitTransform = 'translate3d(0,0,0)';\r\n this.animationItem.container.style.transformOrigin = this.animationItem.container.style.mozTransformOrigin = this.animationItem.container.style.webkitTransformOrigin = this.animationItem.container.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if(this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n }else{\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h:animData.h,\r\n sx:0,\r\n sy:0,\r\n tx:0,\r\n ty:0\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth,elementHeight;\r\n if(this.animationItem.wrapper && this.animationItem.container){\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width',elementWidth * this.renderConfig.dpr );\r\n this.animationItem.container.setAttribute('height',elementHeight * this.renderConfig.dpr);\r\n }else{\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel,animationRel;\r\n if(this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1){\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0,4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth/elementHeight;\r\n animationRel = this.transformCanvas.w/this.transformCanvas.h;\r\n if(animationRel>elementRel && fillType === 'meet' || animationRel<elementRel && fillType === 'slice'){\r\n this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);\r\n }else{\r\n this.transformCanvas.sx = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if(xPos === 'xMid' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){\r\n this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))/2*this.renderConfig.dpr;\r\n } else if(xPos === 'xMax' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){\r\n this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))*this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if(yPos === 'YMid' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){\r\n this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w))/2)*this.renderConfig.dpr;\r\n } else if(yPos === 'YMax' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){\r\n this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w)))*this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n\r\n }else if(this.renderConfig.preserveAspectRatio == 'none'){\r\n this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight/(this.transformCanvas.h/this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }else{\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\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];\r\n /*var i, len = this.elements.length;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\n }*/\r\n this.ctxTransform(this.transformCanvas.props);\r\n this.canvasContext.beginPath();\r\n this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h);\r\n this.canvasContext.closePath();\r\n this.canvasContext.clip();\r\n\r\n this.renderFrame(this.renderedFrame, true);\r\n};\r\n\r\nCanvasRenderer.prototype.destroy = function () {\r\n if(this.renderConfig.clearCanvas) {\r\n this.animationItem.wrapper.innerHTML = '';\r\n }\r\n var i, len = this.layers ? this.layers.length : 0;\r\n for (i = len - 1; i >= 0; i-=1) {\r\n if(this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function(num, forceRender){\r\n if((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1){\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i, len = this.layers.length;\r\n if(!this.completeLayers){\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i++) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if(this.globalData._mdf) {\r\n if(this.renderConfig.clearCanvas === true){\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n }else{\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i-=1) {\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if(this.renderConfig.clearCanvas !== true){\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function(pos){\r\n var elements = this.elements;\r\n if(elements[pos] || this.layers[pos].ty == 99){\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this,this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /*if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n }*/\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function(){\r\n while(this.pendingElements.length){\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function(){\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function(){\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\nfunction HybridRenderer(animationItem, config){\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n\r\n}\r\n\r\nextendPrototype([BaseRenderer],HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function(){\r\n while(this.pendingElements.length){\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function(element, pos){\r\n var newDOMElement = element.getBaseElement();\r\n if(!newDOMElement){\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if(!layer.ddd || !this.supports3d){\r\n if(this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement,pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement, nextLayer, tmpDOMElement;\r\n while(i<pos){\r\n if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement){\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if(nextDOMElement){\r\n if(!layer.ddd || !this.supports3d){\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else {\r\n if(!layer.ddd || !this.supports3d){\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n }\r\n \r\n } else {\r\n this.addTo3dContainer(newDOMElement,pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if(!this.supports3d){\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if(!this.supports3d){\r\n return new SVGTextElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if(!this.supports3d){\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if(!this.supports3d){\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if(!this.supports3d){\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function(pos){\r\n var i = 0, len = this.threeDElements.length;\r\n while(i<len) {\r\n if(this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function(pos, type){\r\n var perspectiveElem = createTag('div');\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if(type === '3d') {\r\n perspectiveElem.style.width = this.globalData.compSize.w+'px';\r\n perspectiveElem.style.height = this.globalData.compSize.h+'px';\r\n perspectiveElem.style.transformOrigin = perspectiveElem.style.mozTransformOrigin = perspectiveElem.style.webkitTransformOrigin = \"50% 50%\";\r\n container.style.transform = container.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n }\r\n \r\n perspectiveElem.appendChild(container);\r\n //this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container:container,\r\n perspectiveElem:perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function(){\r\n var i, len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for(i=0;i<len;i+=1){\r\n if(this.layers[i].ddd && this.layers[i].ty !== 3){\r\n if(currentContainer !== '3d'){\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i,'3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);\r\n } else {\r\n if(currentContainer !== '2d'){\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i,'2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for(i = len - 1; i >= 0; i --) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function(elem,pos){\r\n var i = 0, len = this.threeDElements.length;\r\n while(i<len){\r\n if(pos <= this.threeDElements[i].endPos){\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while(j<pos){\r\n if(this.elements[j] && this.elements[j].getBaseElement){\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if(nextElement){\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function(animData){\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n resizerElem.style.width = animData.w+'px';\r\n resizerElem.style.height = animData.h+'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n resizerElem.style.transformStyle = resizerElem.style.webkitTransformStyle = resizerElem.style.mozTransformStyle = \"flat\";\r\n if(this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n resizerElem.style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width','1');\r\n svg.setAttribute('height','1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n //Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n this.animationItem.wrapper.innerHTML = '';\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i, len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i++) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth/elementHeight;\r\n var animationRel = this.globalData.compSize.w/this.globalData.compSize.h;\r\n var sx,sy,tx,ty;\r\n if(animationRel>elementRel){\r\n sx = elementWidth/(this.globalData.compSize.w);\r\n sy = elementWidth/(this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight-this.globalData.compSize.h*(elementWidth/this.globalData.compSize.w))/2);\r\n }else{\r\n sx = elementHeight/(this.globalData.compSize.h);\r\n sy = elementHeight/(this.globalData.compSize.h);\r\n tx = (elementWidth-this.globalData.compSize.w*(elementHeight/this.globalData.compSize.h))/2;\r\n ty = 0;\r\n }\r\n this.resizerElem.style.transform = this.resizerElem.style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,'+sy+',0,0,0,0,1,0,'+tx+','+ty+',0,1)';\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function(){\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function(){\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function(){\r\n this.buildAllItems();\r\n if(this.camera){\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i, len = this.threeDElements.length;\r\n for(i=0;i<len;i+=1){\r\n this.threeDElements[i].perspectiveElem.style.perspective = this.threeDElements[i].perspectiveElem.style.webkitPerspective = Math.sqrt(Math.pow(cWidth,2) + Math.pow(cHeight,2)) + 'px';\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function(assets){\r\n var i, len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for(i=0;i<len;i+=1){\r\n if(assets[i].xt){\r\n var comp = this.createComp(assets[i],floatingContainer,this.globalData.comp,null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nfunction MaskElement(data,element,globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i, len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n\r\n var path, properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j, jLen;\r\n var layerId = createElementID();\r\n var rect, expansor, feMorph,x;\r\n var maskType = 'clipPath', maskRef = 'clip-path';\r\n for (i = 0; i < len; i++) {\r\n\r\n if((properties[i].mode !== 'a' && properties[i].mode !== 'n')|| properties[i].inv || properties[i].o.k !== 100){\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if((properties[i].mode == 's' || properties[i].mode == 'i') && count === 0){\r\n rect = createNS( 'rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS( 'path');\r\n if(properties[i].mode == 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element,properties[i],3),\r\n elem: path,\r\n lastPath: ''\r\n };\r\n defs.appendChild(path);\r\n continue;\r\n }\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000':'#ffffff');\r\n path.setAttribute('clip-rule','nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element,properties[i].x,0,null,this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id',filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator','dilate');\r\n feMorph.setAttribute('in','SourceGraphic');\r\n feMorph.setAttribute('radius','0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000':'#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator:'',\r\n filterId:filterID,\r\n lastRadius:0\r\n };\r\n if(properties[i].mode == 'i'){\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for(j=0;j<jLen;j+=1){\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type','alpha');\r\n mask.setAttribute('id',layerId+'_'+count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask','url(' + locationHref + '#'+layerId+'_'+count+')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n }else{\r\n currentMasks.push(path);\r\n }\r\n if(properties[i].inv && !this.solidPath){\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),\r\n prop:ShapePropertyFactory.getShapeProp(this.element,properties[i],3),\r\n invRect: rect\r\n };\r\n if(!this.viewData[i].prop.k){\r\n this.drawPath(properties[i],this.viewData[i].prop.v,this.viewData[i]);\r\n }\r\n }\r\n\r\n this.maskElement = createNS( maskType);\r\n\r\n len = currentMasks.length;\r\n for(i=0;i<len;i+=1){\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if(count > 0){\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, \"url(\" + locationHref + \"#\" + layerId + \")\");\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function(pos){\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i, len = this.masksProperties.length;\r\n for (i = 0; i < len; i++) {\r\n if(this.viewData[i].prop._mdf || isFirstFrame){\r\n this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);\r\n }\r\n if(this.viewData[i].op._mdf || isFirstFrame){\r\n this.viewData[i].elem.setAttribute('fill-opacity',this.viewData[i].op.v);\r\n }\r\n if(this.masksProperties[i].mode !== 'n'){\r\n if(this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)){\r\n this.viewData[i].invRect.setAttribute('x', -finalMat.props[12]);\r\n this.viewData[i].invRect.setAttribute('y', -finalMat.props[13]);\r\n }\r\n if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){\r\n var feMorph = this.storedData[i].expan;\r\n if(this.storedData[i].x.v < 0){\r\n if(this.storedData[i].lastOperator !== 'erode'){\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter','url(' + locationHref + '#'+this.storedData[i].filterId+')');\r\n }\r\n feMorph.setAttribute('radius',-this.storedData[i].x.v);\r\n }else{\r\n if(this.storedData[i].lastOperator !== 'dilate'){\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter',null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);\r\n\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function(){\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w ;\r\n path += ' v' + this.globalData.compSize.h ;\r\n path += ' h-' + this.globalData.compSize.w ;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function(pathData,pathNodes,viewData){\r\n var pathString = \" M\"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n var i, len;\r\n len = pathNodes._length;\r\n for(i=1;i<len;i+=1){\r\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];\r\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];\r\n }\r\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];\r\n if(pathNodes.c && len > 1){\r\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];\r\n }\r\n //pathNodes.__renderedString = pathString;\r\n\r\n if(viewData.lastPath !== pathString){\r\n var pathShapeValue = '';\r\n if(viewData.elem){\r\n if(pathNodes.c){\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d',pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function(){\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file \r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement(){}\r\n\r\nHierarchyElement.prototype = {\r\n\t/**\r\n * @function \r\n * Initializes hierarchy properties\r\n *\r\n */\r\n\tinitHierarchy: function() {\r\n\t\t//element's parent list\r\n\t this.hierarchy = [];\r\n\t //if element is parent of another layer _isParent will be true\r\n\t this._isParent = false;\r\n\t this.checkParenting();\r\n\t},\r\n\t/**\r\n * @function \r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */ \r\n\tsetHierarchy: function(hierarchy){\r\n\t this.hierarchy = hierarchy;\r\n\t},\r\n\t/**\r\n * @function \r\n * Sets layer as parent.\r\n *\r\n */ \r\n\tsetAsParent: function() {\r\n\t this._isParent = true;\r\n\t},\r\n\t/**\r\n * @function \r\n * Searches layer's parenting chain\r\n *\r\n */ \r\n\tcheckParenting: function(){\r\n\t if (this.data.parent !== undefined){\r\n\t this.comp.buildElementParenting(this, this.data.parent, []);\r\n\t }\r\n\t}\r\n};\r\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 */\r\n\r\nfunction FrameElement(){}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function \r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function(){\r\n //set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n //list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\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 */\r\n prepareProperties: function(num, isVisible) {\r\n var i, len = this.dynamicProperties.length;\r\n for (i = 0;i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function(prop) {\r\n if(this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n }\r\n};\r\nfunction TransformElement(){}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function() {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {o:0},\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix()\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n //TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n //this.createElements();\r\n }\r\n },\r\n renderTransform: function() {\r\n\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0, len = this.hierarchy.length;\r\n //Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n \r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function(pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i, len = transforms.length,ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n //ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix()\r\n};\r\nfunction RenderableElement(){\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function() {\r\n //layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n //layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n //list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function(component) {\r\n if(this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function(component) {\r\n if(this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function(num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function(){\r\n if(this.finalTransform.mProp.o.v <= 0) {\r\n if(!this.isTransparent && this.globalData.renderConfig.hideOnTransparent){\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if(this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\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 */\r\n checkLayerLimits: function(num) {\r\n if(this.data.ip - this.data.st <= num && this.data.op - this.data.st > num)\r\n {\r\n if(this.isInRange !== true){\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else {\r\n if(this.isInRange !== false){\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n }\r\n },\r\n renderRenderable: function() {\r\n var i, len = this.renderableComponents.length;\r\n for(i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /*this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame);*/\r\n },\r\n sourceRectAtTime: function(){\r\n return {\r\n top:0,\r\n left:0,\r\n width:100,\r\n height:100\r\n };\r\n },\r\n getLayerSize: function(){\r\n if(this.data.ty === 5){\r\n return {w:this.data.textData.width,h:this.data.textData.height};\r\n }else{\r\n return {w:this.data.width,h:this.data.height};\r\n }\r\n }\r\n};\r\nfunction RenderableDOMElement() {}\r\n\r\n(function(){\r\n var _prototype = {\r\n initElement: function(data,globalData,comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function(){\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function(){\r\n if (this.isInRange && !this.isTransparent){\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function() {\r\n //If it is exported as hidden (data.hd === true) no need to render\r\n //If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function() {},\r\n prepareFrame: function(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function(){\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n }\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\nfunction ProcessedElement(element, position) {\r\n\tthis.elem = element;\r\n\tthis.pos = position;\r\n}\r\nfunction SVGStyleData(data, level) {\r\n\tthis.data = data;\r\n\tthis.type = data.ty;\r\n\tthis.d = '';\r\n\tthis.lvl = level;\r\n\tthis._mdf = false;\r\n\tthis.closed = data.hd === true;\r\n\tthis.pElem = createNS('path');\r\n\tthis.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function() {\r\n\tthis.d = '';\r\n\tthis._mdf = false;\r\n};\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n //TODO find if there are some cases where _isAnimated can be false. \r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0, len = transformers.length;\r\n while(i < len) {\r\n \tif(transformers[i].mProps.dynamicProperties.length) {\r\n \t\tthis._isAnimated = true;\r\n \t\tbreak;\r\n \t}\r\n \ti += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function() {\r\n this._isAnimated = true;\r\n}\r\nfunction SVGTransformData(mProps, op, container) {\r\n\tthis.transform = {\r\n\t\tmProps: mProps,\r\n\t\top: op,\r\n\t\tcontainer: container\r\n\t};\r\n\tthis.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\nfunction SVGStrokeStyleData(elem, data, styleOb){\r\n\tthis.initDynamicPropertyContainer(elem);\r\n\tthis.getValue = this.iterateDynamicProperties;\r\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n\tthis.w = PropertyFactory.getProp(elem,data.w,0,null,this);\r\n\tthis.d = new DashProperty(elem,data.d||{},'svg',this);\r\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\r\n\tthis.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\nfunction SVGFillStyleData(elem, data, styleOb){\r\n\tthis.initDynamicPropertyContainer(elem);\r\n\tthis.getValue = this.iterateDynamicProperties;\r\n\tthis.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n\tthis.c = PropertyFactory.getProp(elem,data.c,1,255,this);\r\n\tthis.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\nfunction SVGGradientFillStyleData(elem, data, styleOb){\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb){\r\n this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);\r\n this.s = PropertyFactory.getProp(elem,data.s,1,null,this);\r\n this.e = PropertyFactory.getProp(elem,data.e,1,null,this);\r\n this.h = PropertyFactory.getProp(elem,data.h||{k:0},0,0.01,this);\r\n this.a = PropertyFactory.getProp(elem,data.a||{k:0},0,degToRads,this);\r\n this.g = new GradientProperty(elem,data.g,this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function(pathElement,data){\r\n\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id',gradientId);\r\n gfill.setAttribute('spreadMethod','pad');\r\n gfill.setAttribute('gradientUnits','userSpaceOnUse');\r\n var stops = [];\r\n var stop, j, jLen;\r\n jLen = data.g.p*4;\r\n for(j=0;j<jLen;j+=4){\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+gradientId+')');\r\n \r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb){\r\n if(this.g._hasOpacity && !this.g._collapsable){\r\n var stop, j, jLen;\r\n var mask = createNS(\"mask\");\r\n var maskElement = createNS( 'path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id',maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id',opacityId);\r\n opFill.setAttribute('spreadMethod','pad');\r\n opFill.setAttribute('gradientUnits','userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for(j=data.g.p*4;j<jLen;j+=2){\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color','rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+opacityId+')');\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb){\r\n\tthis.initDynamicPropertyContainer(elem);\r\n\tthis.getValue = this.iterateDynamicProperties;\r\n\tthis.w = PropertyFactory.getProp(elem,data.w,0,null,this);\r\n\tthis.d = new DashProperty(elem,data.d||{},'svg',this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\nfunction ShapeGroupData() {\r\n\tthis.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\nvar SVGElementsRenderer = (function() {\r\n\tvar _identityMatrix = new Matrix();\r\n\tvar _matrixHelper = new Matrix();\r\n\r\n\tvar ob = {\r\n\t\tcreateRenderFunction: createRenderFunction\r\n\t}\r\n\r\n\tfunction createRenderFunction(data) {\r\n\t var ty = data.ty;\r\n\t switch(data.ty) {\r\n\t case 'fl':\r\n\t return renderFill;\r\n\t case 'gf':\r\n\t return renderGradient;\r\n\t case 'gs':\r\n\t return renderGradientStroke;\r\n\t case 'st':\r\n\t return renderStroke;\r\n\t case 'sh':\r\n\t case 'el':\r\n\t case 'rc':\r\n\t case 'sr':\r\n\t return renderPath;\r\n\t case 'tr':\r\n\t return renderContentTransform;\r\n\t }\r\n\t}\r\n\r\n\tfunction renderContentTransform(styleData, itemData, isFirstFrame) {\r\n\t if(isFirstFrame || itemData.transform.op._mdf){\r\n\t itemData.transform.container.setAttribute('opacity',itemData.transform.op.v);\r\n\t }\r\n\t if(isFirstFrame || itemData.transform.mProps._mdf){\r\n\t itemData.transform.container.setAttribute('transform',itemData.transform.mProps.v.to2dCSS());\r\n\t }\r\n\t}\r\n\r\n\tfunction renderPath(styleData, itemData, isFirstFrame) {\r\n\t var j, jLen,pathStringTransformed,redraw,pathNodes,l, lLen = itemData.styles.length;\r\n\t var lvl = itemData.lvl;\r\n\t var paths, mat, props, iterations, k;\r\n\t for(l=0;l<lLen;l+=1){\r\n\t redraw = itemData.sh._mdf || isFirstFrame;\r\n\t if(itemData.styles[l].lvl < lvl){\r\n\t mat = _matrixHelper.reset();\r\n\t iterations = lvl - itemData.styles[l].lvl;\r\n\t k = itemData.transformers.length-1;\r\n\t while(!redraw && iterations > 0) {\r\n\t redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n\t iterations --;\r\n\t k --;\r\n\t }\r\n\t if(redraw) {\r\n\t iterations = lvl - itemData.styles[l].lvl;\r\n\t k = itemData.transformers.length-1;\r\n\t while(iterations > 0) {\r\n\t props = itemData.transformers[k].mProps.v.props;\r\n\t mat.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\t iterations --;\r\n\t k --;\r\n\t }\r\n\t }\r\n\t } else {\r\n\t mat = _identityMatrix;\r\n\t }\r\n\t paths = itemData.sh.paths;\r\n\t jLen = paths._length;\r\n\t if(redraw){\r\n\t pathStringTransformed = '';\r\n\t for(j=0;j<jLen;j+=1){\r\n\t pathNodes = paths.shapes[j];\r\n\t if(pathNodes && pathNodes._length){\r\n\t pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n\t }\r\n\t }\r\n\t itemData.caches[l] = pathStringTransformed;\r\n\t } else {\r\n\t pathStringTransformed = itemData.caches[l];\r\n\t }\r\n\t itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n\t itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n\t }\r\n\t}\r\n\r\n\tfunction renderFill (styleData,itemData, isFirstFrame){\r\n\t var styleElem = itemData.style;\r\n\r\n\t if(itemData.c._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('fill','rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')');\r\n\t }\r\n\t if(itemData.o._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('fill-opacity',itemData.o.v);\r\n\t }\r\n\t};\r\n\r\n\tfunction renderGradientStroke (styleData, itemData, isFirstFrame) {\r\n\t renderGradient(styleData, itemData, isFirstFrame);\r\n\t renderStroke(styleData, itemData, isFirstFrame);\r\n\t}\r\n\r\n\tfunction renderGradient(styleData, itemData, isFirstFrame) {\r\n\t var gfill = itemData.gf;\r\n\t var hasOpacity = itemData.g._hasOpacity;\r\n\t var pt1 = itemData.s.v, pt2 = itemData.e.v;\r\n\r\n\t if (itemData.o._mdf || isFirstFrame) {\r\n\t var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n\t itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n\t }\r\n\t if (itemData.s._mdf || isFirstFrame) {\r\n\t var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n\t var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n\t gfill.setAttribute(attr1, pt1[0]);\r\n\t gfill.setAttribute(attr2, pt1[1]);\r\n\t if (hasOpacity && !itemData.g._collapsable) {\r\n\t itemData.of.setAttribute(attr1, pt1[0]);\r\n\t itemData.of.setAttribute(attr2, pt1[1]);\r\n\t }\r\n\t }\r\n\t var stops, i, len, stop;\r\n\t if (itemData.g._cmdf || isFirstFrame) {\r\n\t stops = itemData.cst;\r\n\t var cValues = itemData.g.c;\r\n\t len = stops.length;\r\n\t for (i = 0; i < len; i += 1){\r\n\t stop = stops[i];\r\n\t stop.setAttribute('offset', cValues[i * 4] + '%');\r\n\t stop.setAttribute('stop-color','rgb('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ')');\r\n\t }\r\n\t }\r\n\t if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n\t var oValues = itemData.g.o;\r\n\t if(itemData.g._collapsable) {\r\n\t stops = itemData.cst;\r\n\t } else {\r\n\t stops = itemData.ost;\r\n\t }\r\n\t len = stops.length;\r\n\t for (i = 0; i < len; i += 1) {\r\n\t stop = stops[i];\r\n\t if(!itemData.g._collapsable) {\r\n\t stop.setAttribute('offset', oValues[i * 2] + '%');\r\n\t }\r\n\t stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n\t }\r\n\t }\r\n\t if (styleData.t === 1) {\r\n\t if (itemData.e._mdf || isFirstFrame) {\r\n\t gfill.setAttribute('x2', pt2[0]);\r\n\t gfill.setAttribute('y2', pt2[1]);\r\n\t if (hasOpacity && !itemData.g._collapsable) {\r\n\t itemData.of.setAttribute('x2', pt2[0]);\r\n\t itemData.of.setAttribute('y2', pt2[1]);\r\n\t }\r\n\t }\r\n\t } else {\r\n\t var rad;\r\n\t if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n\t rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n\t gfill.setAttribute('r', rad);\r\n\t if(hasOpacity && !itemData.g._collapsable){\r\n\t itemData.of.setAttribute('r', rad);\r\n\t }\r\n\t }\r\n\t if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n\t if (!rad) {\r\n\t rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n\t }\r\n\t var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n\t var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;\r\n\t var dist = rad * percent;\r\n\t var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n\t var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n\t gfill.setAttribute('fx', x);\r\n\t gfill.setAttribute('fy', y);\r\n\t if (hasOpacity && !itemData.g._collapsable) {\r\n\t itemData.of.setAttribute('fx', x);\r\n\t itemData.of.setAttribute('fy', y);\r\n\t }\r\n\t }\r\n\t //gfill.setAttribute('fy','200');\r\n\t }\r\n\t};\r\n\r\n\tfunction renderStroke(styleData, itemData, isFirstFrame) {\r\n\t var styleElem = itemData.style;\r\n\t var d = itemData.d;\r\n\t if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n\t styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n\t styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n\t }\r\n\t if(itemData.c && (itemData.c._mdf || isFirstFrame)){\r\n\t styleElem.pElem.setAttribute('stroke','rgb(' + bm_floor(itemData.c.v[0]) + ',' + bm_floor(itemData.c.v[1]) + ',' + bm_floor(itemData.c.v[2]) + ')');\r\n\t }\r\n\t if(itemData.o._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n\t }\r\n\t if(itemData.w._mdf || isFirstFrame){\r\n\t styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\t if(styleElem.msElem){\r\n\t styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\treturn ob;\r\n}())\r\nfunction ShapeTransformManager() {\r\n\tthis.sequences = {};\r\n\tthis.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n\taddTransformSequence: function(transforms) {\r\n\t\tvar i, len = transforms.length;\r\n\t\tvar key = '_';\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\tkey += transforms[i].transform.key + '_';\r\n\t\t}\r\n\t\tvar sequence = this.sequences[key];\r\n\t\tif(!sequence) {\r\n\t\t\tsequence = {\r\n\t\t\t\ttransforms: [].concat(transforms),\r\n\t\t\t\tfinalTransform: new Matrix(),\r\n\t\t\t\t_mdf: false\r\n\t\t\t};\r\n\t\t\tthis.sequences[key] = sequence;\r\n\t\t\tthis.sequenceList.push(sequence);\r\n\t\t}\r\n\t\treturn sequence;\r\n\t},\r\n\tprocessSequence: function(sequence, isFirstFrame) {\r\n\t\tvar i = 0, len = sequence.transforms.length, _mdf = isFirstFrame;\r\n\t\twhile (i < len && !isFirstFrame) {\r\n\t\t\tif (sequence.transforms[i].transform.mProps._mdf) {\r\n\t\t\t\t_mdf = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\ti += 1\r\n\t\t}\r\n\t\tif (_mdf) {\r\n\t\t\tvar props;\r\n\t\t\tsequence.finalTransform.reset();\r\n\t\t\tfor (i = len - 1; i >= 0; i -= 1) {\r\n\t\t props = sequence.transforms[i].transform.mProps.v.props;\r\n\t\t sequence.finalTransform.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tsequence._mdf = _mdf;\r\n\t\t\r\n\t},\r\n\tprocessSequences: function(isFirstFrame) {\r\n\t\tvar i, len = this.sequenceList.length;\r\n\t\tfor (i = 0; i < len; i += 1) {\r\n\t\t\tthis.processSequence(this.sequenceList[i], isFirstFrame);\r\n\t\t}\r\n\r\n\t},\r\n\tgetNewKey: function() {\r\n\t\treturn '_' + this.transform_key_count++;\r\n\t}\r\n}\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0,0,0,0,0,0];\r\n var ty = 4;\r\n if(data.ty == 'rc'){\r\n ty = 5;\r\n }else if(data.ty == 'el'){\r\n ty = 6;\r\n }else if(data.ty == 'sr'){\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element,data,ty,element);\r\n var i , len = styles.length,styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: []\r\n }\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\nfunction BaseElement(){\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function(){\r\n if(!this.data.hasMask){\r\n return false;\r\n }\r\n var i = 0, len = this.data.masksProperties.length;\r\n while(i<len) {\r\n if((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function(){\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if(this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this,this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if(this.data.ty === 0 || this.data.xt){\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if(this.data.ty === 4){\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData,this.itemsData,this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if(this.data.ty === 5){\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function(){\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function(data, globalData, comp){\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n \r\n //Stretch factor for old animations missing this property.\r\n if(!this.data.sr){\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data,this,this.dynamicProperties);\r\n \r\n },\r\n getType: function(){\r\n return this.type;\r\n }\r\n ,sourceRectAtTime: function(){}\r\n}\r\nfunction NullElement(data,globalData,comp){\r\n this.initFrame();\r\n\tthis.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function(num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function() {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function() {\r\n\treturn null;\r\n};\r\n\r\nNullElement.prototype.destroy = function() {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function() {\r\n};\r\n\r\nNullElement.prototype.hide = function() {\r\n};\r\n\r\nextendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement], NullElement);\r\n\r\nfunction SVGBaseElement(){\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function() {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function(){\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n //If this layer acts as a mask for the following layer\r\n var filId, fil, gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) {\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha');\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) {\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter','url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if(this.data.td == 2) {\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type','alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n ////\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /*var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix);*/\r\n ////\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in','SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type','table');\r\n feFunc.setAttribute('tableValues','1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n ////\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x','0');\r\n alphaRect.setAttribute('y','0');\r\n alphaRect.setAttribute('fill','#ffffff');\r\n alphaRect.setAttribute('opacity','0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#'+filId+')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n //Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS( 'clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d','M0,0 L' + this.data.w + ',0' + ' L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id',clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path','url(' + locationHref + '#'+clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path','url(' + locationHref + '#'+clipId+')');\r\n }\r\n \r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n\r\n },\r\n renderElement: function() {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function() {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function() {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function() {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function(id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute(\"mask\", \"url(\" + locationHref + \"#\" + id + \")\");\r\n }\r\n};\r\nfunction IShapeElement(){\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function(data) {\r\n var i, len = this.shapeModifiers.length;\r\n for(i=0;i<len;i+=1){\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function(data) {\r\n var i = 0, len = this.shapeModifiers.length;\r\n while(i < len) {\r\n if(this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function() {\r\n if(!this.shapeModifiers.length){\r\n return;\r\n }\r\n var i, len = this.shapes.length;\r\n for(i=0;i<len;i+=1){\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n for(i=len-1;i>=0;i-=1){\r\n this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n }\r\n },\r\n lcEnum: {\r\n '1': 'butt',\r\n '2': 'round',\r\n '3': 'square'\r\n },\r\n ljEnum: {\r\n '1': 'miter',\r\n '2': 'round',\r\n '3': 'bevel'\r\n },\r\n searchProcessedElement: function(elem){\r\n var elements = this.processedElements;\r\n var i = 0, len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function(elem, pos){\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while(i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function(num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n }\r\n};\r\nfunction ITextElement(){\r\n}\r\n\r\nITextElement.prototype.initElement = function(data,globalData,comp){\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function(num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if(this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function(matrixHelper, shapes) {\r\n var j,jLen = shapes.length;\r\n var k, kLen, pathNodes;\r\n var shapeStr = '';\r\n for(j=0;j<jLen;j+=1){\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function(newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function(_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function(_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if(documentData.ps){\r\n matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);\r\n }\r\n matrixHelper.translate(0,-documentData.ls,0);\r\n switch(documentData.j){\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]),0,0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber] )/2,0,0);\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\n\r\nITextElement.prototype.buildColor = function(colorData) {\r\n return 'rgb(' + Math.round(colorData[0]*255) + ',' + Math.round(colorData[1]*255) + ',' + Math.round(colorData[2]*255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function(){\r\n \r\n};\r\nfunction ICompElement(){}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function(data,globalData,comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if(this.data.xt || !globalData.progressiveLoad){\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\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};*/\r\n\r\nICompElement.prototype.prepareFrame = function(num){\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if(!this.isInRange && !this.data.xt){\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if(timeRemapped === this.data.op){\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num/this.data.sr;\r\n }\r\n var i,len = this.elements.length;\r\n if(!this.completeLayers){\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n //This iteration needs to be backwards because of how expressions connect between each other\r\n for( i = len - 1; i >= 0; i -= 1 ){\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if(this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function() {\r\n var i,len = this.layers.length;\r\n for( i = 0; i < len; i += 1 ){\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function(elems){\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function(){\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function(){\r\n var i,len = this.layers.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function(){\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\nfunction IImageElement(data,globalData,comp){\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data,globalData,comp);\r\n this.sourceRect = {top:0,left:0,width:this.assetData.w,height:this.assetData.h};\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function(){\r\n\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width',this.assetData.w+\"px\");\r\n this.innerElem.setAttribute('height',this.assetData.h+\"px\");\r\n this.innerElem.setAttribute('preserveAspectRatio',this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);\r\n \r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function() {\r\n\treturn this.sourceRect;\r\n}\r\nfunction ISolidElement(data,globalData,comp){\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function(){\r\n\r\n var rect = createNS('rect');\r\n ////rect.style.width = this.data.sw;\r\n ////rect.style.height = this.data.sh;\r\n ////rect.style.fill = this.data.sc;\r\n rect.setAttribute('width',this.data.sw);\r\n rect.setAttribute('height',this.data.sh);\r\n rect.setAttribute('fill',this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\nfunction SVGCompElement(data,globalData,comp){\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n //this.layerElement = createNS('g');\r\n this.initElement(data,globalData,comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\nfunction SVGTextElement(data,globalData,comp){\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data,globalData,comp);\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], SVGTextElement);\r\n\r\nSVGTextElement.prototype.createContent = function(){\r\n\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextElement.prototype.buildTextContents = function(textArray) {\r\n var i = 0, len = textArray.length;\r\n var textContents = [], currentTextContent = '';\r\n while (i < len) {\r\n if(textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n}\r\n\r\nSVGTextElement.prototype.buildNewText = function(){\r\n var i, len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if(documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n }else{\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if(documentData.sc){\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if(fontData.fClass){\r\n this.layerElement.setAttribute('class',fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight, fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('arial-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes, shapeStr = '', singleShape = this.data.singleShape;\r\n var xPos = 0, yPos = 0, firstLine = true;\r\n var trackingOffset = documentData.tr/1000*documentData.finalSize;\r\n if(singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch(documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor',justify);\r\n tElement.setAttribute('letter-spacing',trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for ( i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n \r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData, charData;\r\n for (i = 0; i < len; i += 1) {\r\n if(!usesGlyphs || !singleShape || i === 0){\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs?'path':'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin','round');\r\n tSpan.setAttribute('stroke-miterlimit','4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n \r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if(letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n //xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if(usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = charData && charData.data || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if(!singleShape){\r\n tSpan.setAttribute('d',this.createPathShape(matrixHelper,shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper,shapes);\r\n }\r\n } else {\r\n if(singleShape) {\r\n tSpan.setAttribute(\"transform\", \"translate(\" + matrixHelper.props[12] + \",\" + matrixHelper.props[13] + \")\");\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\",\"preserve\");\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d',shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length){\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n \r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextElement.prototype.sourceRectAtTime = function(time){\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if(this._sizeChanged){\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextElement.prototype.renderInnerContent = function(){\r\n\r\n if(!this.data.singleShape){\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag){\r\n this._sizeChanged = true;\r\n var i,len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter, textSpan;\r\n for(i=0;i<len;i+=1){\r\n if(letters[i].n){\r\n continue;\r\n }\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if(renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform',renderedLetter.m);\r\n }\r\n if(renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity',renderedLetter.o);\r\n }\r\n if(renderedLetter._mdf.sw){\r\n textSpan.setAttribute('stroke-width',renderedLetter.sw);\r\n }\r\n if(renderedLetter._mdf.sc){\r\n textSpan.setAttribute('stroke',renderedLetter.sc);\r\n }\r\n if(renderedLetter._mdf.fc){\r\n textSpan.setAttribute('fill',renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n};\r\nfunction SVGShapeElement(data,globalData,comp){\r\n //List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n //List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n //List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n //List of items in shape tree\r\n this.itemsData = [];\r\n //List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data,globalData,comp);\r\n //Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n //Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function() {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function(){};\r\n\r\nSVGShapeElement.prototype.createContent = function(){\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function(){\r\n var i, len = this.shapes.length, shape;\r\n var j, jLen = this.stylesList.length;\r\n var style, count = 0;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for(j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for(i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if(shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if(tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n}\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function(shapes){\r\n var i, len = shapes.length;\r\n for(i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n}\r\n\r\nSVGShapeElement.prototype.createStyleElement = function(data, level){\r\n //TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if(data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if(data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if(data.ty === 'gf' || data.ty === 'gs') {\r\n var gradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new gradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask','url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n \r\n if(data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');\r\n pathElement.setAttribute('stroke-linejoin',this.ljEnum[data.lj] || 'round');\r\n pathElement.setAttribute('fill-opacity','0');\r\n if(data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit',data.ml);\r\n }\r\n }\r\n\r\n if(data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if(data.ln){\r\n pathElement.setAttribute('id',data.ln);\r\n }\r\n if(data.cl){\r\n pathElement.setAttribute('class',data.cl);\r\n }\r\n if(data.bm){\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function(data) {\r\n var elementData = new ShapeGroupData();\r\n if(data.ln){\r\n elementData.gr.setAttribute('id',data.ln);\r\n }\r\n if(data.cl){\r\n elementData.gr.setAttribute('class',data.cl);\r\n }\r\n if(data.bm){\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function(data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this,data,this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {\r\n var ty = 4;\r\n if(data.ty === 'rc'){\r\n ty = 5;\r\n }else if(data.ty === 'el'){\r\n ty = 6;\r\n }else if(data.ty === 'sr'){\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this,data,ty,this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function(data, element) {\r\n var i = 0, len = this.animatedContents.length;\r\n while(i < len) {\r\n if(this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function(elementData){\r\n var arr = elementData.styles;\r\n var j, jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function(){\r\n this._isFirstFrame = true;\r\n var i, len = this.itemsData.length;\r\n for( i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for(i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function(arr,itemsData,prevViewData,container, level, transformers, render){\r\n var ownTransformers = [].concat(transformers);\r\n var i, len = arr.length - 1;\r\n var j, jLen;\r\n var ownStyles = [], ownModifiers = [], styleOb, currentTransform, modifier, processedPos;\r\n for(i=len;i>=0;i-=1){\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if(!processedPos){\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if(arr[i].ty == 'fl' || arr[i].ty == 'st' || arr[i].ty == 'gf' || arr[i].ty == 'gs'){\r\n if(!processedPos){\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if(arr[i]._render){\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n }else if(arr[i].ty == 'gr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for(j=0;j<jLen;j+=1){\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData,itemsData[i].gr, level + 1, ownTransformers, render);\r\n if(arr[i]._render){\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n }else if(arr[i].ty == 'tr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n }else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n\r\n }else if(arr[i].ty == 'tm' || arr[i].ty == 'rd' || arr[i].ty == 'ms'){\r\n if(!processedPos){\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this,arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n }else if(arr[i].ty == 'rp'){\r\n if(!processedPos){\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this,arr,i,itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n }else{\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for(i=0;i<len;i+=1){\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for(i=0;i<len;i+=1){\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function() {\r\n this.renderModifiers();\r\n var i, len = this.stylesList.length;\r\n for(i=0;i<len;i+=1){\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if(this.stylesList[i].msElem){\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n //Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function() {\r\n var i, len = this.animatedContents.length;\r\n var animatedContent;\r\n for(i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n}\r\n\r\nSVGShapeElement.prototype.destroy = function(){\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\nfunction SVGTintFilter(filter, filterManager){\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type','matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');\r\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');\r\n feColorMatrix.setAttribute('result','f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type','matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters','sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result','f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if(filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k){\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in','SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in','f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v/100;\r\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 ' + opacity + ' 0');\r\n }\r\n};\r\nfunction SVGFillFilter(filter, filterManager){\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type','matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters','sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\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');\r\n }\r\n};\r\nfunction SVGStrokeEffect(elem, filterManager){\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function(){\r\n\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path,groupPath, i, len;\r\n if(this.filterManager.effectElements[1].p.v === 1){\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g'); \r\n groupPath.setAttribute('fill','none');\r\n groupPath.setAttribute('stroke-linecap','round');\r\n groupPath.setAttribute('stroke-dashoffset',1);\r\n for(i;i<len;i+=1){\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({p:path,m:i});\r\n }\r\n if(this.filterManager.effectElements[10].p.v === 3){\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id',id);\r\n mask.setAttribute('mask-type','alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask','url(' + locationHref + '#'+id+')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke','#fff');\r\n } else if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){\r\n if(this.filterManager.effectElements[10].p.v === 2){\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while(elemChildren.length){\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke','#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function(forceRender){\r\n if(!this.initialized){\r\n this.initialize();\r\n }\r\n var i, len = this.paths.length;\r\n var mask, path;\r\n for(i=0;i<len;i+=1){\r\n if(this.paths[i].m === -1) {\r\n continue;\r\n }\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if(forceRender || this.filterManager._mdf || mask.prop._mdf){\r\n path.setAttribute('d',mask.lastPath);\r\n }\r\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){\r\n var dasharrayValue;\r\n if(this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100){\r\n var s = Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l*s + ' ';\r\n var lineLength = l*(e-s);\r\n var segment = 1+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;\r\n var units = Math.floor(lineLength/segment);\r\n var j;\r\n for(j=0;j<units;j+=1){\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l*10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;\r\n }\r\n path.setAttribute('stroke-dasharray',dasharrayValue);\r\n }\r\n }\r\n if(forceRender || this.filterManager.effectElements[4].p._mdf){\r\n this.pathMasker.setAttribute('stroke-width',this.filterManager.effectElements[4].p.v*2);\r\n }\r\n \r\n if(forceRender || this.filterManager.effectElements[6].p._mdf){\r\n this.pathMasker.setAttribute('opacity',this.filterManager.effectElements[6].p.v);\r\n }\r\n if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){\r\n if(forceRender || this.filterManager.effectElements[3].p._mdf){\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke','rgb('+bm_floor(color[0]*255)+','+bm_floor(color[1]*255)+','+bm_floor(color[2]*255)+')');\r\n }\r\n }\r\n};\r\nfunction SVGTritoneFilter(filter, filterManager){\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type','matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');\r\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');\r\n feColorMatrix.setAttribute('result','f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type','table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type','table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type','table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n //var opacity = this.filterManager.effectElements[2].p.v/100;\r\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 ' + opacity + ' 0');\r\n }\r\n};\r\nfunction SVGProLevelsFilter(filter, filterManager){\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n var feFuncR, feFuncG, feFuncB;\r\n \r\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){\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\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){\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\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){\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\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){\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n \r\n if(this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA){\r\n feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\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){\r\n\r\n feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function(type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type','table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function(inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null,{length:segments});\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack; \r\n var inputDelta = inputWhite - inputBlack; \r\n while(cnt <= 256) {\r\n perc = cnt/256;\r\n if(perc <= min){\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if(perc >= max){\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos++] = colorValue;\r\n cnt += 256/(segments-1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n var val, cnt, perc, bezier;\r\n var effectElements = this.filterManager.effectElements;\r\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)){\r\n val = this.getTableValue(effectElements[3].p.v,effectElements[4].p.v,effectElements[5].p.v,effectElements[6].p.v,effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues',val);\r\n this.feFuncGComposed.setAttribute('tableValues',val);\r\n this.feFuncBComposed.setAttribute('tableValues',val);\r\n }\r\n\r\n\r\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)){\r\n val = this.getTableValue(effectElements[10].p.v,effectElements[11].p.v,effectElements[12].p.v,effectElements[13].p.v,effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues',val);\r\n }\r\n\r\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)){\r\n val = this.getTableValue(effectElements[17].p.v,effectElements[18].p.v,effectElements[19].p.v,effectElements[20].p.v,effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues',val);\r\n }\r\n\r\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)){\r\n val = this.getTableValue(effectElements[24].p.v,effectElements[25].p.v,effectElements[26].p.v,effectElements[27].p.v,effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues',val);\r\n }\r\n\r\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)){\r\n val = this.getTableValue(effectElements[31].p.v,effectElements[32].p.v,effectElements[33].p.v,effectElements[34].p.v,effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues',val);\r\n }\r\n \r\n }\r\n};\r\nfunction SVGDropShadowEffect(filter, filterManager){\r\n filter.setAttribute('x','-100%');\r\n filter.setAttribute('y','-100%');\r\n filter.setAttribute('width','400%');\r\n filter.setAttribute('height','400%');\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in','SourceAlpha');\r\n feGaussianBlur.setAttribute('result','drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation','0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx','25');\r\n feOffset.setAttribute('dy','0');\r\n feOffset.setAttribute('in','drop_shadow_1');\r\n feOffset.setAttribute('result','drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color','#00ff00');\r\n feFlood.setAttribute('flood-opacity','1');\r\n feFlood.setAttribute('result','drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in','drop_shadow_3');\r\n feComposite.setAttribute('in2','drop_shadow_2');\r\n feComposite.setAttribute('operator','in');\r\n feComposite.setAttribute('result','drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in','SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function(forceRender){\r\n if(forceRender || this.filterManager._mdf){\r\n if(forceRender || this.filterManager.effectElements[4].p._mdf){\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if(forceRender || this.filterManager.effectElements[0].p._mdf){\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color',rgbToHex(Math.round(col[0]*255),Math.round(col[1]*255),Math.round(col[2]*255)));\r\n }\r\n if(forceRender || this.filterManager.effectElements[1].p._mdf){\r\n this.feFlood.setAttribute('flood-opacity',this.filterManager.effectElements[1].p.v/255);\r\n }\r\n if(forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf){\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /*if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n }*/\r\n }\r\n};\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem){\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function(mask) {\r\n var i = 0, len = _svgMatteSymbols.length;\r\n while(i < len) {\r\n if(_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if(!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0, len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if(nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) {\r\n if(!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function() {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0, len = elements.length;\r\n while (i < len) {\r\n \tif (elements[i] && elements[i].data.ind === ind) {\r\n \t\tthis.setElementAsMask(this.elem, elements[i]);\r\n \t}\r\n \ti += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function() {\r\n\tif(!this.initialized) {\r\n\t\tthis.initialize();\r\n\t}\r\n};\r\nfunction SVGEffects(elem){\r\n var i, len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for(i=0;i<len;i+=1){\r\n filterManager = null;\r\n if(elem.data.ef[i].ty === 20){\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 21){\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 22){\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 23){\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 24){\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 25){\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n }else if(elem.data.ef[i].ty === 28){\r\n //count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n }\r\n if(filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if(count){\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter','url(' + locationHref + '#'+filId+')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function(_isFirstFrame){\r\n var i, len = this.filters.length;\r\n for(i=0;i<len;i+=1){\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\nfunction CVContextData() {\r\n\tthis.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i, len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function() {\r\n\tvar newLength = this._length * 2;\r\n\tvar currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for(i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function() {\r\n\tthis.cArrPos = 0;\r\n\tthis.cTr.reset();\r\n this.cO = 1;\r\n};\r\nfunction CVBaseElement(){\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function(){},\r\n initRendererElement: function(){},\r\n createContainerElements: function(){\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function(){},\r\n setBlendMode: function(){\r\n var globalData = this.globalData;\r\n if(globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function(){\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function(){\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function(){\r\n if (this.isInRange && !this.isTransparent){\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function() {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore();\r\n if(this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function(){\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix()\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\nfunction CVImageElement(data, globalData, comp){\r\n this.failed = false;\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getImage(this.assetData);\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function(){\r\n\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w/this.assetData.h;\r\n var widthCrop, heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop*canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop/canvasRel;\r\n }\r\n ctx.drawImage(this.img,(imgW-widthCrop)/2,(imgH-heightCrop)/2,widthCrop,heightCrop,0,0,this.assetData.w,this.assetData.h);\r\n this.img = canvas;\r\n }\r\n\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function(parentMatrix){\r\n if (this.failed) {\r\n return;\r\n }\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function(){\r\n this.img = null;\r\n};\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate, this) : {_placeholder:true};\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function() {\r\n var i,len = this.layers.length;\r\n for( i = len - 1; i >= 0; i -= 1 ){\r\n if(this.completeLayers || this.elements[i]){\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function(){\r\n var i,len = this.layers.length;\r\n for( i = len - 1; i >= 0; i -= 1 ){\r\n if(this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\nfunction CVMaskElement(data,element){\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i, len = this.masksProperties.length, hasMasks = false;\r\n for (i = 0; i < len; i++) {\r\n if(this.masksProperties[i].mode !== 'n'){\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[i],3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if(hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if(!this.hasMasks){\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i, len = this.masksProperties.length;\r\n var pt,pts,data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i++) {\r\n if(this.masksProperties[i].mode !== 'n'){\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0],data.v[0][1],0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j, jLen = data._length;\r\n for (j = 1; j < jLen; j++) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function(){\r\n this.element = null;\r\n};\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = {opacity:1,_opMdf:false};\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function(){\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function(data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true\r\n };\r\n var elementData = {};\r\n if(data.ty == 'fl' || data.ty == 'st'){\r\n elementData.c = PropertyFactory.getProp(this,data.c,1,255,this);\r\n if(!elementData.c.k){\r\n styleElem.co = 'rgb('+bm_floor(elementData.c.v[0])+','+bm_floor(elementData.c.v[1])+','+bm_floor(elementData.c.v[2])+')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this,data.s,1,null,this);\r\n elementData.e = PropertyFactory.getProp(this,data.e,1,null,this);\r\n elementData.h = PropertyFactory.getProp(this,data.h||{k:0},0,0.01,this);\r\n elementData.a = PropertyFactory.getProp(this,data.a||{k:0},0,degToRads,this);\r\n elementData.g = new GradientProperty(this,data.g,this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this,data.o,0,0.01,this);\r\n if(data.ty == 'st' || data.ty == 'gs') {\r\n styleElem.lc = this.lcEnum[data.lc] || 'round';\r\n styleElem.lj = this.ljEnum[data.lj] || 'round';\r\n if(data.lj == 1) {\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this,data.w,0,null,this);\r\n if(!elementData.w.k){\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if(data.d){\r\n var d = new DashProperty(this,data.d,'canvas', this);\r\n elementData.d = d;\r\n if(!elementData.d.k){\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function(data) {\r\n var elementData = {\r\n it: [],\r\n prevViewData: []\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function(data) {\r\n var elementData = {\r\n transform : {\r\n opacity: 1,\r\n _opMdf:false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this,data.o,0,0.01,this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this,data,this)\r\n }\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function(data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n \r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function() {\r\n this._isFirstFrame = true;\r\n var i, len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function(transform) {\r\n var i, len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if(!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n}\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function() {\r\n var i, len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if(!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n}\r\n\r\nCVShapeElement.prototype.closeStyles = function(styles) {\r\n var i, len = styles.length, j, jLen;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n}\r\n\r\nCVShapeElement.prototype.searchShapes = function(arr,itemsData, prevViewData, shouldRender, transforms){\r\n var i, len = arr.length - 1;\r\n var j, jLen;\r\n var ownStyles = [], ownModifiers = [], processedPos, modifier, currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for(i=len;i>=0;i-=1){\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if(!processedPos){\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if(arr[i].ty == 'fl' || arr[i].ty == 'st'|| arr[i].ty == 'gf'|| arr[i].ty == 'gs'){\r\n if(!processedPos){\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n \r\n ownStyles.push(itemsData[i].style);\r\n }else if(arr[i].ty == 'gr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for(j=0;j<jLen;j+=1){\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n }else if(arr[i].ty == 'tr'){\r\n if(!processedPos){\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n }else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){\r\n if(!processedPos){\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n \r\n }else if(arr[i].ty == 'tm' || arr[i].ty == 'rd'){\r\n if(!processedPos){\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this,arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if(arr[i].ty == 'rp'){\r\n if(!processedPos){\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this,arr,i,itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n }else{\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for(i=0;i<len;i+=1){\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function() {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper,this.shapesData,this.itemsData,true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) {\r\n var props, groupMatrix;\r\n if(parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function() {\r\n var i, len = this.stylesList.length;\r\n var j, jLen, k, kLen,elems,nodes, renderer = this.globalData.renderer, ctx = this.globalData.canvasContext, type, currentStyle;\r\n for(i=0;i<len;i+=1){\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n //Skipping style when\r\n //Stroke width equals 0\r\n //style should not be rendered (extra unused repeaters)\r\n //current opacity equals 0\r\n //global opacity equals 0\r\n if(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0){\r\n continue;\r\n }\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if(type === 'st' || type === 'gs'){\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if(type !== 'st' && type !== 'gs'){\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for(j=0;j<jLen;j+=1){\r\n if(type === 'st' || type === 'gs'){\r\n ctx.beginPath();\r\n if(currentStyle.da){\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for(k=0;k<kLen;k+=1){\r\n if(nodes[k].t == 'm'){\r\n ctx.moveTo(nodes[k].p[0],nodes[k].p[1]);\r\n }else if(nodes[k].t == 'c'){\r\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]);\r\n }else{\r\n ctx.closePath();\r\n }\r\n }\r\n if(type === 'st' || type === 'gs'){\r\n ctx.stroke();\r\n if(currentStyle.da){\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if(type !== 'st' && type !== 'gs'){\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function(parentTransform,items,data,isMain){\r\n var i, len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for(i=len;i>=0;i-=1){\r\n if(items[i].ty == 'tr'){\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n }else if(items[i].ty == 'sh' || items[i].ty == 'el' || items[i].ty == 'rc' || items[i].ty == 'sr'){\r\n this.renderPath(items[i],data[i]);\r\n }else if(items[i].ty == 'fl'){\r\n this.renderFill(items[i],data[i],groupTransform);\r\n }else if(items[i].ty == 'st'){\r\n this.renderStroke(items[i],data[i],groupTransform);\r\n }else if(items[i].ty == 'gf' || items[i].ty == 'gs'){\r\n this.renderGradientFill(items[i],data[i],groupTransform);\r\n }else if(items[i].ty == 'gr'){\r\n this.renderShape(groupTransform,items[i].it,data[i].it);\r\n }else if(items[i].ty == 'tm'){\r\n //\r\n }\r\n }\r\n if(isMain){\r\n this.drawLayer();\r\n }\r\n \r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function(styledShape, shape){\r\n if(this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i, len, j, jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if(pathNodes && pathNodes.v){\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\r\n });\r\n shapeNodes.push({\r\n t: 'z'\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n}\r\n\r\nCVShapeElement.prototype.renderPath = function(pathData,itemData){\r\n if(pathData.hd !== true && pathData._shouldRender) {\r\n var i, len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function(styleData,itemData, groupTransform){\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' \r\n + bm_floor(itemData.c.v[0]) + ',' \r\n + bm_floor(itemData.c.v[1]) + ',' \r\n + bm_floor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function(styleData,itemData, groupTransform){\r\n var styleElem = itemData.style;\r\n if(!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var grd;\r\n var pt1 = itemData.s.v, pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n var grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i, len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1){\r\n if(itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i*2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100,'rgba('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v*groupTransform.opacity;\r\n \r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function(styleData,itemData, groupTransform){\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if(d && (d._mdf || this._isFirstFrame)){\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if(itemData.c._mdf || this._isFirstFrame){\r\n styleElem.co = 'rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')';\r\n }\r\n if(itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame){\r\n styleElem.coOp = itemData.o.v*groupTransform.opacity;\r\n }\r\n if(itemData.w._mdf || this._isFirstFrame){\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\n\r\nCVShapeElement.prototype.destroy = function(){\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function() {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\nfunction CVTextElement(data, globalData, comp){\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: ''\r\n };\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function(){\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if(documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n }else{\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if(documentData.sc){\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i, len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px '+ this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n //this.tHelper.font = this.values.fValue;\r\n var charData, shapeData, k, kLen, shapes, j, jLen, pathNodes, commands, pathArr, singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr/1000*documentData.finalSize;\r\n var xPos = 0, yPos = 0, firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = charData && charData.data || {};\r\n matrixHelper.reset();\r\n if(singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);\r\n if(singleShape){\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for(j=0;j<jLen;j+=1){\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for(k=1;k<kLen;k+=1){\r\n if(k==1){\r\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));\r\n }\r\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));\r\n }\r\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));\r\n commands[j] = pathArr;\r\n }\r\n if(singleShape){\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if(this.textSpans[cnt]){\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = {elem: commands};\r\n }\r\n cnt +=1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function(){\r\n var ctx = this.canvasContext;\r\n var finalMat = this.finalTransform.mat.props;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if(!this.data.singleShape){\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i,len, j, jLen, k, kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null, lastStroke = null, lastStrokeW = null, commands, pathArr;\r\n for(i=0;i<len;i+=1){\r\n if(letters[i].n){\r\n continue;\r\n }\r\n renderedLetter = renderedLetters[i];\r\n if(renderedLetter){\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if(this.fill){\r\n if(renderedLetter && renderedLetter.fc){\r\n if(lastFill !== renderedLetter.fc){\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n }else if(lastFill !== this.values.fill){\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for(j=0;j<jLen;j+=1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n ///ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if(this.stroke){\r\n if(renderedLetter && renderedLetter.sw){\r\n if(lastStrokeW !== renderedLetter.sw){\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n }else if(lastStrokeW !== this.values.sWidth){\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if(renderedLetter && renderedLetter.sc){\r\n if(lastStroke !== renderedLetter.sc){\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n }else if(lastStroke !== this.values.stroke){\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for(j=0;j<jLen;j+=1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n ///ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if(renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n};\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function(){};\r\nfunction HBaseElement(data,globalData,comp){}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function(){},\r\n initRendererElement: function(){\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if(this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function(){\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id',this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function() {\r\n if(this.finalTransform._matMdf){\r\n this.transformedElement.style.transform = this.transformedElement.style.webkitTransform = this.finalTransform.mat.toCSS();\r\n }\r\n if(this.finalTransform._opMdf){\r\n this.transformedElement.style.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function() {\r\n //If it is exported as hidden (data.hd === true) no need to render\r\n //If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function(){\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if(this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if(this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function(){\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function(){\r\n },\r\n setMatte: function(){}\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\nfunction HSolidElement(data,globalData,comp){\r\n this.initElement(data,globalData,comp);\r\n}\r\nextendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function(){\r\n var rect;\r\n if(this.data.hasMask){\r\n rect = createNS('rect');\r\n rect.setAttribute('width',this.data.sw);\r\n rect.setAttribute('height',this.data.sh);\r\n rect.setAttribute('fill',this.data.sc);\r\n this.svgElement.setAttribute('width',this.data.sw);\r\n this.svgElement.setAttribute('height',this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\nfunction HCompElement(data,globalData,comp){\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data,globalData,comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function(){\r\n this._createBaseContainerElements();\r\n //divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if(this.data.hasMask){\r\n this.svgElement.setAttribute('width',this.data.w);\r\n this.svgElement.setAttribute('height',this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function(elem,pos) {\r\n var j = 0;\r\n var nextElement;\r\n while(j<pos){\r\n if(this.elements[j] && this.elements[j].getBaseElement){\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if(nextElement){\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n}\r\n\r\nfunction HShapeElement(data,globalData,comp){\r\n //List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n //List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n //List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n //List of items in shape tree\r\n this.itemsData = [];\r\n //List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data,globalData,comp);\r\n //Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x:999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n}\r\nextendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function(){\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width',size.w);\r\n cont.setAttribute('height',size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function(transformers, point) {\r\n var i, len = transformers.length;\r\n for(i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n}\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function(item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i, len = shape._length, vPoint, oPoint, nextIPoint, nextVPoint, bounds;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if(shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n}\r\n\r\nHShapeElement.prototype.checkBounds = function(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bm_min(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bm_max(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bm_min(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bm_max(bounds.bottom, boundingBox.yMax);\r\n}\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left:0,\r\n right:0,\r\n top:0,\r\n bottom:0,\r\n}\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x:0,\r\n xMax:0,\r\n y:0,\r\n yMax:0,\r\n width:0,\r\n height:0\r\n}\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function(p0, p1, p2, p3) {\r\n\r\n var bounds = [[p0[0],p3[0]], [p0[1],p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\r\n\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b = b | 0;\r\n a = a | 0;\r\n c = c | 0;\r\n\r\n if (a === 0) {\r\n\r\n if (b === 0) {\r\n continue;\r\n }\r\n\r\n t = -c / b;\r\n\r\n if (0 < t && t < 1) {\r\n bounds[i].push(this.calculateF(t,p0,p1,p2,p3,i));\r\n }\r\n continue;\r\n }\r\n\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac < 0) {\r\n continue;\r\n }\r\n\r\n t1 = (-b + bm_sqrt(b2ac))/(2 * a);\r\n if (0 < t1 && t1 < 1) bounds[i].push(this.calculateF(t1,p0,p1,p2,p3,i));\r\n\r\n t2 = (-b - bm_sqrt(b2ac))/(2 * a);\r\n if (0 < t2 && t2 < 1) bounds[i].push(this.calculateF(t2,p0,p1,p2,p3,i));\r\n\r\n }\r\n\r\n this.shapeBoundingBox.left = bm_min.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bm_min.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bm_max.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bm_max.apply(null, bounds[1]);\r\n };\r\n\r\n HShapeElement.prototype.calculateF = function(t, p0, p1, p2, p3, i) {\r\n return bm_pow(1-t, 3) * p0[i]\r\n + 3 * bm_pow(1-t, 2) * t * p1[i]\r\n + 3 * (1-t) * bm_pow(t, 2) * p2[i]\r\n + bm_pow(t, 3) * p3[i];\r\n }\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function(itemsData, boundingBox) {\r\n var i, len = itemsData.length, path;\r\n for(i = 0; i < len; i += 1) {\r\n if(itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox)\r\n } else if(itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox)\r\n }\r\n }\r\n}\r\n\r\nHShapeElement.prototype.currentBoxContains = function(box) {\r\n return this.currentBBox.x <= box.x \r\n && this.currentBBox.y <= box.y \r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height\r\n}\r\n\r\nHShapeElement.prototype.renderInnerContent = function() {\r\n this._renderShapeFrame();\r\n\r\n if(!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n //var tempBoundingBox = this.shapeCont.getBBox();\r\n if(this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if(this.currentBBox.w !== tempBoundingBox.width){\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width',tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if(this.currentBBox.h !== tempBoundingBox.height){\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height',tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if(changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y){\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);\r\n this.shapeCont.style.transform = this.shapeCont.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n }\r\n }\r\n\r\n};\r\nfunction HTextElement(data,globalData,comp){\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x:999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data,globalData,comp);\r\n\r\n}\r\nextendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function(){\r\n this.isMasked = this.checkMasks();\r\n if(this.isMasked){\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width',this.compW);\r\n this.svgElement.setAttribute('height',this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function(){\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n innerElemStyle.color = innerElemStyle.fill = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n if(documentData.sc){\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw+'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if(!this.globalData.fontManager.chars){\r\n innerElemStyle.fontSize = documentData.finalSize+'px';\r\n innerElemStyle.lineHeight = documentData.finalSize+'px';\r\n if(fontData.fClass){\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight, fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i, len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan,tParent,tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes, shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0;i < len ;i += 1) {\r\n if(this.globalData.fontManager.chars){\r\n if(!this.textPaths[cnt]){\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin','round');\r\n tSpan.setAttribute('stroke-miterlimit','4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if(!this.isMasked){\r\n if(this.textSpans[cnt]){\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n\r\n tParent = createTag('div');\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n }else{\r\n if(!this.isMasked){\r\n if(this.textSpans[cnt]){\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n }\r\n //tSpan.setAttribute('visibility', 'hidden');\r\n if(this.globalData.fontManager.chars){\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if(charData){\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if(shapeData && shapeData.shapes){\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);\r\n shapeStr = this.createPathShape(matrixHelper,shapes);\r\n tSpan.setAttribute('d',shapeStr);\r\n }\r\n if(!this.isMasked){\r\n this.innerElem.appendChild(tParent);\r\n if(shapeData && shapeData.shapes){\r\n\r\n //document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width',boundingBox.width + 2);\r\n tCont.setAttribute('height',boundingBox.height + 2);\r\n tCont.setAttribute('viewBox',(boundingBox.x-1)+' '+ (boundingBox.y-1)+' '+ (boundingBox.width+2)+' '+ (boundingBox.height+2));\r\n tCont.style.transform = tCont.style.webkitTransform = 'translate(' + (boundingBox.x-1) + 'px,' + (boundingBox.y-1) + 'px)';\r\n\r\n letters[i].yOffset = boundingBox.y-1;\r\n\r\n } else{\r\n tCont.setAttribute('width',1);\r\n tCont.setAttribute('height',1);\r\n }\r\n tParent.appendChild(tCont);\r\n }else{\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }else{\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\",\"preserve\");\r\n if(!this.isMasked){\r\n this.innerElem.appendChild(tParent);\r\n //\r\n tSpan.style.transform = tSpan.style.webkitTransform = 'translate3d(0,'+ -documentData.finalSize/1.2+'px,0)';\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if(!this.isMasked){\r\n this.textSpans[cnt] = tParent;\r\n }else{\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while(cnt < this.textSpans.length){\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function() {\r\n\r\n if(this.data.singleShape){\r\n if(!this._isFirstFrame && !this.lettersChangedFlag){\r\n return;\r\n } else {\r\n // Todo Benchmark if using this is better than getBBox\r\n if(this.isMasked && this.finalTransform._matMdf){\r\n this.svgElement.setAttribute('viewBox',-this.finalTransform.mProp.p.v[0]+' '+ -this.finalTransform.mProp.p.v[1]+' '+this.compW+' '+this.compH);\r\n this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n }\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if(!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag){\r\n return;\r\n }\r\n var i,len, count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter, textSpan, textPath;\r\n for(i=0;i<len;i+=1){\r\n if(letters[i].n){\r\n count += 1;\r\n continue;\r\n }\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if(renderedLetter._mdf.m) {\r\n if(!this.isMasked){\r\n textSpan.style.transform = textSpan.style.webkitTransform = renderedLetter.m;\r\n }else{\r\n textSpan.setAttribute('transform',renderedLetter.m);\r\n }\r\n }\r\n ////textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if(renderedLetter.sw && renderedLetter._mdf.sw){\r\n textPath.setAttribute('stroke-width',renderedLetter.sw);\r\n }\r\n if(renderedLetter.sc && renderedLetter._mdf.sc){\r\n textPath.setAttribute('stroke',renderedLetter.sc);\r\n }\r\n if(renderedLetter.fc && renderedLetter._mdf.fc){\r\n textPath.setAttribute('fill',renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n\r\n if(this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)){\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if(this.currentBBox.w !== boundingBox.width){\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width',boundingBox.width);\r\n }\r\n if(this.currentBBox.h !== boundingBox.height){\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height',boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\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)){\r\n this.currentBBox.w = boundingBox.width + margin*2;\r\n this.currentBBox.h = boundingBox.height + margin*2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);\r\n this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n }\r\n }\r\n};\r\nfunction HImageElement(data,globalData,comp){\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data,globalData,comp);\r\n}\r\n\r\nextendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement], HImageElement);\r\n\r\n\r\nHImageElement.prototype.createContent = function(){\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if(this.data.hasMask){\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width',this.assetData.w+\"px\");\r\n this.imageElem.setAttribute('height',this.assetData.h+\"px\");\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width',this.assetData.w);\r\n this.baseElement.setAttribute('height',this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.src = assetPath;\r\n if(this.data.ln){\r\n this.baseElement.setAttribute('id',this.data.ln);\r\n }\r\n};\r\nfunction HCameraElement(data,globalData,comp){\r\n this.initFrame();\r\n this.initBaseData(data,globalData,comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this,data.pe,0,0,this);\r\n if(data.ks.p.s){\r\n this.px = getProp(this,data.ks.p.x,1,0,this);\r\n this.py = getProp(this,data.ks.p.y,1,0,this);\r\n this.pz = getProp(this,data.ks.p.z,1,0,this);\r\n }else{\r\n this.p = getProp(this,data.ks.p,1,0,this);\r\n }\r\n if(data.ks.a){\r\n this.a = getProp(this,data.ks.a,1,0,this);\r\n }\r\n if(data.ks.or.k.length && data.ks.or.k[0].to){\r\n var i,len = data.ks.or.k.length;\r\n for(i=0;i<len;i+=1){\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this,data.ks.or,1,degToRads,this);\r\n this.or.sh = true;\r\n this.rx = getProp(this,data.ks.rx,0,degToRads,this);\r\n this.ry = getProp(this,data.ks.ry,0,degToRads,this);\r\n this.rz = getProp(this,data.ks.rz,0,degToRads,this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n \r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function() {\r\n var i, len = this.comp.threeDElements.length, comp;\r\n for(i=0;i<len;i+=1){\r\n //[perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if(comp.type === '3d') {\r\n comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';\r\n comp.container.style.transformOrigin = comp.container.style.mozTransformOrigin = comp.container.style.webkitTransformOrigin = \"0px 0px 0px\";\r\n comp.perspectiveElem.style.transform = comp.perspectiveElem.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function(){\r\n};\r\n\r\nHCameraElement.prototype.hide = function(){\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function(){\r\n var _mdf = this._isFirstFrame;\r\n var i, len;\r\n if(this.hierarchy){\r\n len = this.hierarchy.length;\r\n for(i=0;i<len;i+=1){\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\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)) {\r\n this.mat.reset();\r\n\r\n if(this.hierarchy){\r\n var mat;\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n /*mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n console.log(mat)\r\n this.mat.transform(-mat[0],-mat[1],-mat[2],-mat[3],-mat[4],-mat[5],-mat[6],-mat[7],-mat[8],-mat[9],-mat[10],-mat[11],-mat[12],-mat[13],-mat[14],mat[15]);\r\n console.log(this.mat.props)*/\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0],-mTransf.p.v[1],mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1/mTransf.s.v[0],1/mTransf.s.v[1],1/mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0],mTransf.a.v[1],mTransf.a.v[2]);\r\n }\r\n }\r\n\r\n if(this.p){\r\n this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]);\r\n }else{\r\n this.mat.translate(-this.px.v,-this.py.v,this.pz.v);\r\n }\r\n if(this.a){\r\n var 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]];\r\n var mag = Math.sqrt(Math.pow(diffVector[0],2)+Math.pow(diffVector[1],2)+Math.pow(diffVector[2],2));\r\n //var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0]/mag,diffVector[1]/mag,diffVector[2]/mag];\r\n var lookLengthOnXZ = Math.sqrt( lookDir[2]*lookDir[2] + lookDir[0]*lookDir[0] );\r\n var m_rotationX = (Math.atan2( lookDir[1], lookLengthOnXZ ));\r\n var m_rotationY = (Math.atan2( lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(m_rotationY).rotateX(-m_rotationX);\r\n\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0);\r\n this.mat.translate(0,0,this.pe.v);\r\n\r\n\r\n \r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n for(i=0;i<len;i+=1){\r\n comp = this.comp.threeDElements[i];\r\n if(comp.type === '3d') {\r\n if(hasMatrixChanged) {\r\n comp.container.style.transform = comp.container.style.webkitTransform = this.mat.toCSS();\r\n }\r\n if(this.pe._mdf) {\r\n comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function(num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function(){\r\n};\r\nHCameraElement.prototype.getBaseElement = function(){return null;};\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function(){};\r\nvar animationManager = (function(){\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev){\r\n var i = 0;\r\n var animItem = ev.target;\r\n while(i<len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if(!animItem.isPaused){\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData){\r\n if(!element){\r\n return null;\r\n }\r\n var i=0;\r\n while(i<len){\r\n if(registeredAnimations[i].elem == element && registeredAnimations[i].elem !== null ){\r\n return registeredAnimations[i].animation;\r\n }\r\n i+=1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i, len = registeredAnimations.length;\r\n var animations = [];\r\n for(i = 0; i < len; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount(){\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount(){\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element){\r\n animItem.addEventListener('destroy',removeElement);\r\n animItem.addEventListener('_active',addPlayingCount);\r\n animItem.addEventListener('_idle',subtractPlayingCount);\r\n registeredAnimations.push({elem: element,animation:animItem});\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params){\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n\r\n function setSpeed(val,animation){\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation){\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation){\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if(playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime){\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value,isFrame,animation) {\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.goToAndStop(value,isFrame,animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for(i=(len-1);i>=0;i-=1){\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer){\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i, len = animElements.length;\r\n for(i=0;i<len;i+=1){\r\n if(renderer){\r\n animElements[i].setAttribute('data-bm-type',renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if(standalone && len === 0){\r\n if(!renderer){\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerHTML = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type',renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize(){\r\n var i;\r\n for(i=0;i<len;i+=1){\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate(){\r\n if(!_isFrozen && playingAnimationsNum){\r\n if(_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n //moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.subframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function(params) {\r\n if(params.context){\r\n this.context = params.context;\r\n }\r\n if(params.wrapper || params.container){\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = params.animType ? params.animType : params.renderer ? params.renderer : 'svg';\r\n switch(animType){\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n\r\n if(params.loop === '' || params.loop === null){\r\n }else if(params.loop === false){\r\n this.loop = false;\r\n }else if(params.loop === true){\r\n this.loop = true;\r\n }else{\r\n this.loop = parseInt(params.loop);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n if(params.animationData){\r\n this.configAnimation(params.animationData);\r\n }else if(params.path){\r\n if(params.path.substr(-4) != 'json'){\r\n if (params.path.substr(-1, 1) != '/') {\r\n params.path += '/';\r\n }\r\n params.path += 'data.json';\r\n }\r\n\r\n if(params.path.lastIndexOf('\\\\') != -1){\r\n this.path = params.path.substr(0,params.path.lastIndexOf('\\\\')+1);\r\n }else{\r\n this.path = params.path.substr(0,params.path.lastIndexOf('/')+1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/')+1);\r\n this.fileName = this.fileName.substr(0,this.fileName.lastIndexOf('.json'));\r\n\r\n assetLoader.load(params.path, this.configAnimation.bind(this), function() {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData ? (typeof animationData === \"object\") ? animationData : JSON.parse(animationData) : null\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\r\n if(loop === ''){\r\n }else if(loop === 'false'){\r\n params.loop = false;\r\n }else if(loop === 'true'){\r\n params.loop = true;\r\n }else{\r\n params.loop = parseInt(loop);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\r\n params.autoplay = autoplay !== \"false\";\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\r\n\r\n if(prerender === 'false'){\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function(data) {\r\n if(data.op > this.animationData.op){\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i, len = layers.length;\r\n var newLayers = data.layers;\r\n var j, jLen = newLayers.length;\r\n for(j=0;j<jLen;j+=1){\r\n i = 0;\r\n while(i<len){\r\n if(layers[i].id == newLayers[j].id){\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if(data.chars || data.fonts){\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if(data.assets){\r\n len = data.assets.length;\r\n for(i = 0; i < len; i += 1){\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeData(this.animationData,this.renderer.globalData.fontManager);\r\n this.renderer.includeLayers(data.layers);\r\n if(expressionsPlugin){\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function() {\r\n var segments = this.animationData.segments;\r\n if(!segments || segments.length === 0 || !this.autoloadSegments){\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path+this.fileName+'_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n assetLoader.load(segmentPath, this.includeLayers.bind(this), function() {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function() {\r\n var segments = this.animationData.segments;\r\n if(!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function() {\r\n this.trigger('loaded_images');\r\n this.checkLoaded()\r\n}\r\n\r\nAnimationItem.prototype.preloadImages = function() {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n}\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if(!this.renderer){\r\n return;\r\n }\r\n this.animationData = animData;\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.renderer.configAnimation(animData);\r\n if(!animData.assets){\r\n animData.assets = [];\r\n }\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function(){\r\n if(!this.renderer) {\r\n return;\r\n }\r\n if(this.renderer.globalData.fontManager.loaded()){\r\n this.checkLoaded();\r\n }else{\r\n setTimeout(this.waitForFontsLoaded.bind(this),20);\r\n }\r\n}\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded && this.renderer.globalData.fontManager.loaded() && (this.imagePreloader.loaded() || this.renderer.rendererType !== 'canvas')) {\r\n this.isLoaded = true;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n if(expressionsPlugin){\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function() {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if(this.autoplay){\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function(flag){\r\n this.subframeEnabled = flag ? true : false;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.subframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame;\r\n\r\n if(this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted){\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if(this.isLoaded === false){\r\n return;\r\n }\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(this.isPaused === true){\r\n this.isPaused = false;\r\n if(this._idle){\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(this.isPaused === false){\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(this.isPaused === true){\r\n this.play();\r\n }else{\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if(name && this.name != name){\r\n return;\r\n }\r\n if(isFrame){\r\n this.setCurrentRawFrameValue(value);\r\n }else{\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n this.goToAndStop(value, isFrame, name);\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\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.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if(nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if(!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function(arr, offset){\r\n this.playCount = 0;\r\n if(arr[1] < arr[0]){\r\n if(this.frameModifier > 0){\r\n if(this.playSpeed < 0){\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.timeCompleted = this.totalFrames = arr[0] - arr[1];\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if(arr[1] > arr[0]){\r\n if(this.frameModifier < 0){\r\n if(this.playSpeed < 0){\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.timeCompleted = this.totalFrames = arr[1] - arr[0];\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init,end) {\r\n var pendingFrame = -1;\r\n if(this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.timeCompleted = this.totalFrames = end - init;\r\n if(pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame,true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i, len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip,this.animationData.op]);\r\n //this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function(offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name != name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = this.onLoopComplete = this.onComplete = this.onSegmentStart = this.onDestroy = null;\r\n this.renderer = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function(value){\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if(assetData.e) {\r\n path = assetData.p;\r\n } else if(this.assetsPath){\r\n var imagePath = assetData.p;\r\n if(imagePath.indexOf('images/') !== -1){\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0, len = this.assets.length;\r\n while (i < len) {\r\n if(id == this.assets[i].id){\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function(name){\r\n if(this._cbs && this._cbs[name]){\r\n switch(name){\r\n case 'enterFrame':\r\n this.triggerEvent(name,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name,new BMCompleteEvent(name,this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name,new BMDestroyEvent(name,this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if(name === 'enterFrame' && this.onEnterFrame){\r\n this.onEnterFrame.call(this,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameMult));\r\n }\r\n if(name === 'loopComplete' && this.onLoopComplete){\r\n this.onLoopComplete.call(this,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));\r\n }\r\n if(name === 'complete' && this.onComplete){\r\n this.onComplete.call(this,new BMCompleteEvent(name,this.frameMult));\r\n }\r\n if(name === 'segmentStart' && this.onSegmentStart){\r\n this.onSegmentStart.call(this,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));\r\n }\r\n if(name === 'destroy' && this.onDestroy){\r\n this.onDestroy.call(this,new BMDestroyEvent(name,this));\r\n }\r\n};\r\n\r\nvar Expressions = (function(){\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n\r\n function initExpressions(animation){\r\n\r\n \tvar stackCount = 0;\r\n \tvar registers = [];\r\n\r\n \tfunction pushExpression() {\r\n\t\t\tstackCount += 1;\r\n \t}\r\n\r\n \tfunction popExpression() {\r\n\t\t\tstackCount -= 1;\r\n\t\t\tif (stackCount === 0) {\r\n\t\t\t\treleaseInstances();\r\n\t\t\t}\r\n \t}\r\n\r\n \tfunction registerExpressionProperty(expression) {\r\n \t\tif (registers.indexOf(expression) === -1) {\r\n\t\t\t\tregisters.push(expression)\r\n \t\t}\r\n \t}\r\n\r\n \tfunction releaseInstances() {\r\n \t\tvar i, len = registers.length;\r\n \t\tfor (i = 0; i < len; i += 1) {\r\n\t\t\t\tregisters[i].release();\r\n \t\t}\r\n \t\tregisters.length = 0;\r\n \t}\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\nvar ExpressionManager = (function(){\r\n 'use strict';\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a){\r\n var tOfA = typeof a;\r\n if(tOfA === 'number' || tOfA === 'boolean' || a instanceof Number ){\r\n return -a;\r\n }\r\n if($bm_isInstanceOfArray(a)){\r\n var i, lenA = a.length;\r\n var retArr = [];\r\n for(i=0;i<lenA;i+=1){\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333,0,.833,.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167,0.167,.667,1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(.33,0,.667,1, 'easeInOut').get;\r\n\r\n function sum(a,b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if(tOfA === 'string' || tOfB === 'string'){\r\n return a + b;\r\n }\r\n if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){\r\n a = a.slice(0);\r\n a[0] = a[0] + b;\r\n return a;\r\n }\r\n if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){\r\n \r\n var i = 0, lenA = a.length, lenB = b.length;\r\n var retArr = [];\r\n while(i<lenA || i < lenB){\r\n if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){\r\n retArr[i] = a[i] + b[i];\r\n }else{\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a,b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if(tOfA === 'string') {\r\n a = parseInt(a);\r\n }\r\n if(tOfB === 'string') {\r\n b = parseInt(b);\r\n }\r\n return a - b;\r\n }\r\n if( $bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){\r\n a = a.slice(0);\r\n a[0] = a[0] - b;\r\n return a;\r\n }\r\n if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){\r\n var i = 0, lenA = a.length, lenB = b.length;\r\n var retArr = [];\r\n while(i<lenA || i < lenB){\r\n if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){\r\n retArr[i] = a[i] - b[i];\r\n }else{\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a,b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i, len;\r\n if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a,b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i, len;\r\n if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a,b) {\r\n if(typeof a === 'string') {\r\n a = parseInt(a);\r\n }\r\n if(typeof b === 'string') {\r\n b = parseInt(b);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if(min > max){\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val/degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val*degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0,0,0,0,0,0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if(!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i, len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n var h, s, l = (max + min) / 2;\r\n\r\n if(max == min){\r\n h = s = 0; // achromatic\r\n }else{\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch(max){\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l,val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t){\r\n if(t < 0) t += 1;\r\n if(t > 1) t -= 1;\r\n if(t < 1/6) return p + (q - p) * 6 * t;\r\n if(t < 1/2) return q;\r\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val){\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r, g, b;\r\n\r\n if(s === 0){\r\n r = g = b = l; // achromatic\r\n }else{\r\n\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1/3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1/3);\r\n }\r\n\r\n return [r, g , b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2){\r\n if(value1 === undefined || value2 === undefined){\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if(tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if(t <= tMin) {\r\n return value1;\r\n }else if(t >= tMax){\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t-tMin)/(tMax-tMin);\r\n if(!value1.length){\r\n return value1 + (value2-value1)*perc;\r\n }\r\n var i, len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for(i=0;i<len;i+=1){\r\n arr[i] = value1[i] + (value2[i]-value1[i])*perc;\r\n }\r\n return arr;\r\n }\r\n function random(min,max){\r\n if(max === undefined){\r\n if(min === undefined){\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if(max.length){\r\n var i, len = max.length;\r\n if(!min){\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for(i=0;i<len;i+=1){\r\n arr[i] = min[i] + rnd*(max[i]-min[i]);\r\n }\r\n return arr;\r\n }\r\n if(min === undefined){\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm*(max-min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i, len = points.length;\r\n var path = shape_pool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0,0], inVertexPoint, outVertexPoint;\r\n for(i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\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);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem,data,property){\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform,$bm_transform,content,effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function() {\r\n return thisProperty.v\r\n }\r\n })\r\n elem.comp.frameDuration = 1/elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip/elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op/elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn, loop_in, loopOut, loop_out, smooth;\r\n var toWorld,fromWorld,fromComp,toComp,fromCompToSurface, position, rotation, anchorPoint, scale, thisLayer,thisComp,mask,valueAtTime,velocityAtTime;\r\n var __expression_functions = [];\r\n if(data.xf) {\r\n var i, len = data.xf.length;\r\n for(i = 0; i < len; i += 1) {\r\n __expression_functions[i] = eval('(function(){ return ' + data.xf[i] + '}())');\r\n }\r\n }\r\n\r\n var scoped_bm_rt;\r\n var expression_function = eval('[function _expression_function(){' + val+';scoped_bm_rt=$bm_rt}' + ']')[0];\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq,amp){\r\n var i,j, len = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', len);\r\n freq = 5;\r\n var iterations = Math.floor(time*freq);\r\n i = 0;\r\n j = 0;\r\n while(i<iterations){\r\n //var rnd = BMMath.random();\r\n for(j=0;j<len;j+=1){\r\n addedAmps[j] += -amp + amp*2*BMMath.random();\r\n //addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n i += 1;\r\n }\r\n //var rnd2 = BMMath.random();\r\n var periods = time*freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', len);\r\n if(len>1){\r\n for(j=0;j<len;j+=1){\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*BMMath.random())*perc;\r\n //arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n //arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n } else {\r\n return this.pv + addedAmps[0] + (-amp + amp*2*BMMath.random())*perc;\r\n }\r\n }.bind(this);\r\n\r\n if(thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if(thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if(thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type,duration){\r\n return loopIn(type,duration,true);\r\n }\r\n\r\n function loopOutDuration(type,duration){\r\n return loopOut(type,duration,true);\r\n }\r\n\r\n if(this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if(this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1,elem2){\r\n var fVec = [elem2[0]-elem1[0],elem2[1]-elem1[1],elem2[2]-elem1[2]];\r\n var pitch = Math.atan2(fVec[0],Math.sqrt(fVec[1]*fVec[1]+fVec[2]*fVec[2]))/degToRads;\r\n var yaw = -Math.atan2(fVec[1],fVec[2])/degToRads;\r\n return [yaw,pitch,0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2){\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2){\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2){\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if(val1 === undefined){\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n t = t > 1 ? 1 : t < 0 ? 0 : t;\r\n var mult = fn(t);\r\n if($bm_isInstanceOfArray(val1)) {\r\n var i, len = val1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = (val2[i] - val1[i]) * mult + val1[i];\r\n }\r\n return arr;\r\n } else {\r\n return (val2 - val1) * mult + val1;\r\n }\r\n }\r\n\r\n function nearestKey(time){\r\n var i, len = data.k.length,index,keyTime;\r\n if(!data.k.length || typeof(data.k[0]) === 'number'){\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for(i=0;i<len-1;i+=1){\r\n if(time === data.k[i].t){\r\n index = i + 1;\r\n keyTime = data.k[i].t;\r\n break;\r\n }else if(time>data.k[i].t && time<data.k[i+1].t){\r\n if(time-data.k[i].t > data.k[i+1].t - time){\r\n index = i + 2;\r\n keyTime = data.k[i+1].t;\r\n } else {\r\n index = i + 1;\r\n keyTime = data.k[i].t;\r\n }\r\n break;\r\n }\r\n }\r\n if(index === -1){\r\n index = i + 1;\r\n keyTime = data.k[i].t;\r\n }\r\n }\r\n \r\n }\r\n var ob = {};\r\n ob.index = index;\r\n ob.time = keyTime/elem.comp.globalData.frameRate;\r\n return ob;\r\n }\r\n\r\n function key(ind){\r\n var ob, i, len;\r\n if(!data.k.length || typeof(data.k[0]) === 'number'){\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n ob = {\r\n time: data.k[ind].t/elem.comp.globalData.frameRate,\r\n value: []\r\n };\r\n var arr;\r\n if(ind === data.k.length - 1 && !data.k[ind].h){\r\n arr = (data.k[ind].s || data.k[ind].s === 0) ? data.k[ind-1].s : data.k[ind].e;\r\n }else{\r\n arr = data.k[ind].s;\r\n }\r\n len = arr.length;\r\n for(i=0;i<len;i+=1){\r\n ob[i] = arr[i];\r\n ob.value[i] = arr[i]\r\n }\r\n return ob;\r\n }\r\n\r\n function framesToTime(frames, fps) { \r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return frames / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed){\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if(typeof value === 'string') {\r\n if(end === undefined) {\r\n return value.substring(init)\r\n }\r\n return value.substring(init, end)\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if(typeof value === 'string') {\r\n if(end === undefined) {\r\n return value.substr(init)\r\n }\r\n return value.substr(init, end)\r\n }\r\n return '';\r\n }\r\n\r\n var time, velocity, value, text, textIndex, textTotal, selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random()*1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (_needsRandom) {\r\n seedRandom(randSeed);\r\n }\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if(this.propType === 'textSelector'){\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface(\"ADBE Transform Group\");\r\n $bm_transform = transform;\r\n if(transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /*position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale;*/\r\n }\r\n }\r\n \r\n if (elemType === 4 && !content) {\r\n content = thisLayer(\"ADBE Root Vectors Group\");\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame/this.comp.globalData.frameRate;\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n\r\n //TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === \"shape\") {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\nvar expressionHelpers = (function(){\r\n\r\n function searchExpressions(elem,data,prop){\r\n if(data.x){\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem,data,prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if(frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if(v1.length){\r\n var i;\r\n for(i=0;i<v1.length;i+=1){\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if(this.vel !== undefined){\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n //frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if(v1.length){\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for(i=0;i<v1.length;i+=1){\r\n //removing frameRate\r\n //if needed, don't add it here\r\n //velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i])/delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1)/delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup){\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n\treturn {\r\n\t\tsearchExpressions: searchExpressions,\r\n\t\tgetSpeedAtTime: getSpeedAtTime,\r\n\t\tgetVelocityAtTime: getVelocityAtTime,\r\n\t\tgetValueAtTime: getValueAtTime,\r\n\t\tgetStaticValueAtTime: getStaticValueAtTime,\r\n\t\tsetGroupProperty: setGroupProperty,\r\n\t}\r\n}());\r\n(function addPropertyDecorator() {\r\n\r\n function loopOut(type,duration,durationFlag){\r\n if(!this.k || !this.keyframes){\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if(currentFrame<=lastKeyFrame){\r\n return this.pv;\r\n }else{\r\n var cycleDuration, firstKeyFrame;\r\n if(!durationFlag){\r\n if(!duration || duration > keyframes.length - 1){\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if(!duration){\r\n cycleDuration = Math.max(0,lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - elem.comp.globalData.frameRate*duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i, len, ret;\r\n if(type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);\r\n if(iterations % 2 !== 0){\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\r\n }\r\n } else if(type === 'offset'){\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);\r\n if(this.pv.length){\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for(i=0;i<len;i+=1){\r\n ret[i] = (endV[i]-initV[i])*repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV-initV)*repeats + current;\r\n } else if(type === 'continue'){\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if(this.pv.length){\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for(i=0;i<len;i+=1){\r\n ret[i] = lastValue[i] + (lastValue[i]-nextLastValue[i])*((currentFrame - lastKeyFrame)/ this.comp.globalData.frameRate)/0.0005;\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue-nextLastValue)*(((currentFrame - lastKeyFrame))/0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\r\n }\r\n }\r\n\r\n function loopIn(type,duration, durationFlag) {\r\n if(!this.k){\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if(currentFrame>=firstKeyFrame){\r\n return this.pv;\r\n }else{\r\n var cycleDuration, lastKeyFrame;\r\n if(!durationFlag){\r\n if(!duration || duration > keyframes.length - 1){\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if(!duration){\r\n cycleDuration = Math.max(0,this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(elem.comp.globalData.frameRate*duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i, len, ret;\r\n if(type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame)/cycleDuration);\r\n if(iterations % 2 === 0){\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame)%cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\r\n }\r\n } else if(type === 'offset'){\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame)%cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame)/cycleDuration)+1;\r\n if(this.pv.length){\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for(i=0;i<len;i+=1){\r\n ret[i] = current[i]-(endV[i]-initV[i])*repeats;\r\n }\r\n return ret;\r\n }\r\n return current-(endV-initV)*repeats;\r\n } else if(type === 'continue'){\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if(this.pv.length){\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for(i=0;i<len;i+=1){\r\n ret[i] = firstValue[i] + (firstValue[i]-nextFirstValue[i])*(firstKeyFrame - currentFrame)/0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + (firstValue-nextFirstValue)*(firstKeyFrame - currentFrame)/0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);\r\n }\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k){\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0, j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if(this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if(this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if(frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n console.warn('Transform at time not supported');\r\n }\r\n\r\n function getTransformStaticValueAtTime(time) {\r\n\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function(elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if(prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function(elem,data,type, mult, container){\r\n var prop = propertyGetProp(elem,data,type, mult, container);\r\n //prop.getVelocityAtTime = getVelocityAtTime;\r\n //prop.loopOut = loopOut;\r\n //prop.loopIn = loopIn;\r\n if(prop.kf){\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if(type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value\r\n };\r\n expressionHelpers.searchExpressions(elem,data,prop);\r\n if(prop.k){\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n //For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shape_pool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame\r\n };\r\n }\r\n \r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if(frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions(){}\r\n ShapeExpressions.prototype = {\r\n vertices: function(prop, time){\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if(time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i, len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for(i = 0; i < len; i += 1) {\r\n if(prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n \r\n }\r\n return arr;\r\n },\r\n points: function(time){\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function(time){\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function(time){\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function(){\r\n return this.v.c;\r\n },\r\n pointOnPath: function(perc, time){\r\n var shapePath = this.v;\r\n if(time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if(!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0, len = lengths.length;\r\n var j = 0, jLen;\r\n var accumulatedLength = 0, pt;\r\n while(i < len) {\r\n if(accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength)/lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if(!pt){\r\n pt = shapePath.c ? [shapePath.v[0][0],shapePath.v[0][1]]:[shapePath.v[shapePath._length-1][0],shapePath.v[shapePath._length-1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function(perc, time, vectorType){\r\n //perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n perc = perc == 1 ? this.v.c ? 0 : 0.999 : perc;\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength,2) + Math.pow(yLength,2));\r\n var unitVector = vectorType === 'tangent' ? [xLength/magnitude, yLength/magnitude] : [-yLength/magnitude, xLength/magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function(perc, time){\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function(perc, time){\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function(elem,data,type, arr, trims){\r\n var prop = propertyGetShapeProp(elem,data,type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if(type === 3){\r\n expressionHelpers.searchExpressions(elem,data.pt,prop);\r\n } else if(type === 4){\r\n expressionHelpers.searchExpressions(elem,data.ks,prop);\r\n }\r\n if(prop.k){\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n(function addDecorator() {\r\n\r\n function searchExpressions(){\r\n if(this.data.d.x){\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function(currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if(currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n }\r\n\r\n TextProperty.prototype.searchProperty = function(){\r\n\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n \r\n}());\r\nvar ShapeExpressionInterface = (function(){\r\n\r\n function iterateElements(shapes,view, propertyGroup){\r\n var arr = [];\r\n var i, len = shapes ? shapes.length : 0;\r\n for(i=0;i<len;i+=1){\r\n if(shapes[i].ty == 'gr'){\r\n arr.push(groupInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'fl'){\r\n arr.push(fillInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'st'){\r\n arr.push(strokeInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'tm'){\r\n arr.push(trimInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'tr'){\r\n //arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'el'){\r\n arr.push(ellipseInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }else if(shapes[i].ty == 'sr'){\r\n arr.push(starInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if(shapes[i].ty == 'sh'){\r\n arr.push(pathInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if(shapes[i].ty == 'rc'){\r\n arr.push(rectInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if(shapes[i].ty == 'rd'){\r\n arr.push(roundedInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if(shapes[i].ty == 'rp'){\r\n arr.push(repeaterInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape,view, propertyGroup){\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value){\r\n var i = 0, len = interfaces.length;\r\n while(i<len){\r\n if(interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value){\r\n return interfaces[i];\r\n }\r\n i+=1;\r\n }\r\n if(typeof value === 'number'){\r\n return interfaces[value-1];\r\n }\r\n };\r\n interfaceFunction.propertyGroup = function(val){\r\n if(val === 1){\r\n return interfaceFunction;\r\n } else{\r\n return propertyGroup(val-1);\r\n }\r\n };\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape,view, propertyGroup){\r\n var interfaceFunction = function _interfaceFunction(value){\r\n switch(value){\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n //Not necessary for now. Keeping them here in case a new case appears\r\n //case 'ADBE Vector Transform Group':\r\n //case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = function(val){\r\n if(val === 1){\r\n return interfaceFunction;\r\n } else{\r\n return propertyGroup(val-1);\r\n }\r\n };\r\n var content = contentsInterfaceFactory(shape,view,interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1],view.it[view.it.length - 1],interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function(){\r\n return shape.nm;\r\n }\r\n });\r\n //interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape,view,propertyGroup){\r\n function interfaceFunction(val){\r\n if(val === 'Color' || val === 'color'){\r\n return interfaceFunction.color;\r\n } else if(val === 'Opacity' || val === 'opacity'){\r\n return interfaceFunction.opacity;\r\n }\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'color': {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n 'opacity': {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n '_name': { value: shape.nm },\r\n 'mn': { value: shape.mn }\r\n });\r\n\r\n view.c.setGroupProperty(propertyGroup);\r\n view.o.setGroupProperty(propertyGroup);\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val === 1){\r\n return ob;\r\n } else{\r\n return propertyGroup(val-1);\r\n }\r\n }\r\n function _dashPropertyGroup(val){\r\n if(val === 1){\r\n return dashOb;\r\n } else{\r\n return _propertyGroup(val-1);\r\n }\r\n }\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\r\n });\r\n }\r\n var i, len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val){\r\n if(val === 'Color' || val === 'color'){\r\n return interfaceFunction.color;\r\n } else if(val === 'Opacity' || val === 'opacity'){\r\n return interfaceFunction.opacity;\r\n } else if(val === 'Stroke Width' || val === 'stroke width'){\r\n return interfaceFunction.strokeWidth;\r\n }\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'color': {\r\n get: ExpressionPropertyInterface(view.c)\r\n },\r\n 'opacity': {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n 'strokeWidth': {\r\n get: ExpressionPropertyInterface(view.w)\r\n },\r\n 'dash': {\r\n get: function() {\r\n return dashOb;\r\n }\r\n },\r\n '_name': { value: shape.nm },\r\n 'mn': { value: shape.mn }\r\n });\r\n\r\n view.c.setGroupProperty(_propertyGroup);\r\n view.o.setGroupProperty(_propertyGroup);\r\n view.w.setGroupProperty(_propertyGroup);\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(_propertyGroup);\r\n view.e.setGroupProperty(_propertyGroup);\r\n view.o.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(val){\r\n if(val === shape.e.ix || val === 'End' || val === 'end'){\r\n return interfaceFunction.end;\r\n }\r\n if(val === shape.s.ix){\r\n return interfaceFunction.start;\r\n }\r\n if(val === shape.o.ix){\r\n return interfaceFunction.offset;\r\n }\r\n }\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n 'start': {\r\n get: ExpressionPropertyInterface(view.s)\r\n },\r\n 'end': {\r\n get: ExpressionPropertyInterface(view.e)\r\n },\r\n 'offset': {\r\n get: ExpressionPropertyInterface(view.o)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n view.transform.mProps.o.setGroupProperty(_propertyGroup);\r\n view.transform.mProps.p.setGroupProperty(_propertyGroup);\r\n view.transform.mProps.a.setGroupProperty(_propertyGroup);\r\n view.transform.mProps.s.setGroupProperty(_propertyGroup);\r\n view.transform.mProps.r.setGroupProperty(_propertyGroup);\r\n if(view.transform.mProps.sk){\r\n view.transform.mProps.sk.setGroupProperty(_propertyGroup);\r\n view.transform.mProps.sa.setGroupProperty(_propertyGroup);\r\n }\r\n view.transform.op.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(value){\r\n if(shape.a.ix === value || value === 'Anchor Point'){\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if(shape.o.ix === value || value === 'Opacity'){\r\n return interfaceFunction.opacity;\r\n }\r\n if(shape.p.ix === value || value === 'Position'){\r\n return interfaceFunction.position;\r\n }\r\n if(shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation'){\r\n return interfaceFunction.rotation;\r\n }\r\n if(shape.s.ix === value || value === 'Scale'){\r\n return interfaceFunction.scale;\r\n }\r\n if(shape.sk && shape.sk.ix === value || value === 'Skew'){\r\n return interfaceFunction.skew;\r\n }\r\n if(shape.sa && shape.sa.ix === value || value === 'Skew Axis'){\r\n return interfaceFunction.skewAxis;\r\n }\r\n\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'opacity': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o)\r\n },\r\n 'position': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p)\r\n },\r\n 'anchorPoint': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a)\r\n },\r\n 'scale': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s)\r\n },\r\n 'rotation': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r)\r\n },\r\n 'skew': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\r\n },\r\n 'skewAxis': {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(_propertyGroup);\r\n prop.p.setGroupProperty(_propertyGroup);\r\n function interfaceFunction(value){\r\n if(shape.p.ix === value){\r\n return interfaceFunction.position;\r\n }\r\n if(shape.s.ix === value){\r\n return interfaceFunction.size;\r\n }\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n 'size': {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n 'position': {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(_propertyGroup);\r\n prop.os.setGroupProperty(_propertyGroup);\r\n prop.pt.setGroupProperty(_propertyGroup);\r\n prop.p.setGroupProperty(_propertyGroup);\r\n prop.r.setGroupProperty(_propertyGroup);\r\n if(shape.ir){\r\n prop.ir.setGroupProperty(_propertyGroup);\r\n prop.is.setGroupProperty(_propertyGroup);\r\n }\r\n\r\n function interfaceFunction(value){\r\n if(shape.p.ix === value){\r\n return interfaceFunction.position;\r\n }\r\n if(shape.r.ix === value){\r\n return interfaceFunction.rotation;\r\n }\r\n if(shape.pt.ix === value){\r\n return interfaceFunction.points;\r\n }\r\n if(shape.or.ix === value || 'ADBE Vector Star Outer Radius' === value){\r\n return interfaceFunction.outerRadius;\r\n }\r\n if(shape.os.ix === value){\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if(shape.ir && (shape.ir.ix === value || 'ADBE Vector Star Inner Radius' === value)){\r\n return interfaceFunction.innerRadius;\r\n }\r\n if(shape.is && shape.is.ix === value){\r\n return interfaceFunction.innerRoundness;\r\n }\r\n\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n 'position': {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n 'rotation': {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n 'points': {\r\n get: ExpressionPropertyInterface(prop.pt)\r\n },\r\n 'outerRadius': {\r\n get: ExpressionPropertyInterface(prop.or)\r\n },\r\n 'outerRoundness': {\r\n get: ExpressionPropertyInterface(prop.os)\r\n },\r\n 'innerRadius': {\r\n get: ExpressionPropertyInterface(prop.ir)\r\n },\r\n 'innerRoundness': {\r\n get: ExpressionPropertyInterface(prop.is)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(_propertyGroup);\r\n prop.s.setGroupProperty(_propertyGroup);\r\n prop.r.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(value){\r\n if(shape.p.ix === value){\r\n return interfaceFunction.position;\r\n }\r\n if(shape.r.ix === value){\r\n return interfaceFunction.roundness;\r\n }\r\n if(shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size'){\r\n return interfaceFunction.size;\r\n }\r\n\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'position': {\r\n get: ExpressionPropertyInterface(prop.p)\r\n },\r\n 'roundness': {\r\n get: ExpressionPropertyInterface(prop.r)\r\n },\r\n 'size': {\r\n get: ExpressionPropertyInterface(prop.s)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(value){\r\n if(shape.r.ix === value || 'Round Corners 1' === value){\r\n return interfaceFunction.radius;\r\n }\r\n\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'radius': {\r\n get: ExpressionPropertyInterface(prop.rd)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape,view,propertyGroup){\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(_propertyGroup);\r\n prop.o.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(value){\r\n if(shape.c.ix === value || 'Copies' === value){\r\n return interfaceFunction.copies;\r\n } else if(shape.o.ix === value || 'Offset' === value){\r\n return interfaceFunction.offset;\r\n }\r\n\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'copies': {\r\n get: ExpressionPropertyInterface(prop.c)\r\n },\r\n 'offset': {\r\n get: ExpressionPropertyInterface(prop.o)\r\n },\r\n '_name': { value: shape.nm }\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function pathInterfaceFactory(shape,view,propertyGroup){\r\n var prop = view.sh;\r\n function _propertyGroup(val){\r\n if(val == 1){\r\n return interfaceFunction;\r\n } else {\r\n return propertyGroup(--val);\r\n }\r\n }\r\n prop.setGroupProperty(_propertyGroup);\r\n\r\n function interfaceFunction(val){\r\n if(val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2){\r\n return interfaceFunction.path;\r\n }\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n 'path': {\r\n get: function(){\r\n if(prop.k){\r\n prop.getValue();\r\n }\r\n return prop;\r\n }\r\n },\r\n 'shape': {\r\n get: function(){\r\n if(prop.k){\r\n prop.getValue();\r\n }\r\n return prop;\r\n }\r\n },\r\n '_name': { value: shape.nm },\r\n 'ix': { value: shape.ix },\r\n 'mn': { value: shape.mn }\r\n });\r\n return interfaceFunction;\r\n }\r\n\r\n return function(shapes,view,propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value){\r\n if(typeof value === 'number'){\r\n return interfaces[value-1];\r\n } else {\r\n var i = 0, len = interfaces.length;\r\n while(i<len){\r\n if(interfaces[i]._name === value){\r\n return interfaces[i];\r\n }\r\n i+=1;\r\n }\r\n }\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroup;\r\n interfaces = iterateElements(shapes, view, _interfaceFunction);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\nvar TextExpressionInterface = (function(){\r\n\treturn function(elem){\r\n var _prevValue, _sourceText;\r\n function _thisLayerFunction(){\r\n }\r\n Object.defineProperty(_thisLayerFunction, \"sourceText\", {\r\n get: function(){\r\n elem.textProperty.getValue()\r\n var stringValue = elem.textProperty.currentData.t;\r\n if(stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue);\r\n //If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue ? stringValue : new String(stringValue);\r\n }\r\n return _sourceText;\r\n }\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\nvar LayerExpressionInterface = (function (){\r\n function toWorld(arr, time){\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n var transformMat;\r\n if(time) {\r\n //Todo implement value at time on transform properties\r\n //transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n transformMat = this._elem.finalTransform.mProp;\r\n } else {\r\n transformMat = this._elem.finalTransform.mProp;\r\n }\r\n transformMat.applyToMatrix(toWorldMat);\r\n if(this._elem.hierarchy && this._elem.hierarchy.length){\r\n var i, len = this._elem.hierarchy.length;\r\n for(i=0;i<len;i+=1){\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);\r\n }\r\n return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);\r\n }\r\n function fromWorld(arr, time){\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n var transformMat;\r\n if(time) {\r\n //Todo implement value at time on transform properties\r\n //transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n transformMat = this._elem.finalTransform.mProp;\r\n } else {\r\n transformMat = this._elem.finalTransform.mProp;\r\n }\r\n transformMat.applyToMatrix(toWorldMat);\r\n if(this._elem.hierarchy && this._elem.hierarchy.length){\r\n var i, len = this._elem.hierarchy.length;\r\n for(i=0;i<len;i+=1){\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n function fromComp(arr){\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if(this._elem.hierarchy && this._elem.hierarchy.length){\r\n var i, len = this._elem.hierarchy.length;\r\n for(i=0;i<len;i+=1){\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1,1,1,1];\r\n }\r\n\r\n\r\n return function(elem){\r\n\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager){\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects){\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name){\r\n switch(name){\r\n case \"ADBE Root Vectors Group\":\r\n case \"Contents\":\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case \"Transform\":\r\n case \"transform\":\r\n case \"ADBE Transform Group\":\r\n return transformInterface;\r\n case 4:\r\n case \"ADBE Effect Parade\":\r\n case \"effects\":\r\n case \"Effects\":\r\n return _thisLayerFunction.effect;\r\n }\r\n }\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction,{\r\n hasParent: {\r\n get: function(){\r\n return elem.hierarchy.length;\r\n }\r\n },\r\n parent: {\r\n get: function(){\r\n return elem.hierarchy[0].layerInterface;\r\n }\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n }\r\n },\r\n active: {\r\n get: function(){\r\n return elem.isInRange;\r\n }\r\n }\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip/elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op/elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\nvar CompExpressionInterface = (function (){\r\n return function(comp){\r\n function _thisLayerFunction(name){\r\n var i=0, len = comp.layers.length;\r\n while(i<len){\r\n if(comp.layers[i].nm === name || comp.layers[i].ind === name){\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n //return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, \"_name\", { value:comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1/comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\nvar TransformExpressionInterface = (function (){\r\n return function(transform){\r\n function _thisFunction(name){\r\n switch(name){\r\n case \"scale\":\r\n case \"Scale\":\r\n case \"ADBE Scale\":\r\n case 6:\r\n return _thisFunction.scale;\r\n case \"rotation\":\r\n case \"Rotation\":\r\n case \"ADBE Rotation\":\r\n case \"ADBE Rotate Z\":\r\n case 10:\r\n return _thisFunction.rotation;\r\n case \"ADBE Rotate X\":\r\n return _thisFunction.xRotation;\r\n case \"ADBE Rotate Y\":\r\n return _thisFunction.yRotation;\r\n case \"position\":\r\n case \"Position\":\r\n case \"ADBE Position\":\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case \"anchorPoint\":\r\n case \"AnchorPoint\":\r\n case \"Anchor Point\":\r\n case \"ADBE AnchorPoint\":\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case \"opacity\":\r\n case \"Opacity\":\r\n case 11:\r\n return _thisFunction.opacity;\r\n }\r\n }\r\n\r\n Object.defineProperty(_thisFunction, \"rotation\", {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"zRotation\", {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"xRotation\", {\r\n get: ExpressionPropertyInterface(transform.rx)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"yRotation\", {\r\n get: ExpressionPropertyInterface(transform.ry)\r\n });\r\n Object.defineProperty(_thisFunction, \"scale\", {\r\n get: ExpressionPropertyInterface(transform.s)\r\n });\r\n\r\n if(transform.p) {\r\n var _transformFactory = ExpressionPropertyInterface(transform.p);\r\n }\r\n Object.defineProperty(_thisFunction, \"position\", {\r\n get: function () {\r\n if(transform.p) {\r\n return _transformFactory();\r\n } else {\r\n return [transform.px.v, transform.py.v, transform.pz ? transform.pz.v : 0];\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"xPosition\", {\r\n get: ExpressionPropertyInterface(transform.px)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"yPosition\", {\r\n get: ExpressionPropertyInterface(transform.py)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"zPosition\", {\r\n get: ExpressionPropertyInterface(transform.pz)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"anchorPoint\", {\r\n get: ExpressionPropertyInterface(transform.a)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"opacity\", {\r\n get: ExpressionPropertyInterface(transform.o)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"skew\", {\r\n get: ExpressionPropertyInterface(transform.sk)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"skewAxis\", {\r\n get: ExpressionPropertyInterface(transform.sa)\r\n });\r\n\r\n Object.defineProperty(_thisFunction, \"orientation\", {\r\n get: ExpressionPropertyInterface(transform.or)\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\nvar ProjectInterface = (function (){\r\n\r\n function registerComposition(comp){\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function(){\r\n function _thisProjectFunction(name){\r\n var i = 0, len = this.compositions.length;\r\n while(i<len){\r\n if(this.compositions[i].data && this.compositions[i].data.nm === name){\r\n if(this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i+=1;\r\n }\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\nvar EffectsExpressionInterface = (function (){\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup){\r\n if(elem.effectsManager){\r\n\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i, len = elem.effectsManager.effectElements.length;\r\n for(i=0;i<len;i+=1){\r\n effectElements.push(createGroupInterface(effectsData[i],elem.effectsManager.effectElements[i],propertyGroup,elem));\r\n }\r\n\r\n return function(name){\r\n var effects = elem.data.ef || [], i = 0, len = effects.length;\r\n while(i<len) {\r\n if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n };\r\n }\r\n }\r\n\r\n function createGroupInterface(data,elements, propertyGroup, elem){\r\n var effectElements = [];\r\n var i, len = data.ef.length;\r\n for(i=0;i<len;i+=1){\r\n if(data.ef[i].ty === 5){\r\n effectElements.push(createGroupInterface(data.ef[i],elements.effectElements[i],elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i],data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n function _propertyGroup(val) {\r\n if(val === 1){\r\n return groupInterface;\r\n } else{\r\n return propertyGroup(val-1);\r\n }\r\n }\r\n\r\n var groupInterface = function(name){\r\n var effects = data.ef, i = 0, len = effects.length;\r\n while(i<len) {\r\n if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){\r\n if(effects[i].ty === 5){\r\n return effectElements[i];\r\n } else {\r\n return effectElements[i]();\r\n }\r\n }\r\n i += 1;\r\n }\r\n return effectElements[0]();\r\n };\r\n\r\n groupInterface.propertyGroup = _propertyGroup;\r\n\r\n if(data.mn === 'ADBE Color Control'){\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function(){\r\n return effectElements[0]();\r\n }\r\n });\r\n }\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function(){\r\n return data.np;\r\n }\r\n });\r\n groupInterface.active = groupInterface.enabled = data.en !== 0;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup){\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction(){\r\n if(type === 10){\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if(element.p.setGroupProperty) {\r\n element.p.setGroupProperty(propertyGroup);\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n\r\n}());\r\nvar MaskManagerInterface = (function(){\r\n\r\n\tfunction MaskInterface(mask, data){\r\n\t\tthis._mask = mask;\r\n\t\tthis._data = data;\r\n\t}\r\n\tObject.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function(){\r\n if(this._mask.prop.k){\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n }\r\n });\r\n\r\n\tvar MaskManager = function(maskManager, elem){\r\n\t\tvar _maskManager = maskManager;\r\n\t\tvar _elem = elem;\r\n\t\tvar _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n\t\tvar i, len = maskManager.viewData.length;\r\n\t\tfor(i = 0; i < len; i += 1) {\r\n\t\t\t_masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n\t\t}\r\n\r\n\t\tvar maskFunction = function(name){\r\n\t\t\ti = 0;\r\n\t\t while(i<len){\r\n\t\t if(maskManager.masksProperties[i].nm === name){\r\n\t\t return _masksInterfaces[i];\r\n\t\t }\r\n\t\t i += 1;\r\n\t\t }\r\n\t\t};\r\n\t\treturn maskFunction;\r\n\t};\r\n\treturn MaskManager;\r\n}());\r\n\r\nvar ExpressionPropertyInterface = (function() {\r\n\r\n var defaultUnidimensionalValue = {pv:0, v:0, mult: 1}\r\n var defaultMultidimensionalValue = {pv:[0,0,0], v:[0,0,0], mult: 1}\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function(){\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n }\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function(pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n } else {\r\n var value = '';\r\n if ('s' in property.keyframes[pos-1]) {\r\n value = property.keyframes[pos-1].s;\r\n } else if ('e' in property.keyframes[pos-2]) {\r\n value = property.keyframes[pos-2].e;\r\n } else {\r\n value = property.keyframes[pos-2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value);\r\n valueProp.time = property.keyframes[pos-1].t / property.elem.comp.globalData.frameRate;\r\n return valueProp;\r\n }\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if(!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val);\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function() {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if(expressionValue.value !== val) {\r\n expressionValue = new Number(val);\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n }\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if(!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function() {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n expressionValue[i] = arrValue[i] = property.v[i] * mult;\r\n }\r\n return expressionValue;\r\n }\r\n }\r\n\r\n //TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n \r\n return function(property) {\r\n if(!property) {\r\n return defaultGetter;\r\n } else if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n } else {\r\n return MultidimensionalPropertyInterface(property);\r\n }\r\n }\r\n}());\r\n\r\n(function(){\r\n\r\n var TextExpressionSelectorProp = (function(){\r\n\r\n function getValueProxy(index,total){\r\n this.textIndex = index+1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function TextExpressionSelectorProp(elem,data){\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1,1,1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem,data,this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if(this.kf){\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n }());\r\n\r\n\tvar propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\n\tTextSelectorProp.getTextSelectorProp = function(elem, data,arr){\r\n\t if(data.t === 1){\r\n\t return new TextExpressionSelectorProp(elem, data,arr);\r\n\t } else {\r\n\t return propertyGetTextProp(elem,data,arr);\r\n\t }\r\n\t};\r\n}());\r\nfunction SliderEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,0,0,container);\r\n}\r\nfunction AngleEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,0,0,container);\r\n}\r\nfunction ColorEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,1,0,container);\r\n}\r\nfunction PointEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,1,0,container);\r\n}\r\nfunction LayerIndexEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,0,0,container);\r\n}\r\nfunction MaskIndexEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,0,0,container);\r\n}\r\nfunction CheckboxEffect(data,elem, container){\r\n this.p = PropertyFactory.getProp(elem,data.v,0,0,container);\r\n}\r\nfunction NoValueEffect(){\r\n this.p = {};\r\n}\r\nfunction EffectsManager(){}\r\nfunction EffectsManager(data,element){\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i,len = effects.length;\r\n var effectItem;\r\n for(i=0;i<len;i++) {\r\n effectItem = new GroupEffect(effects[i],element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data,element){\r\n this.init(data,element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function(data,element){\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i, len = this.data.ef.length;\r\n var eff, effects = this.data.ef;\r\n for(i=0;i<len;i+=1){\r\n eff = null;\r\n switch(effects[i].ty){\r\n case 0:\r\n eff = new SliderEffect(effects[i],element,this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i],element,this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i],element,this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i],element,this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i],element,this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i],element,this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i],element,this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i],element,this);\r\n break;\r\n //case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i],element,this);\r\n break;\r\n }\r\n if(eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n var lottiejs = {};\r\n\r\n var _isFrozen = false;\r\n\r\n function setLocationHref (href) {\r\n locationHref = href;\r\n }\r\n\r\n function searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n }\r\n\r\n function setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n }\r\n\r\n function loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n }\r\n\r\n function setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n }\r\n\r\n function inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n }\r\n\r\n function installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n }\r\n\r\n function getFactory(name) {\r\n switch (name) {\r\n case \"propertyFactory\":\r\n return PropertyFactory;\r\n case \"shapePropertyFactory\":\r\n return ShapePropertyFactory;\r\n case \"matrix\":\r\n return Matrix;\r\n }\r\n }\r\n\r\n lottiejs.play = animationManager.play;\r\n lottiejs.pause = animationManager.pause;\r\n lottiejs.setLocationHref = setLocationHref;\r\n lottiejs.togglePause = animationManager.togglePause;\r\n lottiejs.setSpeed = animationManager.setSpeed;\r\n lottiejs.setDirection = animationManager.setDirection;\r\n lottiejs.stop = animationManager.stop;\r\n lottiejs.searchAnimations = searchAnimations;\r\n lottiejs.registerAnimation = animationManager.registerAnimation;\r\n lottiejs.loadAnimation = loadAnimation;\r\n lottiejs.setSubframeRendering = setSubframeRendering;\r\n lottiejs.resize = animationManager.resize;\r\n //lottiejs.start = start;\r\n lottiejs.goToAndStop = animationManager.goToAndStop;\r\n lottiejs.destroy = animationManager.destroy;\r\n lottiejs.setQuality = setQuality;\r\n lottiejs.inBrowser = inBrowser;\r\n lottiejs.installPlugin = installPlugin;\r\n lottiejs.freeze = animationManager.freeze;\r\n lottiejs.unfreeze = animationManager.unfreeze;\r\n lottiejs.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\n lottiejs.__getFactory = getFactory;\r\n lottiejs.version = '5.5.1';\r\n\r\n function checkReady() {\r\n if (document.readyState === \"complete\") {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n }\r\n\r\n function getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n }\r\n var standalone = '__[STANDALONE]__';\r\n var animationData = '__[ANIMATIONDATA]__';\r\n var renderer = '';\r\n if (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: ''\r\n };\r\n var queryString = myScript.src.replace(/^[^\\?]+\\??/, '');\r\n renderer = getQueryVariable('renderer');\r\n }\r\n var readyStateCheckInterval = setInterval(checkReady, 100);\r\n return lottiejs;\r\n}));\r\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport lottie from 'lottie-web'\nimport PropTypes from 'prop-types'\n\nimport blueAnimation from '../../../assets/logo_animated_blue.json'\nimport whiteAnimation from '../../../assets/logo_animated_white.json'\n\nconst LoadingDiv = styled.div`\n\twidth: ${({ size }) => size || '200px'};\n\theight: ${({ size }) => size || '200px'};\n`\n\nclass Loading extends Component {\n\tcomponentDidMount() {\n\t\tconst { color } = this.props\n\n\t\tlottie.loadAnimation({\n\t\t\tcontainer: this.loadingContainer,\n\t\t\trenderer: 'svg',\n\t\t\tloop: true,\n\t\t\tautoplay: true,\n\t\t\tanimationData: color === 'white' ? whiteAnimation : blueAnimation\n\t\t})\n\t}\n\n\trender() {\n\t\treturn <LoadingDiv className='loading-animated-qube' ref={el => (this.loadingContainer = el)} {...this.props} />\n\t}\n}\n\nLoading.defaultProps = {\n\tcolor: 'blue'\n}\n\nLoading.displayName = 'Loading'\n\nLoading.propTypes = {\n\tcolor: PropTypes.oneOf(['white', 'blue'])\n}\n\nexport default Loading\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport Loading from './Loading'\nimport { CenteredGrid } from '../../collections'\n\nconst ModalLoading = styled.div`\n\tposition: absolute;\n\tdisplay: ${({ active }) => (active ? 'block' : 'none')};\n\n\twidth: 100%;\n\theight: 100%;\n\tbackground: rgba(255, 255, 255, 0.8);\n`\n\nconst LoadingModal = props => {\n\treturn (\n\t\t<ModalLoading {...props}>\n\t\t\t<CenteredGrid width='100%' height='100%'>\n\t\t\t\t<Loading style={{ margin: 'auto' }} size='200px' />\n\t\t\t</CenteredGrid>\n\t\t</ModalLoading>\n\t)\n}\n\nLoadingModal.displayName = 'Loading'\n\nLoadingModal.propTypes = {\n\tactive: PropTypes.bool.isRequired\n}\n\nexport default LoadingModal\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\n\nconst ListHeaderContainer = styled(Grid)`\n\tborder-top: 1px solid #ddd;\n`\n\nexport default ListHeaderContainer\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\n\nconst ListHeaderPaginationContainer = styled(Grid.Column)`\n\ttext-align: end;\n`\n\nexport default ListHeaderPaginationContainer\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\n\nimport ListHeaderContainer from './ListHeaderContainer'\nimport ListHeaderPaginationContainer from './ListHeaderPaginationContainer'\nimport { Pagination } from '../../pagination'\nimport { Checkbox } from '../../inputs/Checkbox'\n\nconst ListHeader = ({ checked, handleSelectAll, pagination, children }) => (\n\t<ListHeaderContainer padded verticalAlign='middle'>\n\t\t<ActionsListWrapper tablet={8}>\n\t\t\t{checked !== undefined && <Checkbox onChange={handleSelectAll} checked={checked} />}\n\t\t\t{children}\n\t\t</ActionsListWrapper>\n\t\t{pagination && pagination.totalPages > 1 && (\n\t\t\t<ListHeaderPaginationContainer computer={8} tablet={8} mobile={16} floated='right'>\n\t\t\t\t<Pagination\n\t\t\t\t\tactivePage={pagination.activePage}\n\t\t\t\t\tonPageChange={pagination.handlePageChange}\n\t\t\t\t\ttotalPages={pagination.totalPages}\n\t\t\t\t\tsiblingRange={1}\n\t\t\t\t/>\n\t\t\t</ListHeaderPaginationContainer>\n\t\t)}\n\t</ListHeaderContainer>\n)\n\nconst ActionsListWrapper = styled(Grid.Column)`\n\tdiv:first-child {\n\t\tmargin-right: 21px;\n\t}\n`\n\nListHeader.defaultProps = {\n\tchildren: undefined,\n\tchecked: undefined,\n\thandleSelectAll: undefined,\n\tpagination: undefined,\n\tselectAllCheckboxColor: undefined\n}\n\nListHeader.displayName = 'ListHeader'\n\nListHeader.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\tchecked: PropTypes.bool,\n\thandleSelectAll: PropTypes.func,\n\tpagination: PropTypes.shape({\n\t\tactivePage: PropTypes.number.isRequired,\n\t\thandlePageChange: PropTypes.func.isRequired,\n\t\ttotalPages: PropTypes.number.isRequired\n\t}),\n\tselectAllCheckboxColor: PropTypes.string\n}\n\nexport default ListHeader\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\n\nconst ListCardContainerWrapper = styled(Grid)`\n\t&&&&.list-wrapper {\n\t\twidth: 100% !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t@media only screen and (max-width: 767px) {\n\t\t&&&&.list-wrapper {\n\t\t\twidth: 100% !important;\n\t\t\tmargin-right: 0 !important;\n\t\t\tmargin-left: 0 !important;\n\t\t}\n\t}\n`\n\nconst ListCardWrapper = props => <ListCardContainerWrapper className='list-wrapper' stackable columns={4} {...props} />\n\nListCardWrapper.displayName = 'ListCardWrapper'\n\nexport default ListCardWrapper\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\nimport PropTypes from 'prop-types'\nimport { ListHeader } from '../ListHeader'\nimport { ListCardWrapper } from '../ListCardWrapper'\nimport theme from '../../../themes/default'\n\nconst List = ({ checked, handleSelectAll, pagination, extra, selectAllCheckboxColor, children, cards, ...props }) => (\n\t<ListContainer pagination={pagination} {...props}>\n\t\t{(checked !== undefined || pagination) && (\n\t\t\t<ListHeader\n\t\t\t\tchecked={checked}\n\t\t\t\thandleSelectAll={() => handleSelectAll(!checked)}\n\t\t\t\tpagination={pagination}\n\t\t\t\tselectAllCheckboxColor={selectAllCheckboxColor}\n\t\t\t>\n\t\t\t\t{extra && children[0]}\n\t\t\t</ListHeader>\n\t\t)}\n\t\t{cards ? (\n\t\t\t<ListCardWrapper>{!extra ? children : children[1]}</ListCardWrapper>\n\t\t) : (\n\t\t\t<React.Fragment>{!extra ? children : children[1]}</React.Fragment>\n\t\t)}\n\t</ListContainer>\n)\n\nconst ListContainer = styled(({ pagination, ...props }) => <Grid.Row {...props} />)`\n\tmin-width: ${({ pagination }) => (pagination && pagination.totalPages > 1 ? '410px' : 'min-content')};\n`\n\nListContainer.displayName = 'ListContainer'\n\nList.defaultProps = {\n\tchecked: undefined,\n\textra: undefined,\n\tcards: undefined,\n\thandleSelectAll: undefined,\n\tpagination: undefined,\n\tselectAllCheckboxColor: theme.colors.activeBlue\n}\n\nList.displayName = 'List'\n\nList.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** state of the select all checkbox */\n\tchecked: PropTypes.bool,\n\t/** activate extra actions in header, must use ListHeaderAction container */\n\textra: PropTypes.bool,\n\t/** activate card display in body, must use ListCard container for each item */\n\tcards: PropTypes.bool,\n\t/** select all handler function, return checkbox state */\n\thandleSelectAll: PropTypes.func,\n\t/** set pagination options to show the pagination wrapper */\n\tpagination: PropTypes.shape({\n\t\tactivePage: PropTypes.number.isRequired,\n\t\thandlePageChange: PropTypes.func.isRequired,\n\t\ttotalPages: PropTypes.number.isRequired\n\t}),\n\tselectAllCheckboxColor: PropTypes.string\n}\n\nexport default List\n","import React from 'react'\nimport styled from 'styled-components'\nimport Icon from '../../icons/Icon'\n\nconst ListHeaderAction = styled(Icon)`\n\tdisplay: inline-flex !important;\n\tmargin-left: 18px !important;\n\tcursor: pointer !important;\n`\n\nListHeaderAction.displayName = 'ListHeaderAction'\n\nexport default ListHeaderAction\n","import React from 'react'\nimport styled from 'styled-components'\n\nconst ListRowWrapper = styled(({ index, ...props }) => <div {...props} />)`\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 0 1rem;\n\tbackground-color: ${({ theme, index }) => (index % 2 === 0 ? theme.list.pairCell : theme.list.unPairCell)};\n\tcursor: pointer;\n\n\t&&&&.active {\n\t\tbackground-color: ${({ theme }) => theme.colors.lightBlue};\n\t}\n\n\t${({ removehover, theme }) =>\n\t\t!removehover &&\n\t\t`\n\t&&&&:hover {\n\t\tposition: relative;\n\t\tbackground-color: ${theme.colors.lightBlue};\n\t\tbox-shadow: ${theme.list.boxShadow};\n\t\ttransition: all 0.2s ease-in-out;\n\n\t\t.onHoverShow {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t}`}\n`\n\nListRowWrapper.displayName = 'ListRowWrapper'\n\nexport default ListRowWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Icon } from '../../icons'\nimport { DefaultTheme as theme } from '../../../themes'\nimport { Checkbox } from '../../inputs/Checkbox'\nimport { Radio } from '../../inputs/Radio'\n\nconst ListRowActionWrapper = ({ color, typeAction, isActive, handleAction, ...props }) => (\n\t<ListBlockContainer onClick={e => e.stopPropagation()} typeAction={typeAction} {...props}>\n\t\t{typeAction === 'checkbox' && <Checkbox onChange={() => handleAction(!isActive)} checked={isActive} />}\n\t\t{typeAction === 'radio' && <Radio onChange={() => handleAction(!isActive)} checked={isActive} />}\n\t\t{typeAction === 'icon' && <IconWrapper icon='lock' color={theme.colors.red} />}\n\t</ListBlockContainer>\n)\n\nconst IconWrapper = styled(Icon)`\n\t&&&& {\n\t\theight: 100%;\n\t}\n`\n\nconst ListBlockContainer = styled.div`\n\tdisplay: flex;\n\tcursor: ${({ typeAction }) => (typeAction === 'icon' ? 'default' : 'pointer')};\n`\n\nListRowActionWrapper.defaultProps = {\n\tcolor: theme.colors.activeBlue\n}\n\nListBlockContainer.displayName = 'ListBlockContainer'\nListRowActionWrapper.displayName = 'ListRowActionWrapper'\n\nListRowActionWrapper.propTypes = {\n\t/** string with type of the row action */\n\ttypeAction: PropTypes.oneOf(['checkbox', 'radio', 'icon']).isRequired,\n\t/** bool to control the state of the action */\n\tisActive: PropTypes.bool.isRequired,\n\t/** function handler to the row action */\n\thandleAction: PropTypes.func.isRequired,\n\t/** string with action color */\n\tcolor: PropTypes.string\n}\n\nexport default ListRowActionWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport ListRowActionWrapper from './ListRowActionWrapper'\nimport { DefaultTheme as theme } from '../../../themes'\n\nconst ListRowLeft = ({ children, color, typeAction, handleAction, isActive, ...props }) => (\n\t<Wrapper {...props}>\n\t\t{typeAction !== undefined && (\n\t\t\t<ListRowActionWrapper\n\t\t\t\tcolor={color}\n\t\t\t\ttypeAction={typeAction}\n\t\t\t\tisActive={isActive}\n\t\t\t\thandleAction={handleAction}\n\t\t\t/>\n\t\t)}\n\t\t{children}\n\t</Wrapper>\n)\n\nconst Wrapper = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n`\n\nListRowLeft.defaultProps = {\n\ttypeAction: undefined,\n\tisActive: undefined,\n\thandleAction: undefined,\n\tcolor: theme.colors.activeBlue\n}\n\nListRowLeft.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** string with type of the row action */\n\ttypeAction: PropTypes.oneOf(['checkbox', 'radio', 'icon']),\n\t/** bool to control the state of the action */\n\tisActive: PropTypes.bool,\n\t/** function handler to the row action */\n\thandleAction: PropTypes.func,\n\t/** string with action color */\n\tcolor: PropTypes.string\n}\n\nListRowLeft.displayName = 'ListRowLeft'\n\nexport default ListRowLeft\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst renderElements = element =>\n\tArray.isArray(element) ? element.map((child, i) => <Div key={i}>{child}</Div>) : <Div>{element}</Div>\n\nconst ListRowRight = ({ children, showOnHover }) => (\n\t<ListRowRightStyled role='row' tabIndex='0' onClick={e => e.stopPropagation()}>\n\t\t{showOnHover && <OnHoverShow className='onHoverShow'>{renderElements(showOnHover)}</OnHoverShow>}\n\t\t<Flex>{renderElements(children)}</Flex>\n\t</ListRowRightStyled>\n)\n\nconst ListRowRightStyled = styled.div`\n\toutline: none;\n`\n\nconst Flex = styled.div`\n\tdisplay: flex;\n`\n\nconst Div = styled.div`\n\tmargin-right: 18px;\n\n\t:last-child {\n\t\tmargin-right: 0;\n\t}\n`\n\nconst OnHoverShow = styled.span`\n\tdisplay: none;\n`\nOnHoverShow.displayName = 'OnHoverShow'\n\nListRowRight.defaultProps = {\n\tshowOnHover: null,\n\tchildren: null\n}\n\nListRowRight.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\t/** components shown when hovered */\n\tshowOnHover: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n}\n\nListRowRight.displayName = 'ListRowRight'\n\nexport default ListRowRight\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ListRowWrapper from './ListRowWrapper'\nimport ListRowLeft from './ListRowLeft'\nimport ListRowRight from './ListRowRight'\n\nconst ListRow = ({ index, isActive, handleAction, children, ...props }) => {\n\tconst renderChildrenWithProps = () => {\n\t\treturn React.Children.map(children, child => {\n\t\t\treturn React.cloneElement(child, {\n\t\t\t\thandleAction,\n\t\t\t\tisActive\n\t\t\t})\n\t\t})\n\t}\n\n\treturn (\n\t\t<ListRowWrapper index={index} className={isActive && 'active'} {...props}>\n\t\t\t{renderChildrenWithProps(children)}\n\t\t</ListRowWrapper>\n\t)\n}\n\nListRow.Left = ({ ...props }) => <ListRowLeft {...props} />\nListRow.Left.displayName = 'ListRow.Left'\nListRow.Right = ({ ...props }) => <ListRowRight {...props} />\nListRow.Right.displayName = 'ListRow.Right'\n\nListRow.defaultProps = {\n\tisActive: false,\n\thandleAction: undefined\n}\n\nListRow.displayName = 'ListRow'\n\nListRow.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** array index for striping css */\n\tindex: PropTypes.number.isRequired,\n\t/** bool that control the action state */\n\tisActive: PropTypes.bool,\n\t/** handle action function */\n\thandleAction: PropTypes.func\n}\n\nexport default ListRow\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst ListRowRight = styled.div`\n\tdisplay: block;\n\tmargin-right: 12px;\n\tmargin-left: auto;\n\tcursor: pointer;\n\tfloat: right;\n\tline-height: 34px;\n\n\t& > div > i {\n\t\tline-height: 34px;\n\t}\n`\n\nconst ListAddInfoWrapper = props => <ListRowRight className='additional-info-wrapper' {...props} />\n\nListAddInfoWrapper.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nListAddInfoWrapper.displayName = 'ListAddInfoWrapper'\n\nexport default ListAddInfoWrapper\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst ListRowRight = styled.div`\n\tdisplay: block;\n\tmargin-right: 12px;\n\tmargin-left: auto;\n\tcursor: pointer;\n\tfloat: right;\n\tline-height: 34px;\n\n\t& > div > i {\n\t\tline-height: 34px;\n\t}\n`\n\nconst ListActionsWrapper = props => (\n\t<ListRowRight className='actions-wrapper' onClick={e => e.stopPropagation()} {...props} />\n)\n\nListActionsWrapper.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nListActionsWrapper.displayName = 'ListActionsWrapper'\n\nexport default ListActionsWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { Grid } from 'semantic-ui-react'\nimport theme from '../../../themes/default'\n\nconst CardWrapper = styled(({ numCols, last, actions, addInfo, error, ...props }) => <Grid.Column {...props} />)`\n\tdisplay: flex;\n\twidth: ${({ numCols }) => `${(100 - (numCols - 1) * 2) / numCols}% !important`};\n\tmin-height: 68px;\n\tflex-wrap: wrap;\n\tjustify-content: space-between;\n\tpadding: 14px 12px 16px;\n\tmargin-right: ${({ last, numCols }) => (last || numCols === 1 ? '0' : '2%')};\n\tmargin-bottom: 20px;\n\tborder: 1px solid ${({ error }) => (error ? theme.listCard.errorBorder : theme.listCard.defaultBorder)} !important;\n\tborder-radius: 4px;\n\tcursor: pointer;\n\n\t@media only screen and (max-width: 767px) {\n\t\twidth: 100% !important;\n\t\tmargin-right: 0 !important;\n\t\tmargin-bottom: 20px !important;\n\t}\n\n\t:hover {\n\t\tposition: relative;\n\t\tbackground-color: #daedff !important;\n\t\tbox-shadow: 0 3px 3px rgba(0, 0, 0, 0.25) !important;\n\t\ttransition: all 0.2s ease-in-out;\n\t}\n\n\t:hover > .additional-info-wrapper {\n\t\tdisplay: ${({ actions }) => actions && 'none'};\n\t}\n\n\t> .actions-wrapper {\n\t\tdisplay: ${({ actions, addInfo }) => (!addInfo && actions ? 'block' : 'none')};\n\t}\n\n\t:hover > .actions-wrapper {\n\t\tdisplay: ${({ actions }) => actions && 'block'};\n\t\ttransition: all 0.1s ease-in;\n\t}\n\n\t.active {\n\t\tbackground-color: #daedff !important;\n\t}\n`\n\nconst ListCard = ({ checked, ...props }) => <CardWrapper className={`${checked && 'active'}`} {...props} />\n\nListCard.defaultProps = {\n\tchecked: undefined,\n\tlast: false,\n\tnumCols: 4,\n\terror: false\n}\n\nListCard.displayName = 'ListCard'\n\nListCard.propTypes = {\n\tchecked: PropTypes.bool,\n\tlast: PropTypes.bool,\n\tnumCols: PropTypes.number,\n\terror: PropTypes.bool\n}\n\nexport default ListCard\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { Icon } from '../../icons'\n\nconst ListExpandableRow = ({\n\tchildren,\n\tactiveIndex,\n\tindex,\n\tonClick,\n\tcomponentsLeft,\n\tcomponentsRightShowOnHover,\n\tcomponentsRight,\n\tcomponentsRightHideOnHover,\n\t...props\n}) => {\n\tconst renderElements = element => element.map((child, i) => <FlexCenter key={i}>{child}</FlexCenter>)\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<Row expanded={index === activeIndex} index={index} onClick={() => onClick(index)} {...props}>\n\t\t\t\t<Flex>{renderElements(componentsLeft)}</Flex>\n\t\t\t\t<Flex>\n\t\t\t\t\t{componentsRightHideOnHover && (\n\t\t\t\t\t\t<Flex className='OnHoverHide'>{renderElements(componentsRightHideOnHover)}</Flex>\n\t\t\t\t\t)}\n\t\t\t\t\t{componentsRightShowOnHover && (\n\t\t\t\t\t\t<OnHoverShow className='onHoverShow'>{renderElements(componentsRightShowOnHover)}</OnHoverShow>\n\t\t\t\t\t)}\n\t\t\t\t\t{componentsRight && renderElements(componentsRight)}\n\t\t\t\t\t<IconAnimated expanded={index === activeIndex} icon='select-down' />\n\t\t\t\t</Flex>\n\t\t\t</Row>\n\n\t\t\t<Body expanded={index === activeIndex} index={index}>\n\t\t\t\t{children}\n\t\t\t</Body>\n\t\t</Fragment>\n\t)\n}\n\nconst Row = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 10px 12px 10px 10px;\n\tmargin-bottom: 1px;\n\n\tbackground: ${({ index, expanded, theme }) =>\n\t\texpanded ? theme.colors.lightBlue : index % 2 ? 'white' : theme.colors.lightGray};\n\n\tcursor: pointer;\n\n\t:hover {\n\t\tposition: relative;\n\t\tbackground-color: ${({ theme }) => theme.colors.lightBlue} !important;\n\t\tbox-shadow: 0 3px 3px rgba(0, 0, 0, 0.25);\n\t\ttransition: all 0.2s ease-in-out;\n\n\t\t.onHoverShow {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t.OnHoverHide {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n`\n\nRow.displayName = 'Row'\n\nconst FlexCenter = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-right: 18px;\n`\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n`\nFlex.displayName = 'Flex'\n\nconst OnHoverShow = styled.span`\n\tdisplay: none;\n`\nOnHoverShow.displayName = 'OnHoverShow'\n\nconst IconAnimated = styled(({ expanded, ...props }) => <Icon {...props} />)`\n\ttransform: ${({ expanded }) => expanded && 'rotate(180deg)'};\n\ttransition: 0.33s;\n`\nIconAnimated.displayName = 'IconAnimated'\n\nconst Body = styled.div`\n\tdisplay: ${({ expanded }) => (expanded ? 'block' : 'none')};\n\tpadding: 16px 0;\n\tborder-bottom: 1px solid ${({ theme }) => theme.colors.strokeGray};\n`\nBody.displayName = 'Body'\n\nListExpandableRow.defaultProps = {\n\tactiveIndex: null,\n\tcomponentsRightHideOnHover: []\n}\n\nListExpandableRow.propTypes = {\n\tactiveIndex: PropTypes.number,\n\tindex: PropTypes.number.isRequired,\n\tonClick: PropTypes.func.isRequired,\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\tcomponentsRight: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\tcomponentsLeft: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\tcomponentsRightShowOnHover: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\tcomponentsRightHideOnHover: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n}\n\nListExpandableRow.displayName = 'ListExpandableRow'\n\nexport default ListExpandableRow\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nimport { Icon } from '../../icons'\n\nconst ListExpandableCustomRow = ({ children, activeIndex, index, onClick, image, title, arrow, divider, ...props }) => {\n\tconst expanded = index === activeIndex\n\treturn (\n\t\t<Fragment>\n\t\t\t<Row expanded={expanded} index={index} onClick={() => onClick(index)} {...props}>\n\t\t\t\t<Flex>\n\t\t\t\t\t<Flex>\n\t\t\t\t\t\t{image && <Image src={image} alt='qube standard' draggable='false' />}\n\t\t\t\t\t\t{title && <Title expanded={expanded}>{title}</Title>}\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{arrow && <IconAnimated expanded={expanded} icon='select-down' />}\n\t\t\t\t</Flex>\n\t\t\t</Row>\n\n\t\t\t<Body expanded={expanded} index={index} divider={divider}>\n\t\t\t\t{children}\n\t\t\t</Body>\n\t\t</Fragment>\n\t)\n}\n\nconst Title = styled.div`\n\tmargin-right: 5px;\n\tcolor: ${({ theme, expanded }) => (expanded ? theme.colors.deepBlue : theme.colors.activeBlue)};\n\tfont-size: 15px;\n\tline-height: 16px;\n\n\t:hover {\n\t\tcolor: ${({ theme }) => theme.colors.deepBlue};\n\t}\n`\nTitle.displayName = 'Title'\n\nconst Image = styled.img`\n\twidth: 40px;\n\theight: 40px;\n\tmargin-right: 12px;\n`\nImage.displayName = 'Image'\n\nconst Row = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\n\tcursor: pointer;\n`\n\nRow.displayName = 'Row'\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n`\nFlex.displayName = 'Flex'\n\nconst IconAnimated = styled(({ expanded, ...props }) => <Icon {...props} />)`\n\ttransform: ${({ expanded }) => expanded && 'rotate(180deg)'};\n\ttransition: 0.33s;\n`\nIconAnimated.displayName = 'IconAnimated'\n\nconst Body = styled.div`\n\tdisplay: ${({ expanded }) => (expanded ? 'block' : 'none')};\n\tborder-bottom: ${({ theme, divider }) => (divider ? `thin solid ${theme.colors.strokeGray}` : 'none')};\n`\nBody.displayName = 'Body'\n\nListExpandableCustomRow.defaultProps = {\n\tactiveIndex: null,\n\timage: null,\n\ttitle: null,\n\tarrow: true,\n\tdivider: false\n}\n\nListExpandableCustomRow.propTypes = {\n\tactiveIndex: PropTypes.number,\n\tindex: PropTypes.number.isRequired,\n\tonClick: PropTypes.func.isRequired,\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\timage: PropTypes.string,\n\ttitle: PropTypes.string,\n\tarrow: PropTypes.bool,\n\tdivider: PropTypes.bool\n}\n\nListExpandableCustomRow.displayName = 'ListExpandableCustomRow'\n\nexport default ListExpandableCustomRow\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport ListExpandableRow from './ListExpandableRow'\nimport ListExpandableCustomRow from './ListExpandableCustomRow'\n\nconst ListExpandable = ({ children, expandedIndex, ...props }) => {\n\tconst [activeIndex, setActiveIndex] = useState(expandedIndex)\n\n\tuseEffect(() => {\n\t\tsetActiveIndex(expandedIndex)\n\t}, [expandedIndex])\n\n\tconst onClick = index => (index === activeIndex ? setActiveIndex(null) : setActiveIndex(index))\n\n\tconst renderChildrenWithProps = () => {\n\t\treturn React.Children.map(children, child => {\n\t\t\treturn React.cloneElement(child, {\n\t\t\t\tonClick,\n\t\t\t\tactiveIndex\n\t\t\t})\n\t\t})\n\t}\n\n\treturn <div {...props}>{renderChildrenWithProps()}</div>\n}\n\nListExpandable.Row = ({ ...props }) => <ListExpandableRow {...props} />\nListExpandable.CustomRow = ({ ...props }) => <ListExpandableCustomRow {...props} />\n\nListExpandable.Row.displayName = 'ListExpandable.Row'\nListExpandable.CustomRow.displayName = 'ListExpandable.CustomRow'\n\nListExpandable.Row.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nListExpandable.CustomRow.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nListExpandable.defaultProps = {\n\texpandedIndex: null\n}\n\nListExpandable.propTypes = {\n\t/** index of the initial expanded element */\n\texpandedIndex: PropTypes.number,\n\tchildren: PropTypes.node.isRequired\n}\n\nListExpandable.displayName = 'ListExpandable'\n\nexport default ListExpandable\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shallowequal_1 = __importDefault(require(\"shallowequal\"));\nvar react_1 = require(\"react\");\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nfunction useCollector(monitor, collect, onUpdate) {\n var _a = react_1.useState(function () { return collect(monitor); }), collected = _a[0], setCollected = _a[1];\n var updateCollected = react_1.useCallback(function () {\n var nextValue = collect(monitor);\n if (!shallowequal_1.default(collected, nextValue)) {\n setCollected(nextValue);\n if (onUpdate) {\n onUpdate();\n }\n }\n }, [collected, monitor, onUpdate]);\n // update the collected properties after the first render\n // and the components are attached to dnd-core\n react_1.useLayoutEffect(updateCollected, []);\n return [collected, updateCollected];\n}\nexports.useCollector = useCollector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useCollector_1 = require(\"./useCollector\");\nfunction useMonitorOutput(monitor, collect, onCollect) {\n var _a = useCollector_1.useCollector(monitor, collect, onCollect), collected = _a[0], updateCollected = _a[1];\n react_1.useLayoutEffect(function subscribeToMonitorStateChange() {\n var handlerId = monitor.getHandlerId();\n if (handlerId == null) {\n return undefined;\n }\n return monitor.subscribeToStateChange(updateCollected, {\n handlerIds: [handlerId],\n });\n }, [monitor, updateCollected]);\n return collected;\n}\nexports.useMonitorOutput = useMonitorOutput;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n return [targetId, function () { return registry.removeTarget(targetId); }];\n}\nexports.registerTarget = registerTarget;\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n return [sourceId, function () { return registry.removeSource(sourceId); }];\n}\nexports.registerSource = registerSource;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\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 _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"../types\");\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types_1.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n","\"use strict\";\n// cheap lodash replacements\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nfunction get(obj, path, defaultValue) {\n return path\n .split('.')\n .reduce(function (a, c) { return (a && a[c] ? a[c] : defaultValue || null); }, obj);\n}\nexports.get = get;\n/**\n * drop-in replacement for _.without\n */\nfunction without(items, item) {\n return items.filter(function (i) { return i !== item; });\n}\nexports.without = without;\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nfunction isString(input) {\n return typeof input === 'string';\n}\nexports.isString = isString;\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nfunction isObject(input) {\n return typeof input === 'object';\n}\nexports.isObject = isObject;\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\nfunction xor(itemsA, itemsB) {\n var map = new Map();\n var insertItem = function (item) {\n return map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n };\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n map.forEach(function (count, key) {\n if (count === 1) {\n result.push(key);\n }\n });\n return result;\n}\nexports.xor = xor;\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nfunction intersection(itemsA, itemsB) {\n return itemsA.filter(function (t) { return itemsB.indexOf(t) > -1; });\n}\nexports.intersection = intersection;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar setClientOffset_1 = require(\"./local/setClientOffset\");\nvar js_utils_1 = require(\"../../utils/js_utils\");\nvar types_1 = require(\"./types\");\nvar ResetCoordinatesAction = {\n type: types_1.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types_1.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1.default(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1.default(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1.default(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1.default(js_utils_1.isObject(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"./types\");\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types_1.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar matchesType_1 = __importDefault(require(\"../../utils/matchesType\"));\nvar types_1 = require(\"./types\");\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types_1.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1.default(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1.default(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1.default(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1.default(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1.default(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar types_1 = require(\"./types\");\nvar js_utils_1 = require(\"../../utils/js_utils\");\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types_1.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1.default(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1.default(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target ? target.drop(monitor, targetId) : undefined;\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1.default(typeof dropResult === 'undefined' || js_utils_1.isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar types_1 = require(\"./types\");\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types_1.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1.default(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar beginDrag_1 = __importDefault(require(\"./beginDrag\"));\nvar publishDragSource_1 = __importDefault(require(\"./publishDragSource\"));\nvar hover_1 = __importDefault(require(\"./hover\"));\nvar drop_1 = __importDefault(require(\"./drop\"));\nvar endDrag_1 = __importDefault(require(\"./endDrag\"));\n__export(require(\"./types\"));\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag_1.default(manager),\n publishDragSource: publishDragSource_1.default(manager),\n hover: hover_1.default(manager),\n drop: drop_1.default(manager),\n endDrag: endDrag_1.default(manager),\n };\n}\nexports.default = createDragDropActions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragDrop_1 = require(\"../actions/dragDrop\");\nvar equality_1 = require(\"../utils/equality\");\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop_1.INIT_COORDS:\n case dragDrop_1.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop_1.HOVER:\n if (equality_1.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop_1.END_DRAG:\n case dragDrop_1.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragDrop_1 = require(\"../actions/dragDrop\");\nvar registry_1 = require(\"../actions/registry\");\nvar js_utils_1 = require(\"../utils/js_utils\");\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop_1.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop_1.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop_1.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry_1.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: js_utils_1.without(state.targetIds, payload.targetId) });\n case dragDrop_1.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop_1.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar registry_1 = require(\"../actions/registry\");\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry_1.ADD_SOURCE:\n case registry_1.ADD_TARGET:\n return state + 1;\n case registry_1.REMOVE_SOURCE:\n case registry_1.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar js_utils_1 = require(\"./js_utils\");\nexports.NONE = [];\nexports.ALL = [];\nexports.NONE.__IS_NONE__ = true;\nexports.ALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n var commonIds = js_utils_1.intersection(handlerIds, dirtyIds);\n return commonIds.length > 0;\n}\nexports.areDirty = areDirty;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragDrop_1 = require(\"../actions/dragDrop\");\nvar registry_1 = require(\"../actions/registry\");\nvar equality_1 = require(\"../utils/equality\");\nvar dirtiness_1 = require(\"../utils/dirtiness\");\nvar js_utils_1 = require(\"../utils/js_utils\");\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness_1.NONE; }\n switch (action.type) {\n case dragDrop_1.HOVER:\n break;\n case registry_1.ADD_SOURCE:\n case registry_1.ADD_TARGET:\n case registry_1.REMOVE_TARGET:\n case registry_1.REMOVE_SOURCE:\n return dirtiness_1.NONE;\n case dragDrop_1.BEGIN_DRAG:\n case dragDrop_1.PUBLISH_DRAG_SOURCE:\n case dragDrop_1.END_DRAG:\n case dragDrop_1.DROP:\n default:\n return dirtiness_1.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = js_utils_1.xor(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality_1.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness_1.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dragOffset_1 = __importDefault(require(\"./dragOffset\"));\nvar dragOperation_1 = __importDefault(require(\"./dragOperation\"));\nvar refCount_1 = __importDefault(require(\"./refCount\"));\nvar dirtyHandlerIds_1 = __importDefault(require(\"./dirtyHandlerIds\"));\nvar stateId_1 = __importDefault(require(\"./stateId\"));\nvar js_utils_1 = require(\"../utils/js_utils\");\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: js_utils_1.get(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar matchesType_1 = __importDefault(require(\"./utils/matchesType\"));\nvar coords_1 = require(\"./utils/coords\");\nvar dirtiness_1 = require(\"./utils/dirtiness\");\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1.default(typeof listener === 'function', 'listener must be a function.');\n invariant_1.default(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness_1.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1.default(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n if (!sourceId) {\n return false;\n }\n var source = this.registry.getSource(sourceId);\n invariant_1.default(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n var target = this.registry.getTarget(targetId);\n invariant_1.default(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n // undefined on initial render\n if (!sourceId) {\n return false;\n }\n var source = this.registry.getSource(sourceId, true);\n invariant_1.default(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords_1.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords_1.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n","\"use strict\";\n\nvar domain; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain = require(\"domain\");\n }\n domain.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain.active = process.domain = parentDomain;\n }\n}\n","\"use strict\";\n\nvar rawAsap = require(\"./raw\");\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n rawAsap(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n rawAsap.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nfunction validateSourceContract(source) {\n invariant_1.default(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1.default(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1.default(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1.default(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1.default(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1.default(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1.default(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar asap_1 = __importDefault(require(\"asap\"));\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar registry_1 = require(\"./actions/registry\");\nvar getNextUniqueId_1 = __importDefault(require(\"./utils/getNextUniqueId\"));\nvar interfaces_1 = require(\"./interfaces\");\nvar contracts_1 = require(\"./contracts\");\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces_1.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces_1.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces_1.HandlerRole.SOURCE;\n case 'T':\n return interfaces_1.HandlerRole.TARGET;\n default:\n invariant_1.default(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts_1.validateType(type);\n contracts_1.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces_1.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry_1.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts_1.validateType(type, true);\n contracts_1.validateTargetContract(target);\n var targetId = this.addHandler(interfaces_1.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry_1.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1.default(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1.default(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1.default(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1.default(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces_1.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces_1.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1.default(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry_1.removeSource(sourceId));\n asap_1.default(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1.default(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry_1.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1.default(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1.default(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces_1.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces_1.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar redux_1 = require(\"redux\");\nvar reducers_1 = __importDefault(require(\"./reducers\"));\nvar dragDrop_1 = __importDefault(require(\"./actions/dragDrop\"));\nvar DragDropMonitorImpl_1 = __importDefault(require(\"./DragDropMonitorImpl\"));\nvar HandlerRegistryImpl_1 = __importDefault(require(\"./HandlerRegistryImpl\"));\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux_1.createStore(reducers_1.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(debugMode) {\n var _this = this;\n if (debugMode === void 0) { debugMode = false; }\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (_this.backend) {\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.receiveBackend = function (backend) {\n this.backend = backend;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop_1.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DragDropManagerImpl_1 = __importDefault(require(\"./DragDropManagerImpl\"));\nfunction createDragDropManager(backendFactory, globalContext, backendOptions, debugMode) {\n var manager = new DragDropManagerImpl_1.default(debugMode);\n var backend = backendFactory(manager, globalContext, backendOptions);\n manager.receiveBackend(backend);\n return manager;\n}\nexports.createDragDropManager = createDragDropManager;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./interfaces\"));\n__export(require(\"./factories\"));\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar dnd_core_1 = require(\"dnd-core-cjs\");\n/**\n * Create the React Context\n */\nexports.DndContext = React.createContext({\n dragDropManager: undefined,\n});\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createDndContext(backend, context, options, debugMode) {\n return {\n dragDropManager: dnd_core_1.createDragDropManager(backend, context, options, debugMode),\n };\n}\nexports.createDndContext = createDndContext;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar DndContext_1 = require(\"../../common/DndContext\");\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nfunction useDragDropManager() {\n var dragDropManager = react_1.useContext(DndContext_1.DndContext).dragDropManager;\n invariant_1.default(dragDropManager != null, 'Expected drag drop context');\n return dragDropManager;\n}\nexports.useDragDropManager = useDragDropManager;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar DragSourceMonitorImpl = /** @class */ (function () {\n function DragSourceMonitorImpl(manager) {\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n DragSourceMonitorImpl.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n DragSourceMonitorImpl.prototype.getHandlerId = function () {\n return this.sourceId;\n };\n DragSourceMonitorImpl.prototype.canDrag = function () {\n invariant_1.default(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n DragSourceMonitorImpl.prototype.isDragging = function () {\n if (!this.sourceId) {\n return false;\n }\n invariant_1.default(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n DragSourceMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n DragSourceMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n DragSourceMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n DragSourceMonitorImpl.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n DragSourceMonitorImpl.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n DragSourceMonitorImpl.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n DragSourceMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n DragSourceMonitorImpl.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n DragSourceMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n DragSourceMonitorImpl.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n DragSourceMonitorImpl.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n DragSourceMonitorImpl.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n DragSourceMonitorImpl.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n DragSourceMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n DragSourceMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n DragSourceMonitorImpl.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n DragSourceMonitorImpl.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n DragSourceMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return DragSourceMonitorImpl;\n}());\nexports.DragSourceMonitorImpl = DragSourceMonitorImpl;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar invariant_1 = __importDefault(require(\"invariant\"));\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n }\n else {\n ref.current = node;\n }\n}\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1.default(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return react_1.cloneElement(element, {\n ref: newRef,\n });\n }\n return react_1.cloneElement(element, {\n ref: function (node) {\n setRef(newRef, node);\n if (previousRef) {\n setRef(previousRef, node);\n }\n },\n });\n}\nexports.cloneWithRef = cloneWithRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar cloneWithRef_1 = require(\"../utils/cloneWithRef\");\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a <div>, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!react_1.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n // return the node so it can be chained (e.g. when within callback refs\n // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n return node;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.cloneWithRef(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n // ref objects should be passed straight through without wrapping\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n }\n else {\n var wrappedHook_1 = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook_1; };\n }\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isRef(obj) {\n return (\n // eslint-disable-next-line no-prototype-builtins\n obj !== null && typeof obj === 'object' && obj.hasOwnProperty('current'));\n}\nexports.isRef = isRef;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar wrapConnectorHooks_1 = __importDefault(require(\"./wrapConnectorHooks\"));\nvar isRef_1 = require(\"../utils/isRef\");\nvar shallowequal_1 = __importDefault(require(\"shallowequal\"));\nvar SourceConnector = /** @class */ (function () {\n function SourceConnector(backend) {\n var _this = this;\n this.backend = backend;\n this.hooks = wrapConnectorHooks_1.default({\n dragSource: function (node, options) {\n _this.dragSourceOptions = options || null;\n if (isRef_1.isRef(node)) {\n _this.dragSourceRef = node;\n }\n else {\n _this.dragSourceNode = node;\n }\n _this.reconnectDragSource();\n },\n dragPreview: function (node, options) {\n _this.dragPreviewOptions = options || null;\n if (isRef_1.isRef(node)) {\n _this.dragPreviewRef = node;\n }\n else {\n _this.dragPreviewNode = node;\n }\n _this.reconnectDragPreview();\n },\n });\n this.handlerId = null;\n // The drop target may either be attached via ref or connect function\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null;\n // The drag preview may either be attached via ref or connect function\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n }\n SourceConnector.prototype.receiveHandlerId = function (newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n };\n Object.defineProperty(SourceConnector.prototype, \"connectTarget\", {\n get: function () {\n return this.dragSource;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SourceConnector.prototype, \"dragSourceOptions\", {\n get: function () {\n return this.dragSourceOptionsInternal;\n },\n set: function (options) {\n this.dragSourceOptionsInternal = options;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SourceConnector.prototype, \"dragPreviewOptions\", {\n get: function () {\n return this.dragPreviewOptionsInternal;\n },\n set: function (options) {\n this.dragPreviewOptionsInternal = options;\n },\n enumerable: true,\n configurable: true\n });\n SourceConnector.prototype.reconnect = function () {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n };\n SourceConnector.prototype.reconnectDragSource = function () {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() ||\n this.didConnectedDragSourceChange() ||\n this.didDragSourceOptionsChange();\n if (didChange) {\n this.disconnectDragSource();\n }\n var dragSource = this.dragSource;\n if (!this.handlerId) {\n return;\n }\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n };\n SourceConnector.prototype.reconnectDragPreview = function () {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() ||\n this.didConnectedDragPreviewChange() ||\n this.didDragPreviewOptionsChange();\n if (didChange) {\n this.disconnectDragPreview();\n }\n var dragPreview = this.dragPreview;\n if (!this.handlerId || !dragPreview) {\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n };\n SourceConnector.prototype.didHandlerIdChange = function () {\n return this.lastConnectedHandlerId !== this.handlerId;\n };\n SourceConnector.prototype.didConnectedDragSourceChange = function () {\n return this.lastConnectedDragSource !== this.dragSource;\n };\n SourceConnector.prototype.didConnectedDragPreviewChange = function () {\n return this.lastConnectedDragPreview !== this.dragPreview;\n };\n SourceConnector.prototype.didDragSourceOptionsChange = function () {\n return !shallowequal_1.default(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n };\n SourceConnector.prototype.didDragPreviewOptionsChange = function () {\n return !shallowequal_1.default(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n };\n SourceConnector.prototype.disconnectDragSource = function () {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n };\n SourceConnector.prototype.disconnectDragPreview = function () {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n };\n Object.defineProperty(SourceConnector.prototype, \"dragSource\", {\n get: function () {\n return (this.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SourceConnector.prototype, \"dragPreview\", {\n get: function () {\n return (this.dragPreviewNode ||\n (this.dragPreviewRef && this.dragPreviewRef.current));\n },\n enumerable: true,\n configurable: true\n });\n return SourceConnector;\n}());\nexports.SourceConnector = SourceConnector;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar registration_1 = require(\"../../common/registration\");\nvar useDragDropManager_1 = require(\"./useDragDropManager\");\nvar DragSourceMonitorImpl_1 = require(\"../../common/DragSourceMonitorImpl\");\nvar SourceConnector_1 = require(\"../../common/SourceConnector\");\nfunction useDragSourceMonitor() {\n var manager = useDragDropManager_1.useDragDropManager();\n var monitor = react_1.useMemo(function () { return new DragSourceMonitorImpl_1.DragSourceMonitorImpl(manager); }, [manager]);\n var connector = react_1.useMemo(function () { return new SourceConnector_1.SourceConnector(manager.getBackend()); }, [\n manager,\n ]);\n return [monitor, connector];\n}\nexports.useDragSourceMonitor = useDragSourceMonitor;\nfunction useDragHandler(spec, monitor, connector) {\n var manager = useDragDropManager_1.useDragDropManager();\n var handler = react_1.useMemo(function () {\n return {\n beginDrag: function () {\n var _a = spec.current, begin = _a.begin, item = _a.item;\n if (begin) {\n var beginResult = begin(monitor);\n invariant_1.default(beginResult == null || typeof beginResult === 'object', 'dragSpec.begin() must either return an object, undefined, or null');\n return beginResult || item || {};\n }\n return item || {};\n },\n canDrag: function () {\n if (typeof spec.current.canDrag === 'boolean') {\n return spec.current.canDrag;\n }\n else if (typeof spec.current.canDrag === 'function') {\n return spec.current.canDrag(monitor);\n }\n else {\n return true;\n }\n },\n isDragging: function (globalMonitor, target) {\n var isDragging = spec.current.isDragging;\n return isDragging\n ? isDragging(monitor)\n : target === globalMonitor.getSourceId();\n },\n endDrag: function () {\n var end = spec.current.end;\n if (end) {\n end(monitor.getItem(), monitor);\n }\n connector.reconnect();\n },\n };\n }, []);\n react_1.useLayoutEffect(function registerHandler() {\n var _a = registration_1.registerSource(spec.current.item.type, handler, manager), handlerId = _a[0], unregister = _a[1];\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, []);\n}\nexports.useDragHandler = useDragHandler;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar useMonitorOutput_1 = require(\"./internal/useMonitorOutput\");\nvar drag_1 = require(\"./internal/drag\");\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification *\n */\nfunction useDrag(spec) {\n var specRef = react_1.useRef(spec);\n specRef.current = spec;\n // TODO: wire options into createSourceConnector\n invariant_1.default(spec.item != null, 'item must be defined');\n invariant_1.default(spec.item.type != null, 'item type must be defined');\n var _a = drag_1.useDragSourceMonitor(), monitor = _a[0], connector = _a[1];\n drag_1.useDragHandler(specRef, monitor, connector);\n var result = useMonitorOutput_1.useMonitorOutput(monitor, specRef.current.collect || (function () { return ({}); }), function () { return connector.reconnect(); });\n var connectDragSource = react_1.useMemo(function () { return connector.hooks.dragSource(); }, [\n connector,\n ]);\n var connectDragPreview = react_1.useMemo(function () { return connector.hooks.dragPreview(); }, [\n connector,\n ]);\n react_1.useLayoutEffect(function () {\n connector.dragSourceOptions = specRef.current.options || null;\n connector.reconnect();\n }, [connector]);\n react_1.useLayoutEffect(function () {\n connector.dragPreviewOptions = specRef.current.previewOptions || null;\n connector.reconnect();\n }, [connector]);\n return [result, connectDragSource, connectDragPreview];\n}\nexports.useDrag = useDrag;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shallowequal_1 = __importDefault(require(\"shallowequal\"));\nvar wrapConnectorHooks_1 = __importDefault(require(\"./wrapConnectorHooks\"));\nvar isRef_1 = require(\"../utils/isRef\");\nvar TargetConnector = /** @class */ (function () {\n function TargetConnector(backend) {\n var _this = this;\n this.backend = backend;\n this.hooks = wrapConnectorHooks_1.default({\n dropTarget: function (node, options) {\n _this.dropTargetOptions = options;\n if (isRef_1.isRef(node)) {\n _this.dropTargetRef = node;\n }\n else {\n _this.dropTargetNode = node;\n }\n _this.reconnect();\n },\n });\n this.handlerId = null;\n // The drop target may either be attached via ref or connect function\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n }\n Object.defineProperty(TargetConnector.prototype, \"connectTarget\", {\n get: function () {\n return this.dropTarget;\n },\n enumerable: true,\n configurable: true\n });\n TargetConnector.prototype.reconnect = function () {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() ||\n this.didDropTargetChange() ||\n this.didOptionsChange();\n if (didChange) {\n this.disconnectDropTarget();\n }\n var dropTarget = this.dropTarget;\n if (!this.handlerId) {\n return;\n }\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n };\n TargetConnector.prototype.receiveHandlerId = function (newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n };\n Object.defineProperty(TargetConnector.prototype, \"dropTargetOptions\", {\n get: function () {\n return this.dropTargetOptionsInternal;\n },\n set: function (options) {\n this.dropTargetOptionsInternal = options;\n },\n enumerable: true,\n configurable: true\n });\n TargetConnector.prototype.didHandlerIdChange = function () {\n return this.lastConnectedHandlerId !== this.handlerId;\n };\n TargetConnector.prototype.didDropTargetChange = function () {\n return this.lastConnectedDropTarget !== this.dropTarget;\n };\n TargetConnector.prototype.didOptionsChange = function () {\n return !shallowequal_1.default(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n };\n TargetConnector.prototype.disconnectDropTarget = function () {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n };\n Object.defineProperty(TargetConnector.prototype, \"dropTarget\", {\n get: function () {\n return (this.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current));\n },\n enumerable: true,\n configurable: true\n });\n return TargetConnector;\n}());\nexports.TargetConnector = TargetConnector;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar isCallingCanDrop = false;\nvar DropTargetMonitorImpl = /** @class */ (function () {\n function DropTargetMonitorImpl(manager) {\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n DropTargetMonitorImpl.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n DropTargetMonitorImpl.prototype.getHandlerId = function () {\n return this.targetId;\n };\n DropTargetMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n DropTargetMonitorImpl.prototype.canDrop = function () {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n invariant_1.default(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n DropTargetMonitorImpl.prototype.isOver = function (options) {\n if (!this.targetId) {\n return false;\n }\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n DropTargetMonitorImpl.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n DropTargetMonitorImpl.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n DropTargetMonitorImpl.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n DropTargetMonitorImpl.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n DropTargetMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n DropTargetMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n DropTargetMonitorImpl.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n DropTargetMonitorImpl.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n DropTargetMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return DropTargetMonitorImpl;\n}());\nexports.DropTargetMonitorImpl = DropTargetMonitorImpl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar registration_1 = require(\"../../common/registration\");\nvar useDragDropManager_1 = require(\"./useDragDropManager\");\nvar TargetConnector_1 = require(\"../../common/TargetConnector\");\nvar DropTargetMonitorImpl_1 = require(\"../../common/DropTargetMonitorImpl\");\nfunction useDropTargetMonitor() {\n var manager = useDragDropManager_1.useDragDropManager();\n var monitor = react_1.useMemo(function () { return new DropTargetMonitorImpl_1.DropTargetMonitorImpl(manager); }, [manager]);\n var connector = react_1.useMemo(function () { return new TargetConnector_1.TargetConnector(manager.getBackend()); }, [\n manager,\n ]);\n return [monitor, connector];\n}\nexports.useDropTargetMonitor = useDropTargetMonitor;\nfunction useDropHandler(spec, monitor, connector) {\n var manager = useDragDropManager_1.useDragDropManager();\n var handler = react_1.useMemo(function () {\n return {\n canDrop: function () {\n var canDrop = spec.current.canDrop;\n return canDrop ? canDrop(monitor.getItem(), monitor) : true;\n },\n hover: function () {\n var hover = spec.current.hover;\n if (hover) {\n hover(monitor.getItem(), monitor);\n }\n },\n drop: function () {\n var drop = spec.current.drop;\n if (drop) {\n return drop(monitor.getItem(), monitor);\n }\n },\n };\n }, [monitor]);\n react_1.useLayoutEffect(function registerHandler() {\n var _a = registration_1.registerTarget(spec.current.accept, handler, manager), handlerId = _a[0], unregister = _a[1];\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [monitor, connector]);\n}\nexports.useDropHandler = useDropHandler;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar invariant_1 = __importDefault(require(\"invariant\"));\nvar useMonitorOutput_1 = require(\"./internal/useMonitorOutput\");\nvar drop_1 = require(\"./internal/drop\");\n/**\n * useDropTarget Hook\n * @param spec The drop target specification\n */\nfunction useDrop(spec) {\n var specRef = react_1.useRef(spec);\n specRef.current = spec;\n invariant_1.default(spec.accept != null, 'accept must be defined');\n var _a = drop_1.useDropTargetMonitor(), monitor = _a[0], connector = _a[1];\n drop_1.useDropHandler(specRef, monitor, connector);\n var result = useMonitorOutput_1.useMonitorOutput(monitor, specRef.current.collect || (function () { return ({}); }), function () { return connector.reconnect(); });\n var connectDropTarget = react_1.useMemo(function () { return connector.hooks.dropTarget(); }, [\n connector,\n ]);\n react_1.useLayoutEffect(function () {\n connector.dropTargetOptions = spec.options || null;\n connector.reconnect();\n }, [spec.options]);\n return [result, connectDropTarget];\n}\nexports.useDrop = useDrop;\n","export default {\n\tROW: 'ROW',\n\tCARD: 'CARD'\n}\n","import React, { useRef } from 'react'\nimport { useDrag } from 'react-dnd-cjs/lib/hooks/useDrag'\nimport { useDrop } from 'react-dnd-cjs/lib/hooks/useDrop'\n\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport ItemTypes from './ItemTypes'\nimport ListRow from '../ListRow/ListRow'\nimport dragIconBlack from '../../../assets/images/dragIconBlack.svg'\n\nexport const dragEndHandler = (index, callback) => item => callback(index, item)\n\nexport const dropHandler = (index, callback) => item => {\n\titem.type === ItemTypes.CARD && callback(index, item)\n\treturn item\n}\n\nexport const hoverHandler = (ref, index, newItemCallback, moveCallback) => item => {\n\tif (!ref.current) return\n\tconst dragIndex = item.index\n\tconst hoverIndex = index\n\tif (dragIndex === hoverIndex) return\n\n\titem.type === ItemTypes.CARD ? newItemCallback(hoverIndex, item) : moveCallback(dragIndex, hoverIndex)\n\titem.index = hoverIndex\n}\n\nconst DndListRow = ({ id, index, moveItem, changedNewItem, isNewItem, children, dragComplete, ...props }) => {\n\tconst ref = useRef(null)\n\n\tconst [{ isDragging }, drag, preview] = useDrag({\n\t\titem: { type: ItemTypes.ROW, id, index },\n\t\tend: dragEndHandler(index, dragComplete),\n\t\tcollect: monitor => ({\n\t\t\tisDragging: monitor.isDragging()\n\t\t})\n\t})\n\n\tconst [{ canDrop, isUserDragging }, drop] = useDrop({\n\t\taccept: [ItemTypes.ROW, ItemTypes.CARD],\n\t\tdrop: dropHandler(index, dragComplete),\n\t\thover: hoverHandler(ref, index, changedNewItem, moveItem),\n\t\tcollect: monitor => ({\n\t\t\tcanDrop: monitor.canDrop(),\n\t\t\tisUserDragging: !!monitor.getItem()\n\t\t})\n\t})\n\n\tif (!isUserDragging && isNewItem) changedNewItem(-1)\n\tpreview(drop(ref))\n\n\treturn (\n\t\t<DivStyled ref={ref} drawBackground={(isDragging && canDrop) || isNewItem}>\n\t\t\t<ListRowStyled\n\t\t\t\tremovehover={canDrop ? 'removeHover' : undefined}\n\t\t\t\ttransparent={isDragging || isNewItem ? 'transparent' : undefined}\n\t\t\t\tindex={index}\n\t\t\t\tkey={id}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<FlexGrow>{children}</FlexGrow>\n\t\t\t\t<DragIcon ref={drag} src={dragIconBlack} alt='drag' />\n\t\t\t</ListRowStyled>\n\t\t</DivStyled>\n\t)\n}\n\nconst FlexGrow = styled.div`\n\tdisplay: flex;\n\tflex-grow: 2;\n\talign-items: center;\n\tjustify-content: space-between;\n`\n\nDndListRow.displayName = 'DndListRow'\n\nconst ListRowStyled = styled(ListRow)`\n\topacity: ${({ transparent }) => (transparent ? 0 : 1)};\n`\nListRowStyled.displayName = 'ListRowStyled'\n\nconst DivStyled = styled.div`\n\tbackground-color: ${({ drawBackground, theme }) => drawBackground && theme.dndList.dragOver};\n`\n\nDivStyled.displayName = 'DivStyled'\n\nconst DragIcon = styled.img`\n\tcursor: grab;\n`\n\nDragIcon.displayName = 'DragIcon'\n\nDndListRow.defaultProps = {\n\tchangedNewItem: () => {},\n\tisNewItem: false\n}\n\nDndListRow.propTypes = {\n\tid: PropTypes.number.isRequired,\n\tindex: PropTypes.number.isRequired,\n\tmoveItem: PropTypes.func.isRequired,\n\tdragComplete: PropTypes.func.isRequired,\n\tchangedNewItem: PropTypes.func,\n\tisNewItem: PropTypes.bool,\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\nexport { ListRowStyled, DivStyled }\nexport default DndListRow\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { useDrop } from 'react-dnd-cjs/lib/hooks/useDrop'\nimport styled from 'styled-components'\nimport ItemTypes from './ItemTypes'\n\nconst DndEmptyList = ({ addFirstItem }) => {\n\tconst [{ canDrop, isOver }, drop] = useDrop({\n\t\taccept: [ItemTypes.CARD],\n\t\tdrop: addFirstItem,\n\t\tcollect: monitor => ({\n\t\t\tisOver: monitor.isOver(),\n\t\t\tcanDrop: monitor.canDrop()\n\t\t})\n\t})\n\n\treturn <EmptyList ref={drop} hover={canDrop && isOver} />\n}\n\nDndEmptyList.displayName = 'DndEmptyList'\n\nDndEmptyList.propTypes = {\n\taddFirstItem: PropTypes.func.isRequired\n}\n\nconst EmptyList = styled.div`\n\theight: 50px;\n\tbackground-color: ${({ hover, theme }) => hover && theme.dndList.dragOver};\n`\nEmptyList.displayName = 'EmptyList'\n\nexport { EmptyList }\nexport default DndEmptyList\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport DndListRow from './DndListRow'\nimport DndEmptyList from './DndEmptyList'\n\nconst DndListContainer = ({ items, container: Component, onItemChange, onNewItem, ...props }) => {\n\tconst [itemsArr, setItemsArr] = useState(items)\n\tconst [newItemIndex, setNewItemIndex] = useState(-1)\n\n\tuseEffect(() => {\n\t\tsetItemsArr([...items])\n\t\tsetNewItemIndex(-1)\n\t}, [JSON.stringify(items)])\n\n\tconst moveItem = (index, atIndex) => {\n\t\titemsArr.splice(atIndex, 0, itemsArr.splice(index, 1)[0])\n\t\tsetItemsArr([...itemsArr])\n\t}\n\n\tconst dragComplete = (index, item) => {\n\t\tnewItemIndex !== -1 ? setTimeout(() => onNewItem(item, index), 10) : onItemChange(item, index)\n\t}\n\n\tconst changedNewItemHandler = (index, item) => {\n\t\tif (index === -1) itemsArr.splice(newItemIndex, 1)\n\t\telse if (newItemIndex === -1) itemsArr.splice(index, 0, { ...item, id: -1, index })\n\t\telse itemsArr.splice(index, 0, itemsArr.splice(newItemIndex, 1)[0])\n\n\t\tsetItemsArr([...itemsArr])\n\t\tsetNewItemIndex(index)\n\t}\n\n\tconst addFirstItem = item => {\n\t\tsetItemsArr([item])\n\t\tonNewItem(item, 0)\n\t}\n\n\treturn items.length ? (\n\t\titemsArr.map((item, index) => (\n\t\t\t<DndListRow\n\t\t\t\tisNewItem={index === newItemIndex}\n\t\t\t\tchangedNewItem={changedNewItemHandler}\n\t\t\t\tkey={item.id}\n\t\t\t\tindex={index}\n\t\t\t\tid={item.id}\n\t\t\t\tmoveItem={moveItem}\n\t\t\t\tdragComplete={dragComplete}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Component item={item} index={index} />\n\t\t\t</DndListRow>\n\t\t))\n\t) : (\n\t\t<DndEmptyList addFirstItem={addFirstItem} />\n\t)\n}\n\nDndListContainer.propTypes = {\n\titems: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.number.isRequired })).isRequired,\n\tcontainer: PropTypes.func.isRequired,\n\tonItemChange: PropTypes.func.isRequired,\n\tonNewItem: PropTypes.func.isRequired\n}\n\nexport default DndListContainer\n","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar react_1 = require(\"react\");\nvar DndContext_1 = require(\"./DndContext\");\n/**\n * A React component that provides the React-DnD context\n */\nexports.DndProvider = react_1.memo(function (_a) {\n var children = _a.children, props = __rest(_a, [\"children\"]);\n var context = 'manager' in props\n ? { dragDropManager: props.manager }\n : createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n return React.createElement(DndContext_1.DndContext.Provider, { value: context }, children);\n});\nvar instanceSymbol = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\nfunction createSingletonDndContext(backend, context, options, debugMode) {\n if (context === void 0) { context = getGlobalContext(); }\n var ctx = context;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = DndContext_1.createDndContext(backend, context, options, debugMode);\n }\n return ctx[instanceSymbol];\n}\nfunction getGlobalContext() {\n return typeof global !== 'undefined' ? global : window;\n}\n","\"use strict\";\n// cheap lodash replacements\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction memoize(fn) {\n var result = null;\n var memoized = function () {\n if (result == null) {\n result = fn();\n }\n return result;\n };\n return memoized;\n}\nexports.memoize = memoize;\n/**\n * drop-in replacement for _.without\n */\nfunction without(items, item) {\n return items.filter(function (i) { return i !== item; });\n}\nexports.without = without;\nfunction union(itemsA, itemsB) {\n var set = new Set();\n var insertItem = function (item) { return set.add(item); };\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n set.forEach(function (key) { return result.push(key); });\n return result;\n}\nexports.union = union;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar js_utils_1 = require(\"./utils/js_utils\");\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = js_utils_1.union(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = js_utils_1.without(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar js_utils_1 = require(\"./utils/js_utils\");\nexports.isFirefox = js_utils_1.memoize(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = js_utils_1.memoize(function () { return Boolean(window.safari); });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n // Get consecutive differences and slopes\n var dys = [];\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push((3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BrowserDetector_1 = require(\"./BrowserDetector\");\nvar MonotonicInterpolant_1 = __importDefault(require(\"./MonotonicInterpolant\"));\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector_1.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector_1.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector_1.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, '');\n return result != null ? result : defaultValue;\n}\nexports.getDataFromDataTransfer = getDataFromDataTransfer;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NativeTypes = __importStar(require(\"../NativeTypes\"));\nvar getDataFromDataTransfer_1 = require(\"./getDataFromDataTransfer\");\nexports.nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperties: {\n files: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n items: function (dataTransfer) { return dataTransfer.items; },\n },\n matchesTypes: ['Files'],\n },\n _a[NativeTypes.URL] = {\n exposeProperties: {\n urls: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer_1.getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n matchesTypes: ['Url', 'text/uri-list'],\n },\n _a[NativeTypes.TEXT] = {\n exposeProperties: {\n text: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer_1.getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n matchesTypes: ['Text', 'text/plain'],\n },\n _a);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NativeDragSource = /** @class */ (function () {\n function NativeDragSource(config) {\n var _this = this;\n this.config = config;\n this.item = {};\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n Object.defineProperty(_this.item, property, {\n configurable: true,\n enumerable: true,\n get: function () {\n // eslint-disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + property + \"\\\" until the drop event.\");\n return null;\n },\n });\n });\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n var _this = this;\n var newProperties = {};\n if (dataTransfer) {\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n newProperties[property] = {\n value: _this.config.exposeProperties[property](dataTransfer, _this.config.matchesTypes),\n };\n });\n }\n Object.defineProperties(this.item, newProperties);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n}());\nexports.NativeDragSource = NativeDragSource;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nativeTypesConfig_1 = require(\"./nativeTypesConfig\");\nvar NativeDragSource_1 = require(\"./NativeDragSource\");\nfunction createNativeDragSource(type) {\n return new NativeDragSource_1.NativeDragSource(nativeTypesConfig_1.nativeTypesConfig[type]);\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n if (!dataTransfer) {\n return null;\n }\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig_1.nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig_1.nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OptionsReader = /** @class */ (function () {\n function OptionsReader(globalContext) {\n this.globalContext = globalContext;\n }\n Object.defineProperty(OptionsReader.prototype, \"window\", {\n get: function () {\n if (this.globalContext) {\n return this.globalContext;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OptionsReader.prototype, \"document\", {\n get: function () {\n if (this.window) {\n return this.window.document;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n return OptionsReader;\n}());\nexports.OptionsReader = OptionsReader;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EnterLeaveCounter_1 = __importDefault(require(\"./EnterLeaveCounter\"));\nvar BrowserDetector_1 = require(\"./BrowserDetector\");\nvar OffsetUtils_1 = require(\"./OffsetUtils\");\nvar NativeDragSources_1 = require(\"./NativeDragSources\");\nvar NativeTypes = __importStar(require(\"./NativeTypes\"));\nvar OptionsReader_1 = require(\"./OptionsReader\");\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager, globalContext) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils_1.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return _this.document && _this.document.body && document.body.contains(node);\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils_1.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources_1.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n if (dragPreview) {\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils_1.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (dataTransfer &&\n !dataTransfer.types &&\n ((e.target && !e.target.hasAttribute) ||\n !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources_1.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector_1.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils_1.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils_1.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n }\n else {\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils_1.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.options = new OptionsReader_1.OptionsReader(globalContext);\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n return this.options.window;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HTML5Backend.prototype, \"document\", {\n get: function () {\n return this.options.document;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', 'true');\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', 'false');\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this\n .handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this\n .handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this\n .handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this\n .handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return __assign({ dropEffect: this.altKeyPressed ? 'copy' : 'move' }, (sourceNodeOptions || {}));\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return __assign({ anchorX: 0.5, anchorY: 0.5, captureDraggingState: false }, (sourcePreviewNodeOptions || {}));\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n this.currentNativeSource = NativeDragSources_1.createNativeDragSource(type);\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (e.defaultPrevented) {\n return;\n }\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.getEmptyImage = getEmptyImage;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HTML5Backend_1 = __importDefault(require(\"./HTML5Backend\"));\nvar NativeTypes = __importStar(require(\"./NativeTypes\"));\nexports.NativeTypes = NativeTypes;\nvar getEmptyImage_1 = require(\"./getEmptyImage\");\nexports.getEmptyImage = getEmptyImage_1.getEmptyImage;\nvar createHTML5Backend = function (manager, context) { return new HTML5Backend_1.default(manager, context); };\nexports.default = createHTML5Backend;\n","import React from 'react'\nimport { DndProvider } from 'react-dnd-cjs/lib/common/DndProvider'\nimport HTML5Backend from 'react-dnd-html5-backend-cjs'\nimport PropTypes from 'prop-types'\n\nconst DndHTML5Provider = ({ children }) => <DndProvider backend={HTML5Backend}>{children}</DndProvider>\n\nDndHTML5Provider.defaultProps = {\n\tchildren: null\n}\n\nDndHTML5Provider.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n}\n\nexport default DndHTML5Provider\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport boxImage from '../../../assets/images/emptyStateBox.svg'\n\nconst EmptyState = ({ image, hasImage, title, description, component }) => (\n\t<Center>\n\t\t{hasImage && <ImageStyled src={image} alt='box' />}\n\t\t<Title>{title}</Title>\n\t\t<Description>{description}</Description>\n\t\t{component && component()}\n\t</Center>\n)\n\nconst ImageStyled = styled.img`\n\tmargin: 40px 0;\n`\n\nconst Center = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n`\n\nconst Title = styled.div`\n\tcolor: ${({ theme }) => theme.colors.darkGray};\n\tfont-size: 18px;\n\tfont-weight: bold;\n\ttext-align: center;\n`\n\nconst Description = styled.div`\n\tmax-width: 350px;\n\tmargin: 16px 0 20px 0;\n\tcolor: ${({ theme }) => theme.colors.mediumGray};\n\tfont-size: 13px;\n\ttext-align: center;\n`\n\nEmptyState.defaultProps = {\n\ttitle: 'No results found',\n\tdescription: 'We could not find any matching results, try search for another service, queue or product',\n\timage: boxImage,\n\thasImage: true,\n\tcomponent: null\n}\n\nEmptyState.displayName = 'EmptyState'\n\nEmptyState.propTypes = {\n\t/** Component element */\n\tcomponent: PropTypes.func,\n\t/** Title of the emptyState */\n\ttitle: PropTypes.string,\n\t/** Description of the emptyState */\n\tdescription: PropTypes.string,\n\t/** The main image of the emptyState */\n\timage: PropTypes.string,\n\t/** Bool to render image */\n\thasImage: PropTypes.bool\n}\n\n/** @component * */\nexport default EmptyState\n","import styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst StatusMessage = styled.div`\n\tdisplay: ${({ show }) => (show ? 'block' : 'none')};\n\twidth: 100%;\n\tpadding: 6px 15px;\n\n\tbackground: ${({ theme, type }) => theme.status.bg[type]};\n\tfont-weight: ${({ type }) => type === 'blocked' && 'bold'};\n\tborder-radius: 4px;\n\tcolor: ${({ theme, type }) => theme.status.color[type]};\n\tfont-size: 12px;\n`\n\nStatusMessage.defaultProps = {\n\tshow: false,\n\tchildren: 'Saving changes...',\n\ttype: 'info'\n}\n\nStatusMessage.propTypes = {\n\t/** display status */\n\tshow: PropTypes.bool,\n\t/** message display on status */\n\ttype: PropTypes.oneOf(['success', 'error', 'info', 'blocked']),\n\t/** type of status */\n\tchildren: PropTypes.string\n}\n\nStatusMessage.displayName = 'StatusMessage'\n\nexport default StatusMessage\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst states = ['on', 'off', 'away']\n\nconst BulletState = styled.span`\n\tdisplay: inline-block;\n\twidth: 6px;\n\theight: 6px;\n\tbackground-color: ${({ theme, state }) => theme.bulletState.colors[state]};\n\tborder-radius: 50%;\n`\n\nBulletState.propTypes = {\n\tstate: PropTypes.oneOf(states).isRequired\n}\n\nBulletState.displayName = 'BulletState'\n\nexport default BulletState\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Table } from 'semantic-ui-react'\nimport styled from 'styled-components'\n\nconst getArrowContent = (sortable, direction, isSorted) => {\n\tif (sortable === 'true') {\n\t\tif (isSorted) {\n\t\t\tif (direction === 'ascending') {\n\t\t\t\treturn '\"\\\\F0D8\"'\n\t\t\t}\n\t\t\treturn '\"\\\\F0D7\"'\n\t\t}\n\t\treturn '\"\\\\F0DA\"'\n\t}\n\treturn 'none'\n}\n\nconst getDirection = (direction, isSorted) => (isSorted && direction === 'ascending' ? 'descending' : 'ascending')\n\nconst HeaderCell = ({ cell, sortable, direction, sortHandler, isSorted, children, ...props }) => (\n\t<HeaderCellStyled\n\t\tsorted={sortable ? direction || 'ascending' : null}\n\t\tsortable={sortable.toString()}\n\t\tdirection={direction}\n\t\tonClick={() => sortable && sortHandler({ ...cell, direction: getDirection(direction, isSorted) })}\n\t\tisSorted={isSorted}\n\t\t{...props}\n\t>\n\t\t{children}\n\t</HeaderCellStyled>\n)\n\nconst HeaderCellStyled = styled(({ sortable, direction, isSorted, ...props }) => <Table.HeaderCell {...props} />)`\n\t:after {\n\t\tcontent: ${({ sortable, direction, isSorted }) =>\n\t\t\t`${getArrowContent(sortable, direction, isSorted)} !important`};\n\t}\n`\nHeaderCell.displayName = 'HeaderCell'\n\nHeaderCell.defaultProps = {\n\tsortable: true,\n\tdirection: null,\n\tisSorted: false\n}\n\nHeaderCell.propTypes = {\n\tcell: PropTypes.shape({\n\t\tvalue: PropTypes.string,\n\t\tsortable: PropTypes.bool,\n\t\twidth: PropTypes.number\n\t}).isRequired,\n\tsortable: PropTypes.bool,\n\tisSorted: PropTypes.bool,\n\tdirection: PropTypes.string,\n\tsortHandler: PropTypes.func.isRequired,\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nexport default HeaderCell\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Table } from 'semantic-ui-react'\nimport HeaderCell from './HeaderCell'\n\nconst TableHeader = ({ headers, columnSorted, direction, sortHandler, ...props }) => (\n\t<Header {...props}>\n\t\t<Table.Row>\n\t\t\t{headers.map(obj => {\n\t\t\t\tconst { value, sortable, style } = obj\n\t\t\t\treturn (\n\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\tkey={value}\n\t\t\t\t\t\tcell={obj}\n\t\t\t\t\t\tsortable={sortable}\n\t\t\t\t\t\tsortHandler={sortHandler}\n\t\t\t\t\t\tisSorted={columnSorted === value}\n\t\t\t\t\t\tdirection={direction}\n\t\t\t\t\t\tstyle={style}\n\t\t\t\t\t>\n\t\t\t\t\t\t{value}\n\t\t\t\t\t</HeaderCell>\n\t\t\t\t)\n\t\t\t})}\n\t\t</Table.Row>\n\t</Header>\n)\n\nTableHeader.defaultProps = {\n\tcolumnSorted: '',\n\tdirection: null\n}\n\nTableHeader.displayName = 'TableHeader'\n\nTableHeader.propTypes = {\n\theaders: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tvalue: PropTypes.string,\n\t\t\tsortable: PropTypes.bool,\n\t\t\tstyle: PropTypes.shape({})\n\t\t})\n\t).isRequired,\n\tcolumnSorted: PropTypes.string,\n\tdirection: PropTypes.string,\n\tsortHandler: PropTypes.func.isRequired\n}\n\nconst Header = styled(Table.Header)`\n\tbackground: linear-gradient(90deg, #6a11cb 0%, rgba(255, 255, 255, 0) 100%), #0d0cb5 !important;\n\n\t& th {\n\t\theight: 22px;\n\t\tpadding: 0 11px !important;\n\t\tborder-bottom: none !important;\n\t\tbackground: rgba(0, 0, 0, 0.05) !important;\n\t\tcolor: white !important;\n\t\tfont-size: 13px;\n\t}\n\n\tth:first-child {\n\t\tborder-bottom-left-radius: 4px !important;\n\t\tborder-top-left-radius: 4px !important;\n\t}\n\n\tth:last-child {\n\t\tborder-bottom-right-radius: 4px !important;\n\t\tborder-top-right-radius: 4px !important;\n\t}\n\n\tth:not(:first-child) {\n\t\tborder-left-color: white !important;\n\t}\n`\n\nexport default TableHeader\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Table } from 'semantic-ui-react'\n\nconst TableBody = ({ children, ...props }) => (\n\t<TableBodyStyled {...props}>\n\t\t<Table.Row />\n\t\t{children}\n\t</TableBodyStyled>\n)\n\nTableBody.displayName = 'TableBody'\n\nTableBody.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n}\n\nconst TableBodyStyled = styled(Table.Body)`\n\ttr:first-child {\n\t\theight: 8px;\n\t\tborder: none;\n\t\toutline: thin solid transparent;\n\t}\n\n\ttd {\n\t\tborder-top: none !important;\n\t\tborder-bottom: none !important;\n\t}\n`\n\nexport default TableBody\n","import React from 'react'\nimport { Table as SemanticUITable } from 'semantic-ui-react'\nimport TableHeader from '../TableHeader/TableHeader'\nimport TableBody from '../TableBody/TableBody'\n\nconst Table = ({ ...props }) => <SemanticUITable sortable celled striped basic='very' {...props} />\n\nTable.Header = ({ ...props }) => <TableHeader {...props} />\nTable.Body = ({ ...props }) => <TableBody {...props} />\nTable.Row = ({ ...props }) => <SemanticUITable.Row {...props} />\nTable.Cell = ({ ...props }) => <SemanticUITable.Cell {...props} />\n\nTable.defaultProps = {}\n\nTable.displayName = 'Table'\nTable.Header.displayName = 'Table.Header'\nTable.Body.displayName = 'Table.Body'\nTable.Row.displayName = 'Table.Row'\nTable.Cell.displayName = 'Table.Cell'\n\nTable.propTypes = {}\n\nexport default Table\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { Dropdown as SemanticUIDropdown } from 'semantic-ui-react'\nimport { Icon, IconName } from '../icons'\n\n/**\n * extends react semantic ui default dropdown\n * https://react.semantic-ui.com/modules/dropdown/\n * dropdown module\n */\n\nconst Dropdown = ({ icon, text, options, ...props }) => (\n\t<DropdownStyled button direction='left' text={text} options={options} icon={<Icon icon={icon} />} {...props} />\n)\n\nDropdown.defaultProps = {\n\ticon: 'select-down',\n\ttext: '',\n\toptions: []\n}\n\nDropdown.propTypes = {\n\t/** icon of type iconName to be displayed (examples: success, add) */\n\ticon: PropTypes.oneOf(IconName),\n\t/** text visible on the button */\n\ttext: PropTypes.string,\n\t/** options to show when expanded */\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tkey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\t\t\ttext: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\t\t\tvalue: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\t\t})\n\t)\n}\n\nDropdown.displayName = 'Dropdown'\n\nconst DropdownStyled = styled(SemanticUIDropdown)`\n\tpadding-right: 16px !important;\n\tpadding-left: 16px !important;\n\tbackground-color: ${({ theme }) => theme.buttons.bg} !important;\n\tborder-radius: ${({ theme }) => theme.buttons.borderRadius} !important;\n\tcolor: ${({ theme }) => theme.buttons.text} !important;\n\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')} !important;\n\n\t&&&.disabled {\n\t\tbackground-color: ${({ theme }) => theme.colors.strokeGray} !important;\n\t\tcolor: ${({ theme }) => theme.colors.gray} !important;\n\t}\n\n\t&&&.visible {\n\t\tbackground-color: ${({ theme }) => theme.buttons.activeBg} !important;\n\t}\n\n\t&:active {\n\t\tbackground-color: ${({ theme }) => theme.buttons.activeBg} !important;\n\t}\n\n\ti.icon {\n\t\tmargin: 0 !important;\n\t\tmargin-left: 6px !important;\n\t}\n\n\t.visible.menu {\n\t\tmin-width: 90% !important;\n\t\tmargin-top: 2px;\n\t}\n\n\tdiv.item {\n\t\tborder-top: solid 1px ${({ theme }) => theme.buttons.dropdown.separatorColor} !important;\n\t\ttext-align: right !important;\n\t}\n\n\tdiv.item.active {\n\t\tbackground-color: ${({ theme }) => theme.buttons.dropdown.activeBackgroundColor} !important;\n\t\tfont-weight: normal !important;\n\t}\n`\n\nDropdownStyled.displayName = 'DropdownStyled'\n\n/** @component */\nexport default Dropdown\n","import React from 'react'\nimport { Dropdown } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst GradeDropdown = ({ options, header, children, onChange, value, ...props }) => (\n\t<Dropdown trigger={children} icon={null} {...props}>\n\t\t<DropdownMenu>\n\t\t\t{header && <DropdownHeader content={header} />}\n\t\t\t{options.map(({ value: val, color, name }) => (\n\t\t\t\t<DropdownItem onClick={() => onChange({ value: val, name })} selected={value === val} key={val}>\n\t\t\t\t\t<Square color={color} />\n\t\t\t\t\t<Name color={color}>{name}</Name>\n\t\t\t\t</DropdownItem>\n\t\t\t))}\n\t\t</DropdownMenu>\n\t</Dropdown>\n)\n\nconst DropdownMenu = styled(Dropdown.Menu)`\n\t&&& {\n\t\twidth: 220px;\n\t\tpadding: 12px 8px 8px 8px;\n\t\tborder: 1px solid #ffffff;\n\t\tborder-radius: 4px;\n\t\tbox-shadow: 0px 2px 4px rgba(0, 0, 0, 0.25);\n\t}\n\n\t&&& .selected.item {\n\t\tbackground-color: ${({ theme }) => theme.colors.lightBlue};\n\t\tborder-radius: 4px;\n\t}\n`\n\nconst DropdownHeader = styled(Dropdown.Header)`\n\t&&&& {\n\t\tpadding: 0;\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 10px;\n\t\tfont-size: 12px;\n\t\tfont-weight: bold;\n\t\tline-height: 14px;\n\t\ttext-transform: none;\n\t}\n`\n\nconst DropdownItem = styled(Dropdown.Item)`\n\t&&&& {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 6px 8px !important;\n\t}\n\n\t&&&&:hover {\n\t\tbackground-color: ${({ theme }) => theme.colors.lightBlue} !important;\n\t\tborder-radius: 4px;\n\t}\n`\n\nconst Square = styled.div`\n\tdisplay: inline-block;\n\twidth: 18px;\n\theight: 18px;\n\tmargin-right: 6px;\n\tbackground-color: ${({ color }) => color || 'black'};\n`\n\nconst Name = styled.div`\n\tcolor: ${({ color }) => color || 'black'};\n`\n\nGradeDropdown.displayName = 'GradeDropdown'\nDropdownMenu.displayName = 'DropdownMenu'\nDropdownHeader.displayName = 'DropdownHeader'\nDropdownItem.displayName = 'DropdownItem'\nSquare.displayName = 'Square'\nName.displayName = 'Name'\n\nGradeDropdown.defaultProps = {\n\theader: null\n}\n\nGradeDropdown.propTypes = {\n\t/** dropdown options */\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tvalue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t\t\tname: PropTypes.string.isRequired,\n\t\t\tcolor: PropTypes.string\n\t\t})\n\t).isRequired,\n\t/** value controlled by the parent */\n\tvalue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\t/** dropdown header */\n\theader: PropTypes.string,\n\t/** component that will trigger the dropdown */\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** function called when an option is clicked */\n\tonChange: PropTypes.func.isRequired\n}\n\nexport default GradeDropdown\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport WidgetCardContainer from '../WidgetCardContainer/WidgetCardContainer'\n\nconst WidgetWeather = ({\n\tselected,\n\ttemperature,\n\ttemperatureColor,\n\ttemperatureMin,\n\ttemperatureMinColor,\n\ttemperatureMax,\n\ttemperatureMaxColor,\n\t...props\n}) => {\n\treturn (\n\t\t<WidgetCardContainer selected={selected} {...props}>\n\t\t\t<TemperatureContainer\n\t\t\t\texpand={temperatureMax !== undefined && temperatureMin !== undefined}\n\t\t\t\tcolor={temperatureColor}\n\t\t\t>\n\t\t\t\t{temperature}º\n\t\t\t</TemperatureContainer>\n\t\t\t{(temperatureMax !== undefined || temperatureMin !== undefined) && (\n\t\t\t\t<ContainerMinMax>\n\t\t\t\t\t{temperatureMin && (\n\t\t\t\t\t\t<TemperatureMinMaxContainer color={temperatureMinColor}>\n\t\t\t\t\t\t\t{temperatureMin}º\n\t\t\t\t\t\t</TemperatureMinMaxContainer>\n\t\t\t\t\t)}\n\t\t\t\t\t{temperatureMax && (\n\t\t\t\t\t\t<TemperatureMinMaxContainer color={temperatureMaxColor}>\n\t\t\t\t\t\t\t{temperatureMax}º\n\t\t\t\t\t\t</TemperatureMinMaxContainer>\n\t\t\t\t\t)}\n\t\t\t\t</ContainerMinMax>\n\t\t\t)}\n\t\t</WidgetCardContainer>\n\t)\n}\n\nconst TemperatureContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: ${({ expand }) => (expand ? 'calc(100% - 20px)' : '100%')};\n\tflex-flow: column;\n\talign-items: baseline;\n\tjustify-content: space-evenly;\n\tpadding: 0 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 28px;\n`\n\nTemperatureContainer.displayName = 'TemperatureContainer'\n\nconst ContainerMinMax = styled.div`\n\tposition: relative;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 20px;\n\tfont-size: 10px;\n`\n\nconst TemperatureMinMaxContainer = styled.div`\n\tdisplay: inline-flex;\n\twidth: 50%;\n\theight: calc(100% - 20px);\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tpadding: 0 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 10px;\n`\n\nTemperatureMinMaxContainer.displayName = 'TemperatureMinMaxContainer'\n\nWidgetWeather.defaultProps = {\n\tselected: false,\n\ttemperature: 24,\n\ttemperatureColor: 'black',\n\ttemperatureMin: undefined,\n\ttemperatureMinColor: 'black',\n\ttemperatureMax: undefined,\n\ttemperatureMaxColor: 'black'\n}\n\nWidgetWeather.propTypes = {\n\t/** is selected */\n\tselected: PropTypes.bool,\n\t/** temperature */\n\ttemperature: PropTypes.number,\n\t/** temperature color */\n\ttemperatureColor: PropTypes.string,\n\t/** temperature min */\n\ttemperatureMin: PropTypes.number,\n\t/** temperature min color */\n\ttemperatureMinColor: PropTypes.string,\n\t/** temperature max */\n\ttemperatureMax: PropTypes.number,\n\t/** temperature max color */\n\ttemperatureMaxColor: PropTypes.string\n}\n\nWidgetWeather.displayName = 'WidgetWeather'\n\nexport default WidgetWeather\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport WidgetCardContainer from '../WidgetCardContainer/WidgetCardContainer'\nimport icon from '../../../assets/images/sun.svg'\n\nconst WidgetWeatherIcon = ({\n\tselected,\n\ttemperature,\n\ttemperatureColor,\n\ttemperatureMin,\n\ttemperatureMinColor,\n\ttemperatureMax,\n\ttemperatureMaxColor,\n\t...props\n}) => {\n\treturn (\n\t\t<WidgetWrapperCustom selected={selected} {...props}>\n\t\t\t<IconWrapper>\n\t\t\t\t<IconImage alt='iconSun' src={icon} />\n\t\t\t</IconWrapper>\n\t\t\t<TemperatureWrapper>\n\t\t\t\t<TemperatureContainer\n\t\t\t\t\texpand={temperatureMax !== undefined && temperatureMin !== undefined}\n\t\t\t\t\tcolor={temperatureColor}\n\t\t\t\t>\n\t\t\t\t\t{temperature}º\n\t\t\t\t</TemperatureContainer>\n\t\t\t\t{(temperatureMax !== undefined || temperatureMin !== undefined) && (\n\t\t\t\t\t<ContainerMinMax>\n\t\t\t\t\t\t{temperatureMin && (\n\t\t\t\t\t\t\t<TemperatureMinContainer color={temperatureMinColor}>\n\t\t\t\t\t\t\t\t{temperatureMin}º\n\t\t\t\t\t\t\t</TemperatureMinContainer>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{temperatureMax && (\n\t\t\t\t\t\t\t<TemperatureMaxContainer color={temperatureMaxColor}>\n\t\t\t\t\t\t\t\t{temperatureMax}º\n\t\t\t\t\t\t\t</TemperatureMaxContainer>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ContainerMinMax>\n\t\t\t\t)}\n\t\t\t</TemperatureWrapper>\n\t\t</WidgetWrapperCustom>\n\t)\n}\n\nconst WidgetWrapperCustom = styled(WidgetCardContainer)`\n\t&&&& {\n\t\tflex-flow: row;\n\t}\n`\n\nconst IconWrapper = styled.div`\n\tdisplay: inline-flex;\n\twidth: 50%;\n\theight: 100%;\n\tflex-flow: column;\n\tjustify-content: space-around;\n\tpadding-left: 4px;\n`\n\nconst IconImage = styled.img`\n\twidth: 23px;\n\theight: 23px;\n`\n\nconst TemperatureWrapper = styled.div`\n\tposition: relative;\n\tdisplay: inline-flex;\n\twidth: 50%;\n\theight: 100%;\n\tflex-flow: column;\n\tjustify-content: space-around;\n\tfloat: right;\n`\n\nconst TemperatureContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: ${({ expand }) => (expand ? 'calc(100% - 26px)' : '100%')};\n\tflex-flow: column;\n\talign-items: baseline;\n\tjustify-content: ${({ expand }) => (expand ? 'flex-end' : 'space-around')};\n\tpadding: 0 3px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 14px;\n`\n\nTemperatureContainer.displayName = 'TemperatureContainer'\n\nconst ContainerMinMax = styled.div`\n\tdisplay: inline-flex;\n\twidth: 100%;\n\theight: 20px;\n`\n\nconst TemperatureMinContainer = styled.div`\n\tposition: relative;\n\ttop: -7px;\n\tleft: 2px;\n\tdisplay: inline-flex;\n\twidth: 50%;\n\theight: calc(100% - 20px);\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tpadding: 0 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 6px;\n`\n\nTemperatureMinContainer.displayName = 'TemperatureMinContainer'\n\nconst TemperatureMaxContainer = styled.div`\n\tposition: relative;\n\ttop: -7px;\n\tleft: -1px;\n\tdisplay: inline-flex;\n\twidth: 50%;\n\theight: calc(100% - 20px);\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: flex-start;\n\tpadding: 0 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: 6px;\n`\n\nTemperatureMaxContainer.displayName = 'TemperatureMaxContainer'\n\nWidgetWeatherIcon.defaultProps = {\n\tselected: false,\n\ttemperature: 24,\n\ttemperatureColor: 'black',\n\ttemperatureMin: undefined,\n\ttemperatureMinColor: 'black',\n\ttemperatureMax: undefined,\n\ttemperatureMaxColor: 'black'\n}\n\nWidgetWeatherIcon.propTypes = {\n\t/** is selected */\n\tselected: PropTypes.bool,\n\t/** temperature */\n\ttemperature: PropTypes.number,\n\t/** temperature color */\n\ttemperatureColor: PropTypes.string,\n\t/** temperature min */\n\ttemperatureMin: PropTypes.number,\n\t/** temperature min color */\n\ttemperatureMinColor: PropTypes.string,\n\t/** temperature max */\n\ttemperatureMax: PropTypes.number,\n\t/** temperature max color */\n\ttemperatureMaxColor: PropTypes.string\n}\n\nWidgetWeatherIcon.displayName = 'WidgetWrapper'\n\nexport default WidgetWeatherIcon\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport WidgetCardContainer from '../WidgetCardContainer/WidgetCardContainer'\n\nconst WidgetDate = ({ selected, format, color, font, day, month, year, ...props }) => {\n\tconst getFormat = () => {\n\t\tswitch (format) {\n\t\t\tcase 'mm/dd/yyyy':\n\t\t\t\treturn `${month}/${day}/${year}`\n\t\t\tcase 'dd/mm':\n\t\t\t\treturn `${day}/${month}`\n\t\t\tcase 'yyyy/mm/dd':\n\t\t\t\treturn `${year}/${month}/${day}`\n\t\t\tcase 'dd/mm/yyyy':\n\t\t\tdefault:\n\t\t\t\treturn `${day}/${month}/${year}`\n\t\t}\n\t}\n\n\treturn (\n\t\t<WidgetCardContainer selected={selected} {...props}>\n\t\t\t<DateContainer color={color} font={font}>\n\t\t\t\t{getFormat()}\n\t\t\t</DateContainer>\n\t\t</WidgetCardContainer>\n\t)\n}\n\nconst DateContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: space-evenly;\n\tpadding: 0 6px;\n\tcolor: ${({ color }) => color};\n\tfont-size: ${({ font }) => `${font}px`};\n\tfont-weight: bold;\n`\n\nDateContainer.displayName = 'DateContainer'\n\nWidgetDate.defaultProps = {\n\tformat: 'dd/mm/yyyy',\n\tfont: 10\n}\n\nWidgetDate.propTypes = {\n\t/** is selected */\n\tselected: PropTypes.bool.isRequired,\n\t/** date format */\n\tformat: PropTypes.oneOf(['dd/mm/yyyy', 'mm/dd/yyyy', 'dd/mm', 'yyyy/mm/dd']),\n\t/** color */\n\tcolor: PropTypes.string.isRequired,\n\t/** date font */\n\tfont: PropTypes.number,\n\t/** day */\n\tday: PropTypes.number.isRequired,\n\t/** month */\n\tmonth: PropTypes.number.isRequired,\n\t/** year */\n\tyear: PropTypes.number.isRequired\n}\n\nWidgetDate.displayName = 'WidgetDate'\n\nexport default WidgetDate\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport WidgetCardContainer from '../WidgetCardContainer/WidgetCardContainer'\n\nconst WidgetDateShort = ({ selected, colorDay, colorWeek, fontDay, fontWeek, dd, weekDay, ...props }) => {\n\treturn (\n\t\t<WidgetCardContainer selected={selected} {...props}>\n\t\t\t<DateWrapper>\n\t\t\t\t<WeekContainer color={colorWeek} font={fontWeek}>\n\t\t\t\t\t{weekDay}\n\t\t\t\t</WeekContainer>\n\t\t\t\t<DayContainer color={colorDay} font={fontDay}>\n\t\t\t\t\t{dd}\n\t\t\t\t</DayContainer>\n\t\t\t</DateWrapper>\n\t\t</WidgetCardContainer>\n\t)\n}\n\nconst DateWrapper = styled.div`\n\tdisplay: inline-flex;\n\twidth: 100%;\n\theight: 100%;\n\tflex-flow: column;\n\tjustify-content: space-around;\n`\n\nconst WeekContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 19px;\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: space-around;\n\tpadding: 0 3px;\n\tcolor: ${({ color }) => color};\n\tfont-size: ${({ font }) => `${font}px`};\n\ttext-transform: uppercase;\n`\n\nWeekContainer.displayName = 'WeekContainer'\n\nconst DayContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: calc(100% - 19px);\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: start;\n\tpadding: 3px 0 0;\n\tcolor: ${({ color }) => color};\n\tfont-size: ${({ font }) => `${font}px`};\n`\n\nDayContainer.displayName = 'DayContainer'\n\nWidgetDateShort.defaultProps = {\n\tselected: false,\n\tcolorWeek: 'black',\n\tcolorDay: 'black',\n\tfontWeek: 16,\n\tfontDay: 34,\n\tdd: 1,\n\tweekDay: 'Mon'\n}\n\nWidgetDateShort.propTypes = {\n\t/** is selected */\n\tselected: PropTypes.bool,\n\t/** color week */\n\tcolorWeek: PropTypes.string,\n\t/** color day */\n\tcolorDay: PropTypes.string,\n\t/** font week */\n\tfontWeek: PropTypes.number,\n\t/** font day */\n\tfontDay: PropTypes.number,\n\t/** day */\n\tdd: PropTypes.number,\n\t/** week day */\n\tweekDay: PropTypes.string\n}\n\nWidgetDateShort.displayName = 'WidgetWrapper'\n\nexport default WidgetDateShort\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { WidgetCardContainer } from '../WidgetCardContainer'\nimport { TextTruncate } from '../../text/TextTruncate'\n\nconst WidgetCard = ({ image, text, place, ...props }) => (\n\t<WidgetCardContainer width={93} height={93} {...props}>\n\t\t<WidgetContainer>\n\t\t\t<img src={image} alt='box' draggable={false} />\n\t\t\t<TextTruncate text={text} place={place} length={13} />\n\t\t</WidgetContainer>\n\t</WidgetCardContainer>\n)\n\nconst WidgetContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\tflex-flow: column;\n\talign-items: center;\n\tjustify-content: space-evenly;\n\tfont-size: 13px;\n\tfont-weight: bold;\n`\n\nWidgetCard.displayName = 'WidgetCard'\n\nWidgetCard.defaultProps = {\n\tplace: 'bottom'\n}\n\nWidgetCard.propTypes = {\n\t/** Image to be displayed */\n\timage: PropTypes.string.isRequired,\n\t/** Text to be displayed */\n\ttext: PropTypes.string.isRequired,\n\t/** Tooltip position */\n\tplace: PropTypes.oneOf(['top', 'right', 'left', 'bottom'])\n}\n\nexport default WidgetCard\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst DigitalClock = ({ color, font, hour, minute, period, size, ...props }) => {\n\tconst fontSize = size || (font === 'Roboto' ? 20 : 30)\n\n\treturn (\n\t\t<DigitalClockContainer color={color} font={font} size={fontSize} {...props}>\n\t\t\t{`${hour}:${minute}`}\n\t\t\t{period && <span>{period}</span>}\n\t\t</DigitalClockContainer>\n\t)\n}\n\nconst DigitalClockContainer = styled.div`\n\tdisplay: inline-block;\n\twidth: fit-content;\n\tcolor: ${({ theme, color }) => color || theme.colors.black};\n\tfont-family: ${({ font }) => font}, sans-serif;\n\tfont-size: ${({ size }) => size}px;\n\tfont-weight: ${({ font }) => (font === 'Roboto' ? 'bold' : 'normal')};\n\tline-height: 100%;\n\n\tspan {\n\t\tpadding-left: 7%;\n\t\tfont-family: Roboto, sans-serif;\n\t\tfont-size: 25%;\n\t\tline-height: 100%;\n\t\tvertical-align: ${({ font }) => (font === 'Roboto' ? 'top' : 'bottom')};\n\t}\n`\n\nDigitalClockContainer.displayName = 'DigitalClockContainer'\nDigitalClock.displayName = 'DigitalClock'\n\nDigitalClock.defaultProps = {\n\tperiod: undefined,\n\tsize: undefined,\n\tcolor: undefined,\n\tfont: 'Roboto',\n\thour: 10,\n\tminute: 10\n}\n\nDigitalClock.propTypes = {\n\t/** Text color */\n\tcolor: PropTypes.string,\n\t/** Text font-family */\n\tfont: PropTypes.oneOf(['Roboto', 'DS-Digital']),\n\t/** Hour to be displayed */\n\thour: PropTypes.number,\n\t/** Minutes to be displayed */\n\tminute: PropTypes.number,\n\t/** Hour period */\n\tperiod: PropTypes.oneOf(['AM', 'PM']),\n\t/** Text font-size */\n\tsize: PropTypes.number\n}\n\nexport default DigitalClock\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { DigitalClock } from '../DigitalClock'\nimport { WidgetCardContainer } from '../WidgetCardContainer'\n\nconst TimeWidget = ({ color, font, hour, minute, period, size, ...props }) => (\n\t<WidgetCardContainer {...props}>\n\t\t<TimeWidgetContainer>\n\t\t\t<DigitalClock color={color} font={font} hour={hour} minute={minute} period={period} size={size} />\n\t\t</TimeWidgetContainer>\n\t</WidgetCardContainer>\n)\n\nconst TimeWidgetContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\talign-items: center;\n\tjustify-content: center;\n`\n\nTimeWidgetContainer.displayName = 'TimeWidgetContainer'\nTimeWidget.displayName = 'TimeWidget'\n\nTimeWidget.defaultProps = {\n\tperiod: undefined,\n\tsize: undefined,\n\tfont: undefined,\n\tcolor: undefined,\n\thour: undefined,\n\tminute: undefined\n}\n\nTimeWidget.propTypes = {\n\t/** Text color */\n\tcolor: PropTypes.string,\n\t/** Text font-family */\n\tfont: PropTypes.oneOf(['Roboto', 'DS-Digital']),\n\t/** Hour to be displayed */\n\thour: PropTypes.number,\n\t/** Minutes to be displayed */\n\tminute: PropTypes.number,\n\t/** Hour period */\n\tperiod: PropTypes.oneOf(['AM', 'PM']),\n\t/** Text font-size */\n\tsize: PropTypes.number\n}\n\nexport default TimeWidget\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport Icon from '../../icons/Icon'\nimport Theme from '../../../themes/default'\nimport Checkbox from '../../inputs/Checkbox/Checkbox'\n\nconst ImageCard = ({ checkboxId, handleSelect, image, video, checked, width, height, ...props }) => (\n\t<ImageCardStyled checked={checked} width={width} height={height} {...props}>\n\t\t{checked !== undefined && (\n\t\t\t<CheckboxWrapper>\n\t\t\t\t<Checkbox\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\thandleSelect(e.target.checked)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</CheckboxWrapper>\n\t\t)}\n\t\t{video && <IconStyled size='big' checked={checked} color={Theme.colors.gray} icon='multimedia' />}\n\t\t<ImgCover src={image} alt='image' />\n\t</ImageCardStyled>\n)\n\nconst ImageCardStyled = styled.div`\n\tposition: relative;\n\twidth: ${({ width }) => (width ? `${width}px` : '100%')};\n\theight: ${({ height }) => (height ? `${height}px` : '100%')};\n\tborder: 2px solid transparent;\n\n\tcursor: pointer;\n\n\t&:after {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 4px;\n\t\tbox-shadow: ${({ theme, checked }) =>\n\t\t\tchecked ? `0 0 0 2px ${theme.colors.activeBlue}` : `0 0 0 1px ${theme.colors.strokeGray}`};\n\t\tcontent: '';\n\t}\n\n\t&:hover,\n\t&:focus {\n\t\t&:after {\n\t\t\tbox-shadow: 0 0 0 2px ${({ theme }) => theme.colors.activeBlue};\n\t\t}\n\t}\n`\nImageCardStyled.displayName = 'ImageCardStyled'\n\nconst CheckboxWrapper = styled.div`\n\tposition: absolute;\n\tz-index: 2;\n\ttop: 8px;\n\tleft: 8px;\n`\nCheckboxWrapper.displayName = 'CheckboxWrapper'\n\nconst IconStyled = styled(Icon)`\n\tposition: absolute;\n\tz-index: 2;\n\n\t:before {\n\t\tdisplay: inline-block;\n\t\tborder-radius: 2px;\n\t\tline-height: 0.9em;\n\t}\n\n\ttop: 3px;\n\tright: 8px;\n`\nIconStyled.displayName = 'IconStyled'\n\nconst ImgCover = styled.div`\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: ${({ theme }) => theme.colors.lightGray};\n\tbackground-image: url(${({ src }) => src});\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 100% auto;\n\n\tborder-radius: 4px;\n\n\t&:hover,\n\t&focus {\n\t\tborder-radius: 0;\n\t}\n`\n\nImageCard.defaultProps = {\n\tchecked: undefined,\n\thandleSelect: undefined,\n\tcheckboxId: undefined,\n\twidth: null,\n\theight: null,\n\tvideo: false\n}\n\nImageCard.propTypes = {\n\t/** checkbox is checked and the ImageCard is selected */\n\tchecked: PropTypes.bool,\n\t/** func to handle when element is selected */\n\thandleSelect: PropTypes.func,\n\t/** background image url */\n\timage: PropTypes.string.isRequired,\n\t/** button id to use in functional tests */\n\tcheckboxId: PropTypes.string,\n\t/** ImageCard's witdh */\n\twidth: PropTypes.number,\n\t/** ImageCard's height */\n\theight: PropTypes.number,\n\t/** if is a video */\n\tvideo: PropTypes.bool\n}\n\nImageCard.displayName = 'ImageCard'\n\nexport default ImageCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst CustomGrid = ({ minWidth, rowGap, columnGap, children, squared, mobile, tablet, desktop, bigDesktop }) => {\n\treturn (\n\t\t<GridStyled\n\t\t\tminWidth={minWidth}\n\t\t\tsquared={squared}\n\t\t\trowGap={rowGap}\n\t\t\tcolumnGap={columnGap}\n\t\t\tmobile={mobile}\n\t\t\ttablet={tablet}\n\t\t\tdesktop={desktop}\n\t\t\tbigDesktop={bigDesktop}\n\t\t>\n\t\t\t{children}\n\t\t</GridStyled>\n\t)\n}\n\nconst GridStyled = styled.div`\n\tdisplay: grid;\n\tgrid-column-gap: ${({ columnGap }) => columnGap}px;\n\tgrid-row-gap: ${({ rowGap }) => rowGap}px;\n\tgrid-template-columns: ${({ mobile, minWidth }) => `repeat(${mobile || 'auto-fit'}, minmax(${minWidth}px, 1fr))`};\n\n\t@media screen and (min-width: 768px) and (max-width: 991px) {\n\t\tgrid-template-columns: ${({ tablet, minWidth }) =>\n\t\t\t`repeat(${tablet || 'auto-fit'}, minmax(${minWidth}px, 1fr))`};\n\t}\n\n\t@media screen and (min-width: 992px) and (max-width: 1200px) {\n\t\tgrid-template-columns: ${({ desktop, minWidth }) =>\n\t\t\t`repeat(${desktop || 'auto-fit'}, minmax(${minWidth}px, 1fr))`};\n\t}\n\n\t@media screen and (min-width: 1200px) {\n\t\tgrid-template-columns: ${({ bigDesktop, minWidth }) =>\n\t\t\t`repeat(${bigDesktop || 'auto-fit'}, minmax(${minWidth}px, 1fr))`};\n\t}\n\n\t${({ squared }) => squared && 'grid-auto-rows: 1fr'};\n\n\t${({ squared }) =>\n\t\tsquared &&\n\t\t` \n\t\t&:before {\n\t\t\twidth: 0;\n\t\t\tpadding-bottom: 100%;\n\t\t\tcontent: '';\n\t\t\tgrid-column: 1 / 1;\n\t\t\tgrid-row: 1 / 1;\n\t\t}\n\t\t*:first-child {\n\t\t\tgrid-column: 1 / 1;\n\t\t\tgrid-row: 1 / 1;\n\t\t}\n \t`}\n`\n\nGridStyled.displayName = 'GridStyled'\n\nCustomGrid.defaultProps = {\n\tminWidth: 40,\n\trowGap: 20,\n\tcolumnGap: 20,\n\tsquared: false,\n\tmobile: undefined,\n\ttablet: undefined,\n\tdesktop: undefined,\n\tbigDesktop: undefined\n}\n\nCustomGrid.displayName = 'CustomGrid'\n\nCustomGrid.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\t/** min width of grid column */\n\tminWidth: PropTypes.number,\n\t/** space between rows */\n\trowGap: PropTypes.number,\n\t/** space between columns */\n\tcolumnGap: PropTypes.number,\n\t/** grid elements in squared shape */\n\tsquared: PropTypes.bool,\n\t/** number of columns on mobile size */\n\tmobile: PropTypes.number,\n\t/** number of columns on tablet size */\n\ttablet: PropTypes.number,\n\t/** number of columns on desktop size */\n\tdesktop: PropTypes.number,\n\t/** number of columns on bigDesktop size */\n\tbigDesktop: PropTypes.number\n}\n\nexport default CustomGrid\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { CustomGrid } from '../../grids/CustomGrid'\nimport Checkbox from '../../inputs/Checkbox/Checkbox'\n\nconst PlaylistCard = ({\n\tbuttonId,\n\thandleSelect,\n\timages,\n\tchecked,\n\tselected,\n\twidth,\n\timageHeight,\n\ttitle,\n\tleftText,\n\trightText,\n\t...props\n}) => (\n\t<PlaylistCardStyled checked={checked} width={width} {...props} selected={selected}>\n\t\t{checked !== undefined && (\n\t\t\t<CheckboxWrapper>\n\t\t\t\t<Checkbox\n\t\t\t\t\tchecked={checked}\n\t\t\t\t\tonChange={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\thandleSelect(e.target.checked)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</CheckboxWrapper>\n\t\t)}\n\t\t<CustomGrid rowGap={0} columnGap={0} minWidth={30}>\n\t\t\t{images.slice(0, 3).map((image, index) => (\n\t\t\t\t<ImgCover key={index} src={image} alt='logo' height={imageHeight} />\n\t\t\t))}\n\t\t</CustomGrid>\n\t\t<Content>\n\t\t\t<Title>{title}</Title>\n\t\t\t<Flex>\n\t\t\t\t<InfoLeft>{leftText}</InfoLeft>\n\t\t\t\t<InfoRight>{rightText}</InfoRight>\n\t\t\t</Flex>\n\t\t</Content>\n\t</PlaylistCardStyled>\n)\n\nconst PlaylistCardStyled = styled.div`\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: ${({ width }) => width && `${width}px`};\n\theight: 100%;\n\tborder: 2px solid transparent;\n\tuser-select: none;\n\n\t&:after {\n\t\tposition: absolute;\n\t\ttop: 0%;\n\t\tleft: 0%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 4px;\n\t\tbox-shadow: ${({ theme, checked }) =>\n\t\t\tchecked ? ` 0 0 0 2px ${theme.colors.activeBlue}` : ` 0 0 0 1px ${theme.colors.strokeGray}`};\n\t\tcontent: '';\n\t}\n\n\t&:hover,\n\t&:focus {\n\t\t&:after {\n\t\t\tbox-shadow: 0 0 0 2px ${({ theme }) => theme.colors.activeBlue};\n\t\t}\n\t}\n`\n\nconst ImgCover = styled.div`\n\twidth: 100%;\n\theight: ${({ height }) => height && `${height}px`};\n\tbackground-color: ${({ theme }) => theme.colors.strokeGray};\n\tbackground-image: url(${({ src }) => src});\n\tbackground-size: cover;\n\n\t&:first-child {\n\t\tborder-top-left-radius: 4px;\n\t}\n\t&:last-child {\n\t\tborder-top-right-radius: 4px;\n\t}\n`\n\nconst CheckboxWrapper = styled.div`\n\tposition: absolute;\n\tz-index: 2;\n\ttop: 8px;\n\tleft: 8px;\n`\nCheckboxWrapper.displayName = 'CheckboxWrapper'\n\nconst Content = styled.div`\n\tpadding: 10px 12px 12px 12px;\n`\n\nconst Title = styled.div`\n\tmargin-bottom: 6px;\n\tcolor: ${({ theme }) => theme.colors.activeBlue};\n\tfont-size: 13px;\n`\n\nconst Flex = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`\n\nconst InfoLeft = styled.div`\n\toverflow: hidden;\n\tpadding-right: 2px;\n\tcolor: ${({ theme }) => theme.colors.mediumGray};\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n`\n\nconst InfoRight = styled.div`\n\tcolor: ${({ theme }) => theme.colors.mediumGray};\n`\n\nPlaylistCard.defaultProps = {\n\tchecked: undefined,\n\thandleSelect: undefined,\n\tbuttonId: undefined,\n\twidth: undefined,\n\timageHeight: 74,\n\tselected: false,\n\trightText: undefined,\n\tleftText: undefined\n}\n\nPlaylistCard.propTypes = {\n\t/** if is checked */\n\tchecked: PropTypes.bool,\n\t/** func to handle when element is selected */\n\thandleSelect: PropTypes.func,\n\t/** array of images */\n\timages: PropTypes.arrayOf(PropTypes.string).isRequired,\n\t/** button id to use in functional tests */\n\tbuttonId: PropTypes.string,\n\t/** card's width */\n\twidth: PropTypes.number,\n\t/** card's images height */\n\timageHeight: PropTypes.number,\n\t/** if the card is selected */\n\tselected: PropTypes.bool,\n\t/** card's title */\n\ttitle: PropTypes.string.isRequired,\n\t/** card's leftText */\n\tleftText: PropTypes.string,\n\t/** card's rightText */\n\trightText: PropTypes.string\n}\n\nPlaylistCard.displayName = 'PlaylistCard'\n\nexport default PlaylistCard\n","import React from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\n\nconst Row = ({ children, width, height, ...props }) => (\n\t<RowWrapper width={width} height={height} {...props}>\n\t\t{children}\n\t</RowWrapper>\n)\n\nconst RowWrapper = styled.div`\n\tposition: relative;\n\tdisplay: block;\n\twidth: ${({ width }) => width}%;\n\theight: ${({ height }) => height}%;\n\tbox-sizing: border-box;\n\tfloat: left;\n`\n\nRowWrapper.displayName = 'RowWrapper'\n\nRow.displayName = 'Row'\n\nRow.defaultProps = {\n\tchildren: undefined,\n\twidth: 100,\n\theight: 100\n}\n\nRow.propTypes = {\n\tchildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n\twidth: PropTypes.number,\n\theight: PropTypes.number\n}\n\nexport default Row\n","module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=2)}([function(e,t){e.exports=require(\"react\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r={alignItems:\"center\",display:\"flex\",userSelect:\"none\"};t.defaultMenuStyle=r;var i={overflow:\"hidden\",userSelect:\"none\"};t.defaultWrapperStyle=i;var s={alignCenter:!0,alignOnResize:!0,arrowClass:\"scroll-menu-arrow\",arrowDisabledClass:\"scroll-menu-arrow--disabled\",arrowLeft:null,arrowRight:null,clickWhenDrag:!1,data:[],dragging:!0,hideArrows:!1,hideSingleArrow:!1,inertiaScrolling:!1,inertiaScrollingSlowdown:.25,innerWrapperClass:\"menu-wrapper--inner\",innerWrapperStyle:{textAlign:\"left\",userSelect:\"none\",whiteSpace:\"nowrap\"},itemClass:\"menu-item-wrapper\",itemClassActive:\"active\",itemStyle:{display:\"inline-block\"},menuClass:\"horizontal-menu\",menuStyle:r,onSelect:function(){return!1},onUpdate:function(){return!1},scrollBy:0,scrollToSelected:!1,selected:\"\",transition:.4,translate:0,useButtonRole:!0,wrapperClass:\"menu-wrapper\",wrapperStyle:i,wheel:!0,xPoint:0,rtl:!1};t.defaultProps=s},function(e,t,n){\"use strict\";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0});var i=r(n(3));t.default=i.default},function(e,t,n){\"use strict\";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,\"__esModule\",{value:!0});var a=s(n(0)),o=n(1),l=n(4),u=n(5),d=function(e){function t(t){var n=e.call(this,t)||this;return n.state={dragging:!1,firstItemVisible:!0,lastItemVisible:!1,leftArrowVisible:!1,rightArrowVisible:!0,startDragTranslate:0,translate:n.props.translate,xDraggedDistance:0,xPoint:0},n.setRef=function(e){var t=Object.entries(e)[0],r=t[0],i=t[1];i.elem&&(n.ref[r]=i)},n.setMenuInnerRef=function(e){n.menuInner=e},n.setWrapperRef=function(e){n.menuWrapper=e},n.checkFirstLastItemVisibility=function(e){var t=e.translate,r=void 0===t?n.state.translate:t,i=n.menuItems,s=!0,a=!1;if(i){var o=n.getVisibleItems({offset:r});s=o.includes(i[0]),a=o.includes(i.slice(-1)[0])}return{firstItemVisible:s,lastItemVisible:a}},n.setFirstLastItemVisibility=function(){var e=n.state,t=e.firstItemVisible,r=e.lastItemVisible,i=n.checkFirstLastItemVisibility({}),s=i.firstItemVisible,a=i.lastItemVisible;if(t!==s||r!==a){var o=!s,l=!a;n.setState({firstItemVisible:s,lastItemVisible:a,leftArrowVisible:o,rightArrowVisible:l})}},n.onLoad=function(){n.setInitial(),n.mounted=!0},n.resizeHandler=function(){if(!n.props.alignOnResize)return!1;clearTimeout(n.resizeTimer),n.resizeTimer=setTimeout(function(){return n.resize()},250)},n.resize=function(){var e=n.props.alignCenter;n.updateWidth({});var t=n.getVisibleItems({}),r=n.getOffsetToItemByIndex({index:t[0]&&t[0][1].index||0}),i=e?n.getCenterOffset({items:t}):0;n.setState({translate:-r+i}),n.setFirstLastItemVisibility()},n.setInitial=function(){var e=n.props,t=e.selected,r=e.data,s=e.translate,a=e.scrollToSelected,u=e.alignCenter,d=n.state.translate;if(!r||!r.length)return!1;n.menuItems.length&&r===n.data||(n.menuItems=n.getMenuItems(),n.data=r),n.updateWidth({});var f=i({},n.state);(!n.mounted&&s===o.defaultProps.translate||!l.translateIsValid(s)&&!l.translateIsValid(d))&&(f.translate=u?n.firstPageOffset:o.defaultProps.translate);var c=n.checkFirstLastItemVisibility({translate:s}),m=c.firstItemVisible,p=c.lastItemVisible;(f.firstItemVisible=m,f.lastItemVisible=p,f.leftArrowVisible=!m,f.rightArrowVisible=!p,a)&&(n.isScrollNeeded({itemId:t,translate:f.translate})&&(f.translate=n.getOffsetToItemByKey(t)));n.setState(i({},f))},n.isScrollNeeded=function(e){var t=e.itemId,r=e.translate,i=void 0===r?n.state.translate:r,s=n.getItemByKey(t);return!n.getVisibleItems({offset:i}).includes(s)},n.scrollTo=function(e){var t=n.state.translate,r=n.getOffsetToItemByKey(e);if(n.selected=e,t===r)return!1;n.setState({translate:r})},n.getMenuItems=function(){return Object.entries(n.ref).slice(0,n.props.data.length||0)},n.getItemsWidth=function(e){var t=e.items;return(void 0===t?n.menuItems:t).map(function(e){return e[1].elem}).filter(Boolean).reduce(function(e,t){return e+l.getClientRect(t).width},0)},n.getWidth=function(e){var t=e.items,r=window&&window.innerWidth,i=l.getClientRect(n.menuWrapper);return{wWidth:r,menuPos:i.x,menuWidth:i.width,allItemsWidth:n.getItemsWidth({items:t})}},n.updateWidth=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=n.getWidth({items:r}),s=i.wWidth,a=i.menuPos,o=i.menuWidth,l=i.allItemsWidth,u=n.getPagesOffsets({allItemsWidth:l,items:r,menuWidth:o}),d=u.firstPageOffset,f=u.lastPageOffset;n.menuPos=a,n.wWidth=s,n.allItemsWidth=l,n.menuWidth=o,n.firstPageOffset=d,n.lastPageOffset=f},n.getFirstPageOffset=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=e.offset,s=void 0===i?n.state.translate:i,a=e.menuWidth,o=void 0===a?n.menuWidth:a,l=n.getVisibleItems({items:r,menuWidth:o,offset:s});return n.getCenterOffset({items:l,menuWidth:o})},n.getLastPageOffset=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=e.allItemsWidth,s=void 0===i?n.allItemsWidth:i,a=e.menuWidth,o=void 0===a?n.menuWidth:a,l=n.props.rtl,u=n.getVisibleItems({items:r,menuWidth:o,offset:l?s-o:-s+o});return n.getCenterOffset({items:u,menuWidth:o})},n.getPagesOffsets=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=e.allItemsWidth,s=void 0===i?n.allItemsWidth:i,a=e.menuWidth,o=void 0===a?n.menuWidth:a,l=e.offset,u=void 0===l?n.state.translate:l;return{firstPageOffset:n.getFirstPageOffset({items:r,menuWidth:o,offset:u}),lastPageOffset:n.getLastPageOffset({allItemsWidth:s,items:r,menuWidth:o})}},n.onItemClick=function(e){var t=n.props,r=t.clickWhenDrag,i=t.onSelect;if(n.state.xDraggedDistance>5&&!r)return!1;n.selected=e,i&&i(e)},n.getVisibleItems=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=e.menuWidth,s=void 0===i?n.menuWidth:i,a=e.offset,u=void 0===a?n.state.translate:a,d=e.translate,f=void 0===d?n.state.translate||o.defaultProps.translate:d;return r.filter(function(e){var t=l.getClientRect(e[1].elem).width,i=n.getItemInd(r,e),a=n.getOffsetToItemByIndex({index:i,menuItems:r,translate:f});return n.elemVisible({elWidth:t,menuWidth:s,offset:u,x:a})})},n.elemVisible=function(e){var t=e.x,r=e.offset,i=void 0===r?0:r,s=e.elWidth,a=e.menuWidth,o=void 0===a?n.menuWidth:a,l=n.props.rtl,u=l?-(o+1):-1,d=l?1:o+1,f=l?-(t+i):t+i,c=l?f-s:f+s;return l?c>=u&&f<=d:f>=u&&c<=d},n.getItemInd=function(e,t){return void 0===e&&(e=n.menuItems),e&&t?e.findIndex(function(e){return e[0]===t[0]}):0},n.getNextItemInd=function(e,t){var r=n.menuItems;if(e){if(!t.length)return 0}else if(!t.length)return r.length;var i=e?n.getItemInd(r,t[0])-1:n.getItemInd(r,t.slice(-1)[0])+1;return i<0?0:i},n.getOffsetToItemByKey=function(e){var t=n.state.translate,r=n.getItemIndexByKey(e);if(-1===r)return t;var i=n.props,s=i.alignCenter,a=i.rtl;t=n.getOffsetToItemByIndex({index:r});var l=n.getVisibleItems({offset:-t}),u=s?n.getCenterOffset({items:l}):o.defaultProps.translate;return t=-(t-(a?-u:u)),n.itBeforeStart(t)?t=n.getOffsetAtStart():n.itAfterEnd(t)&&(t=n.getOffsetAtEnd()),t},n.getItemByKey=function(e){return n.menuItems.find(function(t){return t[1].key===e})||[\"\",{key:\"n\",elem:null,index:-1}]},n.getItemIndexByKey=function(e){return e?n.menuItems.findIndex(function(t){return t[1].key===e}):-1},n.getOffsetToItemByIndex=function(e){var t=e.index,r=e.menuItems,i=void 0===r?n.menuItems:r,s=e.translate,a=void 0===s?n.state.translate:s;if(!i.length)return 0;var o=t>=i.length?i.length-1:t,u=l.getClientRect(i[o][1].elem),d=u.x,f=u.x2;return n.props.rtl?n.menuPos+n.menuWidth-a-f:+d-a-n.menuPos},n.getScrollRightOffset=function(e,t){void 0===t&&(t=n.menuItems);var r=n.props,i=r.scrollBy,s=r.rtl,a=i?e[0][1].index+i:s?n.getPrevItem((e[0]&&e[0][1]||t[0][1]).key)[1].index:n.getNextItem((e.slice(-1)[0]&&e.slice(-1)||t.slice(-1))[0][1].key)[1].index,o=-n.getOffsetToItemByIndex({index:a,menuItems:t});return s?-o:o},n.getScrollLeftOffset=function(e,t){void 0===t&&(t=n.menuItems);var r=n.props,i=r.scrollBy,s=(r.rtl?n.getNextItem((e.slice(-1)[0]&&e.slice(-1)||t.slice(-1))[0][1].key):n.getPrevItem((e[0]&&e[0][1]||t[0][1]).key))[1].index-(i?i-1:e.length);return-n.getOffsetToItemByIndex({index:s<0?0:s,menuItems:t})},n.getNextItem=function(e){var t=n.menuItems;return t[t.findIndex(function(t){return t[1].key===e})+1]||t.slice(-1)[0]},n.getPrevItem=function(e){var t=n.menuItems;return t[t.findIndex(function(t){return t[1].key===e})-1]||t[0]},n.getOffset=function(e,t){void 0===t&&(t=n.menuItems),e=n.props.rtl?!e:e;var r=n.getVisibleItems({items:t});return e?n.getScrollLeftOffset(r,t):n.getScrollRightOffset(r,t)},n.getCenterOffset=function(e){var t=e.items,r=void 0===t?n.menuItems:t,i=e.menuWidth,s=void 0===i?n.menuWidth:i;return r.length?(s-n.getItemsWidth({items:r}))/2:0},n.handleWheel=function(e){if(!n.props.wheel)return!1;e.deltaY<0?n.handleArrowClick():n.handleArrowClick(!1)},n.getOffsetAtStart=function(){var e=n.firstPageOffset;return n.props.alignCenter?e:o.defaultProps.translate},n.getOffsetAtEnd=function(){var e=n.props.alignCenter,t=n,r=t.allItemsWidth,i=t.menuWidth,s=t.lastPageOffset,a=r-i;return e?-a-s:-a},n.handleArrowClickRight=function(){n.handleArrowClick(!1)},n.handleArrowClick=function(e){void 0===e&&(e=!0);var t=n.props,r=t.alignCenter,i=t.rtl,s=n,a=s.allItemsWidth,l=s.menuWidth;if(!r&&!e&&a<l)return!1;var u=0,d=n.getVisibleItems({}),f=d[0]&&0===d[0][1].index,c=d.slice(-1)[0]&&d.slice(-1)[0][1].index===n.menuItems.length-1,m=n.getOffset(e);if(e&&(f||n.itBeforeStart(m)))u=n.getOffsetAtStart();else if(e||!c&&!n.itAfterEnd(m)){var p=r?n.getCenterOffset({items:n.getVisibleItems({offset:m})}):0;u=m+(i?e?p+n.menuWidth:-p-n.menuWidth:p)}else u=n.getOffsetAtEnd();n.setState({startDragTranslate:0,translate:u,xDraggedDistance:0,xPoint:o.defaultProps.xPoint})},n.itBeforeStart=function(e){var t=n.props.alignCenter,r=n,i=r.menuWidth,s=r.allItemsWidth,a=r.firstPageOffset;return s<i||(t?e>a:e>o.defaultProps.translate)},n.itAfterEnd=function(e){var t=n.props.alignCenter,r=n,i=r.menuWidth,s=r.allItemsWidth,a=r.lastPageOffset;return s<i||(t?e<o.defaultProps.translate&&Math.abs(e)>s-i+a:e<o.defaultProps.translate&&Math.abs(e)>s-i)},n.getPoint=function(e){return\"touches\"in e?e.touches[0].clientX:\"clientX\"in e?e.clientX:0},n.handleDragStart=function(e){if(e&&\"buttons\"in e&&2===e.buttons)return!1;if(!n.props.dragging)return!1;var t=n.state.translate;n.dragHistory=[{time:Date.now(),position:t}],n.setState({dragging:!0,startDragTranslate:t,xDraggedDistance:0,xPoint:0})},n.handleDrag=function(e){var t=n.props,r=t.dragging,i=t.rtl,s=n.state,a=s.translate,l=s.dragging,u=s.xPoint,d=s.xDraggedDistance;if(!r||!l)return!1;var f=n.getPoint(e),c=u===o.defaultProps.xPoint?o.defaultProps.xPoint:u-f,m=a-(i?-c:c);n.itBeforeStart(m)?m-=Math.abs(c)/2:n.itAfterEnd(m)&&(m+=Math.abs(c)/2),0!==c&&n.dragHistory.push({time:Date.now(),position:m});var p=m;n.setState({translate:p,xDraggedDistance:d+Math.abs(c),xPoint:f})},n.handleDragStop=function(e){var t=n,r=t.allItemsWidth,i=t.menuWidth,s=n.state,a=s.translate,l=s.xPoint,u=void 0===l?n.getPoint(e):l,d=n.state,f=d.dragging,c=d.startDragTranslate,m=n.props,p=m.dragging,g=m.alignCenter;if(!p||!f)return!1;if(n.props.inertiaScrolling){var h=Date.now(),v=n.dragHistory.filter(function(e){return h-e.time<150});if(v.length>2){var I=v[0],y=v[v.length-1],b=(y.position-I.position)/(y.time-I.time);a+=(b*=n.props.inertiaScrollingSlowdown)*(1e3*n.props.transition)}}var w=a;n.itBeforeStart(a)?(w=n.getOffsetAtStart(),u=o.defaultProps.xPoint):n.itAfterEnd(a)&&(w=n.getOffsetAtEnd(),u=o.defaultProps.xPoint),!g&&r<=i&&(w=o.defaultProps.translate,u=o.defaultProps.xPoint),n.setState({dragging:!1,translate:w,xPoint:u},function(){return n.onUpdate({translate:w,translateOld:c})})},n.isArrowsVisible=function(){var e=n,t=e.allItemsWidth,r=e.menuWidth,i=e.props.hideArrows;return!Boolean(i&&t<=r)},n.onUpdate=function(e){var t=e.translate,r=void 0===t?n.state.translate:t,i=e.translateOld,s=void 0===i?n.state.translate:i,a=n.props.onUpdate,o=n.lastTranslateUpdate;r!==s&&r!==o&&(n.lastTranslateUpdate=r,\"function\"==typeof a&&a({translate:r}))},n.ref={},n.menuWrapper=null,n.menuInner=null,n.mounted=!1,n.needUpdate=!1,n.allItemsWidth=0,n.menuPos=0,n.menuWidth=0,n.wWidth=0,n.firstPageOffset=0,n.lastPageOffset=0,n.lastTranslateUpdate=0,n.menuItems=[],n.selected=String(t.selected)||\"\",n.onLoadTimer=0,n.rafTimer=0,n.resizeTimer=0,n.frameId=0,n.data=null,n.dragHistory=[],n}return r(t,e),t.prototype.componentDidCatch=function(e,t){console.log(\"ScrollMenu catched error: \",e,t)},t.prototype.componentDidMount=function(){var e=this;this.setInitial(),window.requestAnimationFrame=window.requestAnimationFrame||function(){return!1};var t=l.testPassiveEventSupport(),n=!t||{passive:!0,capture:!0},r=!!t&&{passive:!0,capture:!1};window.addEventListener(\"load\",this.onLoad,r),window.addEventListener(\"resize\",this.resizeHandler,r),document.addEventListener(\"mousemove\",this.handleDrag,n),document.addEventListener(\"mouseup\",this.handleDragStop,n),this.onLoadTimer=setTimeout(function(){return e.onLoad(),e.forceUpdate()},0)},t.prototype.shouldComponentUpdate=function(e,t){var n=this.state,r=n.translate,i=n.dragging,s=n.firstItemVisible,a=n.lastItemVisible,o=t.translate,u=t.dragging,d=t.firstItemVisible,f=t.lastItemVisible,c=this.props,m=c.translate,p=c.selected,g=c.scrollToSelected,h=e.translate,v=e.selected,I=l.notUndefOrNull(h)&&m!==h,y=h!==o||r!==o||I,b=l.notUndefOrNull(v)&&p!==v,w=b||this.selected!==v,P=y||w,S=s!==d,W=a!==f,O=o,x=this.props.data!==e.data||this.props.data.length!==e.data.length,C=l.translateIsValid(h)&&I&&!x;return(x||g&&b)&&(this.needUpdate=!0),P&&(b&&(this.selected=v),C&&(O=h)),C&&this.setState({translate:+O}),x||y||i!==u||P||S||W},t.prototype.componentDidUpdate=function(e,t){var n=this;this.needUpdate&&(this.needUpdate=!1,this.onLoad());var r=t.translate,i=this.state,s=i.translate;i.dragging||r===s||this.onUpdate({translate:s,translateOld:r});var a=this.props,o=a.hideSingleArrow,l=a.transition;o&&(cancelAnimationFrame(this.frameId),clearTimeout(this.rafTimer),this.frameId=requestAnimationFrame(this.setFirstLastItemVisibility),this.rafTimer=setTimeout(function(){cancelAnimationFrame(n.frameId),n.frameId=requestAnimationFrame(n.setFirstLastItemVisibility)},1e3*l+10))},t.prototype.componentWillUnmount=function(){window.removeEventListener(\"resize\",this.resizeHandler),document.removeEventListener(\"mousemove\",this.handleDrag),document.removeEventListener(\"mouseup\",this.handleDragStop),clearTimeout(this.rafTimer),clearTimeout(this.onLoadTimer),clearTimeout(this.resizeTimer),cancelAnimationFrame(this.frameId)},t.prototype.render=function(){var e=this.props,t=e.arrowClass,n=e.arrowDisabledClass,r=e.arrowLeft,s=e.arrowRight,l=e.data,d=e.inertiaScrolling,f=e.innerWrapperStyle,c=e.innerWrapperClass,m=e.itemStyle,p=e.itemClass,g=e.itemClassActive,h=e.menuStyle,v=e.menuClass,I=e.transition,y=e.useButtonRole,b=e.wrapperClass,w=e.wrapperStyle,P=e.rtl,S=this.state,W=S.translate,O=S.dragging,x=S.leftArrowVisible,C=S.rightArrowVisible,A=this.selected,_=this.mounted;if(!l||!l.length)return null;var V=!_||this.isArrowsVisible(),D=i({},o.defaultMenuStyle,h),T=i({},o.defaultWrapperStyle,w),k=i({},o.defaultProps.itemStyle,m),E={className:t,disabledClass:n};return a.createElement(\"div\",{className:v,style:D,onWheel:this.handleWheel},r&&a.createElement(u.ArrowWrapper,i({},E,{isDisabled:!V||!x,onClick:this.handleArrowClick}),r),a.createElement(\"div\",{className:b,style:T,ref:this.setWrapperRef,onMouseDown:this.handleDragStart,onTouchStart:this.handleDragStart,onTouchEnd:this.handleDragStop,onMouseMove:this.handleDrag,onTouchMove:this.handleDrag},a.createElement(u.InnerWrapper,{data:l,translate:W,dragging:O,mounted:_,transition:_?I:0,selected:A,setRef:this.setRef,setMenuInnerRef:this.setMenuInnerRef,onClick:this.onItemClick,innerWrapperStyle:f,innerWrapperClass:c,itemStyle:k,itemClass:p,itemClassActive:g,inertiaScrolling:d,useButtonRole:y,rtl:P})),s&&a.createElement(u.ArrowWrapper,i({},E,{isDisabled:!V||!C,onClick:this.handleArrowClickRight}),s))},t.defaultProps=o.defaultProps,t}(a.Component);t.ScrollMenu=d,t.default=d},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.notUndefOrNull=function(e){return void 0!==e&&null!==e};t.getClientRect=function(e){if(!e||!e.getBoundingClientRect||\"function\"!=typeof e.getBoundingClientRect)return{width:0,x:0,x2:0};var t=e.getBoundingClientRect(),n=t.left,r=void 0===n?0:n,i=t.width,s=void 0===i?0:i,a=t.right;return{width:s,x:+r,x2:+(void 0===a?0:a)}};t.formatTranslate=function(e){return+e.toFixed(0)};var r=function(e){return\"number\"==typeof e&&!isNaN(+e)};t.translateIsValid=r;t.validateTranslate=function(e,t){return r(e)?+e:t};t.testPassiveEventSupport=function(){var e=!1;try{var t={get passive(){return e=!0,!1}};window.addEventListener(\"testPassiveEventSupport\",t,t),window.removeEventListener(\"testPassiveEventSupport\",t,t)}catch(t){e=!1}return e}},function(e,t,n){\"use strict\";var r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=s(n(0)),o=n(1),l={disabledClass:o.defaultProps.arrowDisabledClass},u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){var e=this.props,t=e.isDisabled,n=e.className,r=e.disabledClass,i=e.onClick,s=e.children,o=n+\" \"+(t?r:\"\");return a.default.createElement(\"div\",{className:o,onClick:function(){return i()}},a.default.cloneElement(s,s.props))},t.defaultProps=l,t}(a.default.PureComponent);t.ArrowWrapper=u,t.innerStyle=function(e){var t=e.translate,n=e.dragging,r=e.mounted,i=e.transition,s=e.inertiaScrolling;return{transform:\"translate3d(\"+(e.rtl?-t:t)+\"px, 0, 0)\",transition:\"transform \"+(n||!r?\"0\":i)+\"s\"+(s?\" ease-out\":\"\"),width:\"9900px\"}};var d=function(e){function n(t){var n=e.call(this,t)||this;return n.setMenuInnerRef=function(e){(0,n.props.setMenuInnerRef)({menuInner:{key:\"menuInner\",elem:e}})},n.setRef=function(e,t,r,i){var s;(0,n.props.setRef)(((s={})[e]={index:r,key:t,elem:i},s))},n.state={data:[],items:[],selected:\"\"},n}return r(n,e),n.getDerivedStateFromProps=function(e,t){return t.data!==e.data||t.selected!==e.selected?{data:e.data,items:n.setItems(e.data,e.selected,e.onClick),selected:e.selected}:null},n.prototype.render=function(){var e=this,n=this.props,r=n.translate,s=n.dragging,o=n.mounted,l=n.transition,u=n.innerWrapperStyle,d=n.innerWrapperClass,f=n.itemStyle,c=n.itemClass,m=n.itemClassActive,p=n.inertiaScrolling,g=n.useButtonRole,h=n.rtl,v=t.innerStyle({dragging:s,inertiaScrolling:p,mounted:o,rtl:h,transition:l,translate:r}),I=i({},v,u);return a.default.createElement(\"div\",{className:d,style:I,ref:function(t){return e.setMenuInnerRef(t)}},this.state.items.map(function(t,n){return a.default.createElement(\"div\",{ref:function(r){return e.setRef(\"menuitem-\"+n,String(t.key||\"\"),n,r)},className:c+\" \"+(t.props.selected?m:\"\"),key:\"menuItem-\"+t.key,style:f,onClick:t.props.onClick(),tabIndex:0,role:g?\"button\":\"\"},t)}))},n.defaultProps={data:[],dragging:!0,mounted:!1,selected:o.defaultProps.selected,transition:o.defaultProps.transition,translate:o.defaultProps.translate},n.isElementActive=function(e,t){return String(e)===String(t)},n.setItems=function(e,t,r){return e.map(function(e){var i=e.props.onClick,s=void 0===i?function(){return!1}:i,o={onClick:function(){return n.forwardClickHandler(e.key,s,r)},selected:n.isElementActive(e.key,t)};return a.default.cloneElement(e,o)})},n.forwardClickHandler=function(e,t,n){return void 0===t&&(t=function(){return!1}),function(){t(),n(e)}},n}(a.default.PureComponent);t.InnerWrapper=d}]);","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport ScrollMenu from 'react-horizontal-scrolling-menu'\nimport { DefaultTheme as defaultTheme } from '../../../themes'\nimport { Icon } from '../../icons'\n\nconst Arrow = ({ side, iconColor }) => (\n\t<ArrowWrapper side={side}>\n\t\t<Icon icon={side === 'left' ? 'select-left' : 'select-right'} color={iconColor} />\n\t</ArrowWrapper>\n)\n\nconst Carousel = ({ data, arrowsColor, arrowsColorDisabled, borderColor, ...props }) => (\n\t<div>\n\t\t<ScrollMenuContainer arrowsColorDisabled={arrowsColorDisabled} borderColor={borderColor}>\n\t\t\t<ScrollMenu\n\t\t\t\tdata={data}\n\t\t\t\talignCenter={false}\n\t\t\t\tarrowLeft={<Arrow side='left' iconColor={arrowsColor} />}\n\t\t\t\tarrowRight={<Arrow side='right' iconColor={arrowsColor} />}\n\t\t\t\tscrollBy={1}\n\t\t\t\thideSingleArrow={true}\n\t\t\t\twheel={false}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</ScrollMenuContainer>\n\t</div>\n)\n\nconst ScrollMenuContainer = styled.div`\n\t${({ borderColor }) =>\n\t\tborderColor &&\n\t\t`\n\tborder: 2px solid ${borderColor};\n\tbox-sizing: border-box;\n\tborder-radius: 4px;\n\t\tpadding: 0 14px;\n\t`}\n\t.menu-item-wrapper:focus {\n\t\toutline: none !important;\n\t}\n\n\t.scroll-menu-arrow--disabled i {\n\t\tcolor: ${({ arrowsColorDisabled }) => `${arrowsColorDisabled} !important`};\n\t\tcursor: default;\n\t}\n`\n\nconst ArrowWrapper = styled.div`\n\tdisplay: flex;\n\twidth: 13px;\n\theight: 26px;\n\n\talign-items: center;\n\tjustify-content: center;\n\n\tmargin-right: ${({ side }) => (side === 'left' ? '6px' : '0')};\n\tmargin-left: ${({ side }) => (side === 'right' ? '6px' : '0')};\n\n\tcursor: pointer;\n\ttext-align: center;\n\ttext-transform: uppercase;\n`\nArrowWrapper.displayName = 'ArrowWrapper'\n\nArrow.defaultProps = {\n\ticonColor: defaultTheme.colors.mediumGray\n}\n\nArrow.propTypes = {\n\tside: PropTypes.string.isRequired,\n\ticonColor: PropTypes.string\n}\n\nCarousel.defaultProps = {\n\tdata: undefined,\n\tarrowsColor: defaultTheme.colors.mediumGray,\n\tarrowsColorDisabled: defaultTheme.colors.strokeGray,\n\tborderColor: undefined\n}\n\nCarousel.propTypes = {\n\t/** children components that will be inside carousel */\n\tdata: PropTypes.arrayOf(PropTypes.node),\n\t/** carousel arrows color */\n\tarrowsColor: PropTypes.string,\n\t/** carousel arrows color when disabled*/\n\tarrowsColorDisabled: PropTypes.string,\n\t/** carousel border color */\n\tborderColor: PropTypes.string\n}\n\nexport default Carousel\n"],"names":["IconName","IconStyled","styled","color","props","SemanticUIIcon","propTypes","PropTypes","string","displayName","Icon","icon","className","onClick","combinedClassName","concat","defaultProps","undefined","oneOf","isRequired","func","typographyStyles","css","size","theme","text","italic","bold","colors","uppercase","underlined","TextDestructure","Text","bool","Button","content","iconColor","loading","children","ButtonStyled","SemanticUIButton","buttons","bg","borderRadius","disabled","activeBg","oneOfType","arrayOf","node","IconButton","btnSize","iconSize","IconButtonStyled","Link","activeLink","ButtonLink","linkProps","TopButtonStyled","button","strokeGray","jellyfish","gray","TopButton","SelectButton","SelectButtonStyled","selected","backgroundColor","deepBlue","white","colorText","SelectGroupButton","childWidth","SelectGroupButtonWrapper","div","transparent","black","activeBlue","purple","yellow","orange","red","darkRed","lightBlue","malibu","pacificBlue","green","lightGreen","purpleHeart","ultraMarine","oliveDrab","mariner","summerSky","whisper","darkGray","mediumGray","lightGray","blueOcean","wine","SPACE_UNIT","name","navbar","dropdown","separatorColor","activeBackgroundColor","list","pairCell","unPairCell","title","additionalInfo","activeCell","boxShadow","span","defaultColor","negative","positive","primary","block","labelColor","input","select","placeholderColor","focusedBackgroundColor","selectedBackgroundColor","menuPadding","toggle","timePicker","errorColor","disabledColor","primaryColor","activeColor","hoverColor","textColor","numberSpinner","disabledColorText","borderColor","toast","titleColor","messageColor","successColor","warningColor","passwordStrengthMeter","none","bad","medium","good","excellent","status","success","error","info","blocked","bulletState","on","away","off","inputRange","backgroundThumbColor","gradient","value","gradeDropdown","veryHigh","high","normal","low","veryLow","label","listCard","defaultBorder","errorBorder","dndList","active","dragOver","space","xxs","xs","sm","md","lg","xl","xxl","link","hex","lum","rgb","c","slice","match","forEach","element","parseInt","Math","round","min","max","toString","substr","length","Ripple","colorLuminance","SquareButton","width","height","bgColor","DefaultTheme","SquareButtonStyled","Content","MenuExtended","SemanticUIMenu","Navbar","Tabs","panes","secondary","pointing","TabStyled","Tab","SubNav","collapse","activeItem","items","isActive","setRoute","subNavBgColor","subNavColor","subNavColorTitle","subNavHoverBgColor","subNavHoverColor","subNavHighlightBgColor","subNavHighlightColor","onClickItem","path","Header","map","item","id","SubNavStyled","FullWidth","HeaderIcon","Title","SubNavList","SubNavLink","a","hoverBgColor","highlightColor","shape","SideNavLink","highlightBgColor","SideNavLinkStyled","Flex","SideNavLinkWrapper","SideNavLinkIcon","SideNavLinkText","p","SideNavLinkArrow","SideNavSection","section","colorTitle","render","collapsed","expanded","SideNavSectionStyled","SideNavSectionTitle","show","SideNav","timeout","setTimeout","setState","onHover","clearTimeout","find","getActiveItem","matchPath","location","params","exact","isExact","nav","activeSection","state","activeItemHasSubNav","index","isToggleCollapsed","setToggleCollapsed","customActions","logo","symbol","dividerColor","customIconColor","isCollapsed","onMouseEnter","onMouseLeave","renderCollapseToggle","route","Divider","notLastElement","Component","CollapseToggle","ToggleIcon","DividerContainer","SideNavStyled","Nav","LogoContainer","LogoIcon","Logo","CustomIconList","CustomIconRow","CustomIcon","QubeLogo","QubeSymbol","AnchorMenuItem","Marker","MenuItemStyled","NormalTextStyled","AnchorMenuMapper","rest","AnchorMenuStyled","anchor","current","instanceOf","Element","ScrollableAnchorMenu","selectedItem","lockSelectedItem","scrollingTo","val","elem","getBoundingClientRect","top","document","body","docEl","documentElement","scrollTop","window","scrollY","clientTop","sectionIndex","findIndex","getCoords","currentSection","limitValue","findCurrentSection","lockClear","setSelectedItem","searchItemsForCurrentSection","clearLockTimeOut","y","scrollTo","behavior","componentDidMount","addEventListener","handleScroll","UNSAFE_componentWillUnmount","removeEventListener","computedItems","onItemClick","NavigationAnchorMenu","newItems","AnchorMenu","type","BlockWrapper","background","Block","fontSize","textTransform","number","BlockBarWrapper","BlockBar","Span","ModalIconP","ModalIcon","ModalTitle","ModalText","ModalStyled","SemanticModal","Modal","positiveLabel","positiveActionHandler","negativeLabel","negativeActionHandler","closeOnDimmerClick","closeIcon","danger","darkBlue","DeleteModal","FullScreenModal","IconSpaced","CenteredContent","Top","ModalGlobalStyle","createGlobalStyle","FullModalStyled","_constant","_react","_propTypes","_classnames","_staticMethods","_windowListener","_customEvent","_isCapture","_getEffect","_trackRemoval","_getPosition","_getTipContent","_nodeListToArray","_style","_aria","isCapture","StyledTooltip","ReactTooltip","place","effect","suppressClassNameWarning","multiline","HelpTooltip","Tooltip","trigger","object","spanTrigger","iconTrigger","buttonTrigger","TooltipExample","PaginationStyled","SemanticUIPagination","Pagination","activePage","totalPages","onPageChange","Input","SemanticInput","LabelLink","InputIcon","ErrorText","Error","ColorLabel","LabelSemanticUI","align","LabelText","Label","BottomLabel","InputField","hint","labelIcon","rightLabel","rightLabelOnClick","child","i","InputFieldContainer","ListErrorWrapper","InputFile","fieldField","click","React","createRef","handleClick","bind","inputFileLabel","InputFileHidden","AddIcon","InputFileContainer","TextArea","SemanticUITextArea","Toggle","Checkbox","hiddenCheckbox","checked","labelPosition","e","stopPropagation","checkbox","CheckboxWrapper","CheckboxContainer","HiddenCheckbox","attrs","LabelWrapper","Radio","hiddenRadio","radio","RadioWrapper","RadioContainer","HiddenRadio","onChange","TagContainer","noBorder","Tag","event","regex","target","replace","toUpperCase","maxLength","InputGroup","errors","getClassName","currentIndex","getInputName","errorsToArray","Object","keys","reduce","acc","Array","isArray","errorItem","indexOf","push","InputGroupContainer","InputGroupTable","table","tag","colour","PasswordStrengthMeter","score","colorArray","getColor","Box","BoxContainer","ProgressBar","PasswordStrengthStyled","InputPassword","setType","meter","iconInputElement","IconInput","scoreValidation","propName","componentName","InputRange","step","onUpdate","InputRangeStyled","NumberSpinner","numValue","Number","newValue","stepLimiter","scrollInput","setValueByStep","deltaY","readOnly","String","setValueWheel","getValue","minPropValidation","valuePropValidation","IconUp","DefaultIcon","IconDown","Container","unitless","classnames","Stylis","hashString","this","global","now","_interopRequireDefault","require$$0","polyfill","require$$1","require$$2","_PropTypes","_reactLifecyclesCompat","require$$3","require$$4","removeClass","_ChildMapping","_reactDom","_defineProperty","_extends","_objectWithoutPropertiesLoose","_assertThisInitialized","raf","Menu","cx","css$1","memoizeOne","Transition","TransitionGroup","Input$1","index$1","MultiInputOption","isSelected","CheckboxEventLess","classNamePrefix","MultiInputValueContainer","selectProps","valueLength","inputValue","formatMessage","Children","components","SelectStyled","ReactSelect","Select","isMulti","hideSelectedOptions","closeMenuOnSelect","Option","ValueContainer","Collapse","useState","open","setOpen","opacity","display","Wrapper","defaultPropTypes","Expandable","tooltip","headerComponent","handleOnClick","HeaderComponentContainer","ExpandableHeader","IconAnimated","ExpandableContent","ExpandableSection","require","DatePicker","DatePickerStyledWrapper","startDatePlaceholderText","endDatePlaceholderText","startDate","endDate","startDateId","endDateId","momentObj","onDatesChange","onFocusChange","focusedInput","CustomColorPicker","hsl","hsv","h","s","l","v","CustomColorPickerContainer","SaturationContainer","HueContainer","EditableInputContainer","CustomPicker","ColorPicker","onClose","setColor","setWrapperRef","handleClickOutside","componentWillUnmount","wrapperRef","isVisible","isDisplayerMode","contains","handleOnClose","cursor","colorValue","ColorPickerStyled","TopHeader","ColorDisplayer","escKeyCall","style","activeFocus","setDisplay","inputFocus","handleEscKey","keyCode","useEffect","handleOpen","flag","focus","InputHidden","ColorBox","ColorButtonContainer","TimePicker","format","moment","utc","asMilliseconds","isInteger","selectionEnd","charAt","oldValue","position","isTyped","cursorCharacter","addedCharacter","removedCharacter","replacedSingleCharacter","newPosition","isNumber","hoursValue","minutesValue","secondsValue","nativeEvent","durationObject","hours","minutes","seconds","typeValue","duration","onInputChange","formatTimeItem","isValidTime","selectionStart","onBlur","formatMomentDuration","componentDidUpdate","prevProps","prevState","hoursPropValidation","objectOf","MiddleColumn","SemanticUIHeader","textProps","BigHeader","SubHeader","TextTruncate","ending","truncatedString","substring","slashedString","split","join","FROM_LOWER_LIMIT","FROM_HIGHER_LIMIT","TO_LOWER_LIMIT","TO_HIGHER_LIMIT","TimePickerGroup","from","to","fromLabel","toLabel","middleLabel","beginTime","setBeginTime","endTime","setEndTime","getLeastSignificantValue","checkBounds","isFrom","handleChangeFrom","newEndTime","clone","add","handleChangeTo","newBeginTime","subtract","MiddleLabel","TimePickerWithLabel","SpanStyled","SmileyVeryBad","fill","SmileyBad","SmileyBlank","SmileyGood","SmileyVeryGood","Star","Rating","threeStars","fiveStars","threeSmileys","SmileyNormal","fiveSmileys","stars","smileys","renderSmileys","Smiley","renderStars","SvgContainer","WidgetCardWrapper","borderStyle","WidgetCardContainer","RatingBox","RatingBoxStyled","RatingBoxWrapper","_propValidator","require$$5","require$$6","_Transitions","ToastIconWrapper","ToastIcon","ToastTitle","ToastMessage","ToastBody","message","ToastWrapper","ToastContainer","Toast","notify","options","notifyError","hideProgressBar","closeButton","autoClose","pauseOnFocusLoss","notifySuccess","notifyWarning","CenteredGridStyled","CenteredGrid","Section","Crumb","crumbIndex","crumbs","newPath","StyledCrumb","StyledCrumbSpan","isNotNumber","segment","isNaN","BreadCrumbs","finalItem","translationFunction","filter","lastItem","crumb","BreadCrumbsStyled","NoUserSelect","LoadingDiv","Loading","lottie","loadAnimation","container","loadingContainer","renderer","loop","autoplay","animationData","whiteAnimation","blueAnimation","el","ModalLoading","LoadingModal","margin","ListHeaderContainer","Grid","ListHeaderPaginationContainer","Column","ListHeader","handleSelectAll","pagination","handlePageChange","ActionsListWrapper","selectAllCheckboxColor","ListCardContainerWrapper","ListCardWrapper","List","extra","cards","ListContainer","ListHeaderAction","ListRowWrapper","removehover","ListRowActionWrapper","typeAction","handleAction","IconWrapper","ListBlockContainer","ListRowLeft","renderElements","ListRowRight","showOnHover","ListRowRightStyled","Div","OnHoverShow","ListRow","renderChildrenWithProps","cloneElement","Left","Right","ListAddInfoWrapper","ListActionsWrapper","CardWrapper","numCols","last","actions","addInfo","ListCard","ListExpandableRow","activeIndex","componentsLeft","componentsRightShowOnHover","componentsRight","componentsRightHideOnHover","Row","FlexCenter","Body","ListExpandableCustomRow","image","arrow","divider","Image","img","ListExpandable","expandedIndex","setActiveIndex","CustomRow","react_1","root","ponyfill","$$observable","_objectSpread","types_1","invariant_1","js_utils_1","matchesType_1","dragDrop_1","equality_1","registry_1","dirtiness_1","dragOffset_1","dragOperation_1","refCount_1","dirtyHandlerIds_1","stateId_1","coords_1","domain","queue","flush","rawAsap","asap_1","getNextUniqueId_1","interfaces_1","contracts_1","DragDropMonitorImpl_1","HandlerRegistryImpl_1","redux_1","DragDropManagerImpl_1","dnd_core_1","DndContext_1","wrapConnectorHooks_1","registration_1","drag_1","drop_1","ROW","CARD","dragEndHandler","callback","dropHandler","ItemTypes","hoverHandler","ref","newItemCallback","moveCallback","dragIndex","hoverIndex","DndListRow","moveItem","changedNewItem","isNewItem","dragComplete","useRef","useDrag","end","collect","monitor","isDragging","drag","preview","useDrop","accept","drop","hover","canDrop","isUserDragging","getItem","dragIconBlack","FlexGrow","ListRowStyled","DivStyled","drawBackground","DragIcon","DndEmptyList","addFirstItem","isOver","EmptyList","DndListContainer","onItemChange","onNewItem","itemsArr","setItemsArr","newItemIndex","setNewItemIndex","JSON","stringify","atIndex","splice","changedNewItemHandler","MonotonicInterpolant_1","BrowserDetector_1","NativeTypes","nativeTypesConfig_1","EnterLeaveCounter_1","OffsetUtils_1","NativeDragSources_1","HTML5Backend_1","DndHTML5Provider","DndProvider","HTML5Backend","EmptyState","hasImage","description","component","ImageStyled","Center","Description","boxImage","StatusMessage","states","BulletState","getArrowContent","sortable","direction","isSorted","getDirection","HeaderCell","cell","sortHandler","HeaderCellStyled","TableHeader","headers","columnSorted","obj","Table","TableBody","TableBodyStyled","SemanticUITable","Cell","Dropdown","key","DropdownStyled","SemanticUIDropdown","GradeDropdown","header","DropdownMenu","DropdownHeader","DropdownItem","Item","Square","Name","WidgetWeather","temperature","temperatureColor","temperatureMin","temperatureMinColor","temperatureMax","temperatureMaxColor","TemperatureContainer","expand","ContainerMinMax","TemperatureMinMaxContainer","WidgetWeatherIcon","WidgetWrapperCustom","IconImage","TemperatureWrapper","TemperatureMinContainer","TemperatureMaxContainer","WidgetDate","font","day","month","year","getFormat","DateContainer","WidgetDateShort","colorDay","colorWeek","fontDay","fontWeek","dd","weekDay","DateWrapper","WeekContainer","DayContainer","WidgetCard","WidgetContainer","DigitalClock","hour","minute","period","DigitalClockContainer","TimeWidget","TimeWidgetContainer","ImageCard","checkboxId","handleSelect","video","Theme","ImageCardStyled","ImgCover","src","CustomGrid","minWidth","rowGap","columnGap","squared","mobile","tablet","desktop","bigDesktop","GridStyled","PlaylistCard","buttonId","images","imageHeight","leftText","rightText","PlaylistCardStyled","InfoLeft","InfoRight","RowWrapper","Arrow","side","Carousel","data","arrowsColor","arrowsColorDisabled","ScrollMenuContainer","ArrowWrapper","defaultTheme"],"mappings":"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,EAAE,CAAC;gBACrB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;gBACvD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;gBAC9B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;gBACvD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gBACrB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAA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CnF,GAAG,KAAK,IAAI,CAAC,CAAC;wBACV,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACnF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,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AAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7L,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7L,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAE7L,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;oBACjB,cA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AC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvY;YACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,C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QAAQ,CAAC;CACnB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
\No newline at end of file