scorer-ui-kit 2.1.0-beta.4 → 2.1.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +161 -153
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +161 -153
- package/dist/index.modern.js.map +1 -1
- package/dist/themes/light/colors.d.ts +1 -0
- package/dist/themes/light/light.d.ts +5 -0
- package/dist/themes/light/styles.d.ts +4 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/themes/common.tsx","../src/themes/light/typography.ts","../src/themes/light/colors.ts","../src/themes/light/styles.ts","../src/themes/light/custom.ts","../src/themes/light/light.ts","../src/Icons/Icon.tsx","../src/common/index.ts","../src/Alerts/atom/AlertBar.tsx","../src/Alerts/atom/Notification.tsx","../src/Form/atoms/Button.tsx","../src/Form/atoms/ButtonWithIcon.tsx","../src/Indicators/Spinner.tsx","../src/Form/atoms/ButtonWithLoading.tsx","../src/Form/atoms/IconButton.tsx","../src/Form/molecules/ActionButtons.tsx","../src/Form/atoms/Input.tsx","../src/Form/atoms/Label.tsx","../src/Form/atoms/SmallInput.tsx","../src/Form/atoms/Switch.tsx","../src/svg/LogoMark.tsx","../src/svg/LogoText.tsx","../src/svg/AvatarPlaceholder.tsx","../src/svg/checkmark.tsx","../src/Form/atoms/Checkbox.tsx","../src/Form/atoms/RadioButton.tsx","../src/Form/atoms/TextArea.tsx","../src/Form/atoms/SelectField.tsx","../src/helpers/index.tsx","../src/Form/atoms/SliderInput.tsx","../src/Form/atoms/InputFileButton.tsx","../src/Form/molecules/DurationSlider.tsx","../src/Form/molecules/PercentageSlider.tsx","../src/Form/molecules/PasswordField.tsx","../src/Form/molecules/TextField.tsx","../src/Form/molecules/TextAreaField.tsx","../src/Form/atoms/DropArea.tsx","../src/helpers/cropToolHelpers.ts","../src/Form/atoms/CropArea.tsx","../src/Form/molecules/CropTool.tsx","../src/Form/organisms/AvatarUploader.tsx","../src/Misc/atoms/BigIconsSummary.tsx","../src/Form/organisms/AreaUploadManager.tsx","../src/Form/Form.tsx","../src/Filters/atoms/DateTimeBlock.tsx","../src/Filters/molecules/DatePicker.tsx","../src/Filters/atoms/FilterDropdownContainer.tsx","../src/Filters/atoms/FilterButton.tsx","../src/Form/atoms/FilterOption.tsx","../src/Misc/atoms/BasicSearchInput.tsx","../src/Filters/FilterTypes.ts","../src/hooks/useClickOutside.tsx","../src/Filters/atoms/FilterDropHandler.tsx","../src/Filters/atoms/LoadingBox.tsx","../src/Filters/molecules/FilterDropdown.tsx","../src/Filters/molecules/SortDropdown.tsx","../src/Filters/molecules/DropdownDatePicker.tsx","../src/Filters/molecules/FilterInputs.tsx","../src/Filters/molecules/FiltersResults.tsx","../src/Filters/organisms/FilterBar.tsx","../src/Icons/StatusIcon.tsx","../src/LineUI/HandleUnit.tsx","../src/LineUI/LineUnit.tsx","../src/LineUI/Contexts.tsx","../src/LineUI/LineSet.tsx","../src/LineUI/LineUI.tsx","../src/LineUI/LineUIVideo.tsx","../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/WebRTCClient.tsx","../src/LineUI/LineUIRTC.tsx","../src/LineUI/LineReducer.ts","../src/hooks/useTitle.tsx","../src/Pages/atoms/PageTitle.tsx","../src/Pages/atoms/IntroductionText.tsx","../src/Pages/molecules/PageHeader.tsx","../src/Pages/molecules/MultilineContent.tsx","../src/Misc/atoms/MediaBox.tsx","../src/Modals/Modal.tsx","../src/context/ModalContext.tsx","../src/hooks/useModal.tsx","../src/hooks/useMediaModal.tsx","../src/Tables/atoms/TableRowThumbnail.tsx","../src/Tables/atoms/TypeTableDeviceStatus.tsx","../src/hooks/useCopyToClipboard.tsx","../src/Tables/atoms/TypeTableCell.tsx","../src/Tables/atoms/TypeTableRow.tsx","../src/Tables/atoms/TableHeaderTitle.tsx","../src/Tables/molecules/TypeTableHeader.tsx","../src/Tables/organisms/TypeTable.tsx","../src/Tables/molecules/EditCell.tsx","../src/PTZControl/state/PTZReducer.ts","../src/PTZControl/state/usePTZ.tsx","../src/PTZControl/state/PTZProvider.tsx","../src/PTZControl/atoms/Up.tsx","../src/PTZControl/atoms/Down.tsx","../src/PTZControl/atoms/Left.tsx","../src/PTZControl/atoms/Right.tsx","../src/PTZControl/molecules/Base.tsx","../src/PTZControl/molecules/ZoomBase.tsx","../src/PTZControl/atoms/ZoomIn.tsx","../src/PTZControl/atoms/ZoomOut.tsx","../src/PTZControl/organisms/Controls.tsx","../src/CameraPanels/atoms/MediaStream.tsx","../src/CameraPanels/atoms/PanelMetaData.tsx","../src/CameraPanels/molecules/CameraPanel.tsx","../src/CameraPanels/organisms/CameraPanels.tsx","../src/Misc/atoms/Tag.tsx","../src/Misc/molecules/TagList.tsx","../src/Misc/molecules/DebouncedSearcher.tsx","../src/Misc/atoms/ActionsBar.tsx","../src/hooks/useInterval.ts","../src/hooks/useTo.tsx","../src/context/NotificationContext.tsx","../src/hooks/useNotification.tsx","../src/hooks/usePoll.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useBreakpoints.ts","../src/hooks/useThemeToggle.ts","../src/Modals/ConfirmationModal.tsx","../src/Global/atoms/Layout.tsx","../src/Global/atoms/ContextItem.tsx","../src/hooks/useMenu.ts","../src/Global/atoms/NavigationItem.tsx","../src/Global/organisms/MainMenu.tsx","../src/Global/atoms/DrawerBottomMenu.tsx","../src/Global/molecules/UserMenu.tsx","../src/Global/atoms/NotificationItem.tsx","../src/Global/molecules/NotificationsHistory.tsx","../src/Global/molecules/TopBar.tsx","../src/Tabs/Tabs.tsx","../src/Tabs/TabList.tsx","../src/Tabs/atoms/Tab.tsx","../src/Tabs/TabContent.tsx","../src/Tabs/atoms/MobileTab.tsx","../src/Tabs/atoms/TabWithIcon.tsx","../src/Tabs/molecules/TabsWithIconBar.tsx","../src/Global/atoms/CloseButton.tsx","../src/Global/atoms/MobileNavbarContent.tsx","../src/Global/organisms/MobileMenu.tsx","../src/Global/atoms/MobileLogoLink.tsx","../src/Global/molecules/MobileUserMenu.tsx","../src/Global/organisms/MobileNavbar.tsx","../src/Global/templates/GlobalUI.tsx","../src/Global/molecules/Sidebar.tsx"],"sourcesContent":["export const fontFamily = {\n ui: 'Monorale, Hiragino Sans, \"ヒラギノ角ゴシック\", Hiragino Kaku Gothic ProN, \"ヒラギノ角ゴ ProN W3\", Roboto, YuGothic, \"游ゴシック\", Meiryo, \"メイリオ\", sans-serif;',\n data: 'Lato, Hiragino Sans, \"ヒラギノ角ゴシック\", Hiragino Kaku Gothic ProN, \"ヒラギノ角ゴ ProN W3\", Roboto, YuGothic, \"游ゴシック\", Meiryo, \"メイリオ\", sans-serif;'\n};\n\nexport const dimensions = {\n icons: {\n weights: {\n light: 1,\n regular: 1.5,\n heavy: 3,\n strong: 5\n }\n },\n form: {\n button: {\n xsmall: {\n height: '20px',\n padding: '0 10px',\n iconSize: 12,\n },\n small: {\n height: '30px',\n padding: '0 20px',\n iconSize: 14,\n },\n normal: {\n height: '40px',\n padding: '0 20px',\n iconSize: 16,\n },\n large: {\n height: '60px',\n padding: '0 20px',\n iconSize: 20,\n },\n },\n input: {\n height: '40px'\n },\n switch: {\n outer: {\n width: '38px',\n height: '22px',\n borderRadius: '11px'\n },\n inner: {\n width: '16px',\n height: '16px',\n borderRadius: '8px'\n },\n positions: {\n top: '2px',\n off: '2px',\n neutral: '10px',\n locked: '2px',\n on: '18px',\n }\n }\n },\n global: {\n mainMenu: {\n width: {\n open: '280px',\n closed: '80px'\n }\n }\n }\n};\n\nexport const animation = {\n easing: {\n primary: {\n inOut: 'cubic-bezier(0.87, 0, 0.13, 1)',\n out: 'cubic-bezier(0.16, 1, 0.3, 1)',\n in: 'cubic-bezier(0.7, 0, 0.84, 0)',\n }\n },\n speed: {\n faster: '0.085s',\n fast: '0.175s',\n normal: '0.35s',\n slow: '0.7s',\n slower: '1.4s',\n slowest: '2.8s'\n }\n};\n\nexport const deviceSize = {\n small: 0,\n medium: 768,\n large: 1024,\n xlarge: 1280,\n xxlarge: 1400,\n};\n\n\nexport const deviceMediaQuery = {\n small: `(min-width: ${deviceSize.small}px)`,\n medium: `(min-width: ${deviceSize.medium}px)`,\n large: `(min-width: ${deviceSize.large}px)`,\n xlarge: `(min-width: ${deviceSize.xlarge}px)`,\n xxlarge: `(min-width: ${deviceSize.xxlarge}px)`\n};","export const typography = {\n \"pageHeader\": {\n \"introduction\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"areaTitle\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"mainTitle\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"26px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n },\n \"form\": {\n \"label\": {\n \"meta\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"disabled\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"failure\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--error-8)\"\n },\n \"meta(Selected)\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n }\n },\n \"tip\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-7)\"\n },\n \"button\": {\n \"secondary\": {\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"primary\": {\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"danger\": {\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n }\n },\n \"input\": {\n \"label\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"placeholder\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"compact\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"value\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"compact\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n },\n \"labelInformation\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"select\": {\n \"option\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"selectedValue\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--black-11)\"\n },\n \"option(Hover)\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-11)\"\n }\n },\n \"feedback\": {\n \"message\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"20px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n }\n },\n \"global\": {\n \"mainMenu\": {\n \"menuItem\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"subheader\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.35px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"hidePrompt\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"subItem\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-8)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-8)\"\n }\n },\n \"identity\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"topBar\": {\n \"search\": {\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n }\n },\n \"content\": {\n \"section-H2\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"sectionH3\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"actionParagraph\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"hyperlink\": {\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n },\n \"base\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-9)\"\n }\n }\n },\n \"feedbackBar\": {\n \"message\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"15px\",\n \"letterSpacing\": \"-0.2px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"meta\": {\n \"tagList\": {\n \"emptyStates\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"small\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"item\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"small\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n }\n },\n \"table\": {\n \"columnData\": {\n \"normalImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"highImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n },\n \"firstColumn\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"lowImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"unit\": {\n \"textAlign\": \"right\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"header\": {\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"subHeader\": {\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n },\n \"filters\": {\n \"datepicker\": {\n \"metaHeader\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n }\n },\n \"calendar\": {\n \"active\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"otherMonth\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"default\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"header\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"textDecoration\": \"none\",\n \"color\": \"calendar: \"\n }\n },\n \"monthLink\": {\n \"default\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-8)\"\n },\n \"hover\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"focusedMonth\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"20px\",\n \"letterSpacing\": \"0.5px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"focusedYear\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"10px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.3333333px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"letterSpacing\": \"0.2px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"subOption\": {\n \"label\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"13px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-11)\"\n }\n },\n \"presetAction\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"13px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-11)\"\n },\n \"filterButton\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"searchInput\": {\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n },\n \"tables\": {\n \"groupName\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"letterSpacing\": \"0.3px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"modal\": {\n \"title\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"textShadow\": \"0px 0px 10px #ffffffcc\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"basicContent\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n};","export const colors = {\n \"pureBase\": \"var(--white-1)\",\n \"pureTop\": \"var(--black-1)\",\n \"divider\": \"var(--grey-6)\",\n \"icons\": {\n \"inverse\": \"var(--white-1)\",\n \"mono\": \"var(--black-9)\",\n \"dimmed\": \"var(--grey-9)\",\n \"subtle\": \"var(--white-9)\",\n \"primary\": \"var(--primary-9)\",\n \"danger\": \"var(--error-9)\"\n },\n \"menu\": {\n \"active\": \"var(--primary-9)\",\n \"hover\": \"var(--primary-6)\",\n \"default\": \"var(--primary-a6)\",\n \"indicator\": \"var(--grey-a1)\",\n \"passive\": \"var(--primary-a7)\"\n },\n \"feedback\": {\n \"error\": \"var(--error-8)\",\n \"info\": \"var(--primary-7)\",\n \"neutral\": \"var(--grey-9)\",\n \"success\": \"var(--success-8)\",\n \"warning\": \"var(--warning-8)\"\n },\n \"status\": {\n \"caution\": \"var(--warning-7)\",\n \"danger\": \"var(--error-8)\",\n \"folder\": \"var(--primary-7)\",\n \"highlight\": \"var(--primary-7)\",\n \"good\": \"var(--success-7)\",\n \"neutral\": \"var(--grey-5)\"\n },\n \"transparent\": \"var(--black-a1)\",\n \"input\": {\n \"border\": {\n \"default\": \"var(--grey-7)\"\n }\n }\n};","import { colors } from './colors';\n\nexport const styles = {\n \"generic\": {\n \"transparent\": {}\n },\n \"form\": {\n \"input\": {\n \"default\": {\n \"normal\": {\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": colors.input.border.default,\n \"border\": colors.input.border.default + \" 1px solid\"\n },\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a11)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"disabled\": {\n \"normal\": {\n \"backgroundColor\": \"var(--primary-2)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\"\n }\n },\n \"subdivision\": {\n \"backgroundColor\": \"var(--grey-7)\"\n },\n \"required\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a11)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"valid\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 5px 0px var(--success-a12)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--success-7)\",\n \"border\": \"var(--success-7) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--success-7)\",\n \"border\": \"var(--success-7) 1px solid\"\n }\n },\n \"invalid\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--error-a1)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n }\n },\n \"processing\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a10)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 2px solid\"\n },\n \"normal\": {\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"seperatedValues\": {\n \"background\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-7) 0%, var(--primary-8) 100%)\"\n },\n \"hoverHighlight\": {\n \"backgroundColor\": \"var(--primary-7)\"\n }\n }\n },\n \"button\": {\n \"primary\": {\n \"default\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-7) 0%, var(--primary-7) 100%)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--primary-8)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--primary-7)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--primary-7)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-7) 0%, var(--primary-7) 100%)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-7) 0%, var(--primary-7) 100%)\"\n }\n },\n \"secondary\": {\n \"default\": {\n \"backgroundColor\": \"var(--grey-5)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--grey-5)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--grey-6)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--grey-2)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--grey-a8)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--grey-a3)\"\n }\n },\n \"danger\": {\n \"default\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--error-9)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--error-8)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--error-6)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--error-8)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\"\n }\n }\n },\n \"switch\": {\n \"off\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-3)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-3) 0%, var(--primary-3) 100%)\",\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-7) 0%, var(--primary-8) 100%)\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--white-1)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--white-1) 0%, var(--grey-1) 100%)\",\n \"borderColor\": \"var(--grey-a7)\",\n \"border\": \"var(--grey-a7) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--grey-7)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-3)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-3) 0%, var(--primary-3) 100%)\",\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 1px solid\"\n }\n }\n },\n \"on\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--primary-7) 0%, var(--primary-7) 100%)\",\n \"borderColor\": \"var(--primary-8)\",\n \"border\": \"var(--primary-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-5)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--primary-5) 0%, var(--primary-5) 100%)\",\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-a7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-a7) 0%, var(--primary-a7) 100%)\",\n \"borderColor\": \"var(--primary-a8)\",\n \"border\": \"var(--primary-a8) 1px solid\"\n }\n }\n },\n \"failure\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-9)\",\n \"border\": \"var(--error-9) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-8)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-8) 0.4%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n }\n },\n \"danger\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-11)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-11) 0%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-8)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-8) 0%, var(--error-7) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-7)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-7) 0%, var(--warning-6) 100%)\",\n \"borderColor\": \"var(--error-6)\",\n \"border\": \"var(--error-6) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n }\n },\n \"locked\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--white-1)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--white-1) 0%, var(--grey-1) 100%)\",\n \"borderColor\": \"var(--grey-a7)\",\n \"border\": \"var(--grey-a7) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--grey-6)\"\n }\n }\n }\n },\n \"checkbox\": {\n \"unchecked\": {\n \"disabled\": {\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 2px solid\"\n },\n \"default\": {\n \"borderColor\": \"var(--grey-8)\",\n \"border\": \"var(--grey-8) 2px solid\"\n },\n \"hover\": {\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 2px solid\"\n }\n },\n \"checked\": {\n \"disabled\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--grey-6)\"\n },\n \"default\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-7)\"\n },\n \"hover\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-7)\"\n }\n },\n \"indeterminate\": {\n \"hover\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-6)\"\n },\n \"default\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-6)\"\n }\n }\n }\n },\n \"global\": {\n \"mainMenu\": {\n \"iconBackground\": {\n \"active\": {\n \"backgroundColor\": colors.menu.active\n },\n \"hover\": {\n \"backgroundColor\": colors.menu.hover\n },\n \"default\": {\n \"backgroundColor\": colors.menu.default\n }\n },\n \"background\": {\n \"boxShadow\": \"5px 0px 10px 0px var(--white-a2)\",\n \"backgroundColor\": \"var(--grey-1)\"\n },\n \"lines\": {\n \"backgroundColor\": \"var(--grey-6)\"\n },\n \"footerBackground\": {\n \"backgroundColor\": \"var(--grey-1)\"\n }\n },\n \"background\": {\n \"backgroundColor\": \"var(--grey-2)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-2) 0%, var(--grey-3) 100%)\"\n },\n \"drawer\": {\n \"background\": {\n \"boxShadow\": \"-5px 0px 10px 0px var(--white-a2)\",\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"topBar\": {\n \"lines\": {\n \"backgroundColor\": \"var(--grey-6)\"\n }\n }\n },\n \"indicators\": {\n \"spinner\": {\n \"danger\": {\n \"base\": {\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 3px solid\"\n },\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n }\n },\n \"secondary\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--grey-8)\",\n \"border\": \"var(--grey-8) 3px solid\"\n }\n },\n \"primary\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 3px solid\"\n }\n },\n \"simple\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 3px solid\"\n }\n }\n }\n },\n \"filters\": {\n \"dropdownContainer\": {\n \"background\": {\n \"boxShadow\": \"0px 5px 25px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 1px solid\"\n },\n \"topBorder\": {\n \"backgroundColor\": \"var(--primary-7)\"\n }\n },\n \"filterButton\": {\n \"default\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-2)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\",\n \"textColor\": \"var(--grey-11)\"\n },\n \"active\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--primary-7)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\",\n \"textColor\": \"var(--white-1)\"\n },\n \"hover\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--primary-6)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\",\n \"textColor\": \"var(--white-1)\"\n }\n },\n \"searchInput\": {\n \"default\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\"\n },\n \"focused\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 1px solid\"\n }\n }\n },\n \"tables\": {\n \"loadingOverlay\": {\n \"backgroundColor\": \"var(--grey-2)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-2) 0%, var(--grey-3) 100%)\"\n },\n \"rows\": {\n \"divider\": {\n \"backgroundColor\": colors.divider\n }\n },\n \"header\": {\n \"groupLine\": {\n \"backgroundColor\": colors.divider\n },\n \"divider\": {\n \"backgroundColor\": colors.divider\n },\n \"sortable\": {\n \"hover\": {\n \"backgroundColor\": \"var(--grey-4)\"\n },\n \"default\": {\n \"backgroundColor\": \"var(--grey-a4)\"\n }\n }\n }\n },\n \"general\": {\n \"divider\": {\n \"backgroundColor\": colors.divider\n }\n },\n \"feedbackBar\": {\n \"neutral\": {\n \"backgroundColor\": colors.feedback.neutral\n },\n \"error\": {\n \"backgroundColor\": colors.feedback.error\n },\n \"info\": {\n \"backgroundColor\": colors.feedback.info\n },\n \"success\": {\n \"backgroundColor\": colors.feedback.success\n },\n \"warning\": {\n \"backgroundColor\": colors.feedback.warning\n }\n },\n \"filterButton\": {\n \"active\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-2)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"modal\": {\n \"overlay\": {\n \"backgroundColor\": \"var(--grey-a3)\"\n },\n \"container\": {\n \"boxShadow\": \"0px 10px 15px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--white-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 1px solid\"\n }\n }\n};","export const custom = {\n \"lines\":{\n \"primary\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(205deg, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(205deg, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(205deg, 45%, 90%, 100%)',\n stroke: 'hsla(205deg, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(205deg, 45%, 90%, 100%)',\n },\n grabHandleContrast:{\n stroke: 'hsla(205deg, 80%, 45%, 100%)'\n },\n grabHandleText:{\n fill: 'hsla(205deg, 80%, 25%, 100%);'\n },\n handleBase: {\n fill: 'hsla(235deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(205deg, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(192deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(205deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(205deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(205deg, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(205deg, 100%, 15%, 0%)'\n\n }\n\n },\n \"secondary\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(120deg, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(120deg, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(120deg, 45%, 90%, 100%)',\n stroke: 'hsla(120deg, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(120deg, 45%, 90%, 100%)',\n },\n grabHandleContrast:{\n stroke: 'hsla(120deg, 80%, 45%, 100%)'\n },\n grabHandleText:{\n fill: 'hsla(120deg, 80%, 25%, 100%);'\n },\n handleBase: {\n fill: 'hsla(150deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(120deg, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(108deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(120deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(120deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(120deg, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(120deg, 100%, 15%, 0%)'\n\n }\n },\n \"danger\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(0, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(0, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(0, 45%, 90%, 100%)',\n stroke: 'hsla(0, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(0, 45%, 90%, 100%)',\n },\n grabHandleText:{\n fill: 'hsla(0, 80%, 25%, 100%);'\n },\n grabHandleContrast:{\n stroke: 'hsla(0, 80%, 45%, 100%)'\n },\n handleBase: {\n fill: 'hsla(30deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(0, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(348deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(0deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(0deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(0, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(0, 100%, 15%, 0%);'\n }\n }\n }\n};","import { fontFamily, dimensions, animation, deviceSize, deviceMediaQuery } from '../common';\nimport { typography } from './typography';\nimport { colors } from './colors';\nimport { styles } from './styles';\nimport { custom } from './custom';\nexport default { fontFamily, dimensions, typography, colors, styles, animation, custom, deviceSize, deviceMediaQuery };","import React from 'react';\nimport styled, { css, useTheme } from 'styled-components';\nimport { IconSVGs } from '@future-standard/icons';\n\nimport { dimensions } from '../themes/common';\n\n\nconst wrapperCss = css`\n svg {\n overflow: visible;\n vector-effect: non-scaling-stroke;\n\n line, path, circle, ellipse, foreignObject, polygon, polyline, rect, text, textPath, tspan {\n vector-effect: non-scaling-stroke;\n }\n }\n`;\nconst IconWrapper = styled.div`\n ${wrapperCss};\n`;\n\nconst IconWrapperForSVG = styled.g`\n ${wrapperCss};\n`;\n\nexport { IconWrapper, IconWrapperForSVG, IconSVGs };\n\nexport interface IconProps {\n icon: string;\n size?: number;\n weight?: 'light' | 'regular' | 'heavy' | 'strong'\n color?: ISvgIcons['color']\n forSvgUsage?: boolean\n}\n\nconst Icon: React.FC<IconProps> = ({ icon, size = 24, weight = 'regular', color = 'mono', forSvgUsage = false }) => {\n\n const theme : any = useTheme();\n const iconWeight: number = dimensions.icons.weights[weight];\n //@ts-ignore\n const IconSVG = IconSVGs[icon];\n\n return (\n IconSVG != null ?\n forSvgUsage ?\n <IconWrapperForSVG>\n {IconSVG({ size: size, weight: iconWeight, color: theme.colors.icons[color] })}\n </IconWrapperForSVG>\n :\n <IconWrapper>\n {IconSVG({ size: size, weight: iconWeight, color: theme.colors.icons[color] })}\n </IconWrapper>\n :\n null\n );\n\n};\n\nexport default Icon;","import {css} from 'styled-components';\n\nexport const RowCss = css`\n position:relative;\n display: flex;\n flex-direction: row;\n align-items:center;\n`;\n\nexport const ColumnCss = css`\n display: flex;\n flex-direction: column;\n`;\n\nexport const resetButtonStyles = css`\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n padding: 0;\n appearance: none;\n user-select: none;\n`;\n\n// https://stackoverflow.com/questions/2781549/removing-input-background-colour-for-chrome-autocomplete\nexport const removeAutoFillStyle = css`\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active{\n transition: background-color 600000s 0s, color 600000s 0s;\n }\n`;\nexport const EllipsisStyles = css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon, {IconWrapper} from '../../Icons/Icon';\nimport { AlertType } from '..';\nimport { resetButtonStyles } from '../../common/index';\n\nconst IconButton = styled.button<{selected?: boolean}>`\n ${resetButtonStyles};\n ${({selected=false}) => selected && css`\n border-bottom: 5px solid hsl(207, 80%, 64%);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n opacity: .8;\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nexport const AlertWrapper = styled.div<{type: AlertType}>`\n min-height: 50px;\n border-radius: 3px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: 0 14px;\n\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({type, theme}) => theme.styles.feedbackBar[type] };\n ${({theme}) => theme.typography.feedbackBar.message };\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nconst IconNames = {\n error: 'Critical',\n warning: 'BigWarning',\n success: 'Success',\n info: 'Information',\n neutral: 'Information'\n};\n\nconst MessageBox = styled.div`\n margin: 5px 0px 5px 15px;\n flex: 1;\n`;\nexport interface IAlert {\n alertMessage?: string;\n alertType: AlertType;\n}\n\ninterface Props {\n type?: AlertType\n message?: string\n hideCloseButton?: boolean\n}\nconst AlertBar: React.FC<Props> = ({type='info', message, hideCloseButton= false}) => {\n const [dismiss, setDismiss] = useState(false);\n\n useEffect(()=>{\n setDismiss(false);\n },[message]);\n\n\n return ( (message && !dismiss)?\n <AlertWrapper type={type}>\n <Icon icon={IconNames[type]} color='inverse' />\n <MessageBox>{message}</MessageBox>\n\n {!hideCloseButton && <IconButton onClick={() => setDismiss(true)}><Icon icon='CloseCompact' color='inverse' /></IconButton>}\n </AlertWrapper>\n :\n null\n );\n};\n\nexport default AlertBar;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css, keyframes } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport { AlertType } from '..';\nimport { resetButtonStyles } from '../../common/index';\n\nconst initAnimation = keyframes`\n 0% {\n transform: translate(-50%, -100%);\n }\n 100% {\n transform: translate(-50%, 0%);\n }\n`;\n\nconst closeAnimation = keyframes`\n 0% {\n transform: translate(-50%, 0);\n }\n 100% {\n transform: translate(-50%, -100%);\n }\n`;\n\nconst Container = styled.div<{type: AlertType, isClosing: Boolean}>`\n min-height: 50px;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 0 14px;\n width: 900px;\n position: fixed;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 999;\n\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({type, theme}) => theme.styles.feedbackBar[type] };\n ${({theme}) => theme.typography.feedbackBar.message };\n\n ${({theme}) => css`\n animation: ${initAnimation} ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `\n };\n\n ${({theme, isClosing}) => isClosing && css`\n animation: ${closeAnimation} ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `\n };\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nexport const IconNames = {\n error: 'Critical',\n warning: 'BigWarning',\n success: 'Success',\n info: 'Information',\n neutral: 'Information'\n};\n\nconst IconButton = styled.div<{selected?: boolean}>`\n ${resetButtonStyles};\n ${({selected=false}) => selected && css`\n border-bottom: 5px solid hsl(207, 80%, 64%);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover {\n opacity: .8;\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst TextButton = styled.button`\n ${resetButtonStyles};\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({theme}) => theme.typography.feedbackBar.message };\n font-weight: 700;\n\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n ${({theme}) => theme && css`\n opacity: .8;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n `}\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst MainMessage = styled.div`\n padding: 12px 6px 12px 12px;\n line-height: 20px;\n text-align: left;\n flex-grow: 2;\n`;\n\nexport type INotificationProps = {\n id?: string\n type: AlertType\n message: string\n actionTextButton?: string\n isPinned?: boolean\n closeNow?: boolean\n icon?: string\n onTextButtonClick?: () => void\n closeCallback?: () => void\n}\n\nconst Notification : React.FC<INotificationProps> = ({id, type ='info', message, icon = '', isPinned = false, actionTextButton, closeNow = false, closeCallback, onTextButtonClick}) => {\n const [dismiss, setDismiss] = useState(false);\n const [slideUp, setSlideUp] = useState(false);\n const [textClicked, setTextClicked] = useState(false);\n\n useEffect(()=>{\n setDismiss(false);\n setSlideUp(false);\n setTextClicked(false);\n },[id]);\n\n const handleDismiss = useCallback(() => {\n setSlideUp(true);\n },[]);\n\n const handleTextClick = useCallback(async () => {\n setTextClicked(true);\n handleDismiss();\n },[handleDismiss]);\n\n const animationEnded = useCallback(() => {\n // Will only trigger if the animation triggered was closing one\n if(slideUp){\n setDismiss(true);\n\n if(onTextButtonClick && textClicked) {\n onTextButtonClick();\n }\n\n if(closeCallback) {\n closeCallback();\n }\n }\n }, [slideUp, closeCallback, onTextButtonClick, textClicked]);\n\n useEffect(() => {\n let mounted = true;\n if(!isPinned) {\n setTimeout( () => {\n if(mounted) {\n handleDismiss();\n }\n }, 7000);\n }\n\n return () => {\n mounted = false;\n };\n },[isPinned, message, handleDismiss, id]);\n\n useEffect(() => {\n if(closeNow) {\n handleDismiss();\n }\n },[closeNow, handleDismiss]);\n\n return( (message && !dismiss)\n ? ReactDom.createPortal(\n <Container type={type} isClosing={slideUp} onAnimationEnd={animationEnded}>\n <Icon icon={!icon ? IconNames[type] : icon} color='inverse' />\n <MainMessage>{message}</MainMessage>\n {actionTextButton\n ? <TextButton onClick={() => handleTextClick()}>{actionTextButton} </TextButton>\n :\n <IconButton onClick={() => handleDismiss()}>\n <Icon icon='CloseCompact' color='inverse' />\n </IconButton>}\n </Container>\n , document.body)\n : null\n );\n};\n\nexport default Notification;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TypeButtonSizes, TypeButtonDesigns } from '..';\n\n\ninterface IStyledComponentProps {\n size: TypeButtonSizes\n design: TypeButtonDesigns\n}\n\n\n\nconst StyledButton = styled.button<IStyledComponentProps>`\n ${({theme, design, size}) => css`\n\n ${theme.styles.form.button[design].default};\n height: ${theme.dimensions.form.button[ size ].height};\n padding: ${theme.dimensions.form.button[ size ].padding};\n\n ${theme.typography.form.button[ design ][ size ]};\n font-family: ${theme.fontFamily.ui};\n\n transition:\n background ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut};\n\n &:hover:enabled {\n background: ${theme.styles.form.button[design].hover.backgroundColor};\n }\n\n &:active:enabled {\n background: ${theme.styles.form.button[design].active.backgroundColor};\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n background: ${theme.styles.form.button[design].disabled.backgroundColor};\n }\n\n `};\n\n overflow: hidden;\n border: none;\n cursor: pointer;\n border-radius: 3px;\n outline: none;\n\n button + button {\n margin-left: 20px;\n }\n\n`;\n\n\ninterface OwnProps {\n size?: TypeButtonSizes\n design?: TypeButtonDesigns\n}\n\ntype Props = OwnProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst Button : React.FC<Props> = ({ design='primary', size='normal', children, ...props }) => {\n return <StyledButton type='button' {...{design, size}} {...props}>{children}</StyledButton>;\n};\n\nexport default Button;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Button from './Button';\nimport Icon from '../../Icons/Icon';\nimport { IButtonProps, TypeButtonSizes } from '..';\nimport {dimensions} from '../../themes/common';\n\nconst TextContainer = styled.div<{size: TypeButtonSizes, position?: string}>`\n height: inherit;\n flex: 1;\n order: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n white-space: nowrap;\n\n ${({ position, size }) => position && position === 'left' ? css`\n padding-left: ${( size === 'xsmall' ) ? `10px` : `20px`};\n ` : css`\n padding-right: ${( size === 'xsmall' ) ? `10px` : `20px`};\n `}\n\n ${({theme}) => theme && css`\n transition: padding ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `}\n`;\n\nconst IconContainer = styled.div<{ position?: string }>`\n height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n flex-shrink: 0;\n\n ${({ position }) => css`\n order: ${ position && position === 'left' ? 0 : 2 };\n `}\n\n svg {\n display:block;\n path, rect, circle, d {\n stroke: hsla(0, 0%, 100%, 1.000);\n }\n }\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n height: inherit;\n`;\n\nexport interface IButtonWithIcon extends IButtonProps {\n icon: string\n position?: 'left' | 'right'\n}\n\nconst ButtonWithIcon : React.FC<IButtonWithIcon> = ({design, size='normal', onClick, disabled, position, icon, children, ...props}) => {\n\n const iconSize = dimensions.form.button[size].iconSize;\n const iconColor = design === 'secondary' ? 'dimmed' : 'inverse';\n\n return (\n <Button {...{ design, size, onClick, disabled }} {...props}>\n <InnerContainer>\n <TextContainer {...{size, position}}>{children}</TextContainer>\n <IconContainer {...{ position }}>\n <Icon icon={icon} size={iconSize} color={iconColor} weight='regular' />\n </IconContainer>\n </InnerContainer>\n </Button>\n );};\n\nexport default ButtonWithIcon;","import React from \"react\";\nimport styled, { keyframes } from 'styled-components';\n\nconst circumference = (radius : number) => {\n return 2 * 3.1416 * radius;\n};\n\nconst animation = (radius : number) => {\n const c = circumference(radius);\n\n return keyframes`\n 0% {\n stroke-dashoffset: -${c * 0.85};\n }\n 50% {\n stroke-dashoffset: -${c * 0.5};\n }\n 100% {\n stroke-dashoffset: -${c * 0.85};\n }\n `;\n};\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst BaseCircle = styled.circle<{ styling: string }>`\n stroke: ${({theme, styling}) => theme.styles.indicators.spinner[styling].base.borderColor};\n fill: none;\n`;\n\nconst RotatingCircle = styled.circle<{ r: number, styling: string }>`\n stroke: ${({theme, styling}) => theme.styles.indicators.spinner[styling].top.borderColor};\n fill: none;\n stroke-dasharray: ${({r}) => circumference(r)};\n stroke-dashoffset: ${({r}) => 2 * 3.1416 * r / 2};\n animation:\n ${({r}) => animation(r) } 4s linear infinite,\n ${rotate} 1s linear infinite;\n stroke-linecap: round;\n`;\n\ntype SpinnerSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nconst sizeGuide = {\n xsmall: 12,\n small: 16,\n medium: 24,\n large: 36,\n xlarge: 48\n};\n\ninterface IProps {\n size: SpinnerSize\n styling: string\n}\n\nconst Spinner : React.FC<IProps> = ({ size = 'medium', styling = 'primary' }) => {\n const sizeVal = sizeGuide[size];\n const strokeWidth = sizeVal / 5.333;\n const circleRadius = (sizeVal / 2) - (strokeWidth / 2);\n\n return (\n <svg viewBox={`-${sizeVal/2} -${sizeVal/2} ${sizeVal} ${sizeVal}`} width={sizeVal} height={sizeVal} xmlns='http://www.w3.org/2000/svg'>\n <BaseCircle cx='0' cy='0' r={circleRadius} strokeWidth={strokeWidth} styling={styling} />\n <RotatingCircle cx='0' cy='0' r={circleRadius} strokeWidth={strokeWidth} styling={styling} />\n </svg>\n );\n\n};\n\nexport default Spinner;","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Button from './Button';\nimport Spinner from '../../Indicators/Spinner';\nimport { TypeButtonDesigns, IButtonProps, TypeButtonSizes } from '..';\n\n\nconst LoadingButton = styled(Button)<{ $loading: boolean }>`\n ${({$loading, theme}) => $loading && css`\n cursor: wait;\n background: ${ theme.styles.form.button['primary'].active };\n padding: 0 20px;\n &:disabled {\n opacity: 1;\n }\n `};\n`;\n\nconst TextContainer = styled.div`\n height: inherit;\n flex: 1;\n order: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n white-space: nowrap;\n ${({theme}) => theme && css`\n transition: padding ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `}\n\n`;\n\nconst LoadingContainer = styled.div<{ design: TypeButtonDesigns, show?: boolean, position?: string }>`\n height: inherit;\n flex: 0 0 35px;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n opacity: 0;\n\n ${({ theme, position }) => css`\n transition:\n flex ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.slow},\n opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n\n order: ${ position && position === 'left' ? 0 : 2 };\n `}\n\n svg {\n display:block;\n }\n`;\n\nconst InnerContainer = styled.div<{position?: string, $loading: boolean, design: TypeButtonDesigns, size: TypeButtonSizes}>`\n display: flex;\n height: inherit;\n\n\n ${({ position, $loading }) => position && position === 'left' ? css`\n margin-right: ${ $loading ? '-20px' : '0' };\n ` : css`\n margin-left: ${ $loading ? '-20px' : '0' };\n `}\n\n ${({ $loading, theme, design, size }) => $loading ? css`\n\n // TODO: Fix transition animation so the below line doesn't look awful when transitioning - L\n // ${ theme.styles.form.button[design].active };\n\n transition: margin ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n\n ${TextContainer}{\n padding: ${theme.dimensions.form.button[ size ].padding};\n }\n ${LoadingContainer}{\n opacity: 1;\n transition: flex ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut}, opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.slow};\n ${ theme.styles.form.button[design].actionArea };\n }\n ` : css`\n ${LoadingContainer}{\n flex: 0 0 0px;\n }\n `}\n`;\n\ninterface IProps extends IButtonProps {\n position?: 'left' | 'right'\n loading: boolean\n}\n\nconst ButtonWithLoading : React.FC<IProps> = ({design='primary', size='normal', onClick, disabled, position, loading, children,...rest}) => {\n return (\n <LoadingButton disabled={disabled || loading} $loading={loading} {...{ design, size, onClick}} {...rest}>\n <InnerContainer $loading={loading} {...{ design, size}}>\n <TextContainer>{children}</TextContainer>\n <LoadingContainer {...{ design, position }}>\n <Spinner size={size ==='xsmall' ? 'xsmall' : 'small'} styling={design} />\n </LoadingContainer>\n </InnerContainer>\n </LoadingButton>\n );\n};\n\nexport default ButtonWithLoading;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { resetButtonStyles } from '../../common';\nimport Icon, { IconProps, IconWrapper } from '../../Icons/Icon';\n\nconst StyledButton = styled.button<{color:ISvgIcons['color']; hoverColor:ISvgIcons['color']}>`\n ${resetButtonStyles};\n [stroke]{\n stroke: ${({theme, color}) => theme.colors.icons[color]};\n }\n &:hover {\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme, hoverColor}) => theme.colors.icons[hoverColor]};\n }\n }\n }\n`;\n\ninterface OwnProps {\n hoverColor?: ISvgIcons['color']\n}\n\nexport type IconButtonData = OwnProps & IconProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst IconButton : React.FC<IconButtonData> = ({\n icon,\n size = 20,\n weight = 'regular',\n color = 'dimmed',\n hoverColor = 'mono',\n ...props }) => {\n return(\n <StyledButton\n type='button'\n color={color}\n hoverColor={hoverColor}\n {...props}\n >\n <Icon icon={icon} size={size} weight={weight} />\n </StyledButton>\n );\n};\n\nexport default IconButton;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport IconButton, { IconButtonData } from '../atoms/IconButton';\n\nconst StyledIconButton = styled(IconButton)``;\n\nconst Container = styled.div<{alignment?: IAlignmentOptions}>`\n display: flex;\n ${StyledIconButton} {\n margin-left: 15px;\n }\n ${StyledIconButton}:first-child {\n margin-left: 0px;\n }\n\n ${({alignment}) => alignment === 'left' && css`\n justify-content: flex-start;\n `};\n\n ${({alignment}) => alignment === 'center' && css`\n justify-content: center;\n `};\n\n ${({alignment}) => alignment === 'right' && css`\n justify-content: flex-end;\n `};\n`;\n\ntype IAlignmentOptions = 'left' | 'center' | 'right'\n\ntype IGroupButtonsData = {\n buttonsConfig: IconButtonData []\n alignment?: IAlignmentOptions\n}\n\nconst ActionButtons : React.FC<IGroupButtonsData> = ({buttonsConfig, alignment = 'right' }) => {\n\n return(\n <Container {...{alignment}}>\n {\n buttonsConfig.map((btn) => {\n const {icon, size, weight, color, hoverColor, onClick} = btn;\n return (\n <StyledIconButton\n key={`${icon}-${size}`}\n icon={icon}\n size={size}\n weight={weight}\n color={color}\n hoverColor={hoverColor}\n onClick={onClick}\n />\n );\n })\n }\n </Container>\n );\n};\n\nexport default ActionButtons;","import React, { InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport Spinner from '../../Indicators/Spinner';\nimport { TypeFieldState } from '..';\nimport { removeAutoFillStyle } from '../../common';\n\nconst ActionContainer = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n`;\n\nconst InputActionButton = styled.button.attrs({ type: \"button\" })`\n width: 40px;\n height: 40px;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n`;\n\nconst FeedbackContainer = styled.div`\n flex-shrink: 0;\n\n background-color: transparent;\n ${({theme}) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n `};\n\n border-left: none;\n border-radius: 0 3px 3px 0;\n overflow: hidden;\n\n display:flex;\n justify-content:left;\n align-items:center;\n`;\n\nconst FeedbackMessage = styled.div`\n flex: 0 1 400px;\n padding: 0 10px 0 0;\n\n ${({theme}) => theme.typography.form.feedback.message};\n`;\n\nconst FeedbackIcon = styled.div`\n flex: 0 0 40px;\n width: 40px;\n display: flex;\n justify-content:center;\n align-items:center;\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nconst StyledInput = styled.input<{ fieldState : TypeFieldState }>`\n ${removeAutoFillStyle};\n\n ${({theme, fieldState}) => css`\n min-height: ${theme.dimensions.form.input.height};\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n `};\n\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n padding: 0 15px 0 15px;\n box-sizing: border-box;\n outline: none;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.normal};\n &::placeholder {\n ${typography.form.input.placeholder.normal};\n }\n `};\n`;\n\nconst InputContainer = styled.div<{hasAction?: boolean}>`\n\n flex: 1;\n position: relative;\n\n ${({ hasAction }) => hasAction && css`\n ${StyledInput}{\n padding-right: 60px;\n\n // Used to control password manager injection.\n background-position: calc(100% - 50px) 50% !important;\n }\n `}\n\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n display: flex;\n position: relative;\n\n ${StyledInput}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {}\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n ${FeedbackContainer} {\n background: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n border-color: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) !== -1 && css`\n display:none;\n `}\n }\n\n &:focus-within ${StyledInput} {\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].focused};\n }\n\n`;\n\ninterface OwnProps {\n fieldState?: TypeFieldState;\n feedbackMessage?: string;\n actionCallback?: ()=>void;\n actionIcon?: string\n postfix?: string;\n}\n\nexport type InputProps = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst Input : React.FC<InputProps> = ({\n type = 'text',\n placeholder = '',\n defaultValue,\n fieldState = 'default',\n feedbackMessage,\n actionCallback,\n actionIcon,\n postfix,\n ...props\n}) => {\n\n const isActionButton = actionCallback !== undefined;\n\n const feedbackIcon = (fieldState: TypeFieldState) => {\n switch(fieldState){\n case 'default':\n break;\n case 'disabled':\n break;\n case 'required':\n return <Icon icon='Required' size={20} />;\n case 'valid':\n return <Icon icon='Success' size={20} />;\n case 'invalid':\n return <Icon icon='Invalid' size={20} />;\n case 'processing':\n return <Spinner size='medium' styling='primary' />;\n }\n };\n\n return (\n <Container fieldState={fieldState || 'default'}>\n\n <InputContainer hasAction={isActionButton}>\n <StyledInput fieldState={fieldState || 'default'} disabled={fieldState === 'disabled' || fieldState === 'processing'} type={type} placeholder={placeholder} defaultValue={defaultValue} {...props} />\n {(isActionButton) ? (\n <ActionContainer>\n <InputActionButton onClick={actionCallback}>\n <Icon icon={actionIcon || 'NoIcon'} color='primary' />\n </InputActionButton>\n </ActionContainer>\n ) : null}\n </InputContainer>\n\n {fieldState ? (\n <FeedbackContainer>\n <FeedbackIcon>{feedbackIcon(fieldState)}</FeedbackIcon>\n {feedbackMessage ? (\n <FeedbackMessage>{feedbackMessage}</FeedbackMessage>\n ) : null}\n </FeedbackContainer>\n ) : null}\n\n </Container>\n );\n};\n\n\nexport default Input;\n","import React, { LabelHTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nexport const StyledLabel = styled.label<{ rightAlign: boolean }>`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: hsl(207, 5%, 57%);\n font-size: 14px;\n font-weight: 500;\n ${({ rightAlign }) => rightAlign\n ? `\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n justify-content: left;\n `\n :\n `\n display: block;\n margin-bottom: 20px;\n `\n };\n`;\n\nconst LabelText = styled.span<{ rightAlign: boolean }>`\n display: block;\n ${({ rightAlign }) => rightAlign\n ? `\n margin-left: 12px;\n `\n : `\n margin-bottom: 10px;\n `\n }\n`;\n\ninterface OwnProps {\n htmlFor: string\n labelText: string\n rightAlign?: boolean\n}\ntype Props = OwnProps & LabelHTMLAttributes<HTMLLabelElement>\n\nconst Label: React.FC<Props> = ({\n htmlFor,\n labelText,\n rightAlign = false,\n children,\n ...props }) => {\n\n return (\n <StyledLabel {...{ htmlFor, rightAlign }} {...props}>\n <LabelText {...{ rightAlign }}>{labelText}</LabelText>\n {children}\n </StyledLabel>\n );\n};\n\nexport default Label;","import React, { InputHTMLAttributes, useRef, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\nimport { removeAutoFillStyle } from '../../common';\n\nconst StyledInput = styled.input<{ fieldState : TypeFieldState, padRight?: number }>`\n ${removeAutoFillStyle};\n\n ${({theme, fieldState}) => css`\n min-height: 30px;\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n `};\n\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n padding: 0 22px 0 10px;\n box-sizing: border-box;\n outline: none;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.compact};\n &::placeholder {\n ${typography.form.input.placeholder.compact};\n }\n `};\n\n ${p => p.padRight && css`\n padding-right: ${p.padRight + 17}px;\n `}\n\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nconst InputContainer = styled.div<{hasAction?: boolean}>`\n\n flex: 1;\n position: relative;\n\n ${({ hasAction }) => hasAction && css`\n ${StyledInput}{\n padding-right: 200px;\n\n // Used to control password manager injection.\n background-position: calc(100% - 50px) 50% !important;\n }\n `}\n\n`;\n\nconst UnitKey = styled.div`\n position: absolute;\n right: 10px;\n bottom: 0;\n top:0;\n font-family: ${({ theme }) => theme.fontFamily.ui };\n font-size: 12px;\n color: #99a1a3;\n line-height:30px;\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n\n display: flex;\n position: relative;\n\n ${StyledInput}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {}\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n &:focus-within ${InputContainer} {\n ${({theme, fieldState}) => fieldState !== 'disabled' && css`\n border-color:${theme.styles.form.input[fieldState].focused.borderColor};\n `\n }\n\n`;\n\ninterface OwnProps {\n fieldState?: TypeFieldState;\n label: string\n unit?: string\n}\n\ntype Props = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst SmallInput : React.FC<Props> = ({\n unit,\n label,\n name,\n type = 'text',\n placeholder = '',\n defaultValue,\n fieldState = 'default',\n className,\n ...props\n}) => {\n\n const unitElement = useRef<HTMLDivElement>(null);\n const [unitElementWidth, setUnitElementWidth] = useState<number>(0);\n\n useEffect(() => {\n if(unitElement && unitElement.current){\n setUnitElementWidth(unitElement.current.clientWidth || 0);\n }\n }, [unitElement, setUnitElementWidth, unit]);\n\n return (\n <Container className={className} fieldState={fieldState || 'default'}>\n <Label labelText={label} htmlFor={name || ''}>\n <InputContainer>\n <StyledInput padRight={unitElementWidth} fieldState={fieldState || 'default'} type={type} placeholder={placeholder} defaultValue={defaultValue} {...props} />\n {unit ? <UnitKey ref={unitElement}>{unit}</UnitKey> : null}\n </InputContainer>\n </Label>\n\n </Container>\n );\n\n};\n\n\nexport default SmallInput;","import React, { useRef, useEffect, useState, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport Spinner from '../../Indicators/Spinner';\n\nenum SwitchPosition {\n Off = 0,\n On = 1,\n Neutral = 2,\n Locked = 3\n}\n\nconst intentPosition = (left: string, checked?: boolean) : string => {\n const offset = checked ? -2 : 2;\n const intentLeft = (parseInt(left) + offset).toString();\n\n return `${intentLeft}px`;\n};\n\nconst RealInput = styled.input`\n display: none;\n`;\nconst SwitchOuter = styled.div`\n border: 1px solid transparent;\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n`;\nconst getPositionKey = (switchPos : SwitchPosition) => {\n switch (switchPos) {\n case SwitchPosition.Off:\n return 'off';\n case SwitchPosition.On:\n return 'on';\n case SwitchPosition.Neutral:\n return 'neutral';\n case SwitchPosition.Locked:\n return 'locked';\n default:\n return 'off';\n }\n\n};\n\nconst SwitchInner = styled.div`\n position: absolute;\n box-sizing: border-box;\n`;\n\nconst LabelText = styled.span`\n font-family: ${({theme}) => theme.fontFamily.ui };\n\n flex: 1;\n margin-left: 10px;\n display: block;\n\n line-height: ${ p => p.theme.dimensions.form.switch.outer.height };\n\n ${ p => p.theme.typography.form.input.label };\n`;\n\nconst IconWrapper = styled.div`\n position: absolute;\n width: inherit;\n height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n }\n`;\nconst SpinnerWrapper = styled.div`\n margin-top: 1px;\n`;\n\nconst Container = styled.label<{activeTheming: string, $loading: boolean, useIntent: boolean, themeState: string, position: SwitchPosition, checked?: boolean}>`\n user-select: none;\n display: flex;\n\n ${SwitchInner}{\n ${({theme, position, themeState, activeTheming}) => theme && css`\n ${theme.dimensions.form.switch.inner};\n left: ${theme.dimensions.form.switch.positions[getPositionKey(position)]};\n top: ${theme.dimensions.form.switch.positions.top};\n transition:\n left ${theme.animation.speed.normal} ${theme.animation.easing.primary.out},\n border ${theme.animation.speed.normal} ${theme.animation.easing.primary.out},\n width ${theme.animation.speed.normal} ${theme.animation.easing.primary.out};\n\n ${theme.styles.form.switch[activeTheming][themeState].inner}\n `}\n\n ${p => p.activeTheming === 'locked' && css`\n width: calc(100% - ${parseInt(p.theme.dimensions.form.switch.positions.locked) * 2}px);\n `}\n\n ${p => p.$loading && css`\n background: transparent;\n top: 1px;\n `}\n }\n\n ${SwitchOuter}{\n ${({theme, activeTheming, themeState}) => theme && css`\n ${theme.styles.form.switch[activeTheming][themeState].outer};\n ${theme.dimensions.form.switch.outer}};\n flex: 0 0 ${theme.dimensions.form.switch.outer.width}};\n `}\n }\n\n &:hover {\n ${SwitchInner}{\n left: ${p => p.useIntent && intentPosition(p.theme.dimensions.form.switch.positions[getPositionKey(p.position)], p.checked)};\n }\n }\n`;\n\ntype TypeSwitchState = 'default' | 'loading' | 'locked' | 'disabled' | 'failure';\n\ninterface IProps {\n labelText?: string\n leftTheme?: string\n rightTheme?: string\n state?: TypeSwitchState\n checked?: boolean\n onChangeCallback?: (checked: boolean, indeterminate?: boolean) => void;\n}\n\nconst Switch : React.FC<IProps> = ({ state = 'default', leftTheme = 'off', rightTheme = 'on', labelText, onChangeCallback, checked = false}) => {\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [ position, setPosition ] = useState<SwitchPosition>(checked ? SwitchPosition.On : SwitchPosition.Off);\n const [ activeTheming, setActiveTheming ] = useState<string>( leftTheme );\n const [ switchState, setSwitchState ] = useState<TypeSwitchState>('default');\n\n useEffect(() => {\n setPosition(checked ? SwitchPosition.On : SwitchPosition.Off);\n if (inputRef.current) {\n inputRef.current.checked = checked;\n }\n }, [checked]);\n\n const positionSwitch = useCallback(() => {\n if(inputRef.current?.checked){\n setPosition(SwitchPosition.On);\n setActiveTheming(rightTheme);\n } else if(!inputRef.current?.checked){\n setPosition(SwitchPosition.Off);\n setActiveTheming(leftTheme);\n }\n }, [setPosition, setActiveTheming, leftTheme, rightTheme, inputRef]);\n\n const customOnChange = () => {\n positionSwitch();\n if(onChangeCallback){ onChangeCallback(inputRef.current?.checked || false); }\n };\n\n /**\n * updateThemeChoice()\n * If for some reason we need to change the left or right theme in context, this makes sure\n * things get updated. (i.e. in StoryBook)\n */\n const updateThemeChoice = useCallback(() => {\n if(position === SwitchPosition.On){\n setActiveTheming(rightTheme);\n } else if(position === SwitchPosition.Off){\n setActiveTheming(leftTheme);\n }\n }, [position, rightTheme, leftTheme]);\n\n /** Watch for that theme change. */\n useEffect(() => {\n updateThemeChoice();\n }, [leftTheme, rightTheme, updateThemeChoice]);\n\n useEffect(() => {\n setSwitchState( stateCheck(state) );\n }, [state, setSwitchState]);\n\n /** Watch for locking prop. */\n useEffect(() => {\n if(state === 'locked'){\n setPosition(SwitchPosition.Locked);\n setActiveTheming('locked');\n } else if(state === 'failure'){\n setPosition(SwitchPosition.Neutral);\n setActiveTheming('failure');\n } else {\n positionSwitch();\n }\n }, [state, setPosition, positionSwitch]);\n\n return (\n <Container onChange={customOnChange} activeTheming={activeTheming} $loading={state === 'loading'} useIntent={state === 'default' || state === 'failure'} themeState={switchState} position={position} checked={inputRef.current?.checked}>\n <SwitchOuter>\n <SwitchInner>\n {state === 'failure' ? <IconWrapper><Icon icon='Exclamation' color='danger' size={18} weight='regular' /></IconWrapper> : null}\n {state === 'locked' ? <IconWrapper><Icon icon='Locked' color='dimmed' size={10} weight='light' /></IconWrapper> : null}\n {state === 'loading' ? <SpinnerWrapper><Spinner size='small' styling='simple' /></SpinnerWrapper> : null}\n </SwitchInner>\n </SwitchOuter>\n {labelText ? <LabelText>{labelText}</LabelText> : null}\n <RealInput ref={inputRef} type='checkbox' disabled={state !== 'default' && state !== 'failure'} defaultChecked={checked} />\n </Container>\n );\n\n};\n\nconst stateCheck = (state: TypeSwitchState) : TypeSwitchState => {\n switch(state){\n case 'locked':\n return 'default';\n case 'failure':\n return 'default';\n default:\n return state;\n }\n};\n\n\nexport default Switch;\nexport { SwitchPosition };","import * as React from \"react\";\n\nfunction SvgLogoMark(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={35} height={35} {...props}>\n <defs>\n <linearGradient\n id='LogoMark_svg__a'\n x1='36.708%'\n x2='69.959%'\n y1='2.579%'\n y2='98.009%'\n >\n <stop offset='0%' stopColor='#7DB8DB' />\n <stop offset='100%' stopColor='#5CA0D1' />\n </linearGradient>\n </defs>\n <g fill='none' fillRule='evenodd'>\n <rect width={35} height={35} fill='url(#LogoMark_svg__a)' rx={5} />\n <path\n fill='#FFF'\n fillRule='nonzero'\n d='M14.42 25.12c4.4 0 6.42-3.06 6.42-7.02v-7.3h-3.9v7.3c0 1.84-.68 3.56-2.52 3.56-1.8 0-2.5-1.68-2.5-3.56v-7.3h-3.9v7.3c0 3.76 1.86 7.02 6.4 7.02zM26.98 25V10.8h-3.9V25h3.9z'\n />\n </g>\n </svg>\n );\n}\n\nexport default SvgLogoMark;\n","import * as React from \"react\";\n\nfunction SvgLogoText(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={71} height={30} {...props}>\n <path\n d='M6.088 12.112c2.336 0 4.128-.976 4.128-3.168 0-2.048-1.472-2.72-3.84-3.248-2.048-.464-2.992-.784-2.992-2 0-1.152.8-1.856 2.56-1.856 1.36 0 2.56.592 3.088 1.184l.672-1.168C8.744 1.072 7.496.56 5.976.56c-2.352 0-4.08 1.184-4.08 3.36 0 1.808 1.2 2.432 3.504 2.992 2.112.512 3.28.896 3.28 2.176 0 1.136-.944 1.728-2.56 1.728-1.728 0-3.28-.8-3.968-1.52l-.688 1.216c1.28 1.04 2.88 1.6 4.624 1.6zm11.941-.016c1.76 0 3.792-.944 4.512-2.64l-1.2-.656c-.656 1.408-2.064 2-3.248 2-2.256 0-3.936-2.128-3.936-4.496 0-2.144 1.36-4.432 3.888-4.432 1.152 0 2.48.48 3.152 1.92l1.136-.736C21.63 1.6 20.125.576 18.11.576c-3.424 0-5.408 2.912-5.408 5.664 0 2.88 2.208 5.856 5.328 5.856zm12.134-.016c3.072 0 5.36-2.72 5.36-5.744 0-2.848-2.144-5.776-5.328-5.776-3.072 0-5.376 2.736-5.376 5.76 0 2.912 2.16 5.76 5.344 5.76zm.016-1.296c-2.352 0-3.904-2.144-3.904-4.464 0-2.208 1.488-4.448 3.904-4.448 2.304 0 3.888 2.128 3.888 4.448 0 2.192-1.472 4.464-3.888 4.464zM40.296 12V7.92h3.008L45.896 12h1.632l-2.752-4.352c1.44-.368 2.384-1.792 2.384-3.376C47.16 2.48 45.72.64 43.72.64h-4.864V12h1.44zm3.44-5.36h-3.44V1.92h3.344c1.104 0 2.064 1.072 2.064 2.352 0 1.248-.784 2.368-1.968 2.368zM58.413 12v-1.28h-6.272V6.8h5.328V5.6h-5.328V1.92h6.128V.64h-7.568V12h7.712zm4.742 0V7.92h3.008L68.755 12h1.632l-2.752-4.352c1.44-.368 2.384-1.792 2.384-3.376 0-1.792-1.44-3.632-3.44-3.632h-4.864V12h1.44zm3.44-5.36h-3.44V1.92h3.344c1.104 0 2.064 1.072 2.064 2.352 0 1.248-.784 2.368-1.968 2.368zM4.78 27.05c2.18 0 2.99-1.66 2.99-3.57V19.9h-.7v3.58c0 1.45-.5 2.94-2.3 2.94-1.76 0-2.29-1.45-2.29-2.94V19.9h-.69v3.58c0 1.81.74 3.57 2.99 3.57zm6.193-.05v-7.1h-.7V27h.7zm6.697 0v-2.18L19 23.44 21.71 27h.79l-3.05-3.98 2.9-3.12h-.77l-3.91 4.13v-4.12h-.7V27h.7zm7.263 0v-7.1h-.7V27h.7zm5.124 0v-6.48h2.53v-.62h-5.76v.62h2.53V27h.7z'\n fill='#93A5B2'\n />\n </svg>\n );\n}\n\nexport default SvgLogoText;\n","import * as React from 'react';\n\nfunction SvgAvatarPlaceholder(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={48} height={48} {...props} viewBox='0 0 48 48'>\n <g fill='none' fillRule='evenodd' strokeLinecap='round' strokeLinejoin='round'>\n <g stroke='#C1C1C1' strokeWidth='1.5'>\n <g>\n <g>\n <g transform='translate(-789 -294) translate(772 277) translate(10.25 10.25) translate(7.688 7.688)'>\n <rect width='37.477' height='43.242' x='4.324' y='1.441' rx='1.5' />\n <circle cx='23.063' cy='17.456' r='7.899' />\n <path d='M36.035 36.568c-2.537-4.814-7.53-7.828-12.972-7.828-5.442 0-10.436 3.014-12.973 7.828' />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n}\n\nexport default SvgAvatarPlaceholder;","import * as React from \"react\";\n\nfunction CheckMark(props: ISvgIcons) {\n return (\n <svg width={props.size} height={props.size} viewBox='0 0 24 24' {...props}>\n <path\n d='M23.848 5.132l-2.967-2.976a.531.531 0 0 0-.753 0L7.595 14.697a.531.531 0 0 1-.752 0l-2.968-2.975a.531.531 0 0 0-.752 0L.156 14.697a.531.531 0 0 0 0 .752l6.687 6.688a.531.531 0 0 0 .752 0L23.848 5.876a.531.531 0 0 0 0-.744z'\n fill='none'\n fillRule='evenodd'\n stroke='#000'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={1.5}\n />\n </svg>\n );\n}\n\nexport default CheckMark;\n","import React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckMark } from '../../svg';\nimport { dimensions } from '../../themes/common';\n\nenum CheckboxState {\n Off = \"off\",\n On = \"on\",\n Indeterminate = \"indeterminate\"\n}\n\nconst RealInput = styled.input`\n display: none;\n`;\nconst CheckboxOuter = styled.div`\n cursor: pointer;\n\n box-sizing: border-box;\n position: relative;\n width: 18px;\n height: 18px;\n border-radius: 5px;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst CheckboxInner = styled.div<{}>`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n box-sizing: border-box;\n`;\n\nconst IconWrapper = styled.div<{color: ISvgIcons['color']}>`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n [stroke]{\n stroke: transparent;\n }\n [fill] {\n fill: ${({theme, color}) => theme.colors.icons[color]};\n }\n }\n`;\n\nconst Container = styled.label<{visualState?: CheckboxState, disabled?: boolean}>`\n user-select: none;\n\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.Off && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.unchecked.default};\n }\n\n ${!disabled && css`\n &:hover ${CheckboxOuter} {\n ${styles.form.checkbox.unchecked.hover};\n }`\n };\n\n ${disabled && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.unchecked.disabled};\n cursor: not-allowed;\n }\n `}\n `}\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.On && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.checked.default};\n border: none;\n }\n ${!disabled && css`\n &:hover ${CheckboxOuter}{\n ${styles.form.checkbox.checked.hover};\n border: none;\n }`\n };\n\n ${disabled && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.checked.disabled};\n cursor: not-allowed;\n }\n `}\n `}\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.Indeterminate && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.indeterminate.default};\n }\n ${!disabled && css`\n &:hover ${CheckboxOuter}{\n ${styles.form.checkbox.indeterminate.hover};\n }\n `};\n\n `}\n\n`;\n\ninterface IProps {\n checked?: boolean\n disabled?: boolean\n indeterminate?: boolean\n onChangeCallback?: (checked: boolean, indeterminate?: boolean) => void;\n}\n\nconst Checkbox : React.FC<IProps> = ({ indeterminate = false, disabled, checked = false, onChangeCallback }) => {\n\n const [ isChecked, setIsChecked ] = useState<boolean>(checked);\n const [ visualState, setVisualState ] = useState<CheckboxState>(checked ? CheckboxState.On : CheckboxState.Off);\n\n const customOnChange = (e: any) => {\n const checked = e.target.checked;\n\n setIsChecked(checked);\n if(onChangeCallback){ onChangeCallback(checked); }\n };\n\n useEffect(() => {\n\n const state = checked ? CheckboxState.On : CheckboxState.Off;\n // state = indeterminate ? CheckboxState.Indeterminate : state;\n\n setVisualState( state );\n\n }, [checked, isChecked, setVisualState]);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked, setIsChecked]);\n\n const iconWeight : number = dimensions.icons.weights['regular'];\n\n return (\n <Container onChange={customOnChange} {...{indeterminate, disabled, visualState}}>\n <CheckboxOuter>\n <CheckboxInner>\n {visualState === CheckboxState.On ? <IconWrapper color='inverse'><CheckMark color='inverse' stroke='inverse' size={12} weight={iconWeight} /></IconWrapper> : null}\n </CheckboxInner>\n </CheckboxOuter>\n <RealInput type='checkbox' checked={isChecked} readOnly {...{disabled}} /> {/* disabled={state !== 'default' && state !== 'failure'} */}\n </Container>\n );\n\n};\n\nexport default Checkbox;\nexport { CheckboxState };","import React, { useCallback, InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\n\nconst InnerRadio = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n user-select: none;\n`;\n\nconst OuterRadio = styled.div<{ isChecked: boolean, disabled: boolean }>`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n border-radius: 50%;\n border-width: 2px;\n border-style: solid;\n user-select: none;\n\n ${({ theme: { styles }, isChecked, disabled }) => styles && css`\n border-color: ${styles.form.checkbox.unchecked.default.borderColor};\n\n ${!disabled && css`\n &:hover {\n cursor: pointer;\n border-color: ${styles.form.checkbox.unchecked.hover.borderColor};\n }\n `};\n\n ${isChecked && !disabled && css`\n border-color: ${styles.form.checkbox.checked.default.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n `};\n\n ${isChecked && !disabled && css`\n &:hover {\n border-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n `};\n\n ${isChecked && disabled && css`\n cursor: not-allowed;\n border-color: ${styles.form.checkbox.checked.disabled.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.disabled.backgroundColor};\n }\n `};\n\n ${!isChecked && disabled && css`\n cursor: not-allowed;\n border-color: ${styles.form.checkbox.unchecked.disabled.borderColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.unchecked.disabled.backgroundColor};\n }\n `}\n `};\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n height: 100%;\n width: 100%;\n margin: 0;\n padding:0;\n opacity: 0;\n`;\n\nconst Container = styled.div`\n position: relative;\n display: inline-block;\n width: 18px;\n height: 18px;\n user-select: none;\n border-radius: 50%;\n`;\n\ninterface OwnProps {\n currentChecked?: number | string\n onChangeCallback?: (value: number | string) => void\n}\n\ntype IRadioButton = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst RadioButton: React.FC<IRadioButton> = ({\n id,\n value,\n name,\n currentChecked,\n disabled = false,\n required,\n onChangeCallback = () => { },\n}) => {\n\n const handleChange = useCallback((e) => {\n const checkedValue = e.target.value;\n onChangeCallback(checkedValue);\n }, [onChangeCallback]);\n\n const isChecked = (currentChecked !== undefined) ? (currentChecked === value) : false;\n\n return (\n <Container>\n <HiddenInput\n type='radio'\n {...{ id, name, disabled, required, value }}\n checked={isChecked}\n onChange={handleChange}\n />\n <OuterRadio {...{ isChecked, disabled }}>\n <InnerRadio />\n </OuterRadio>\n </Container>\n );\n};\n\nexport default RadioButton;","import React, { TextareaHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport Icon from '../../Icons/Icon';\nimport { TypeFieldState } from '..';\n\nconst FeedbackIcon = styled.div`\n flex: 0 0 40px;\n width: 40px;\n display: flex;\n justify-content:center;\n align-items:center;\n padding-top: 2px;\n`;\n\nconst StyledTextArea = styled.textarea<{ fieldState : TypeFieldState}>`\n\n${({theme, fieldState}) => css`\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n`};\n\n padding: 8px 15px;\n box-sizing: border-box;\n outline: none;\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.normal};\n &::placeholder {\n ${typography.form.input.placeholder.normal};\n }\n`};\n`;\n\nconst FeedbackContainer = styled.div`\n flex-shrink: 0;\n padding: 8px 0;\n background-color: transparent;\n ${({theme}) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n `};\n\n border-left: none;\n border-radius: 0 0 3px 3px;\n overflow: hidden;\n\n display:flex;\n justify-content:left;\n align-items:center;\n`;\n\nconst FeedbackMessage = styled.div`\n flex: 0 1 400px;\n padding: 0 10px 0 0;\n ${({theme}) => theme.typography.form.feedback.message};\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n display: flex;\n position: relative;\n flex-direction: column;\n ${StyledTextArea}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {\n box-shadow: 0px 3px 7px 0px hsla(207, 65.8%, 31%, 0.078);\n }\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n ${FeedbackContainer} {\n background: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n border-color: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) !== -1 && css`\n display:none;\n `}\n }\n\n &:focus-within ${FeedbackContainer} {\n ${({ fieldState }) =>\n\n fieldState === 'required' ? `\n box-shadow: 0px 3px 7px 0px hsla(207, 67.8%, 35.3%, 0.071);\n ` : null};\n\n ${({ fieldState }) => fieldState === 'valid' ? `\n box-shadow: 0px 3px 5px 0px hsla(120, 76.6%, 15.1%, 0.071);\n ` : null};\n\n ${({ fieldState }) => fieldState === 'invalid' ? `\n box-shadow: 0px 3px 7px 0px hsla(0, 100%, 50%, 0.102);\n ` : null};\n }\n\n`;\n\ninterface OwnProps {\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & TextareaHTMLAttributes<HTMLTextAreaElement>\n\nconst TextArea : React.FC<Props> = ({\n placeholder = '',\n fieldState = 'default',\n feedbackMessage,\n children,\n ...props\n}) => {\n\n const feedbackIcon = (fieldState: TypeFieldState) => {\n switch(fieldState){\n case 'default':\n break;\n case 'disabled':\n break;\n case 'required':\n return <Icon icon='Required' size={20} color='inverse' />;\n case 'valid':\n return <Icon icon='Success' size={20} color='inverse' />;\n case 'invalid':\n return <Icon icon='Invalid' size={20} color='inverse' />;\n case 'processing':\n return <Spinner size='medium' styling='primary' />;\n }\n };\n\n return (\n <Container fieldState={fieldState || 'default'}>\n <StyledTextArea\n fieldState={fieldState || 'default'} \n placeholder={placeholder}\n disabled={fieldState === 'disabled' || fieldState === 'processing'}\n {...props}\n >{children}\n </StyledTextArea>\n {fieldState && (\n <FeedbackContainer>\n <FeedbackIcon>{feedbackIcon(fieldState)}</FeedbackIcon>\n <FeedbackMessage>{feedbackMessage}</FeedbackMessage>\n </FeedbackContainer>\n )}\n </Container>\n );\n};\n\nexport default TextArea;","import React, { useCallback, useState, SelectHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Label, { StyledLabel } from './Label';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\n\nexport const SelectWrapper = styled.div`\n position: relative;\n display: flex;\n width: 100%;\n\n ${IconWrapper} {\n position: absolute;\n top: calc(50% - 7px);\n right: 10px;\n pointer-events: none;\n }\n`;\n\nconst StyledSelect = styled.select`\n box-sizing: border-box;\n outline: none;\n border-radius: 3px;\n height: 40px;\n padding: 0 25px 0 15px;\n appearance: none;\n line-height: 1.56;\n width: 100%;\n cursor: pointer;\n ${({theme: {styles}}) => css`\n ${styles.form.input.default.normal};\n `}\n\n &:disabled {\n ${({theme: {styles}}) => css`\n ${styles.form.input.disabled.normal};\n `}\n cursor: not-allowed;\n }\n\n &::-ms-expand {\n display: none;\n }\n`;\n\nconst Container = styled.div<{ isCompact?: boolean, activePlaceholder: boolean, isLabelSameRow?: boolean }>`\n\n${({ isCompact }) => isCompact && css`\n ${StyledLabel} {\n span {\n margin-bottom: 6px;\n }\n }\n `}\n\n${({ isLabelSameRow }) => isLabelSameRow && css`\n ${StyledLabel} {\n display: flex;\n align-items: center;\n span {\n margin: 0 10px 0 0;\n }\n }\n`};\n\n ${StyledSelect} {\n ${({ theme }) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n font-family: ${theme.fontFamily.data};\n ${theme.typography.form.input.value.normal};\n `};\n\n ${({ theme: { typography }, isCompact }) => isCompact && css`\n height: 30px;\n padding: 0 25px 0 10px;\n ${typography.form.input.value.compact};\n `};\n\n ${({ theme, activePlaceholder }) => activePlaceholder && css`\n ${theme.typography.form.input.placeholder.normal};\n `};\n\n ${({ theme, isCompact, activePlaceholder }) => isCompact && activePlaceholder && css`\n ${theme.typography.form.input.placeholder.compact};\n `};\n\n option {\n font-style: normal;\n ${({ theme }) => css`\n ${theme.typography.form.input.value.normal};\n `};\n\n ${({ theme: { typography }, isCompact }) => isCompact && css`\n ${typography.form.input.value.compact};\n `};\n }\n font-weight: 400;\n }\n`;\n\ninterface ILabel {\n htmlFor: string\n text: string\n isSameRow?: boolean\n}\n\ninterface OwnProps {\n label?: ILabel\n isCompact?: boolean\n placeholder?: string\n changeCallback?: (value: string) => void\n}\n\ntype ISelect = OwnProps & SelectHTMLAttributes<HTMLSelectElement>\n\nconst SelectField: React.FC<ISelect> = ({\n placeholder,\n label,\n isCompact,\n defaultValue,\n changeCallback = () => { },\n children,\n ...props\n}) => {\n\n const [activePlaceholder, setPlaceholderStatus] = useState<boolean>(!defaultValue ? true : false);\n\n const handleOnChange = useCallback((e) => {\n\n const { value } = e.target;\n\n setPlaceholderStatus(prev => {\n if (prev) { return false; }\n return prev;\n });\n changeCallback(value);\n }, [changeCallback]);\n\n const renderSelect = useCallback((htmlFor?: string) => (\n <SelectWrapper>\n <StyledSelect\n id={htmlFor}\n {...props}\n defaultValue={defaultValue ? defaultValue : ''}\n onChange={handleOnChange}\n >\n {!defaultValue && <option value='' disabled hidden>{placeholder}</option>}\n {children}\n </StyledSelect>\n <Icon icon='Down' color='dimmed' size={11} />\n </SelectWrapper>\n ), [children, defaultValue, handleOnChange, placeholder, props]);\n\n return (\n <Container {...{ isCompact, activePlaceholder }} isLabelSameRow={label?.isSameRow}>\n {label\n ? (\n <Label htmlFor={label.htmlFor} labelText={label.text}>\n {renderSelect(label.htmlFor)}\n </Label>\n )\n : renderSelect()}\n </Container>\n );\n};\n\nexport default SelectField;","import {ITimeUnit} from '../index';\n\nconst isInsideRange = (value: number, min: number, max: number) : boolean => {\n if( value < min) {return false;}\n if(value > max) { return false;}\n return true;\n};\n\n// verifies if a number is inside a boundary if not updates it's value to the max or min boundary value.\nconst clamp = (value: number, minValue: number, maxValue: number) => {\n return Math.min( Math.max(value, minValue), maxValue);\n};\n\n/**\n * Helper for adding appropriate text to a time number\n * Default is hours\n */\nconst getTextTimeUnit = (value: number, unit : ITimeUnit) => {\n switch (unit) {\n case 'seconds':\n return value < 2 ? `Second` : `Seconds`;\n\n case 'minutes':\n return value < 2 ? `Minute` : `Minutes`;\n\n default:\n return value < 2 ? `Hour` : `Hours`;\n }\n};\n\n/**\n * Helper for adding appropriate text to a time number\n * Default is hours\n */\nconst getShortTextTimeUnit = (value: number, unit : string) => {\n switch (unit) {\n case 'seconds':\n return value < 2 ? `sec` : `secs`;\n\n case 'minutes':\n return value < 2 ? `min` : `mins`;\n\n default:\n return value < 2 ? `hr` : `hrs`;\n }\n};\n\nexport const isTimeUnit = (value: any) => {\n switch(value) {\n case 'seconds':\n case 'minutes':\n case 'hours':\n return true;\n default:\n return false;\n }\n};\n\nconst getTopLevelPath = (pathname: string) => {\n const parts = pathname.split('/').filter(String);\n return parts.length > 0 ? \"/\" + parts[0] : \"/\";\n};\n\nconst getImageType = (img: HTMLImageElement) => {\n const dataType = img.src.substr(0, 20);\n if (dataType.includes('data')) {\n return dataType.split('/')[1].split(';')[0];\n }\n return 'image/jpeg';\n};\n\nconst isValidImage = (file: File) => {\n const acceptedImageTypes = ['image/jpeg', 'image/png'];\n\n return file && acceptedImageTypes.includes(file['type']);\n};\n\nconst uniqueID = () =>\n String(\n Date.now().toString(32) +\n Math.random().toString(16)\n ).replace(/\\./g, '');\n\nexport {\n clamp,\n isValidImage,\n getImageType,\n getTextTimeUnit,\n isInsideRange,\n getShortTextTimeUnit,\n getTopLevelPath,\n uniqueID\n};","import React, {\n InputHTMLAttributes,\n useState,\n useCallback,\n ChangeEvent,\n Fragment,\n useRef,\n useEffect,\n} from 'react';\nimport styled, {css} from 'styled-components';\nimport {IFeedbackColor} from '../../index';\nimport {\n isInsideRange,\n} from '../../helpers';\n\n/**\n * TODO to support all input range features\n * Currently you can pass this values but to be visually correct the needs to work around the current implementation.\n * Step\n * Vertical usage\n */\n\nconst ThumbDiameter = 16;\n\nconst SliderWrapper = styled.div<{disabled: boolean}>`\n font-family: ${({ theme }) => theme.fontFamily.data};\n position: relative;\n height: 30px;\n margin-top: 20px;\n ${({disabled}) => disabled && css`\n opacity: .5;\n `};\n`;\n\nconst HiddenInput = styled.input<{disabled:boolean}>`\n width: 100%;\n margin: 0;\n padding:0;\n opacity: .001;\n z-index: 99;\n cursor: ${({disabled}) => disabled ? `not-allowed` : `pointer`};\n`;\n\nconst Rail = styled.div`\n position: absolute;\n left: ${ThumbDiameter/2}px;\n top: 10px;\n width: calc(100% - ${ThumbDiameter}px);\n height: 2px;\n border-radius: 11px;\n background-image: linear-gradient(to bottom, hsl(210, 30%, 96%), hsl(203, 42%, 94%) 98%);\n`;\n\nconst Mark = styled.span<{leftValue: number}>`\n position: absolute;\n top: -3px;\n left: ${({leftValue}) => `calc(${leftValue}% + 7px)`};\n width: 1px;\n height: 9px;\n opacity: 0.25;\n background-color: hsl(205, 77%, 64%);\n`;\n\nconst MarkLabel = styled.span<{leftValue: number, alignment?: IMartAlignment,}>`\n position: absolute;\n top: -24px;\n left: ${({leftValue}) => `calc(${leftValue}% + 7px)`};\n\n font-size: 10px;\n font-style: italic;\n line-height: normal;\n text-align: center;\n color: hsla(195, 10%, 52%, 0.72);\n\n ${({alignment}) => (alignment === 'center') && css`transform: translateX(-50%);;`}\n ${({alignment}) => (alignment === 'right') && css`transform: translateX(5%);`}\n ${({alignment}) => (alignment === 'left') && css`transform: translateX(-95%);`}\n`;\n\nconst ThumbWrapper = styled.div`\n position: relative;\n margin-right: 16px;\n left: 0;\n top: 10px;\n width: calc(100% - ${ThumbDiameter}px);\n height: 2px;\n`;\n\nconst Thumb = styled.span<{leftValue: number, bgColor: IFeedbackColor }>`\n width: ${ThumbDiameter}px;\n height: ${ThumbDiameter}px;\n border-radius: 8px;\n background-color: ${({theme, bgColor}) => theme.colors.feedback[bgColor]};\n position: absolute;\n top: -7.5px;\n left: ${({leftValue}) => `${leftValue}%`};\n`;\n\nconst GhostThumb = styled(Thumb)`\n opacity: .5;\n`;\n\nconst thumbLeftPosition = (value: number, min: number, max: number ) => {\n return valueToPercent(value, min, max);\n};\n\nconst nearMark = (value: number, marks: ISliderMark[]) : number => {\n\n const closest = marks.reduce((prev, curr) => {\n return (Math.abs(curr.value - value) < Math.abs(prev.value - value) ? curr : prev);\n });\n\n return closest.value;\n};\n\n/**\n * Rules for a getValidMin\n * Max needs to be bigger than Min\n * if Min is not available and Max is positive default is 0\n * if Min is not available Max is negative min will be reduce by 1\n */\nconst getValidMin = (max: number, min?: number) : number => {\n\n if((!max) && (!min)) {\n return 0;\n }\n\n if(!min) {\n if(max > 0) {\n return 0;\n }else {\n return max - 1 ;\n }\n }\n return min;\n};\n\n/**\n *\n * Max is required but null because it cans o.O\n * if Max is less value than min fix to one more than min\n */\nconst getValidMax = (max: number, min?: number) : number => {\n if((max === null) && (!min)) {\n return 100;\n }\n\n if(min && (min > max) ) {\n return min + 1;\n }\n\n return max;\n};\n\nconst valueToPercent = (value: number, min: number, max: number) : number => {\n return Math.round(((value - min) * 100) / (max - min));\n};\n\n// const percentToValue = (percent: number, min: number, max: number) : number => {\n// return (max - min) * percent + min;\n// };\n\n\nconst getMarkAlignment = (value: number, min: number, max: number) : IMartAlignment => {\n if(value === min) {\n return 'right';\n }\n\n if(value === max) {\n return 'left';\n }\n\n return 'center';\n};\n\nconst renderMarks = (markList: ISliderMark[], min: number, max: number, listTag: string) => {\n\n const listOptions : JSX.Element[] = [];\n const marksElements = markList.map(({value, label}, index) => {\n // * first and last should be 0% and 100%\n const left = index === (markList.length - 1) ? 100 : valueToPercent(value, min, max);\n listOptions.push(<option key={`option-${value}`}>{value}</option>);\n\n return (\n <Fragment key={`mark-${index}`}>\n <Mark\n data-leftvalue={`${left}%`}\n leftValue={left}\n />\n <MarkLabel\n leftValue={left}\n alignment={getMarkAlignment(value, min, max)}\n >\n {label}\n </MarkLabel>\n </Fragment>\n );\n });\n\n return (\n <Fragment>\n {marksElements}\n <datalist id={listTag}>\n {listOptions}\n </datalist>\n </Fragment>\n );\n\n};\n\nexport type IMartAlignment = 'left' | 'center' | 'right';\n\nexport interface ISliderMark {\n value: number\n label?: string\n}\n\ninterface ISliderOwnProps {\n min?: number\n max: number\n step?: number\n marks?: ISliderMark[]\n defaultValue?: number\n value?: number\n thumbColor?: IFeedbackColor\n onlyMarkSelect?: boolean\n inputCallback?: (value: number) => void\n onChangeCallback?: (value: number) => void\n}\n\nexport type ISlider = ISliderOwnProps & InputHTMLAttributes<HTMLInputElement>;\n\nlet ghostThumbValue = 0;\n\nconst SliderInput : React.FC<ISlider> = ({\n min,\n max,\n marks,\n defaultValue,\n thumbColor = 'info',\n disabled = false,\n onlyMarkSelect = false,\n inputCallback = () => {},\n onChangeCallback = () => {},\n ...props\n}) => {\n\n const maxValid = getValidMax(max, min);\n const minValid = getValidMin(max, min);\n const initValue = (defaultValue && isInsideRange(defaultValue, minValid, maxValid)) ? defaultValue : minValid;\n\n const [selectedValue, setSelectedValue] = useState(initValue);\n const [isGhostActive, setIsGhostActive ] = useState(false);\n\n const thumbValueRef = useRef(thumbLeftPosition(selectedValue, minValid, maxValid));\n\n if(marks && onlyMarkSelect) {\n const mark = nearMark(selectedValue, marks);\n const ghostVal = thumbLeftPosition(mark, minValid, maxValid);\n ghostThumbValue = ghostVal;\n }\n\n\n const handleInputChange = useCallback((e: ChangeEvent<HTMLInputElement>, lastValue: number) => {\n const val = e.target.value;\n if(val === null) { return; }\n const numericVal = parseInt(val,10);\n\n thumbValueRef.current = thumbLeftPosition(numericVal, minValid, maxValid);\n const mark = marks ? nearMark(numericVal, marks) : numericVal;\n const prevMark = marks ? nearMark(lastValue, marks) : numericVal;\n\n if(onlyMarkSelect && (prevMark !== mark)) {\n onChangeCallback(mark);\n }\n\n if(!onlyMarkSelect) {\n onChangeCallback(numericVal);\n }\n\n setSelectedValue(prev => {\n if(numericVal === prev) { return prev; }\n return numericVal;\n });\n\n },[marks, maxValid, minValid, onChangeCallback, onlyMarkSelect]);\n\n\n const handleSelectStart = useCallback(() => {\n setIsGhostActive(true);\n }, []);\n\n const handleSelectEnd = useCallback((currentValue: number) => {\n if(onlyMarkSelect) {\n inputCallback(ghostThumbValue);\n } else {\n inputCallback(currentValue);\n }\n\n if(onlyMarkSelect) {\n thumbValueRef.current = ghostThumbValue;\n }\n\n setIsGhostActive(false);\n },[inputCallback, onlyMarkSelect]);\n\n useEffect(() => {\n const initValue = (defaultValue && isInsideRange(defaultValue, minValid, maxValid)) ? defaultValue : minValid;\n thumbValueRef.current = thumbLeftPosition(initValue, minValid, maxValid);\n setSelectedValue(initValue);\n\n }, [defaultValue, maxValid, minValid]);\n\n return(\n <SliderWrapper disabled={disabled}>\n <Rail />\n <ThumbWrapper>\n {marks && renderMarks(marks, minValid, maxValid, `sliderList-${minValid}-${maxValid}`)}\n {isGhostActive && onlyMarkSelect\n ? (\n <GhostThumb\n data-value={selectedValue}\n leftValue={ghostThumbValue}\n data-percentage={ghostThumbValue}\n bgColor={thumbColor}\n />\n )\n : null}\n <Thumb\n data-value={selectedValue}\n leftValue={thumbValueRef.current}\n data-percentage={thumbValueRef.current}\n bgColor={thumbColor}\n />\n </ThumbWrapper>\n <HiddenInput\n {...props}\n type='range'\n disabled={disabled}\n list={`sliderList-${minValid}-${maxValid}`}\n min={minValid}\n max={maxValid}\n value={selectedValue}\n onMouseUp={() => handleSelectEnd(selectedValue)}\n onMouseDown={handleSelectStart}\n onTouchStart={() => handleSelectEnd(selectedValue)}\n onTouchEnd={handleSelectStart}\n onChange={(e) => handleInputChange(e, selectedValue)}\n />\n </SliderWrapper>\n );\n};\n\nexport default SliderInput;","import React, {useRef, useCallback, ChangeEvent, InputHTMLAttributes} from 'react';\nimport styled from 'styled-components';\nimport Button from './Button';\nimport { TypeButtonSizes, TypeButtonDesigns } from '..';\n\nconst Container = styled.div``;\nconst HiddenInput = styled.input`\n display: none;\n`;\nconst StyledButton = styled(Button)`\n text-align: center;\n`;\n\ninterface OwnProps {\n text: string\n buttonSize?: TypeButtonSizes\n buttonDesign?: TypeButtonDesigns\n inputCallback: (newFiles: FileList) => void\n}\n\ntype IFileInput = OwnProps & InputHTMLAttributes<HTMLInputElement>\nconst InputFileButton : React.FC<IFileInput> = ({text, buttonDesign, buttonSize, inputCallback, ...props}) => {\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleFile = useCallback(async(e: ChangeEvent<HTMLInputElement>) => {\n if (!(e.target.files && e.target.files.length > 0)) { return;}\n const newFiles : FileList = e.target.files;\n if(inputCallback) {\n inputCallback(newFiles);\n }\n e.target.value = '';\n },[inputCallback]);\n\n const forwardClick = useCallback(() => {\n if(fileInputRef.current) {\n fileInputRef.current.click();\n }\n },[]);\n\n return(\n <Container>\n <HiddenInput\n {...props}\n ref={fileInputRef}\n type='file'\n onChange={handleFile}\n />\n <StyledButton\n onClick={forwardClick}\n design={buttonDesign}\n size={buttonSize}\n >{text}\n </StyledButton>\n </Container>\n );\n};\n\nexport default InputFileButton;","import React, {useState, useCallback} from 'react';\nimport styled from 'styled-components';\nimport {ITimeUnit} from '../../index';\nimport SliderInput, {ISlider} from '../atoms/SliderInput';\nimport {getShortTextTimeUnit, isTimeUnit} from '../../helpers';\nimport Label from '../atoms/Label';\n\n\n/**\n * This component relies in the slider for validations\n * Since the theme of this component is time unit values\n * Marks could also be handle by it.\n * Providing quantity of marks and generating the marks array based with unit\n */\n\nconst Container = styled.div``;\nconst Headers = styled.div`\n font-size: 14px;\n color: hsl(207, 5%, 57%);\n display: flex;\n justify-content: space-between;\n margin-bottom: 30px;\n padding: 0 6px;\n`;\n\nconst ValueLabel = styled(Label)`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n margin-bottom: 0;\n`;\n\nconst Unit = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: hsla(195, 10%, 52%, 0.72);\n font-style: italic;\n font-size: 12px;\n line-height: 1.5;\n`;\n\nconst ValueTitle = styled.div`\n display: flex;\n`;\n\ninterface IDurationSliderProps {\n title: string\n timeUnit: ITimeUnit | string\n controlledValue?: number\n}\n\ntype IDurationSlider = IDurationSliderProps & ISlider;\n\nconst DurationSlider: React.FC<IDurationSlider> = (\n {\n max,\n min,\n defaultValue=0,\n title='',\n timeUnit,\n controlledValue,\n inputCallback,\n ...props\n }\n ) => {\n\n const [selectedValue, setSelectedValue] = useState(defaultValue);\n\n const handleSelectedValue = useCallback((value: number) => {\n if(inputCallback) {\n inputCallback(value);\n }\n setSelectedValue(value);\n },[inputCallback]);\n\n const labelValue = controlledValue ? controlledValue : selectedValue;\n const unit = isTimeUnit(timeUnit) ? getShortTextTimeUnit(labelValue, timeUnit) : timeUnit;\n\n return(\n <Container>\n <Headers>\n <Label htmlFor='duration-slider' labelText={title} />\n <ValueTitle>\n <ValueLabel htmlFor='duration-slider' labelText={`${labelValue}`} />\n <Unit>{unit}</Unit>\n </ValueTitle>\n </Headers>\n <SliderInput\n {\n ...props}\n id='duration-slider'\n max={max}\n min={min}\n defaultValue={defaultValue}\n onChangeCallback={handleSelectedValue}\n />\n </Container>\n );\n};\n\nexport default DurationSlider;","import React, {InputHTMLAttributes, useState, useCallback} from 'react';\nimport styled from 'styled-components';\nimport SliderInput, {ISliderMark} from '../atoms/SliderInput';\nimport {IFeedbackColor} from '../../index';\nimport Label from '../atoms/Label';\n\n\nconst Container = styled.div``;\nconst Headers = styled.div`\n font-size: 14px;\n color: hsl(207, 5%, 57%);\n display: flex;\n justify-content: space-between;\n margin-bottom: 20px;\n padding: 0 6px;\n`;\n\nconst ValueTitle = styled(Label)`\n font-family: ${({ theme }) => theme.fontFamily.data};\n`;\n\nconst getThumbColor = (value: number) : IFeedbackColor => {\n if(value <= 10) {\n return 'error';\n }\n\n if((value > 10) && (value <= 30)) {\n return 'warning';\n }\n\n return 'success';\n};\n\nconst getTitleLevel = (value: number) : string => {\n if(value <= 10) {\n return 'Critical Level';\n }\n\n if((value > 10) && (value <= 30)) {\n return 'Warning Level';\n }\n\n return 'Safe Level';\n};\n\n\ninterface IPercentageSliderProps {\n step?: number\n marks?: ISliderMark[]\n defaultValue?: number\n value?: number\n inputCallback?: (value: number) => void\n updateThumbColor?: (value: number) => IFeedbackColor\n updateTitle?: (value: number) => string\n}\n\ntype IPercentageSlider = IPercentageSliderProps & InputHTMLAttributes<HTMLInputElement>;\n\nconst PercentageSlider: React.FC<IPercentageSlider> = (\n {\n defaultValue=0,\n // title='',\n inputCallback,\n updateThumbColor,\n updateTitle,\n ...props\n }\n ) => {\n const [selectedValue, setSelectedValue] = useState(defaultValue);\n\n const handleSelectedValue = useCallback((value: number) => {\n if(inputCallback) {\n inputCallback(value);\n }\n setSelectedValue(value);\n },[inputCallback]);\n\n return(\n <Container>\n <Headers>\n <Label\n htmlFor='percentage-slider'\n labelText={updateTitle ? updateTitle(selectedValue) : getTitleLevel(selectedValue)}\n />\n <ValueTitle htmlFor='percentage-slider' labelText={`${selectedValue}%`} />\n </Headers>\n <SliderInput\n {...props}\n id='percentage-slider'\n max={100}\n min={0}\n defaultValue={defaultValue}\n onChangeCallback={handleSelectedValue}\n thumbColor={\n updateThumbColor\n ? updateThumbColor(selectedValue)\n : getThumbColor(selectedValue)\n }\n />\n </Container>\n );\n};\n\nexport default PercentageSlider;","import React, { useState, InputHTMLAttributes } from 'react';\nimport Input from '../atoms/Input';\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\n\ninterface OwnProps {\n name: string;\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\ntype Props = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\n\nconst PasswordField : React.FC<Props> = ({ name, label, fieldState, feedbackMessage, ...props}) => {\n\n const [ showValue, setShowValue ] = useState<boolean>(false);\n const [ actionIcon, setActionIcon ] = useState<string>('PasswordHide');\n\n const actionCallback = () => {\n // Toggle show / hide and replace icon.\n const newValue : boolean = !showValue;\n\n setShowValue(newValue);\n setActionIcon(newValue ? 'PasswordShow' : 'PasswordHide');\n };\n\n return (\n <Label htmlFor={name} labelText={label}>\n <Input type={showValue ? 'text' : 'password'} actionCallback={actionCallback} actionIcon={actionIcon} {...{ name, fieldState, feedbackMessage, ...props}} />\n </Label>)\n ;\n\n};\n\nexport default PasswordField;\n","import React from 'react';\nimport Input, { InputProps } from '../atoms/Input';\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\n\ninterface OwnProps {\n name: string\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & InputProps\n\n\nconst TextField : React.FC<Props> = ({ name, label, fieldState='default', feedbackMessage, type:_type , ...props }) => {\n return (\n <Label htmlFor={name} labelText={label}>\n <Input type='text' {...{fieldState, feedbackMessage, name, ...props }} />\n </Label>\n );\n};\n\n\nexport default TextField;","import React, { TextareaHTMLAttributes } from 'react';\nimport { TypeFieldState } from '..';\nimport Label from '../atoms/Label';\nimport TextArea from '../atoms/TextArea';\n\ninterface OwnProps {\n name: string\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & TextareaHTMLAttributes<HTMLTextAreaElement>\n\nconst TextAreaField : React.FC<Props> = ({\n name,\n label,\n fieldState='default',\n feedbackMessage,\n children,\n ...props\n}) => {\n return(\n <Label htmlFor={name} labelText={label}>\n <TextArea {...{ fieldState, feedbackMessage, name, ...props }} />\n </Label>\n );\n};\n\nexport default TextAreaField;","import React, { useState, useCallback} from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div<{height?: string}>`\n ${({height}) => height ? `height: ${height}` : null};\n position: relative;\n`;\n\nconst DragAndDrop = styled.div<{inDropZone: boolean}>`\n border-radius: 5px;\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({inDropZone}) => inDropZone ? `dashed #afa9a9 2px` : null};\n`;\n\ninterface IDropArea {\n height?: string\n text?: string\n dropCallback?: (newFiles: FileList) => void\n}\n\nconst DropArea : React.FC<IDropArea> = ({height, text, dropCallback, ...props}) => {\n const [inDropZone, setInDropZone] = useState(false);\n\nconst onDragEnter = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n setInDropZone(true);\n},[]);\n\nconst onDragLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n setInDropZone(false);\n},[]);\n\nconst onDragOver = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n},[]);\n\nconst onDrop = useCallback((e ) => {\n e.preventDefault();\n e.stopPropagation();\n if(e.dataTransfer?.files && dropCallback) {\n dropCallback(e.dataTransfer.files);\n }\n setInDropZone(false);\n},[dropCallback]);\n\n return(\n <Container {...{height}} {...props}>\n <DragAndDrop\n {...{\n inDropZone,\n onDragEnter,\n onDragLeave,\n onDrop,\n onDragOver\n }}\n >\n {text}\n </DragAndDrop>\n </Container>\n );\n};\n\nexport default DropArea;","import { clamp } from './index';\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/cursor //\ntype ICursorStyles = (\n 'ne-resize'\n | 'nw-resize'\n | 'n-resize'\n | 'se-resize'\n | 'sw-resize'\n | 's-resize'\n | 'e-resize'\n | 'w-resize'\n | 'move'\n | 'default'\n);\n\nconst updateCursorStyle = (\n left: number,\n top: number,\n width: number,\n height: number,\n clientX: number,\n clientY: number\n): ICursorStyles => {\n let cursorStyle: ICursorStyles = 'default';\n\n if (clientY - top < 5) {\n if (width - (clientX - left) < 5) {\n cursorStyle = 'ne-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'nw-resize';\n } else {\n cursorStyle = 'n-resize';\n }\n } else if (height - (clientY - top) < 5) {\n if (width - (clientX - left) < 5) {\n cursorStyle = 'se-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'sw-resize';\n } else {\n cursorStyle = 's-resize';\n }\n } else if (width - (clientX - left) < 5) {\n cursorStyle = 'e-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'w-resize';\n } else {\n cursorStyle = 'move';\n }\n\n return cursorStyle;\n};\n\nconst drawImgValues = (img: HTMLImageElement, canvasHeight: number, canvasWidth: number): IDrawArea => {\n\n const scale = Math.min(\n canvasWidth / img.naturalWidth,\n canvasHeight / img.naturalHeight\n );\n\n const width = Math.floor(img.naturalWidth * scale);\n const height = Math.floor(img.naturalHeight * scale);\n const top = 0 + Math.floor((canvasHeight - height) / 2);\n const left = 0 + Math.floor((canvasWidth - width) / 2);\n\n const imageDraw: IDrawArea = {\n left,\n top,\n width,\n height,\n };\n\n return imageDraw;\n};\n\n\nconst calculateAspectSizes = (baseHeight: number, baseWidth: number, aspectRatio: number) => {\n const aspect = aspectRatio ? aspectRatio : 1;\n let height, width;\n\n if (baseWidth > (baseHeight * aspect)) {\n width = Math.floor(baseHeight * aspect);\n height = baseHeight;\n } else {\n width = baseWidth;\n height = Math.floor(baseWidth / aspect);\n }\n\n return {\n height,\n width\n };\n};\n\nconst initialCropValues = (\n cropWidth: number,\n cropHeight: number,\n canvasWidth: number,\n canvasHeight: number,\n imgWidth: number,\n imgHeight: number,\n aspectRatio?: number,\n) => {\n\n let height, width;\n const aspect = aspectRatio ? aspectRatio : 1;\n const minWidth = Math.min(cropWidth, canvasWidth, imgWidth);\n const minHeight = Math.min(cropHeight, canvasHeight, imgHeight);\n\n if (minWidth > (minHeight * aspect)) {\n width = Math.floor(minHeight * aspect);\n height = minHeight;\n } else {\n width = minWidth;\n height = Math.floor(minWidth / aspect);\n }\n\n const top = 0 + Math.floor((canvasHeight / 2) - (height / 2));\n const left = 0 + Math.floor((canvasWidth / 2) - (width / 2));\n\n return {\n left,\n top,\n width,\n height,\n };\n};\n\nconst isLeftMouseButton = (e: MouseEvent) => {\n\n let mouseButton;\n if (typeof (e.buttons) !== undefined) {\n mouseButton = e.buttons;\n } else if (typeof (e.button) !== undefined) {\n mouseButton = e.button;\n } else {\n mouseButton = e.which;\n }\n\n if (mouseButton === 1) {\n return true;\n }\n\n return false;\n};\n\ninterface ISelectedArea {\n cropLeft: number\n cropTop: number\n cropWidth: number\n cropHeight: number\n mouseStartX: number\n mouseStartY: number\n imgLeft: number\n imgTop: number\n imgWidth: number\n imgHeight: number\n cursorStart: ICursorStyles\n isResizing: boolean\n}\n\nconst updateCropValues = (\n oldSelection: ISelectedArea,\n newX: number,\n newY: number,\n) => {\n\n let [updatedLeft, updatedTop, updatedWidth, updatedHeight] =\n [oldSelection.cropLeft, oldSelection.cropTop, oldSelection.cropWidth, oldSelection.cropHeight];\n\n const diffX = newX - oldSelection.mouseStartX;\n const diffY = newY - oldSelection.mouseStartY;\n\n switch (oldSelection.cursorStart) {\n case 'ne-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = oldSelection.cropWidth + diffX;\n\n break;\n\n case 'nw-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 'n-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n break;\n\n case 'se-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = oldSelection.cropWidth + diffX;\n break;\n\n case 'sw-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 's-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n break;\n\n case 'e-resize':\n updatedWidth = oldSelection.cropWidth + diffX;\n break;\n\n case 'w-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 'move':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n break;\n\n default:\n break;\n }\n\n const width = clamp(updatedWidth, 0, oldSelection.imgWidth);\n const height = clamp(updatedHeight, 0, oldSelection.imgHeight);\n const left = clamp(updatedLeft, oldSelection.imgLeft, (oldSelection.imgWidth - oldSelection.cropWidth + oldSelection.imgLeft));\n const top = clamp(updatedTop, oldSelection.imgTop, (oldSelection.imgHeight - oldSelection.cropHeight + oldSelection.imgTop));\n\n const isUpdateRequired = areDimensionsDiff(oldSelection, {left, top, height, width});\n\n return {\n left,\n top,\n width,\n height,\n isUpdateRequired,\n };\n};\n\nconst updateCropWithAspect = (\n oldSelection: ISelectedArea,\n newX: number,\n newY: number,\n aspectRatio?: number,\n) => {\n\n const aspect = aspectRatio ? aspectRatio : 1;\n let [updatedLeft, updatedTop, updatedWidth, updatedHeight] =\n [oldSelection.cropLeft, oldSelection.cropTop, oldSelection.cropWidth, oldSelection.cropHeight];\n\n const diffX = newX - oldSelection.mouseStartX;\n const diffY = newY - oldSelection.mouseStartY;\n\n switch (oldSelection.cursorStart) {\n case 'ne-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n\n break;\n\n case 'nw-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + (diffY * aspect);\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n break;\n\n case 'se-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n break;\n\n case 'sw-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedWidth = oldSelection.cropWidth - diffX;\n updatedHeight = Math.floor(updatedWidth / aspect);\n break;\n\n case 'move':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n break;\n\n default:\n break;\n }\n\n /**img values only change if the image is updated */\n\n const imgBoundLeft = clamp(updatedLeft, oldSelection.imgLeft, (oldSelection.imgWidth - oldSelection.cropWidth + oldSelection.imgLeft));\n const imgBoundTop = clamp(updatedTop, oldSelection.imgTop, (oldSelection.imgHeight - oldSelection.cropHeight + oldSelection.imgTop));\n const imgBoundWidth = clamp(updatedWidth, 0, oldSelection.imgWidth);\n const imgBoundHeight = clamp(updatedHeight, 0, oldSelection.imgHeight);\n\n\n let left = imgBoundLeft;\n let top = imgBoundTop;\n let width = imgBoundWidth;\n let height = imgBoundHeight;\n\n if ((oldSelection.cursorStart !== 'move') && (imgBoundWidth === oldSelection.imgWidth)) {\n height = oldSelection.cropHeight;\n top = oldSelection.cropTop;\n }\n\n if ((oldSelection.cursorStart !== 'move') && (imgBoundHeight === oldSelection.imgHeight)) {\n width = oldSelection.cropWidth;\n left = oldSelection.cropLeft;\n }\n\n const isUpdateRequired = areDimensionsDiff(oldSelection, {left, top, height, width});\n\n return {\n left,\n top,\n width,\n height,\n isUpdateRequired,\n };\n};\n\ninterface IDrawArea {\n left: number\n top: number\n width: number\n height: number\n}\n\nconst areDimensionsDiff = (oldDimensions: ISelectedArea, newValues: IDrawArea) => {\n let isDifferent = false;\n\n if(oldDimensions.cropLeft !== newValues.left) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropTop !== newValues.top) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropHeight !== newValues.height) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropWidth !== newValues.width) {\n isDifferent = true;\n }\n\n return isDifferent;\n};\n\nexport type {\n ICursorStyles,\n IDrawArea,\n ISelectedArea,\n};\n\nexport {\n initialCropValues,\n drawImgValues,\n updateCursorStyle,\n isLeftMouseButton,\n updateCropValues,\n updateCropWithAspect,\n calculateAspectSizes,\n};","import React, { Fragment } from 'react';\nimport styled, { css } from 'styled-components';\n\nconst CropLineStyle = css`\n position: absolute;\n display: block;\n opacity: 0.1;\n`;\nconst TopLine = styled.div`\n ${CropLineStyle};\n cursor: n-resize;\n width: 100%;\n height: 5px;\n left: 0;\n top: -3px;\n`;\n\nconst RightLine = styled.div`\n ${CropLineStyle};\n cursor: e-resize;\n right: -3px;\n top: 0;\n width: 5px;\n height: 100%;\n`;\n\nconst BottomLine = styled.div`\n ${CropLineStyle}\n cursor: s-resize;\n bottom: -3px;\n height: 5px;\n width: 100%;\n left: 0;\n`;\n\nconst LeftLine = styled.div`\n ${CropLineStyle};\n cursor: w-resize;\n left: -3px;\n top: 0;\n width: 5px;\n height: 100%;\n`;\n\nconst resizeSquaresCss = css`\n position: absolute;\n width: 10px;\n height: 10px;\n border: solid 1px hsl(0, 1%, 28%);\n background-color: hsl(0, 0%, 100%);\n`;\n\nconst PointN = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n margin-left: -5px;\n left: 50%;\n ${({ isResizable }) => isResizable && css`\n cursor: n-resize;\n `};\n`;\nconst PointNW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: nw-resize;\n `};\n`;\n\nconst PointNE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: ne-resize;\n `};\n`;\nconst PointE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n margin-top: -5px;\n top: 50%;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: e-resize;\n `};\n`;\nconst PointSE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: se-resize;\n `};\n`;\nconst PointS = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: s-resize;\n `};\n`;\nconst PointSW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: sw-resize;\n `};\n`;\nconst PointW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n margin-top: -5px;\n top: 50%;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: w-resize;\n `};\n`;\n\ninterface ICropArea {\n isResizable: boolean\n hasAspectRatio: boolean\n}\n\nconst CropArea: React.FC<ICropArea> = ({\n isResizable,\n hasAspectRatio\n}) => {\n\n return (\n <Fragment>\n {(isResizable && (!hasAspectRatio)) ? (\n <Fragment>\n {/* This lines are just for cursor css */}\n <TopLine />\n <RightLine />\n <BottomLine />\n <LeftLine />\n </Fragment>)\n : null}\n\n {hasAspectRatio ? null\n : (\n <Fragment>\n <PointN data-point='cursor-n' {...{ isResizable }} />\n <PointE data-point='cursor-e' {...{ isResizable }} />\n <PointS data-point='cursor-s' {...{ isResizable }} />\n <PointW data-point='cursor-w' {...{ isResizable }} />\n </Fragment>\n )}\n\n\n <PointNW data-point='cursor-nw' {...{ isResizable }} />\n <PointNE data-point='cursor-ne' {...{ isResizable }} />\n <PointSE data-point='cursor-se' {...{ isResizable }} />\n <PointSW data-point='cursor-sw' {...{ isResizable }} />\n </Fragment>\n );\n};\n\nexport default CropArea;","import React, { useState, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport ReactDom from 'react-dom';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport Button from '../atoms/Button';\nimport ButtonWithLoading from '../atoms/ButtonWithLoading';\nimport {\n ICursorStyles,\n IDrawArea,\n ISelectedArea,\n updateCursorStyle,\n isLeftMouseButton,\n updateCropValues,\n drawImgValues,\n initialCropValues,\n updateCropWithAspect,\n} from '../../helpers/cropToolHelpers';\nimport { getImageType } from '../../helpers';\nimport CropArea from '../atoms/CropArea';\n\n// TODO: Add throttle or window.requestAnimationFrame()//\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: hsla(202, 33%, 95%, 0.51);\n -webkit-backdrop-filter: blur(5px);\n backdrop-filter: blur(5px);\n font-family: ${({ theme }) => theme.fontFamily.ui};\n z-index: 999;\n`;\n\nconst InnerContainer = styled.div`\n position: relative;\n z-index: 99;\n`;\n\nconst ToolHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 17px;\n`;\n\nconst TextGroup = styled.div`\n display: flex;\n align-items: center;\n font-size: 20px;\n font-weight: 500;\n color: ${({theme}) => theme.colors.icons.mono};\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n margin-right: 14px;\n }\n`;\n\nconst ButtonsGroup = styled.div`\n button + button {\n margin-left: 10px;\n }\n`;\n\nconst PreviewArea = styled.div<{ canvasHeight?: number, canvasWidth?: number }>`\n position: relative;\n overflow: hidden;\n height: ${({ canvasHeight }) => canvasHeight ? `${canvasHeight}px` : `462px`};\n width: ${({ canvasWidth }) => canvasWidth ? `${canvasWidth}px` : `485px`};\n border-radius: 5px;\n background-color: hsla(202, 33%, 95%, 0.8);\n background-image: repeating-linear-gradient(45deg, transparent, transparent 35px, rgba(255,255,255,.8) 35px, rgba(255,255,255,.8) 70px);\n`;\n\nconst HiddenImage = styled.img`\n display: none;\n`;\n\nconst SelectedArea = styled.div<{ cropLeft: number, cropTop: number, cropWidth: number, cropHeight: number }>`\n position: absolute;\n border: dashed 1px hsl(0, 0%, 24%);\n box-shadow: 0 0 0 9999em hsla(0, 0%, 32%, 0.75);\n ${({ cropLeft, cropTop, cropWidth, cropHeight }) => css`\n top: ${cropTop}px;\n left: ${cropLeft}px;\n width: ${cropWidth}px;\n height: ${cropHeight}px;\n `};\n cursor: move;\n`;\n\nconst viewDimensions: ISelectedArea = {\n cropLeft: 0,\n cropTop: 0,\n cropWidth: 350,\n cropHeight: 300,\n mouseStartX: 0,\n mouseStartY: 0,\n imgLeft: 0,\n imgTop: 0,\n imgWidth: 400,\n imgHeight: 400,\n cursorStart: 'default',\n isResizing: false,\n};\n\ninterface ICrop {\n title?: string\n cancelBtnTxt?: string\n cropBtnTxt?: string\n imgUrl: string\n isResizable?: boolean\n cropHeight?: number\n cropWidth?: number\n canvasHeight: number\n canvasWidth: number\n aspectRatio?: number\n onCrop?: (newFileUrl: string, fileType: string) => void\n onClose?: () => void\n onError?: (msg: string) => void\n}\n\nconst CropTool: React.FC<ICrop> = ({\n title = 'Crop Image',\n cancelBtnTxt = 'Cancel',\n cropBtnTxt = 'Crop & Save',\n isResizable = true,\n cropHeight = 300,\n cropWidth = 350,\n canvasHeight = 400,\n canvasWidth = 450,\n aspectRatio,\n imgUrl,\n onCrop,\n onClose = () => { },\n onError = () => { }\n}) => {\n\n const [isLoading, setIsLoading] = useState(false);\n const [_loadDimensions, setLoadDimensions] = useState(viewDimensions);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const cropRef = useRef<HTMLDivElement | null>(null);\n\n const drawImgOnCanvas = useCallback(() => {\n if (!canvasRef || !imgRef) { return; }\n const newImage = imgRef.current;\n if (!newImage) {\n onError('error loading image');\n return;\n }\n const canvas = canvasRef.current;\n if (!canvas) {\n onError('error loading canvas');\n return;\n }\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n onError('error drawing image');\n return;\n }\n\n const newImgDraw = drawImgValues(newImage, canvasHeight, canvasWidth);\n ctx?.drawImage(newImage, newImgDraw.left, newImgDraw.top, newImgDraw.width, newImgDraw.height);\n const newCrop: IDrawArea = initialCropValues(\n cropWidth,\n cropHeight,\n canvasWidth,\n canvasHeight,\n newImgDraw.width,\n newImgDraw.height,\n aspectRatio\n );\n // triggers a render to repaint canvas\n setLoadDimensions((prevState) =>\n ({\n ...prevState,\n cropLeft: newCrop.left,\n cropTop: newCrop.top,\n cropWidth: newCrop.width,\n cropHeight: newCrop.height,\n imgLeft: newImgDraw.left,\n imgTop: newImgDraw.top,\n imgWidth: newImgDraw.width,\n imgHeight: newImgDraw.height,\n })\n );\n\n viewDimensions.cropLeft = newCrop.left;\n viewDimensions.cropTop = newCrop.top;\n viewDimensions.cropWidth = newCrop.width;\n viewDimensions.cropHeight = newCrop.height;\n viewDimensions.imgLeft = newImgDraw.left;\n viewDimensions.imgTop = newImgDraw.top;\n viewDimensions.imgWidth = newImgDraw.width;\n viewDimensions.imgHeight = newImgDraw.height;\n viewDimensions.cursorStart = 'default';\n viewDimensions.isResizing = false;\n setIsLoading(false);\n }, [aspectRatio, canvasHeight, canvasWidth, cropHeight, cropWidth, onError]);\n\n // Mouse handlers //\n const handleCrop = useCallback(async (cropArea: IDrawArea) => {\n setIsLoading(true);\n if (!canvasRef || !canvasRef.current || !imgRef) { return; }\n\n const newImage = imgRef.current;\n if (!newImage) { return; }\n\n const canvas = canvasRef.current;\n if (!canvas) { return; }\n\n const ctx = canvas.getContext(\"2d\");\n // ctx.imageSmoothingEnabled = false; </// not sure required\n const cropImageData = ctx?.getImageData(cropArea.left, cropArea.top, cropArea.width, cropArea.height);\n if (!cropImageData) { return; }\n\n const canvasCropped = document.createElement('canvas');\n const cropContext = canvasCropped.getContext('2d');\n canvasCropped.width = cropArea.width;\n canvasCropped.height = cropArea.height;\n\n cropContext?.putImageData(cropImageData, 0, 0);\n const imgType = getImageType(newImage);\n const newImgUrl = canvasCropped.toDataURL(imgType);\n if (onCrop) {\n onCrop(newImgUrl, imgType);\n }\n }, [onCrop]);\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!cropRef) { return; }\n if (!isLeftMouseButton(e)) { return; }\n\n const rect = cropRef.current?.getBoundingClientRect();\n if (!rect) { return; }\n const { left, top, width, height } = rect;\n const [posX, posY] = [e.clientX, e.clientY];\n let newCursorStyle: ICursorStyles;\n if (!isResizable) {\n newCursorStyle = 'move';\n } else {\n newCursorStyle = updateCursorStyle(left, top, width, height, posX, posY);\n }\n\n viewDimensions.mouseStartX = posX;\n viewDimensions.mouseStartY = posY;\n viewDimensions.cursorStart = newCursorStyle;\n viewDimensions.isResizing = true;\n }, [isResizable]);\n\n const handleMouseUp = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!viewDimensions.isResizing) { return; }\n viewDimensions.isResizing = false;\n }, []);\n\n const updateSelect = useCallback((left, top, width, height) => {\n if (!cropRef.current) { return; }\n cropRef.current.style.left = `${left}px`;\n cropRef.current.style.top = `${top}px`;\n cropRef.current.style.width = `${width}px`;\n cropRef.current.style.height = `${height}px`;\n\n }, []);\n\n const handleMouseMove = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!cropRef) { return; }\n if (!viewDimensions.isResizing) { return; }\n\n const rect = cropRef.current?.getBoundingClientRect();\n if (!rect) { return; }\n\n const [posX, posY] = [e.clientX, e.clientY];\n const newDimensions = aspectRatio\n ? updateCropWithAspect(viewDimensions, posX, posY, aspectRatio)\n : updateCropValues(viewDimensions, posX, posY);\n\n if (!newDimensions.isUpdateRequired) { return; }\n\n viewDimensions.cropTop = newDimensions.top;\n viewDimensions.cropLeft = newDimensions.left;\n viewDimensions.cropWidth = newDimensions.width;\n viewDimensions.cropHeight = newDimensions.height;\n viewDimensions.mouseStartX = posX;\n viewDimensions.mouseStartY = posY;\n\n updateSelect(viewDimensions.cropLeft,\n viewDimensions.cropTop,\n viewDimensions.cropWidth,\n viewDimensions.cropHeight);\n\n }, [aspectRatio, updateSelect]);\n\n const handleOnMouseLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!viewDimensions.isResizing) { return; }\n viewDimensions.isResizing = false;\n }, []);\n //End of Mouse handlers//\n\n return (\n ReactDom.createPortal(\n <Container>\n <InnerContainer>\n <ToolHeader>\n <TextGroup>\n <Icon icon='Crop' size={20} color='mono' />\n {title}\n </TextGroup>\n <ButtonsGroup>\n <Button\n design='secondary'\n size='small'\n onClick={onClose}\n >\n {cancelBtnTxt}\n </Button>\n <ButtonWithLoading\n loading={isLoading}\n size='small'\n onClick={() => handleCrop({\n left: viewDimensions.cropLeft,\n top: viewDimensions.cropTop,\n width: viewDimensions.cropWidth,\n height: viewDimensions.cropHeight\n })}\n > {cropBtnTxt}\n </ButtonWithLoading>\n </ButtonsGroup>\n </ToolHeader>\n <PreviewArea\n canvasHeight={canvasHeight}\n canvasWidth={canvasWidth}\n onMouseUp={handleMouseUp}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleOnMouseLeave}\n >\n <HiddenImage ref={imgRef} src={imgUrl} onLoad={drawImgOnCanvas} crossOrigin='anonymous' />\n <canvas\n ref={canvasRef}\n width={`${canvasWidth}px`}\n height={`${canvasHeight}px`}\n />\n <SelectedArea\n ref={cropRef}\n onMouseDown={handleMouseDown}\n {...{\n cropLeft: viewDimensions.cropLeft,\n cropTop: viewDimensions.cropTop,\n cropWidth: viewDimensions.cropWidth,\n cropHeight: viewDimensions.cropHeight,\n isResizing: viewDimensions.isResizing,\n }}\n >\n <CropArea\n {...{ isResizable }}\n hasAspectRatio={aspectRatio ? true : false}\n />\n </SelectedArea>\n </PreviewArea>\n </InnerContainer>\n </Container>, document.body)\n );\n};\n\nexport default CropTool;","import React, { useState, useCallback, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport InputFileButton from '../atoms/InputFileButton';\nimport ButtonWithIcon from '../atoms/ButtonWithIcon';\nimport DropArea from '../atoms/DropArea';\nimport CropTool from '../molecules/CropTool';\nimport { AvatarPlaceholder } from '../../svg';\nimport Label from '../atoms/Label';\nimport { isValidImage } from '../../helpers';\n\n/** TODO update to useReduce for better state management*/\n\nconst CROP_HEIGHT_AREA = 500;\nconst CROP_WIDTH_AREA = 475;\nconst CANVAS_HEIGHT = 490;\nconst CANVAS_WIDTH = 460;\n\n// 0.95\nconst ratio = Math.round((CROP_WIDTH_AREA / CROP_HEIGHT_AREA) * 100) / 100;\n\nconst PHOTO_HEIGHT = `150px`;\nconst PHOTO_WIDTH = `142px`;\n\nconst Container = styled.div`\n position: relative;\n width: ${PHOTO_WIDTH};\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n button {\n width: 100%;\n }\n`;\n\nconst PreviewImageGroup = styled.div`\n position: relative;\n margin-bottom: 17px;\n height: ${PHOTO_HEIGHT};\n width: ${PHOTO_WIDTH};\n`;\n\nconst PhotoContainerStyle = css`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n background-color: hsl(0, 0%, 90%);\n`;\nconst PreviewImage = styled.img`\n ${PhotoContainerStyle}\n object-fit: cover;\n`;\n\nconst PlaceholderText = styled.div`\n color: hsl(207, 5%, 57%);\n font-size: 14px;\n`;\n\nconst NoPhoto = styled.div`\n ${PhotoContainerStyle}\n padding-top: 15px;\n ${PlaceholderText} {\n margin-top: 18px;\n }\n`;\n\nconst StyledInputFileButton = styled(InputFileButton)`\n width: 100%;\n`;\n\nconst ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n button {\n margin-bottom: 10px;\n }\n\n`;\n\ninterface IAvatar {\n title?: string\n photoText?: string\n buttonText?: string\n buttonTextReplace?: string\n cropToolTitle?: string\n cropToolCancelTxt?: string\n cropToolConfirmTxt?: string\n uploaderCropText?: string\n deletePhotoText?: string\n currentImg?: string\n hasCrop?: boolean\n onAvatarUpdate?: (imgFile: File) => void\n onError?: (msg: string) => void\n onRemove?: () => void\n}\n\nconst AvatarUploader: React.FC<IAvatar> = ({\n title = 'Photograph',\n photoText = 'Drop Photo',\n buttonText = 'Select File',\n buttonTextReplace = 'Replace Photo',\n uploaderCropText = 'Crop Image',\n deletePhotoText = 'Remove',\n cropToolTitle,\n cropToolCancelTxt,\n cropToolConfirmTxt,\n currentImg,\n hasCrop = true,\n onAvatarUpdate = () => { },\n onError = () => { },\n onRemove = () => { }\n}) => {\n\n const [avatarImg, setAvatarImg] = useState(currentImg);\n const [cropImg, setCropImg] = useState('');\n const [isCropOpen, setIsCropOpen] = useState(false);\n\n const handleCrop = useCallback(async (newFileUrl: string, fileType: string) => {\n setAvatarImg(newFileUrl);\n const newFile = await fetch(\n newFileUrl).then(r => r.blob()).then(blobFile => new File([blobFile], \"newAvatar\", { type: fileType })\n );\n\n onAvatarUpdate(newFile);\n\n setIsCropOpen(false);\n }, [onAvatarUpdate]);\n\n const handleCropClose = useCallback(() => {\n setIsCropOpen(false);\n setCropImg('');\n URL.revokeObjectURL(cropImg);\n }, [cropImg]);\n\n const handleFileUpload = useCallback((newFiles: FileList) => {\n if (newFiles.length === 1) {\n if (!isValidImage(newFiles[0])) {\n onError('Please upload only jpeg and png file');\n return;\n }\n const prevImg = URL.createObjectURL(newFiles[0]);\n\n if (hasCrop) {\n setCropImg(prevImg);\n setIsCropOpen(true);\n } else {\n onAvatarUpdate(newFiles[0]);\n setAvatarImg(prevImg);\n }\n\n } else {\n onError('Drop only one file');\n }\n }, [hasCrop, onError, onAvatarUpdate]);\n\n const handleEdit = useCallback((fileUrl: string) => {\n setCropImg(fileUrl);\n setIsCropOpen(true);\n }, []);\n\n useEffect(() => {\n setAvatarImg(currentImg);\n return () => {\n setAvatarImg('');\n };\n }, [currentImg]);\n\n const handleRemove = useCallback(() => {\n setAvatarImg('');\n onRemove();\n }, [onRemove]);\n\n return (\n <Container>\n <Label labelText={title} htmlFor='avatar-upload' />\n <PreviewImageGroup>\n {avatarImg\n ? <PreviewImage src={avatarImg} alt='avatar image' crossOrigin='anonymous' />\n : (\n <NoPhoto>\n <AvatarPlaceholder />\n <PlaceholderText>{photoText}</PlaceholderText>\n </NoPhoto>\n )}\n {((currentImg && (!hasCrop)) || !currentImg) && <DropArea height={PHOTO_HEIGHT} dropCallback={handleFileUpload} />}\n </PreviewImageGroup>\n {avatarImg\n ? (\n <ButtonsWrapper>\n {hasCrop\n ? <ButtonWithIcon icon='Crop' design='secondary' position='left' size='small' onClick={() => handleEdit(avatarImg)}>{uploaderCropText}</ButtonWithIcon>\n : <StyledInputFileButton\n id='avatar-upload'\n text={buttonTextReplace}\n buttonSize='small'\n buttonDesign='secondary'\n accept='image/*'\n inputCallback={handleFileUpload}\n />}\n <ButtonWithIcon icon='Delete' design='secondary' position='left' size='small' onClick={handleRemove}>{deletePhotoText}</ButtonWithIcon>\n </ButtonsWrapper>\n )\n : <StyledInputFileButton\n id='avatar-upload'\n text={buttonText}\n buttonSize='small'\n accept='image/*'\n inputCallback={handleFileUpload}\n />}\n {isCropOpen && hasCrop\n ? <CropTool\n imgUrl={cropImg}\n onCrop={handleCrop}\n onClose={handleCropClose}\n onError={onError}\n canvasHeight={CANVAS_HEIGHT}\n canvasWidth={CANVAS_WIDTH}\n cropHeight={CROP_WIDTH_AREA}\n cropWidth={CROP_HEIGHT_AREA}\n aspectRatio={ratio}\n title={cropToolTitle}\n cancelBtnTxt={cropToolCancelTxt}\n cropBtnTxt={cropToolConfirmTxt}\n isResizable\n />\n : null}\n </Container>\n );\n};\n\nexport default AvatarUploader;","import React, {Fragment} from 'react';\nimport styled from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 27px;\n ${IconWrapper} {\n display: flex;\n align-items: center;\n }\n`;\n\nconst PlusIcon = styled(Icon)``;\n\nconst PlusIconWrapper = styled.div`\n margin: 0 30px;\n ${IconWrapper}{\n transform: rotate(45deg);\n [stroke]{\n stroke: hsl(205, 22%, 66%);\n }\n }\n`;\n\ninterface IBigIconsSummary {\n icons: string[]\n color?: ISvgIcons['color']\n size?: number,\n weight?: 'light' | 'regular' | 'heavy' | 'strong'\n}\n\nconst BigIconsSummary: React.FC<IBigIconsSummary> = ({\n icons,\n color = 'dimmed',\n size = 72,\n weight='light',\n ...props\n}) => {\n return (\n <Container {...props}>\n {icons.map((icon, index) => {\n return (\n <Fragment key={`type-upload-${icon}}`}>\n {(index !== 0) && <PlusIconWrapper><PlusIcon icon='CloseCompact' size={22} /></PlusIconWrapper>}\n <Icon icon={icon} {...{color, size, weight}} />\n </Fragment>\n );\n })}\n </Container>\n );\n};\n\nexport default BigIconsSummary;","import React, { Fragment, ReactElement, useCallback, useState } from 'react';\nimport styled from 'styled-components';\nimport BigIconsSummary from '../../Misc/atoms/BigIconsSummary';\nimport DropArea from '../atoms/DropArea';\nimport InputFileButton from '../atoms/InputFileButton';\n\nconst Container = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n`;\n\nconst StyledDropArea = styled(DropArea)`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n`;\n\nconst InputButtonWrapper = styled.div`\n z-index: 99;\n margin-top: 20px;\n`;\n\nconst FilesUploadGroup = styled.div<{ height?: string, hasFiles: boolean }>`\n padding: ${({ hasFiles }) => hasFiles ? '26px 0 20px 0' : '65px 0 42px 0'};\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: 5px;\n position: relative;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst Title = styled.div`\n color: hsl(208, 8%, 38%);\n font-size: 20px;\n`;\n\nconst Description = styled.div`\n font-size: 14px;\n line-height: 2.14;\n text-align: center;\n color: hsl(207, 5%, 57%);\n margin-top: 10px;\n max-width: 386px;\n`;\n\nconst getUpdateFiles = (newFiles: FileList, files: FileList | null, allowedFileTypes?: string[]): IUploadedFiles => {\n\n // creates a newFiles variable to prevent errors with input\n const newFilesTransfer = new DataTransfer();\n const rejectedFilesTransfer = new DataTransfer();\n\n for (let index = 0; index < newFiles.length; index++) {\n\n const isCorrectType = (allowedFileTypes === undefined) || (allowedFileTypes.length === 0) ? true : allowedFileTypes.includes(newFiles[index].type);\n if (isCorrectType) {\n newFilesTransfer.items.add(newFiles[index]);\n } else {\n rejectedFilesTransfer.items.add(newFiles[index]);\n }\n }\n\n if (files === null) {\n const result: IUploadedFiles = { goodFiles: newFilesTransfer.files, rejectedFiles: rejectedFilesTransfer.files };\n return result;\n }\n\n const updatedFilesTransfer = new DataTransfer();\n const fileNamesSet = new Set();\n\n for (let index = 0; index < files.length; index++) {\n updatedFilesTransfer.items.add(files[index]);\n const name = files[index].name;\n fileNamesSet.add(name);\n }\n\n for (let index = 0; index < newFilesTransfer.files.length; index++) {\n\n const isAlready = fileNamesSet.has(newFilesTransfer.files[index].name);\n const isCorrectType = (allowedFileTypes === undefined) || (allowedFileTypes.length === 0) ? true : allowedFileTypes.includes(newFiles[index].type);\n\n if (isAlready || !isCorrectType) {\n rejectedFilesTransfer.items.add(newFiles[index]);\n } else {\n updatedFilesTransfer.items.add(newFilesTransfer.files[index]);\n }\n }\n const result: IUploadedFiles = { goodFiles: updatedFilesTransfer.files, rejectedFiles: rejectedFilesTransfer.files };\n\n return result;\n};\n\ninterface IUploadedFiles {\n goodFiles: FileList\n rejectedFiles: FileList\n}\n\ninterface IAreaUploaderManager {\n title?: string\n description?: string\n fileIcons?: string[]\n selectFilesText?: string\n addMoreFilesText?: string\n allowedFileTypes?: string[]\n customComponent?: ReactElement\n onChangeCallback?: (goodFiles: FileList, rejectedFiles: FileList) => void\n}\n\nconst AreaUploadManager: React.FC<IAreaUploaderManager> = ({\n title = 'Select Files',\n description,\n fileIcons,\n selectFilesText = 'Select Files',\n addMoreFilesText = 'Add More Files',\n allowedFileTypes,\n customComponent,\n onChangeCallback = () => { },\n}) => {\n\n const [files, setFiles] = useState<FileList | null>(null);\n\n const handleFiles = useCallback((newFiles: FileList) => {\n console.log('files received', newFiles);\n\n if (newFiles === null) {\n return;\n }\n const { goodFiles, rejectedFiles } = getUpdateFiles(newFiles, files, allowedFileTypes);\n setFiles(goodFiles);\n onChangeCallback(goodFiles, rejectedFiles);\n\n }, [files, allowedFileTypes, onChangeCallback]);\n\n return (\n <Container>\n <FilesUploadGroup hasFiles={files !== null}>\n <StyledDropArea dropCallback={handleFiles} />\n {\n customComponent\n ? customComponent\n : (\n <Fragment>\n {fileIcons && <BigIconsSummary icons={fileIcons} />}\n <Title>{title}</Title>\n {files === null && <Description>{description}</Description>}\n </Fragment>\n )\n }\n\n <InputButtonWrapper>\n <InputFileButton\n buttonSize='small'\n text={files !== null ? addMoreFilesText : selectFilesText}\n inputCallback={handleFiles}\n multiple\n buttonDesign={files !== null ? 'secondary' : 'primary'}\n />\n </InputButtonWrapper>\n </FilesUploadGroup>\n </Container>\n );\n};\n\nexport default AreaUploadManager;","import React, { FormHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { StyledLabel } from './atoms/Label';\n\nconst FormContainer = styled.form<{spacing: string}>`\n ${({spacing})=> spacing && css`\n & > ${StyledLabel} {\n margin-bottom: ${spacing};\n }\n `}\n`;\n\ninterface OwnProps {\n spacing?: string;\n}\n\ntype Props = OwnProps & FormHTMLAttributes<HTMLFormElement>\n\nconst Form : React.FC<Props> = ({ children, spacing = '45px;' ,...props }) => {\n return (\n <FormContainer spacing={spacing} {...props}>\n {children}\n </FormContainer>\n );\n};\n\nexport default Form;","import React, { useCallback, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {endOfDay, format,isEqual,min,set } from 'date-fns';\n\nimport Icon from '../../Icons/Icon';\n\nconst Container = styled.div<{hide:boolean}>`\n display: flex;\n flex-direction: column;\n\n ${({hide}) => hide && css`\n display: none;\n `}\n`;\n\nconst Label = styled.label`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${({theme})=> theme.typography.filters.datepicker.metaHeader.default};\n `}\n padding: 12px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n\n // ${({theme})=> theme.typography.filters.datepicker.metaHeader.active};\n\n`;\n\nconst Item = styled.div`\n padding: 12px;\n display: flex;\n justify-content: left;\n`;\n\nconst IconWrap = styled.div`\n flex: 0 0 40px;\n padding-top: 2px;\n`;\n\nconst Input = styled.input<{ readOnly? : boolean }>`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.data};\n background-color: ${theme.styles.form.input.default.normal.backgroundColor};\n `}\n\n ${({theme})=> theme.typography.filters.value};\n\n width: 100%;\n border: none;\n border: transparent 1px solid;\n outline: none;\n flex: 1;\n justify-content: space-between;\n border-radius: 3px;\n\n &:focus, &:hover {\n border-color: blue;\n }\n\n ${({readOnly}) => readOnly && css`\n border-color: transparent;\n `}\n`;\n\nconst TimeColon = styled.div`\n flex: 0 0 20px;\n`;\n\nconst InputWrap = styled.div`\n display: flex;\n flex: 1;\n box-sizing: border-box;\n border-radius: 3px;\n\n &:focus-within {\n\n background: ${({theme}) => theme.colors.menu.passive};\n box-shadow: 0px 0px 0px 5px ${({theme}) => theme.colors.menu.passive};\n\n ${Input} {\n border-color: ${({theme}) => theme.colors.divider};\n }\n\n ${TimeColon}{\n color: ${({theme}) => theme.colors.pureTop};\n text-align: center;\n }\n }\n`;\n\n\n\ninterface IProps {\n title: string\n hasDate: boolean\n hasTime: boolean\n date?: Date\n setDateCallback?: (date: Date) => void\n setTimeCallback?: (date: Date) => void\n allowAfterMidnight?: boolean,\n}\n\nconst DateTimeBlock : React.FC<IProps> = ({\n allowAfterMidnight = false,\n title,\n hasDate,\n hasTime,\n date = new Date(),\n setDateCallback = ()=>{},\n}) => {\n\n\n const [displayHours, setDisplayHours] = useState<string>(format(date, \"mm\"));\n const [displayMinutes, setDisplayMinutes] = useState<string>(format(date,'HH'));\n\n const setDateHours = useCallback(({target: {value}}: React.ChangeEvent<HTMLInputElement>) => {\n setDateCallback(\n min([\n endOfDay(date),\n set(date, {\n hours: Number(value),\n minutes: Number(displayMinutes),\n seconds: 0,\n milliseconds: 0\n })\n ])\n );\n }, [date, displayMinutes, setDateCallback]);\n\n const setDateMinutes = useCallback(({target: {value}}: React.ChangeEvent<HTMLInputElement>) => {\n setDateCallback(\n min([\n endOfDay(date),\n set(date, {\n hours: displayHours === '24' ? 23 : Number(displayHours),\n minutes: Number(value) % 60,\n seconds: 0,\n milliseconds: 0\n })\n ])\n );\n }, [date, displayHours, setDateCallback]);\n\n useEffect(()=>{\n if(allowAfterMidnight && isEqual(date, endOfDay(date))){\n setDisplayHours('24');\n setDisplayMinutes('00');\n } else {\n setDisplayMinutes(format(date, 'mm'));\n setDisplayHours(format(date,'HH'));\n }\n },[date, allowAfterMidnight]);\n\n return (\n <Container hide={!hasDate && !hasTime}>\n <Label>{title}</Label>\n\n {hasDate && (\n <Item>\n <IconWrap>\n <Icon icon='Date' color='dimmed' size={14} weight='light' />\n </IconWrap>\n <InputWrap>\n <Input type='text' readOnly value={format(date, \"yyyy/MM/dd\")} />\n </InputWrap>\n </Item>\n )}\n\n {hasTime && (\n <Item>\n <IconWrap>\n <Icon icon='Time' color='dimmed' size={14} weight='light' />\n </IconWrap>\n <InputWrap>\n <Input name='hours' type='number' min='0' max={allowAfterMidnight ? 24: 23} value={displayHours} onChange={setDateHours} />\n <TimeColon>:</TimeColon>\n <Input name='minutes' type='number' min='0' max='59' value={displayMinutes} onChange={setDateMinutes} />\n </InputWrap>\n </Item>\n )}\n\n </Container>\n );\n};\n\n\n\nexport default DateTimeBlock;\n\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon from '../../Icons/Icon';\nimport DateTimeBlock from '../atoms/DateTimeBlock';\n\nimport { format, startOfMonth, endOfMonth, eachDayOfInterval, isAfter, eachWeekOfInterval, addMonths, endOfWeek, intervalToDuration, isSameMonth, isSameDay, isToday, startOfDay, endOfDay, isWithinInterval, add, set } from 'date-fns';\nimport { ja, enUS } from 'date-fns/locale';\n\n/**\n * Convert a single days duration to an interval.\n * @param day The day to convert to an interval\n */\n\nconst initializeInterval = (day: Date): DateInterval => {\n return {\n start: set(day, { seconds: 0, milliseconds: 0 }),\n end: endOfDay(day)\n };\n};\n\nconst TODAY = new Date();\nconst TODAY_INTERVAL: DateInterval = initializeInterval(startOfDay(new Date()));\n\ntype CellStates = \"off\" | \"single\" | \"start\" | \"end\" | \"inside\" | \"hover\" | \"insideHover\";\ntype DateMode = \"single\" | \"interval\";\ntype TimeMode = \"off\" | \"single\" | \"interval\";\n\n// interface TimeProperties {\n// hours: number\n// minutes: number\n// seconds: number\n// milliseconds: number\n// }\n\n// interface TimeRange {\n// start: TimeProperties\n// end: TimeProperties\n// }\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst DateTimeArea = styled.div`\n border-right: ${({ theme }) => theme.colors.divider} 1px solid;\n width: 170px;\n display: flex;\n flex-direction: column;\n`;\n\nconst TimeZoneOption = styled.div`\n border-top: ${({ theme }) => theme.colors.divider} 1px solid;\n margin-top: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px;\n box-sizing: border-box;\n`;\n\nconst TimeZoneLabel = styled.div`\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.filters.subOption.label};\n `}\n\n`;\nconst TimeZoneValue = styled.div`\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.data};\n ${theme.typography.filters.subOption.value};\n `}\n`;\n\nconst CalendarArea = styled.div`\n user-select: none;\n`;\n\nconst CalendarHeader = styled.div`\n display: flex;\n height: 70px;\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n text-align: center;\n`;\n\nconst CurrentMonth = styled.div`\n flex: 1;\n flex-direction: column;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ theme }) => theme.typography.filters.datepicker.focusedMonth};\n span {\n display: block;\n flex: 0;\n ${({ theme }) => theme.typography.filters.datepicker.focusedYear};\n }\n`;\n\nconst IconWrap = styled.div``;\n\nconst PaginateMonth = styled.button`\n cursor: pointer;\n flex: 0 0 90px;\n\n border: none;\n background: transparent;\n outline: none;\n\n ${({ theme }) => theme.typography.filters.datepicker.monthLink.default};\n\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n &:hover {\n background: transparent;\n ${({ theme }) => css`\n background: ${theme.colors.menu.active};\n ${theme.typography.filters.datepicker.monthLink.hover}\n `};\n\n ${IconWrap}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.pureBase};\n }\n }\n }\n\n`;\n\nconst CalBody = styled.div`\n padding: 5px 0;\n`;\n\nconst CalRow = styled.div`\n display: grid;\n grid-template-columns: repeat(7, 40px);\n height: 40px;\n box-sizing: border-box;\n\n padding: 0 10px;\n`;\n\nconst CalHRow = styled(CalRow)`\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n`;\n\nconst CalCell = styled.div`\n\n display: flex;\n text-align: center;\n justify-content: center;\n align-items: center;\n\n border-radius: 5px;\n ${({ theme }) => theme.typography.filters.datepicker.calendar.default};\n\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.data};\n `}\n\n`;\n\nconst CalHCell = styled(CalCell)`\n ${({ theme }) => theme.typography.filters.datepicker.calendar.header};\n`;\n\nconst CalCellB = styled(CalCell) <{ thisMonth?: boolean, isToday?: boolean, state?: CellStates }>`\n cursor: pointer;\n position: relative;\n\n ${({ thisMonth }) => !thisMonth && css`\n ${({ theme }) => theme.typography.filters.datepicker.calendar.otherMonth};\n `}\n\n ${({ isToday }) => isToday && css`\n border: 2px solid ${({ theme }) => theme.colors.menu.passive};\n `}\n\n ${({ state, theme }) => (state === 'single' || state === 'start' || state === 'end') && css`\n background: ${theme.colors.menu.active};\n ${theme.typography.filters.datepicker.calendar.active};\n `}\n\n ${({ state }) => (state === 'start') && css`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n `}\n\n ${({ state }) => (state === 'end') && css`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n `}\n\n ${({ state }) => (state === 'insideHover') && css`\n background: ${({ theme }) => theme.colors.divider} !important;\n `}\n\n ${({ state }) => (state === 'inside') && css`\n background: ${({ theme }) => theme.colors.menu.passive};\n border-radius: 0;\n opacity: 1;\n\n &:nth-child(7n+1), &:nth-child(7n){\n &::after {\n background: ${({ theme }) => theme.colors.menu.passive};\n display: block;\n content: '';\n position: absolute;\n left: -10px;\n width: 10px;\n top: 0;\n height: 40px;\n }\n }\n\n &:nth-child(7n)::after {\n left: auto;\n right: -10px;\n }\n `}\n\n`;\n\nconst enDayGuide: string[] = [\n \"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"\n];\n\nconst jpDayGuide: string[] = ['日', '月', '火', '水', '木', '金', '土'];\n\nexport const isDateInterval = (value: any): value is DateInterval => {\n if (value === null || value === undefined) {\n return false;\n }\n\n if (value.start === null || value.start === undefined) {\n return false;\n }\n\n if (value.end === null || value.end === undefined) {\n return false;\n }\n\n return (value.start instanceof Date) && (value.end instanceof Date);\n};\n\nexport interface DateInterval {\n start: Date;\n end: Date;\n}\nexport interface IDatePicker {\n initialValue?: Date | DateInterval\n dateMode?: DateMode\n timeMode?: TimeMode\n hasEmptyValue?: boolean\n dateTimeTextUpper?: string\n dateTimeTextLower?: string\n timeZoneTitle?: string\n timeZoneValueTitle?: string\n updateCallback?: (data: DateInterval | Date) => void\n lang?: 'en' | 'ja'\n}\n\nconst DatePicker: React.FC<IDatePicker> = ({\n dateMode = 'interval',\n timeMode = 'interval',\n dateTimeTextUpper = 'From',\n dateTimeTextLower = 'To',\n timeZoneTitle = 'Timezone',\n timeZoneValueTitle = 'JST',\n hasEmptyValue = false,\n updateCallback = () => { },\n initialValue,\n lang = 'en'\n}) => {\n\n // TODO: Have a function to output tidied up data for the configuration.\n\n const [selectedRange, setSelectedRange] = useState<DateInterval | null>(getInitialValue(hasEmptyValue, initialValue));\n const [focusedMonth, setFocusedMonth] = useState(selectedRange === null ? TODAY : selectedRange.start);\n const [targetedDate, setTargetedDate] = useState<'start' | 'end' | 'done'>('start');\n const [weeksOfMonth, setWeeksOfMonth] = useState<Date[]>([]);\n const isInitialMount = useRef(true);\n\n const dayGuide = lang === 'ja' ? jpDayGuide : enDayGuide;\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else {\n const now = new Date();\n setSelectedRange(initializeInterval(startOfDay(now)));\n setFocusedMonth(now);\n }\n\n }, [dateMode, timeMode]);\n\n useEffect(() => {\n setWeeksOfMonth(eachWeekOfInterval({\n start: startOfMonth(focusedMonth),\n end: endOfMonth(focusedMonth)\n }));\n }, [focusedMonth]);\n\n useEffect(() => {\n if (selectedRange !== null) {\n updateCallback((dateMode === 'interval' || timeMode === 'interval') ? selectedRange : selectedRange.start);\n }\n }, [dateMode, selectedRange, timeMode, updateCallback]);\n\n /**\n * Handler for updating picked dates when a calendar day has been selected.\n * @param day The day of the cell that has been clicked / actioned.\n */\n const onCellClick = useCallback((day: Date) => {\n\n // The first click will initialize the range when empty is valid\n const validRange = selectedRange ? selectedRange : TODAY_INTERVAL;\n\n if (dateMode === 'single') {\n\n // === Single Mode ===\n const start = updateDay(validRange.start, day);\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n start,\n end\n });\n } else {\n\n // === Interval Mode ===\n // Setting the interval end (assuming it's later than the start).\n if (targetedDate === 'end' && isAfter(day, validRange.start)) {\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n ...validRange,\n end\n });\n\n setTargetedDate('done');\n\n // For first interaction || setting the end date correctly || if completed and restarting.\n } else if (targetedDate === 'start' || targetedDate === 'end' || targetedDate === 'done') {\n\n const start = updateDay(validRange.start, day);\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n start,\n end\n });\n setTargetedDate('end');\n\n }\n }\n }, [dateMode, selectedRange, targetedDate]);\n\n\n const updateStartDate = useCallback((start: Date) => {\n const { end } = selectedRange ? selectedRange : TODAY_INTERVAL;\n if (isAfter(add(start, { minutes: 1 }), end)) return;\n setSelectedRange({ start, end });\n }, [selectedRange]);\n\n const updateEndDate = useCallback((end: Date) => {\n const { start } = selectedRange ? selectedRange : TODAY_INTERVAL;\n if (isAfter(add(start, { minutes: 1 }), end)) return;\n setSelectedRange({ start, end });\n }, [selectedRange]);\n\n return (\n <Container>\n\n <DateTimeArea>\n <DateTimeBlock title={dateTimeTextUpper} hasDate hasTime={timeMode !== 'off'} date={selectedRange ? selectedRange.start : TODAY_INTERVAL.start} setDateCallback={updateStartDate} />\n <DateTimeBlock title={dateTimeTextLower} hasDate={dateMode === 'interval'} hasTime={timeMode === 'interval'} date={selectedRange ? selectedRange.end : TODAY_INTERVAL.end} allowAfterMidnight setDateCallback={updateEndDate} />\n\n <TimeZoneOption>\n <TimeZoneLabel>{timeZoneTitle}</TimeZoneLabel>\n <TimeZoneValue>{timeZoneValueTitle}</TimeZoneValue>\n </TimeZoneOption>\n\n </DateTimeArea>\n\n <CalendarArea>\n <CalendarHeader>\n\n <PaginateMonth type='button' onClick={() => setFocusedMonth(addMonths(focusedMonth, -1))}>\n <IconWrap><Icon icon='Left' color='dimmed' size={10} /></IconWrap>\n {format(addMonths(focusedMonth, -1), \"MMM\", { locale: lang === 'ja' ? ja : enUS })}\n </PaginateMonth>\n\n <CurrentMonth>\n <span>{format(focusedMonth, \"yyyy\")}</span>\n {format(focusedMonth, \"MMMM\", { locale: lang === 'ja' ? ja : enUS })}\n </CurrentMonth>\n\n <PaginateMonth type='button' onClick={() => setFocusedMonth(addMonths(focusedMonth, 1))}>\n {format(addMonths(focusedMonth, 1), \"MMM\", { locale: lang === 'ja' ? ja : enUS })}\n <IconWrap><Icon icon='Right' color='dimmed' size={10} /></IconWrap>\n </PaginateMonth>\n\n </CalendarHeader>\n\n <CalHRow>\n {dayGuide.map((day, index) => {\n return <CalHCell key={index}>{day}</CalHCell>;\n })}\n </CalHRow>\n\n <CalBody>\n {weeksOfMonth.map((week, index) => {\n const days = eachDayOfInterval({\n start: week,\n end: endOfWeek(week)\n });\n\n return (\n <CalRow key={index}>\n {days.map((day, index) => {\n return <CalCellB key={index} onClick={() => onCellClick(day)} state={cellState(day, selectedRange)} thisMonth={isSameMonth(day, focusedMonth)} isToday={isToday(day)}>{format(day, \"d\")}</CalCellB>;\n })}\n </CalRow>\n );\n })}\n </CalBody>\n\n </CalendarArea>\n\n\n </Container>\n );\n\n};\n\nexport default DatePicker;\n\n/**\n * Used to work out the state of the calendar cell in regards to selection or position in\n * the date range.\n * @param day Date - The date of the cell in the calendar.\n * @param interval Interval - The date range that is active in the calendar.\n */\nconst cellState = (day: Date, interval: Interval | null, _hoverDate?: Date): CellStates => {\n\n let state: CellStates = \"off\";\n let isInsideInterval = false;\n\n if (interval === null) {\n return state;\n }\n\n const singleDayRange: boolean = intervalToDuration(interval).days === 0;\n\n try {\n isInsideInterval = isWithinInterval(day, interval);\n } catch (error) {\n isInsideInterval = false;\n console.log('wrong interval in datepicker', error);\n }\n\n if (isInsideInterval || isSameDay(interval.start, day)) {\n\n if (singleDayRange) {\n state = \"single\";\n } else if (isSameDay(interval.start, day)) {\n state = \"start\";\n } else if (isSameDay(interval.end, day)) {\n state = \"end\";\n } else {\n state = \"inside\";\n }\n }\n\n return state;\n};\n\nconst updateDay = (date: Date, target: Date) => {\n\n const newDate = set(target, {\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n });\n\n return newDate;\n};\n\nconst getInitialValue = (hasEmptyValue: boolean, initialValue?: Date | DateInterval): DateInterval | null => {\n if (hasEmptyValue && initialValue === undefined) {\n return null;\n }\n\n const validInitial = initialValue ? initialValue : initializeInterval(startOfDay(new Date()));\n\n return (validInitial instanceof Date) ? initializeInterval(validInitial) : validInitial;\n};","import React, { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div<{ height?: string }>`\n\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n\n border-radius: 3px;\n position: relative;\n display: inline-flex;\n overflow: hidden;\n padding-top: 5px;\n\n &::before {\n ${({theme}) => theme.styles.filters.dropdownContainer.topBorder};\n content: '';\n\n display: block;\n height: 5px;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n }\n\n`;\n\nconst Inner = styled.div`\n display: inline-flex;\n flex-direction: row;\n`;\n\ninterface IProps {\n height?: string\n}\n\ntype Props = IProps & HTMLAttributes<HTMLDivElement>\n\nconst FilterDropdownContainer : React.FC<Props> = ({children,...props}) => {\n return (\n <Container {...props}>\n <Inner>\n {children}\n </Inner>\n </Container>\n );\n};\n\nexport default FilterDropdownContainer;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { resetButtonStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst FlipWrapper = styled.div<{ isSortAscending: boolean }>`\n ${({ isSortAscending }) => isSortAscending && css`\n transform: scaleY(-1);\n `};\n`;\n\nconst StyledButton = styled.button<{ isOpen?: boolean, hasFlipArrow?: boolean }>`\n ${resetButtonStyles};\n border-radius: 3px;\n height: 30px;\n\n ${({ theme: {styles, typography, animation}, theme }) => theme && css`\n\n ${styles.filters.filterButton.default};\n ${typography.filters.filterButton.default};\n\n font-family: ${theme.fontFamily.ui};\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n\n ${IconWrapper} {\n padding: 0 9px;\n display: flex;\n align-items: center;\n [stroke]{\n stroke: ${theme.colors.icons.dimmed};\n }\n }\n\n &:hover:enabled {\n ${styles.filters.filterButton.hover};\n ${typography.filters.filterButton.hover};\n transition:\n background ${animation.speed.fast} ${animation.easing.primary.inOut},\n border ${animation.speed.fast} ${animation.easing.primary.inOut};\n }\n\n &:active:enabled {\n ${styles.filters.filterButton.active};\n ${typography.filters.filterButton.active};\n }\n\n &:hover:enabled, &:active:enabled {\n ${IconWrapper} {\n [stroke]{\n transition: stroke ${animation.speed.faster} ${animation.easing.primary.inOut};\n stroke: ${theme.colors.pureBase};\n }\n }\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n`};\n\n ${({ theme, isOpen, hasFlipArrow }) => isOpen && hasFlipArrow && css`\n background-color: hsl(205, 100%, 72%);\n border: solid 1px hsl(205, 100%, 72%);\n color: ${theme.colors.icons.inverse};\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.icons.inverse};\n }\n }\n `};\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ButtonText = styled.div<{ hasFlipArrow: boolean }>`\n padding-right: ${({ hasFlipArrow }) => hasFlipArrow ? '3px' : '20px'};\n`;\n\ninterface OwnProps {\n icon: string\n hasFlipArrow?: boolean\n isSortAscending?: boolean\n isOpen?: boolean\n}\n\ntype IFilterButton = OwnProps & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst FilterButton: React.FC<IFilterButton> = ({\n icon,\n hasFlipArrow = false,\n isSortAscending = false,\n isOpen,\n children,\n ...props\n}) => {\n\n return (\n <StyledButton type='button' {...props} {...{ isOpen, hasFlipArrow }}>\n <InnerContainer>\n <FlipWrapper {...{ isSortAscending }}>\n <Icon\n icon={icon}\n size={12}\n weight='light'\n />\n </FlipWrapper>\n <ButtonText {...{ hasFlipArrow }}>{children}</ButtonText>\n {hasFlipArrow && <Icon icon={isOpen ? 'Up' : 'Down'} size={8} />}\n </InnerContainer>\n </StyledButton>\n );\n};\n\nexport default FilterButton;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckMark } from '../../svg';\nimport { IInputOptionsType } from '..';\nimport { dimensions } from '../../themes/common';\n\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.data};\n display: block;\n color: hsl(0, 0%, 56%);\n font-size: 14px;\n font-weight: 500;\n margin-left: 12px;\n user-select: none;\n pointer-events: none;\n`;\n\nconst FakeCheckbox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: 18px;\n height: 18px;\n border-radius: 5px;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst FakeCheckboxInner = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n box-sizing: border-box;\n`;\n\nconst CheckMarkWrapper = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n [stroke]{\n stroke: transparent;\n }\n [fill] {\n fill: ${({ theme }) => theme.colors.icons.inverse};\n }\n }\n`;\n\nconst FakeRadioButton = styled.div`\n position: relative;\n display: inline-block;\n width: 18px;\n height: 18px;\n user-select: none;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst FakeInnerRadio = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n user-select: none;\n`;\n\nconst Container = styled.div<{ disabled: boolean, selected: boolean }>`\n display: flex;\n align-items: center;\n height: 100%;\n width: 100%;\n\n ${({ theme: { styles }, selected, disabled }) => styles && css`\n ${FakeCheckbox}, ${FakeRadioButton} {\n ${styles.form.checkbox.unchecked.default};\n }\n\n &:hover {\n cursor: pointer;\n ${Title} {\n color: ${styles.form.checkbox.checked.hover.backgroundColor};\n }\n\n ${FakeCheckbox} {\n ${styles.form.checkbox.unchecked.hover};\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.unchecked.hover.borderColor};\n }\n }\n\n ${selected && css`\n ${Title} {\n color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n ${FakeCheckbox} {\n ${styles.form.checkbox.checked.default};\n border: none;\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.checked.default.backgroundColor};\n ${FakeInnerRadio} {\n background-color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n }\n\n &:hover {\n ${FakeCheckbox}{\n ${styles.form.checkbox.checked.hover};\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n ${FakeInnerRadio} {\n background-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n }\n `};\n\n ${disabled && css`\n cursor: not-allowed;\n `};\n `};\n`;\n\ninterface IFilterOption {\n title: string\n value?: string | number\n optionType?: IInputOptionsType\n selected?: boolean\n disabled?: boolean\n onClick?: () => void\n}\n\nconst FilterOption: React.FC<IFilterOption> = ({\n title,\n value,\n optionType = \"text\",\n selected = false,\n disabled = false,\n onClick = () => { },\n ...props\n}) => {\n\n const iconWeight: number = dimensions.icons.weights['regular'];\n\n return (\n\n <Container\n {...{ onClick, disabled, selected}}\n {...props}\n >\n {(optionType === 'checkbox') && (\n <FakeCheckbox>\n <FakeCheckboxInner>\n {selected && <CheckMarkWrapper><CheckMark color='inverse' stroke='inverse' size={12} weight={iconWeight} /></CheckMarkWrapper>}\n </FakeCheckboxInner>\n </FakeCheckbox>\n )}\n {(optionType === 'radio') && <FakeRadioButton><FakeInnerRadio /></FakeRadioButton>}\n <Title>{title}</Title>\n </Container>\n );\n};\n\nexport default FilterOption;","import React, { InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { removeAutoFillStyle, resetButtonStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div<{ hasBorder: boolean, disabled: boolean, noBackground: boolean, width?: string }>`\n ${({ theme: { styles }, theme, hasBorder, disabled, noBackground, width }) => css`\n ${hasBorder && css`\n border: ${styles.filters.searchInput.default.border};\n box-shadow: ${styles.filters.searchInput.default.boxShadow};\n `};\n\n ${disabled && css`\n opacity: 50%;\n cursor: not-allowed;\n `\n };\n\n ${width && css`\n width: ${width};\n `};\n\n background-color: ${noBackground ? 'transparent' : theme.styles.filters.searchInput.default.backgroundColor};\n\n &:focus-within {\n background-color: ${noBackground ? 'transparent' : styles.filters.searchInput.focused.backgroundColor};\n border: ${noBackground ? 'transparent' : styles.filters.searchInput.focused.border};\n }\n\n `};\n\n ${IconWrapper} {\n flex-shrink: 0;\n display: flex;\n }\n\n height: 30px;\n padding: 0 0 0 8px;\n align-items: center;\n display: flex;\n border-radius: 3px;\n`;\n\nconst CrossButton = styled.button`\n ${resetButtonStyles};\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n width: 26px;\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst StyledInput = styled.input<{ color: string }>`\n ${removeAutoFillStyle};\n\n ${({ theme: {typography, colors}, theme, color }) => css`\n font-family: ${theme.fontFamily.ui};\n ${typography.filters.searchInput.value};\n\n &::placeholder {\n ${typography.filters.searchInput.placeholder};\n color: ${colors.icons[color]};\n font-size: 12px;\n }\n `};\n\n &:disabled {\n cursor: not-allowed;\n }\n\n font-size: 12px;\n border: none;\n height: 100%;\n width: 100%;\n background-color: transparent;\n box-sizing: border-box;\n border-radius: 3px;\n outline: none;\n margin-left: 7px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n`;\n\ninterface OwnProps {\n color?: 'mono' | 'dimmed' | 'subtle';\n hasBorder?: boolean\n iconSize?: number\n noBackground?: boolean\n width?: string\n hasCrossButton?: boolean\n onCrossClick?: () => void\n}\n\nexport type IBasicSearchInput = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst BasicSearchInput: React.FC<IBasicSearchInput> = ({\n color = 'subtle',\n hasBorder = true,\n iconSize = 12,\n disabled = false,\n noBackground = false,\n hasCrossButton = false,\n onCrossClick = () => {},\n width,\n ...props\n}) => {\n return (\n <Container {...{ hasBorder, disabled, noBackground, width }}>\n <Icon {...{ color }} icon='Search' weight='regular' size={iconSize} />\n <StyledInput\n {...{ color, disabled }}\n {...props}\n />\n {hasCrossButton && <CrossButton onClick={onCrossClick}> <Icon icon='CloseCompact' color='dimmed' size={12} /></CrossButton>}\n </Container>\n );\n};\n\nexport default BasicSearchInput;","import { IInputOptionsType } from '../Form';\nimport { IBasicSearchInput } from '../Misc/atoms/BasicSearchInput';\nimport { DateInterval } from './molecules/DatePicker';\nimport { IDropdownDatePicker } from './molecules/DropdownDatePicker';\nimport { IFilterDropdown } from './molecules/FilterDropdown';\n\ntype IFilterItem = { text: string; value: string | number; }\ntype IFilterValue = IFilterItem | IFilterItem[] | null;\ntype IFilterType = 'search' | 'dropdown' | 'datepicker';\n\n// Type checking for IFilterItem\n// https://stackoverflow.com/questions/14425568/interface-type-check-with-typescript\nconst isFilterItem = (item: any): item is IFilterItem => {\n if (item === null || item === undefined) { return false; }\n\n if (item.value === undefined || item.value === null) {\n return false;\n }\n\n if (item.text === null) {\n return false;\n }\n\n return ((typeof item.value === 'number') || (typeof item.value === 'string')) && (typeof item.text === 'string');\n};\n\ninterface IFilterResult {\n id: string\n type: IFilterType\n selected: IFilterItem | IFilterItem[] | DateInterval | Date | null;\n}\n\ninterface ISearchFilter extends IBasicSearchInput {\n id: string\n canHide?: boolean\n showFieldText?: string\n selected?: IFilterItem\n}\n\ninterface IFilterDropdownExt extends IFilterDropdown {\n id: string\n canHide?: boolean\n}\n\ninterface IFilterDatePicker extends IDropdownDatePicker {\n id: string\n canHide?: boolean\n name?: string\n}\n\ninterface IFilterDropdownConfig {\n id: string\n canHide?: boolean\n buttonIcon: string\n buttonText: string\n list: IFilterItem[];\n selected?: IFilterValue;\n disabled?: boolean\n optionType?: IInputOptionsType\n isLoading?: boolean\n loadingText?: string\n hasOptionsFilter?: boolean\n searchPlaceholder?: string\n maxDisplayedItems?: number\n searchResultText?: string\n name?: string\n}\n\nexport {\n isFilterItem\n};\n\nexport type {\n IFilterType,\n IFilterItem,\n IFilterResult,\n IFilterValue,\n ISearchFilter,\n IFilterDropdownExt,\n IFilterDatePicker,\n IFilterDropdownConfig\n};","import { useEffect, useRef } from 'react';\n\nexport type outClickType = (eve: MouseEvent) => void;\nexport function useClickOutside(elRef: any, elCallback: outClickType) {\n\n const callbackRef = useRef<outClickType>(elCallback);\n callbackRef.current = elCallback;\n\n useEffect(() => {\n const handleClickOutside = (eve: MouseEvent) => {\n if (!(elRef?.current?.contains(eve.target))) {\n callbackRef.current(eve);\n }\n };\n\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, [elCallback, elRef]);\n}","import React, { useState, useRef, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport FilterButton from '../atoms/FilterButton';\nimport { useClickOutside } from '../../hooks/useClickOutside';\n\nconst Container = styled.div`\n position: relative;\n`;\n\nconst ButtonWrapper = styled.div`\n display: inline-block;\n`;\n\nconst ContentBox = styled.div<{ openState: IDropOpen, disabled: boolean, minWidth: number }>`\n z-index: 100;\n min-width: ${({ minWidth }) => minWidth}px;\n position: absolute;\n\n ${({ openState, disabled }) => openState && css`\n display: ${openState.isOpen ? 'inline-block' : 'none'};\n display: ${disabled && 'none'};\n\n ${openState.position === 'bottom-right' && `\n bottom: 0;\n left: 0;\n transform: translateY(calc(100% + 5px ));\n `};\n\n ${openState.position === 'bottom-left' && `\n bottom: 0;\n right: 0;\n transform: translateY(calc(100% + 5px ));\n `};\n\n ${openState.position === 'top-left' && `\n top: 0;\n right: 0;\n transform: translateY(calc( -100% - 5px ));\n `};\n\n ${openState.position === 'top-right' && `\n top: 0;\n left: 0;\n transform: translateY(calc( -100% - 5px ));\n `};\n\n `};\n`;\n\nconst getDropPosition = (buttonRect: DOMRect, minWidth: number, minHeight: number): IOpenPos => {\n let position: IOpenPos = 'bottom-right';\n const openLeft = (buttonRect.left + minWidth) > window.innerWidth;\n const openTop = (buttonRect.bottom + minHeight) > window.innerHeight;\n const spaceTop = buttonRect.bottom > minHeight;\n\n if (openLeft && openTop && spaceTop) {\n position = 'top-left';\n }\n\n if (openTop && !openLeft && spaceTop) {\n position = 'top-right';\n }\n\n if (!openTop && openLeft) {\n position = 'bottom-left';\n }\n\n return position;\n};\n\ntype IOpenPos = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n\ninterface IDropOpen {\n isOpen: boolean,\n position: IOpenPos,\n}\n\ninterface IFilterDropHandler {\n buttonIcon: string\n buttonText: string\n disabled?: boolean\n minWidth?: number\n minHeight?: number\n isSortAscending?: boolean\n onToggleOpenCallback?: (isOpen: boolean) => void\n onCloseCallback?: () => void\n}\n\nconst FilterDropHandler: React.FC<IFilterDropHandler> = ({\n buttonIcon,\n buttonText,\n disabled = false,\n minWidth = 270,\n minHeight = 190,\n isSortAscending,\n children,\n onToggleOpenCallback = () => { },\n onCloseCallback = () => { },\n ...props\n}) => {\n\n const [openState, setOpenState] = useState<IDropOpen>({\n isOpen: false,\n position: 'bottom-right',\n });\n\n const buttonWrapperRef = useRef<HTMLDivElement>(null);\n const mainRef = useRef<HTMLDivElement>(null);\n\n const handleClose = useCallback(() => {\n if (openState.isOpen) {\n onCloseCallback();\n }\n\n setOpenState((prev) => {\n const isOpen = false;\n return { ...prev, isOpen };\n });\n\n }, [onCloseCallback, openState.isOpen]);\n\n useClickOutside(mainRef, handleClose);\n\n const handleToggleOpen = useCallback((minWidth: number, minHeight: number) => {\n if (!buttonWrapperRef.current) { return; }\n\n const buttonRect = buttonWrapperRef.current.getBoundingClientRect();\n if (!buttonRect) { return; }\n const position: IOpenPos = getDropPosition(buttonRect, minWidth, minHeight);\n\n onToggleOpenCallback(openState.isOpen);\n setOpenState((prev) => {\n const isOpen = !prev.isOpen;\n return { ...prev, isOpen, position };\n });\n }, [onToggleOpenCallback, openState.isOpen]);\n\n return (\n <Container ref={mainRef} {...props}>\n <ButtonWrapper ref={buttonWrapperRef}>\n <FilterButton\n icon={buttonIcon}\n isOpen={openState.isOpen}\n onClick={() => handleToggleOpen(minWidth, minHeight)}\n {...{ disabled, isSortAscending }}\n hasFlipArrow\n >{buttonText}\n </FilterButton>\n </ButtonWrapper>\n <ContentBox {...{ openState, disabled, minWidth }}>\n {children}\n </ContentBox>\n </Container>\n );\n};\n\nexport default FilterDropHandler;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 146px;\n border-top: 1px solid hsl(0, 0%, 91%);\n`;\n\nconst LoadingText = styled.div`\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.data};\n `}\n color: hsl(0, 0%, 55%);\n font-size: 12px;\n font-style: italic;\n padding: 15px 0;\n`;\n\ninterface ILoadingBox {\n loadingText?: string\n}\n\nconst LoadingBox: React.FC<ILoadingBox> = ({ loadingText }) => {\n return (\n <Container>\n <Spinner size='large' styling='primary' />\n <LoadingText>{loadingText}</LoadingText>\n </Container>\n );\n};\n\nexport default LoadingBox;","import React, { useState, useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { IInputOptionsType } from '../../Form';\nimport FilterOption from '../../Form/atoms/FilterOption';\nimport BasicSearchInput from '../../Misc/atoms/BasicSearchInput';\n\nimport { IFilterItem, IFilterValue, isFilterItem } from '../FilterTypes';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\nimport LoadingBox from '../atoms/LoadingBox';\n\nconst Container = styled.div`\n display: inline-block;\n position: relative;\n`;\n\nconst TopLine = styled.div`\n ${({ theme }) => theme.styles.filters.dropdownContainer.topBorder};\n height: 4px;\n border-radius: 3px 3px 0 0;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n`;\n\nconst InnerBox = styled.div`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-top: 5px;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst StyledFilterOption = styled(FilterOption)`\n letter-spacing: 0.2px;\n`;\n\nconst OptionList = styled.div`\n max-height: 162px;\n min-height: 40px;\n overflow-y: scroll;\n ::-webkit-scrollbar { /* Hide scrollbar for Chrome, Safari and Opera */\n display: none;\n }\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n ${StyledFilterOption} {\n height: 35px;\n padding-left: 10px;\n }\n`;\n\nconst ResultsContainer = styled.div`\n border-top: ${({theme}) => theme.colors.divider} 1px solid;\n padding-bottom: 8px;\n`;\n\nconst ResultCounter = styled.div`\n opacity: 0.75;\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: hsl(0, 0%, 55%);\n font-size: 12px;\n font-style: italic;\n font-weight: 300;\n display: flex;\n align-items: center;\n justify-content: left;\n padding-left: 9px;\n height: 30px;\n margin-bottom: 6px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n`;\n\nconst SearchWrapper = styled.div`\n height: 41px;\n display: flex;\n align-items: center;\n`;\n\nconst EmptyResultText = styled.div`\n display: block;\n color: hsl(0, 0%, 56%);\n margin-left: 12px;\n user-select: none;\n pointer-events: none;\n height: 35px;\n display: flex;\n align-items: center;\n font-size: 12px;\n`;\n\nconst isValueSelected = (item: IFilterItem, selected: IFilterValue) => {\n let isItemSelected = false;\n\n if (Array.isArray(selected)) {\n selected.forEach((element: IFilterItem) => {\n if (element.value === item.value) {\n isItemSelected = true;\n }\n });\n\n } else {\n if (isFilterItem(selected)) {\n isItemSelected = item.value === selected.value;\n }\n }\n\n return isItemSelected;\n};\n\nconst getNewSelected = (item: IFilterItem, selected: IFilterValue, optionType: IInputOptionsType): IFilterValue => {\n let isItemSelected = false;\n\n if (optionType === 'checkbox') {\n const validSelected = Array.isArray(selected)\n ? selected\n : isFilterItem(selected) ? [selected] : [];\n\n const newSelected: IFilterItem[] = [];\n validSelected.forEach((element: IFilterItem) => {\n if (item.value === element.value) {\n isItemSelected = true;\n } else {\n newSelected.push(element);\n }\n });\n if (!isItemSelected) {\n newSelected.push(item);\n }\n\n if (newSelected.length === 0) {\n return null;\n }\n\n return newSelected;\n }\n\n return item;\n};\n\nconst selectedOrderList = (list: IFilterItem[], maxItems: number, selected: IFilterValue): IFilterItem[] => {\n\n if (list.length <= maxItems) {\n return list;\n }\n\n if(selected === null) {\n return list;\n }\n\n if (isFilterItem(selected)) {\n const index = list.findIndex(item => item.value === selected.value);\n\n // if it doesn't exists return the list based in maxItems\n if ((index === -1)) {\n return list;\n }\n\n // if exists and is inside the visibleRange just return slice\n if ((index !== -1) && (index < maxItems)) {\n return list;\n }\n\n const newList = list.filter(item => item.value !== selected.value);\n newList.unshift(list[index]);\n\n return newList;\n\n }\n\n if (Array.isArray(selected)) {\n const selectedIndexList: number[] = [];\n const newList: IFilterItem[] = [];\n\n selected.forEach((element: IFilterItem) => {\n const index = list.findIndex(item => item.value === element.value);\n const foundItem = list.find(item => item.value === element.value);\n\n\n if (index !== -1) {\n selectedIndexList.push(index);\n }\n if(foundItem) {\n newList.push(foundItem);\n }\n\n });\n\n selectedIndexList.sort(function (a, b) {\n return a - b;\n });\n\n let selectedIndex = 0;\n\n list.forEach((item, index) => {\n if(index === selectedIndexList[selectedIndex]){\n selectedIndex++;\n return;\n }\n newList.push(item);\n });\n\n return newList;\n }\n\n return list;\n};\n\nconst getFilteredList = (list: IFilterItem[], newValue: string): IFilterItem[] => {\n return list.filter(element => {\n const valueString = element.text.toLowerCase();\n return valueString.includes(newValue.toLowerCase());\n });\n};\n\nconst getResultText = (template: string, visible: number, total: number) => {\n const newMessage = template.replace('[TOTAL]', `${total}`);\n return newMessage.replace('[VISIBLE]', `${visible}`);\n};\n\nexport interface IFilterDropdown {\n buttonIcon: string\n buttonText: string\n list: IFilterItem[];\n selected: IFilterValue;\n disabled?: boolean\n optionType?: IInputOptionsType\n isLoading?: boolean\n loadingText?: string\n hasOptionsFilter?: boolean\n searchPlaceholder?: string\n maxDisplayedItems?: number\n searchResultText?: string\n emptyResultText?: string\n onSelect: (newSelection: IFilterValue) => void;\n}\n\nconst FilterDropdown: React.FC<IFilterDropdown> = ({\n buttonIcon,\n buttonText,\n list,\n selected = null,\n disabled = false,\n isLoading = false,\n loadingText,\n optionType = 'text',\n hasOptionsFilter,\n searchPlaceholder,\n maxDisplayedItems = 5,\n searchResultText = 'Showing [VISIBLE] of [TOTAL]',\n emptyResultText,\n onSelect = () => { },\n ...props\n}) => {\n\n const [visibleList, setVisibleList] = useState(selectedOrderList(list, maxDisplayedItems, selected));\n const [searchText, setSearchText] = useState<string>('');\n\n const handleClose = useCallback(() => {\n setSearchText('');\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }, [list, maxDisplayedItems, selected]);\n\n const handleToggleOpen = useCallback(() => {\n setSearchText('');\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }, [list, maxDisplayedItems, selected]);\n\n const handleSelection = useCallback((item: IFilterItem) => {\n const newSelected = getNewSelected(item, selected, optionType);\n onSelect(newSelected);\n }, [selected, optionType, onSelect]);\n\n const handleInputFilter = useCallback((e) => {\n const { value } = e.target;\n setSearchText(value);\n\n if (value === '') {\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n return;\n }\n\n const newValue = typeof value === 'number' ? value.toString(10) : value;\n const newList = getFilteredList(list, newValue);\n\n // sending null so the filtered list doesn't force the selected values to appear.\n setVisibleList(selectedOrderList(newList, maxDisplayedItems, null));\n }, [list, maxDisplayedItems, selected]);\n\n useEffect(() => {\n let isActive = true;\n if (isActive) {\n setSearchText(''); // clears searchText if something was selected and the dropdown is still open\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }\n\n return () => {\n isActive = false;\n };\n\n }, [list, maxDisplayedItems, selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonIcon, buttonText, disabled }}\n onCloseCallback={handleClose}\n onToggleOpenCallback={handleToggleOpen}\n >\n <TopLine />\n <InnerBox>\n {hasOptionsFilter && (\n <SearchWrapper>\n <BasicSearchInput\n type='text'\n hasBorder={false}\n placeholder={searchPlaceholder}\n color='dimmed'\n iconSize={12}\n value={searchText}\n onChange={handleInputFilter}\n noBackground\n />\n </SearchWrapper>\n )}\n {isLoading || !list\n ? (\n <LoadingBox {...{ loadingText }} />)\n : (\n <ResultsContainer>\n {hasOptionsFilter && <ResultCounter>{getResultText(searchResultText, visibleList.length, list.length)}</ResultCounter>}\n <OptionList>\n {(visibleList.length > 0)\n\n ? visibleList.map((item: IFilterItem, index) => {\n const value = item.value;\n const text = item.text;\n return (\n <StyledFilterOption\n key={index}\n title={text}\n onClick={() => handleSelection(item)}\n selected={isValueSelected(item, selected)}\n {...{ optionType, value }}\n />\n );\n })\n\n : <EmptyResultText>{emptyResultText}</EmptyResultText>}\n </OptionList>\n </ResultsContainer>)}\n </InnerBox>\n </FilterDropHandler>\n </Container>\n );\n};\n\nexport default FilterDropdown;","import React, { useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport FilterOption from '../../Form/atoms/FilterOption';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\nimport LoadingBox from '../atoms/LoadingBox';\nimport { IFilterItem } from '../FilterTypes';\nimport { resetButtonStyles } from '../../common';\n\nconst Container = styled.div`\n display: inline-block;\n position: relative;\n`;\n\nconst TopLine = styled.div`\n ${({ theme }) => theme.styles.filters.dropdownContainer.topBorder};\n height: 3px;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n`;\n\nconst InnerBox = styled.div`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: 0 4px 9px 0 hsla(204, 22%, 67%, 0.07);\n border: solid 1px hsl(207, 16%, 86%);\n border-top: unset;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst StyledFilterOption = styled(FilterOption)`\n letter-spacing: 0.2px;\n`;\n\nconst OptionList = styled.div`\n ${StyledFilterOption} {\n height: 35px;\n padding-left: 10px;\n }\n`;\n\nconst OrderGroup = styled.div`\n display: flex;\n border-top: ${({ theme: { colors } }) => colors.divider} 1px solid;\n margin-top: 5px;\n button:first-child {\n border-right: ${({ theme: { colors } }) => colors.divider} 1px solid;\n }\n`;\n\nconst OrderButton = styled.button<{ isSelected: boolean }>`\n ${resetButtonStyles};\n width: 100%;\n display: flex;\n align-items: center;\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: hsl(0, 0%, 56%);\n font-size: 14px;\n height: 35px;\n ${({ theme, isSelected }) => theme && css`\n\n ${IconWrapper} {\n margin-left: 10px;\n display: flex;\n align-items: center;\n [stroke]{\n stroke: ${theme.colors.icons.dimmed};\n }\n }\n\n &:hover {\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n }\n\n ${isSelected && css`\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.styles.form.checkbox.checked.default.backgroundColor};\n }\n }\n `}\n `}\n`;\n\nexport interface ISortDropdown {\n buttonText: string\n list: IFilterItem[]\n disabled?: boolean\n isLoading?: boolean\n loadingText?: string\n ascendingText?: string\n descendingText?: string\n isSortAscending?: boolean\n selected: IFilterItem\n onSelect: (newSort: IFilterItem, isSortAscending: boolean) => void\n}\n\nconst SortDropdown: React.FC<ISortDropdown> = ({\n buttonText,\n disabled,\n list,\n isLoading,\n loadingText,\n isSortAscending = true,\n selected,\n descendingText = 'Descending',\n ascendingText = 'Ascending',\n onSelect,\n ...props }) => {\n\n\n const handleSortSelect = useCallback((newValue: IFilterItem) => {\n if (newValue.value === selected.value) {\n return;\n }\n\n onSelect(newValue, isSortAscending);\n\n }, [isSortAscending, onSelect, selected.value]);\n\n const handleOrderSelect = useCallback((isAscending: boolean) => {\n if (isSortAscending === isAscending) {\n return;\n }\n\n onSelect(selected, isAscending);\n\n }, [isSortAscending, onSelect, selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonText, disabled, isSortAscending }}\n buttonIcon='FilterSorting'\n >\n <TopLine />\n <InnerBox>\n {(isLoading || list.length === 0)\n ? (\n <LoadingBox {...{ loadingText }} />\n )\n : (\n <OptionList>\n {list.map((item, index) => {\n return (\n <StyledFilterOption\n key={index}\n title={item.text}\n optionType='radio'\n selected={selected.value === item.value}\n onClick={() => handleSortSelect(item)}\n />\n );\n })}\n </OptionList>\n )}\n <OrderGroup>\n <OrderButton isSelected={isSortAscending} onClick={() => handleOrderSelect(true)}>\n <Icon\n icon='FilterAscending'\n size={16}\n weight='light'\n />\n <FilterOption selected={isSortAscending} title={ascendingText} />\n </OrderButton>\n <OrderButton isSelected={!isSortAscending} onClick={() => handleOrderSelect(false)}>\n <Icon\n icon='FilterDescending'\n size={16}\n weight='light'\n />\n <FilterOption selected={!isSortAscending} title={descendingText} />\n </OrderButton>\n </OrderGroup>\n </InnerBox>\n </FilterDropHandler>\n\n </Container>\n );\n};\n\nexport default SortDropdown;","import React, { useRef, useCallback, useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport FilterDropdownContainer from '../atoms/FilterDropdownContainer';\nimport DatePicker, { DateInterval, IDatePicker } from './DatePicker';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\n\nconst MIN_WIDTH = 470;\nconst MIN_HEIGHT = 360;\n\nconst Container = styled.div``;\n\ninterface IMountPicker {\n initialValue: DateInterval | Date | undefined\n isMount: boolean\n}\n\nexport interface IDropdownDatePicker extends IDatePicker {\n buttonIcon: string\n buttonText: string\n disabled?: boolean\n selected?: DateInterval | Date | null;\n onCloseCallback?: (value: DateInterval | Date | null) => void\n onUpdateCallback?: (value: DateInterval | Date | null) => void\n onToggleCallback?: (value: DateInterval | Date | null, isOpen: boolean) => void\n}\n\nconst DropdownDatePicker: React.FC<IDropdownDatePicker> = ({\n buttonIcon,\n buttonText,\n disabled,\n initialValue,\n dateMode,\n timeMode,\n selected,\n dateTimeTextUpper,\n dateTimeTextLower,\n timeZoneTitle,\n timeZoneValueTitle,\n lang,\n onCloseCallback = () => { },\n onUpdateCallback = () => { },\n onToggleCallback = () => { },\n ...props }) => {\n\n /**\n * This will keep the value of the picker when it updates so on close will send the most fresh value\n * without re-renders.\n */\n const pickerValue = useRef<DateInterval | Date | null>(null);\n const [mountedPicker, setMountedPicker] = useState<IMountPicker>({ initialValue: initialValue, isMount: true });\n\n const handleUpdateCallback = useCallback((data: DateInterval | Date) => {\n pickerValue.current = data;\n onUpdateCallback(data);\n }, [onUpdateCallback]);\n\n const handleOnClose = useCallback(() => {\n if (pickerValue.current && (pickerValue.current !== selected)) {\n onCloseCallback(pickerValue.current);\n }\n }, [onCloseCallback, selected]);\n\n const handleOnToggle = useCallback((isOpen: boolean) => {\n\n if (pickerValue.current && (pickerValue.current !== selected)) {\n onToggleCallback(pickerValue.current, isOpen);\n }\n\n /** mounting again and clearing the last value sent from picker */\n if (!isOpen && (pickerValue.current !== null) && (!mountedPicker.isMount)) {\n pickerValue.current = null;\n setMountedPicker({ initialValue: undefined, isMount: true });\n }\n }, [mountedPicker, onToggleCallback, selected]);\n\n /**\n * Caching the selected null /clear flag for this picker from parent component\n */\n useEffect(() => {\n let canReset = true;\n\n if (canReset && selected === null && pickerValue.current !== null) {\n setMountedPicker({ initialValue: undefined, isMount: false });\n }\n return () => {\n canReset = false;\n };\n }, [selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonIcon, buttonText, disabled }}\n minWidth={MIN_WIDTH}\n minHeight={MIN_HEIGHT}\n onCloseCallback={handleOnClose}\n onToggleOpenCallback={handleOnToggle}\n >\n <FilterDropdownContainer>\n {mountedPicker.isMount && (\n <DatePicker\n {...{\n dateMode,\n timeMode,\n dateTimeTextUpper,\n dateTimeTextLower,\n timeZoneTitle,\n timeZoneValueTitle,\n lang\n }}\n updateCallback={handleUpdateCallback}\n hasEmptyValue\n initialValue={mountedPicker.initialValue}\n />)}\n </FilterDropdownContainer>\n </FilterDropHandler>\n </Container>\n );\n};\n\nexport default DropdownDatePicker;","import React, { useState, useCallback } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport BasicSearchInput from '../../Misc/atoms/BasicSearchInput';\nimport FilterDropdown from '../../Filters/molecules/FilterDropdown';\nimport FilterButton from '../../Filters/atoms/FilterButton';\nimport DropdownDatePicker from './DropdownDatePicker';\nimport { IFilterDatePicker, IFilterDropdownExt, ISearchFilter } from '../FilterTypes';\n\nconst fadeInAnimation = keyframes`\n 0% {\n width: 50%;\n opacity: .5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n width: 100%;\n }\n`;\n\nconst SearchInputWrapper = styled.div`\n flex: 1 1 200px;\n max-width: 320px;\n`;\n\nconst CloseSearchInputWrapper = styled.div`\n ${({ theme }) => theme && css`\n animation: ${fadeInAnimation} ${theme.animation.speed.slow} ${theme.animation.easing.primary.inOut};\n `};\n`;\n\nconst StyledFilterButton = styled(FilterButton)``;\nconst StyledDropdown = styled(FilterDropdown)``;\nconst StyledDropdownDatePicker = styled(DropdownDatePicker)``;\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n ${SearchInputWrapper}, ${StyledDropdown}, ${StyledFilterButton}, ${StyledDropdownDatePicker} {\n margin: 0 3px 10px 3px;\n }\n`;\n\nconst renderDropdowns = (dropdownFilters: IFilterDropdownExt[], showMoreDropdowns: boolean, hasShowMore: boolean) => {\n return dropdownFilters.map((dropdown: IFilterDropdownExt) => {\n if (!dropdown.canHide || !showMoreDropdowns || (dropdown.canHide && !hasShowMore)) {\n return <StyledDropdown key={`dropdownFilter-id-${dropdown.id}`} {...dropdown} />;\n }\n return null;\n });\n};\n\nconst renderSearchInputs = (\n searchFilters: ISearchFilter[],\n visibleSearchInputs: String[],\n handleVisibleSearch: (searchId: string) => void\n) => {\n return searchFilters.map((searchInput: ISearchFilter) => {\n\n if (visibleSearchInputs.includes(searchInput.id)) {\n return (\n <SearchInputWrapper key={`searchFilter-id-${searchInput.id}`}>\n {searchInput.canHide\n ? (\n <CloseSearchInputWrapper>\n <BasicSearchInput {...searchInput} hasCrossButton onCrossClick={() => handleVisibleSearch(searchInput.id)} />\n </CloseSearchInputWrapper>\n )\n : <BasicSearchInput {...searchInput} />}\n </SearchInputWrapper>\n );\n }\n return null;\n });\n};\n\nconst renderDatePickers = (datePickerFilters: IFilterDatePicker[]) => {\n return datePickerFilters.map((datePicker: IFilterDatePicker) => {\n return (\n <StyledDropdownDatePicker\n key={`datePicker-filter-${datePicker.id}`}\n {...{ ...datePicker }}\n />\n );\n });\n};\n\nconst renderAddSearchButtons = (\n searchFilters: ISearchFilter[],\n visibleSearchInputs: String[],\n handleVisibleSearch: (searchId: string) => void\n) => {\n return searchFilters.map((element) => {\n if (element.canHide && !visibleSearchInputs.includes(element.id)) {\n const searchId = element.id;\n return (\n <StyledFilterButton\n key={`search-button-id-${element.id}`}\n icon='Add'\n onClick={() => handleVisibleSearch(searchId)}\n >\n {element.showFieldText}\n </StyledFilterButton>\n );\n }\n return null;\n });\n};\n\n// initially visible are only the ones that can't hide\nconst initialSearchFilters = (searchFilters: ISearchFilter[]): String[] => {\n const currentVisible: String[] = [];\n\n searchFilters.forEach(element => {\n if (!element.canHide) {\n currentVisible.push(element.id);\n }\n });\n\n return currentVisible;\n};\n\nexport interface IFilterInputs {\n searchFilters?: ISearchFilter[]\n dropdownFilters?: IFilterDropdownExt[]\n datePickerFilters?: IFilterDatePicker[]\n hasShowMore?: boolean\n showMoreText?: string\n showLessText?: string\n}\n\nconst FilterInputs: React.FC<IFilterInputs> = ({\n hasShowMore = false,\n searchFilters = [],\n datePickerFilters = [],\n dropdownFilters = [],\n showMoreText = 'Show More',\n showLessText = 'Show Less',\n ...props\n}) => {\n\n const [visibleSearchInputs, setVisibleSearchInputs] = useState<String[]>(initialSearchFilters(searchFilters));\n const [showMoreDropdowns, setShowMoreDropdowns] = useState(hasShowMore ? true : false);\n\n const toggleShowMore = useCallback(() => {\n setShowMoreDropdowns((prev) => !prev);\n }, []);\n\n const handleVisibleSearch = useCallback((searchId: string) => {\n\n if (visibleSearchInputs.includes(searchId)) {\n const newVisible = visibleSearchInputs.filter((id) => searchId !== id);\n setVisibleSearchInputs(newVisible);\n } else {\n const newVisible = [...visibleSearchInputs, searchId];\n setVisibleSearchInputs(newVisible);\n }\n\n }, [visibleSearchInputs]);\n\n return (\n <Container {...{ props }}>\n {renderSearchInputs(searchFilters, visibleSearchInputs, handleVisibleSearch)}\n {renderDatePickers(datePickerFilters)}\n {renderDropdowns(dropdownFilters, showMoreDropdowns, hasShowMore)}\n\n {/* {When the Dev does not initialize hasShowMore as true but has hidden inputs, it will show the add Searcher of the canHide} */}\n {(!hasShowMore || !showMoreDropdowns) && renderAddSearchButtons(searchFilters, visibleSearchInputs, handleVisibleSearch)}\n {hasShowMore && (\n <FilterButton\n icon='FilterEllipsis'\n onClick={toggleShowMore}\n >\n {showMoreDropdowns ? showMoreText : showLessText}\n </FilterButton>)}\n </Container>\n );\n};\n\nexport default FilterInputs;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { IFilterItem, IFilterType } from '../FilterTypes';\nimport { resetButtonStyles } from '../../common/index';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport { isFilterItem } from '../FilterTypes';\nimport { DateInterval, isDateInterval } from './DatePicker';\nimport { format } from 'date-fns';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n font-size: 12px;\n min-height: 22px;\n`;\n\nconst ResultsTextWrapper = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: hsl(207, 5%, 57%);\n`;\n\nconst FilterLabel = styled.div`\n height: 18px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n padding: 0 11px 0 8px;\n margin-left: 3px;\n color: hsl(207, 5%, 57%);\n\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.data};\n `};\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n }\n border-right: 1px solid hsla(0, 0%, 13%, 0.16);\n`;\nconst FilterLabelText = styled.div<{ hasIcon?: boolean }>`\n padding: ${({ hasIcon }) => hasIcon ? '0 15px 0 9px' : '0 15px 0 0'};\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n max-width: 300px;\n`;\n\nconst ClearTextButton = styled.button`\n ${resetButtonStyles};\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: hsl(216, 4%, 77%);\n margin-left: 11px;\n font-size: 12px;\n`;\n\nconst RemoveButton = styled.button`\n ${resetButtonStyles};\n`;\n\nconst FilterLabelsGroup = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst validateDateFormat = (resultsDateFormat: string): boolean => {\n let isFormatValid = false;\n\n if (resultsDateFormat !== '') {\n try {\n const tryDate = new Date();\n format(tryDate, resultsDateFormat);\n isFormatValid = true;\n } catch (error) {\n isFormatValid = false;\n }\n }\n\n return isFormatValid;\n};\n\nconst renderResults = (template: string, total: number) => {\n return template.replace('[TOTAL_RESULTS]', `${total}`);\n};\n\n\nconst renderLabel = (item: IFilterItem | DateInterval | Date, resultsDateFormat: string, icon?: string, filterName?: string) => {\n\n let textLabel: string = \"\";\n const isDateFormatValid = validateDateFormat(resultsDateFormat);\n\n if (filterName && isFilterItem(item)) {\n textLabel = `${filterName}: ${item.text}`;\n } else if (filterName && item instanceof Date) {\n textLabel = isDateFormatValid\n ? `${filterName}: ${format(item, resultsDateFormat)}`\n : `${filterName}: ${item.toDateString()}`;\n } else if (filterName && isDateInterval(item)) {\n textLabel = isDateFormatValid\n ? `${filterName}: ${format(item.start, resultsDateFormat)} - ${format(item.end, resultsDateFormat)}`\n : `${filterName}: ${item.start.toDateString()} - ${item.end.toDateString()}`;\n } else if (!filterName && isFilterItem(item)) {\n textLabel = item.text;\n } else if (!filterName && item instanceof Date) {\n textLabel = isDateFormatValid\n ? format(item, resultsDateFormat)\n : item.toDateString();\n } else if (!filterName && isDateInterval(item)) {\n textLabel = isDateFormatValid\n ? `${format(item.start, resultsDateFormat)} - ${format(item.end, resultsDateFormat)}`\n : `${item.start.toDateString()} - ${item.end.toDateString()}`;\n }\n\n return <FilterLabelText hasIcon={!!icon}>{textLabel}</FilterLabelText>;\n};\n\nexport interface IFilterLabel {\n filterId: string\n item: IFilterItem | Date | DateInterval\n type: IFilterType\n icon?: string\n filterName?: string\n}\n\ninterface IFilterResults {\n labelLists: IFilterLabel[]\n totalResults: number\n resultTextTemplate?: string\n clearText?: string\n resultsDateFormat?: string\n onRemoveFilter?: (filterId: string, type: IFilterType, item: IFilterItem | Date | DateInterval) => void\n onClearAll?: () => void\n}\n\nconst FiltersResults: React.FC<IFilterResults> = ({\n labelLists,\n totalResults,\n resultTextTemplate = 'Showing Results ([TOTAL_RESULTS]):',\n clearText = 'CLEAR ALL',\n resultsDateFormat = '',\n onRemoveFilter = () => { },\n onClearAll = () => { },\n ...props\n}) => {\n return (\n <Container {...props}>\n <ResultsTextWrapper>{renderResults(resultTextTemplate, totalResults)}</ResultsTextWrapper>\n <FilterLabelsGroup>\n {labelLists.map(({ icon, item, filterName, filterId, type }, index) => {\n return (\n <FilterLabel key={`Filter-Label-id-${index}`}>\n {icon && <Icon icon={icon} color='dimmed' size={10} weight='light' />}\n {renderLabel(item, resultsDateFormat, icon, filterName)}\n <RemoveButton\n onClick={() => onRemoveFilter(filterId, type, item)}\n >\n <Icon icon='CloseCompact' color='dimmed' size={10} weight='light' />\n </RemoveButton>\n </FilterLabel>\n );\n })}\n {(labelLists.length > 0) && <ClearTextButton onClick={onClearAll}>{clearText}</ClearTextButton>}\n </FilterLabelsGroup>\n\n </Container>\n );\n};\n\nexport default FiltersResults;","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n IFilterItem,\n IFilterResult,\n IFilterType,\n IFilterValue,\n isFilterItem,\n IFilterDropdownConfig\n} from '../FilterTypes';\nimport FilterInputs from '../molecules/FilterInputs';\nimport { IFilterDropdownExt, ISearchFilter, IFilterDatePicker } from '../FilterTypes';\nimport FiltersResults, { IFilterLabel } from '../../Filters/molecules/FiltersResults';\nimport { DateInterval, isDateInterval } from '../molecules/DatePicker';\nimport isequal from 'lodash.isequal';\nimport debounce from 'lodash.debounce';\n\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: hsl(207, 5%, 57%);\n font-size: 12px;\n font-weight: 700;\n margin-bottom: 17px;\n`;\n\nconst StyledFilterResults = styled(FiltersResults)``;\n\nconst Container = styled.div`\n ${StyledFilterResults} {\n margin-top: 29px;\n min-height: 19px;\n }\n`;\n\nconst getDisableValue = (\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n filter: ISearchFilter | IFilterDropdownConfig | IFilterDatePicker,\n) => {\n let disabled = false;\n\n if (filter.disabled) {\n disabled = filter.disabled;\n } else if (singleFilter) {\n const notNullValues = filtersValues.filter((filter) => filter.selected !== null);\n if (notNullValues) {\n disabled = (notNullValues.length > 1 || (notNullValues[0] && notNullValues[0].id !== filter.id));\n }\n }\n return disabled;\n};\n\nconst createDropdownFilters = (\n dropdownsConfig: IFilterDropdownConfig[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleDropdownsSelected: (newValue: IFilterValue, filterId: string) => void\n): IFilterDropdownExt[] => {\n\n const dropdownFilters: IFilterDropdownExt[] = [];\n dropdownsConfig.forEach(dropdown => {\n const filter = filtersValues.find(filter => filter.id === dropdown.id);\n if (filter) {\n const selected = (Array.isArray(filter.selected) || isFilterItem(filter.selected))\n ? filter.selected\n : null;\n const onSelect = (newSelection: IFilterValue) => { handleDropdownsSelected(newSelection, filter.id); };\n const disabled = getDisableValue(filtersValues, singleFilter, dropdown);\n const newDropdown: IFilterDropdownExt = { ...dropdown, selected, disabled, onSelect };\n dropdownFilters.push(newDropdown);\n }\n });\n return dropdownFilters;\n};\n\nconst createSearchers = (\n searchersConfig: ISearchFilter[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleSearchers: (newValue: string, filterId: string) => void,\n): ISearchFilter[] => {\n const searchersFilters: ISearchFilter[] = [];\n\n searchersConfig.forEach(searcher => {\n const filter = filtersValues.find(filter => filter.id === searcher.id);\n if (filter && !Array.isArray(filter.selected)) {\n const value: string = (filter.selected === null) || (!isFilterItem(filter.selected)) ? '' : filter.selected.text;\n\n const onChange = (e: React.FormEvent<HTMLInputElement>) => {\n const newValue = e.currentTarget.value;\n handleSearchers(newValue, filter.id);\n };\n\n const disabled = getDisableValue(filtersValues, singleFilter, searcher);\n\n const newSearcher: ISearchFilter = { ...searcher, value, disabled, onChange };\n searchersFilters.push(newSearcher);\n }\n });\n\n return searchersFilters;\n};\n\nconst createDatePickers = (\n datePickersConfig: IFilterDatePicker[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleDatePickers: (selection: DateInterval | Date | null, filterId: string) => void,\n): IFilterDatePicker[] => {\n const datePickersFilters: IFilterDatePicker[] = [];\n\n datePickersConfig.forEach((datePicker) => {\n const onCloseCallback = (value: DateInterval | Date | null) => {\n handleDatePickers(value, datePicker.id);\n };\n\n const onToggleCallback = (value: DateInterval | Date | null, isOpen: boolean) => {\n // if it was open before toggle means the user closed it and value should be updated.\n if (isOpen) {\n handleDatePickers(value, datePicker.id);\n }\n };\n const disabled = getDisableValue(filtersValues, singleFilter, datePicker);\n const foundPicker = filtersValues.find(filter => filter.id === datePicker.id);\n let validInitialValue: Date | DateInterval | undefined = undefined;\n\n if (datePicker.selected) {\n validInitialValue = datePicker.selected;\n } else if (datePicker.initialValue) {\n validInitialValue = datePicker.initialValue;\n }\n\n const newPicker: IFilterDatePicker = {\n ...datePicker,\n onCloseCallback,\n onToggleCallback,\n disabled,\n selected: foundPicker && (foundPicker.selected instanceof Date || isDateInterval(foundPicker.selected)) ? foundPicker.selected : null,\n initialValue: validInitialValue,\n };\n datePickersFilters.push(newPicker);\n });\n\n return datePickersFilters;\n};\n\nconst createLabelResults = (\n searchersConfig: ISearchFilter[],\n dropdownsConfig: IFilterDropdownConfig[],\n datePickersConfig: IFilterDatePicker[],\n filtersValues: IFilterResult[],\n): IFilterLabel[] => {\n\n const labelLists: IFilterLabel[] = [];\n\n searchersConfig.forEach((searcher) => {\n const foundSearcher = filtersValues.find(element => element.id === searcher.id);\n if (!foundSearcher) {\n return;\n\n // searchers are never arrays or date but Typescript requires this type check\n } else if (isFilterItem(foundSearcher.selected)) {\n const newLabel: IFilterLabel = {\n filterId: foundSearcher.id,\n item: foundSearcher.selected,\n filterName: searcher.name,\n type: foundSearcher.type,\n };\n labelLists.push(newLabel);\n }\n });\n\n dropdownsConfig.forEach((dropdown) => {\n\n const foundDropdown = filtersValues.find(element => element.id === dropdown.id);\n if (!foundDropdown || foundDropdown.selected === null) {\n return;\n } else if (Array.isArray(foundDropdown.selected)) {\n foundDropdown.selected.forEach((dropdownLabelVal) => {\n const newLabel: IFilterLabel = {\n filterId: foundDropdown.id,\n item: dropdownLabelVal,\n icon: dropdown.buttonIcon,\n filterName: dropdown.name,\n type: foundDropdown.type\n };\n labelLists.push(newLabel);\n });\n } else if (isFilterItem(foundDropdown.selected)) {\n const newLabel: IFilterLabel = {\n filterId: foundDropdown.id,\n item: foundDropdown.selected,\n icon: dropdown.buttonIcon,\n filterName: dropdown.name,\n type: foundDropdown.type\n };\n\n labelLists.push(newLabel);\n }\n });\n\n datePickersConfig.forEach((datePicker) => {\n const foundPicker = filtersValues.find(element => element.id === datePicker.id);\n if (!foundPicker || foundPicker.selected === null || Array.isArray(foundPicker.selected) || isFilterItem(foundPicker.selected)) {\n return;\n } else {\n const newLabel: IFilterLabel = {\n filterId: foundPicker.id,\n item: foundPicker.selected,\n icon: 'Date',\n filterName: datePicker.name,\n type: foundPicker.type\n };\n labelLists.push(newLabel);\n }\n });\n\n return labelLists;\n};\n\nconst initFilters = (\n searchersConfig: ISearchFilter[],\n dropdownsConfig: IFilterDropdownConfig[],\n datePickersConfig: IFilterDatePicker[],\n): IFilterResult[] => {\n\n const newFilters: IFilterResult[] = [];\n\n searchersConfig.forEach(({ id, value, selected }) => {\n\n let validatedSelected: IFilterItem | null = null;\n if (typeof value === 'number') {\n validatedSelected = { text: value.toString(), value: value };\n } else if (value === 'string') {\n validatedSelected = { text: value, value: value };\n } else if (isFilterItem(selected)) {\n validatedSelected = selected;\n }\n\n const initialSearch: IFilterResult = { id, type: 'search', selected: validatedSelected };\n\n newFilters.push(initialSearch);\n });\n\n dropdownsConfig.forEach(({ id, selected }) => {\n\n const initialDropdown: IFilterResult = {\n id,\n type: 'dropdown',\n selected: (isFilterItem(selected) || Array.isArray(selected)) ? selected : null,\n };\n\n newFilters.push(initialDropdown);\n });\n\n datePickersConfig.forEach(({ id, initialValue, selected }) => {\n\n let validSelected: Date | DateInterval | null = null;\n\n if (initialValue) {\n validSelected = initialValue;\n } else if (selected) {\n validSelected = selected;\n }\n\n newFilters.push({ id, type: 'datepicker', selected: validSelected });\n });\n\n return newFilters;\n};\n\ninterface IFilterBar {\n filtersTitle?: string\n searchersConfig?: ISearchFilter[]\n dropdownsConfig?: IFilterDropdownConfig[]\n datePickersConfig?: IFilterDatePicker[]\n hasShowMore?: boolean\n showMoreText?: string\n showLessText?: string\n resultTextTemplate?: string\n totalResults: number\n clearText?: string\n isLoading?: boolean\n singleFilter?: boolean\n resultsDateFormat?: string\n onChangeCallback?: (currentSelected: IFilterResult[]) => void\n}\n\nconst FilterBar: React.FC<IFilterBar> = ({\n filtersTitle = 'Filters:',\n hasShowMore,\n searchersConfig = [],\n dropdownsConfig = [],\n datePickersConfig = [],\n showMoreText,\n showLessText,\n resultTextTemplate,\n clearText,\n totalResults,\n singleFilter = false,\n resultsDateFormat,\n onChangeCallback = () => { },\n ...props\n}) => {\n\n const [filtersValues, setFiltersValues] = useState<IFilterResult[]>(initFilters(searchersConfig, dropdownsConfig, datePickersConfig));\n const dropdownsConfigRef = useRef<IFilterDropdownConfig[]>(dropdownsConfig);\n\n // Prevents extra-renders only updating if the dropdowns config actually changed\n if (dropdownsConfigRef.current && !isequal(dropdownsConfigRef.current, dropdownsConfig)) {\n dropdownsConfigRef.current = dropdownsConfig;\n }\n\n // saves a reference of the debounce for searchers\n const debounceSearcher = useRef(debounce(updatedFilters => handleChange(updatedFilters), 600)).current;\n\n const handleChange = useCallback((newValues: IFilterResult[]) => {\n const notNullValues = newValues.filter((filter) => filter.selected !== null);\n\n onChangeCallback(notNullValues);\n\n }, [onChangeCallback]);\n\n const handleDropdownsSelected = useCallback((newValue: IFilterValue, filterId: string) => {\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n const foundFilter = updatedFilters.find((filter) => filter.id === filterId);\n if (foundFilter && foundFilter.selected !== newValue) {\n foundFilter.selected = newValue;\n handleChange(updatedFilters);\n return updatedFilters;\n }\n return prev;\n });\n }, [handleChange]);\n\n const handleSearchers = useCallback((newValue: string, filterId: string) => {\n\n const updatedFilters = [...filtersValues];\n const foundFilter = updatedFilters.find((filter) => filter.id === filterId);\n if (foundFilter) {\n foundFilter.selected = newValue === '' ? null : { text: newValue, value: newValue };\n }\n\n debounceSearcher(updatedFilters);\n setFiltersValues(updatedFilters);\n\n }, [debounceSearcher, filtersValues]);\n\n const handleOnClear = useCallback(() => {\n\n const updatedFilters = [...filtersValues];\n updatedFilters.forEach((filterElement) => {\n if (filterElement.selected === null) {\n return;\n }\n filterElement.selected = null;\n });\n\n handleChange(updatedFilters);\n setFiltersValues(updatedFilters);\n }, [filtersValues, handleChange]);\n\n const handleOnRemoveFilter = useCallback((filterId: string, type: IFilterType, item: IFilterItem | Date | DateInterval) => {\n\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n\n const foundFilter = updatedFilters.find((filterElement) => filterElement.id === filterId);\n\n if (!foundFilter) {\n return prev;\n } else if (Array.isArray(foundFilter.selected) && type === 'dropdown') {\n const selectedFiltered = foundFilter.selected.filter((oldItem) => {\n if (isFilterItem(oldItem) && isFilterItem(item)) {\n return oldItem.value !== item.value;\n }\n // it's required to have return a value usually will always receive filterItems and all will enter the if\n // but just in case if it's not a Filter item it will filter the value.\n return true;\n });\n foundFilter.selected = selectedFiltered.length === 0 ? null : selectedFiltered;\n } else {\n foundFilter.selected = null;\n }\n\n handleChange(updatedFilters);\n return updatedFilters;\n });\n\n }, [handleChange]);\n\n const handleDatePickers = useCallback((selection: DateInterval | Date | null, filterId: string) => {\n\n const updatedDatePickers = [...filtersValues];\n const foundFilter = updatedDatePickers.find((datePicker) => datePicker.id === filterId);\n\n if (foundFilter) {\n foundFilter.selected = selection;\n handleChange(filtersValues);\n setFiltersValues(updatedDatePickers);\n }\n\n }, [filtersValues, handleChange]);\n\n /**\n * This use Effect will update filters text selections in case the language is changed.\n * Dropdowns are the only ones that required this because Inputs text are the user type data.\n * DatePickers do not change text for now\n */\n useEffect(() => {\n let mountConfig = true;\n\n if (mountConfig && dropdownsConfigRef.current) {\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n updatedFilters.forEach((filter: IFilterResult) => {\n\n const foundDropdown = dropdownsConfigRef.current.find((dropdown) => dropdown.id === filter.id);\n\n if (foundDropdown) {\n\n if (Array.isArray(filter.selected)) {\n filter.selected.forEach(item => {\n const foundItem = foundDropdown.list.find((dropdownItem) => dropdownItem.value === item.value);\n\n if (foundItem) {\n item.text = foundItem.text;\n }\n });\n } else if (isFilterItem(filter.selected)) {\n const foundItem = foundDropdown.list.find((item: IFilterItem) => {\n return filter.selected === null\n ? false\n : isFilterItem(filter.selected) ? item.value === filter.selected.value : false;\n });\n\n if (foundItem) {\n filter.selected.text = foundItem.text;\n }\n }\n }\n });\n\n return updatedFilters;\n });\n }\n\n return () => {\n mountConfig = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropdownsConfigRef.current]);\n\n return (\n <Container {...props}>\n <Title>{filtersTitle}</Title>\n <FilterInputs\n {...{\n hasShowMore,\n showMoreText,\n showLessText,\n }}\n searchFilters={createSearchers(searchersConfig, filtersValues, singleFilter, handleSearchers)}\n dropdownFilters={createDropdownFilters(dropdownsConfigRef.current, filtersValues, singleFilter, handleDropdownsSelected)}\n datePickerFilters={datePickersConfig ? createDatePickers(datePickersConfig, filtersValues, singleFilter, handleDatePickers) : undefined}\n />\n <StyledFilterResults\n {...{ resultTextTemplate, clearText, totalResults, resultsDateFormat }}\n labelLists={createLabelResults(searchersConfig, dropdownsConfigRef.current, datePickersConfig, filtersValues)}\n onClearAll={handleOnClear}\n onRemoveFilter={handleOnRemoveFilter}\n />\n </Container>\n );\n};\n\nexport default FilterBar;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport Icon from './Icon';\nimport { IStatusDot } from '..';\n\nconst Container = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst StatusCounter = styled.div<{ color?: IStatusDot }>`\n position: absolute;\n left: 14px;;\n top: -12px;\n border-radius: 50%;\n height: 14px;\n min-width: 14px;\n padding: 2px;\n font-size: 10px;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n ${({theme:{animation}}) => css`\n transition: background-color ${animation.speed.slow} ${animation.easing.primary.easeInOut};\n `}\n background-color: ${({ theme, color }) => color ? theme.colors.status[color] : 'hsla(0, 0%, 91.8%, 0)'};\n`;\n\nconst StatusDot = styled.div<{ color?: IStatusDot }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n position: absolute;\n top: -4px;\n right: -7px;\n ${({theme:{animation}}) => css`\n transition: background-color ${animation.speed.slow} ${animation.easing.primary.easeInOut};\n `}\n background-color: ${({ theme, color }) => color ? theme.colors.status[color] : 'hsla(0, 0%, 91.8%, 0)'};\n`;\n\ninterface IStatusIcon {\n icon: string\n status?: IStatusDot\n counter?: number\n}\n\nconst StatusIcon: React.FC<IStatusIcon> = ({icon, status, counter}) => {\n return (\n <Container>\n {status && (counter === undefined)\n ? <StatusDot color={status} />\n : (counter === undefined) ? null : <StatusCounter color={status}>{counter}</StatusCounter>}\n <Icon icon={icon} size={18} color='dimmed' />\n </Container>\n );\n};\n\nexport default StatusIcon;","import React, { useState, useCallback } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport { IDragLineUISharedOptions } from '.';\n\n\nconst HandleTouchReactionKeyframes = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 75% {\n transform: scale(3);\n }\n\n 100% {\n transform: scale(1.75);\n }\n`;\n\nconst HandleMouseReactionKeyframes = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 75% {\n transform: scale(0);\n }\n\n 100% {\n transform: scale(0.5);\n }\n`;\n\n\nconst HandleBase = styled.svg<{ mouseDragging: boolean, styling: string}>`\n touch-action: none;\n user-select: none;\n overflow: visible;\n cursor: pointer;\n fill: ${({theme, styling}) => theme.custom.lines[styling].handleBase.fill};\n appearance: none;\n`;\n\nconst HandleRingLayer = styled.circle<{maskID: string, styling: string}>`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleRingLayer.stroke};\n mask: url(#${props => (props.maskID)});\n`;\nconst HandleReactiveGroup = styled.g<{touchDragging: boolean, mouseDragging: boolean}>`\n opacity: 0.65;\n cursor: pointer;\n transform: scale(1);\n\n ${props => props.touchDragging && css`\n animation: ${HandleTouchReactionKeyframes} 0.5s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275) 1;\n `}\n\n ${props => props.mouseDragging && css`\n animation: ${HandleMouseReactionKeyframes} 0.25s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275) 1;\n `}\n\n`;\nconst HandleReactiveFill = styled.circle<{styling: string}>`\n mix-blend-mode: multiply;\n fill: ${({theme, styling}) => theme.custom.lines[styling].handleReactiveFill.fill};\n stroke: none;\n`;\nconst HandleReactiveRing = styled.circle<{styling: string}>`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleReactiveRing.stroke};\n`;\n\nconst HandleContrastLayer = styled.circle<{styling: string}>`\n overflow: visible;\n mix-blend-mode: multiply;\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleContrastLayer.stroke};\n`;\nconst HandleShadowLayer = styled.circle<{fillID: string}>`\n mix-blend-mode: multiply;\n fill: url(#${props => (props.fillID)});\n`;\n\nconst GrabHandleIndexGroup = styled.g<{showIndex: boolean}>`\n opacity: 0;\n pointer-events: none;\n ${props => props.showIndex && css`\n opacity: 1;\n `};\n\n`;\n\nconst StopStart = styled.stop<{styling: string}>`\n stop-color: ${({theme, styling}) => theme.custom.lines[styling].stopStart.stopColor };\n`;\nconst StopEnd = styled.stop<{styling: string}>`\n stop-color: ${({theme, styling}) => theme.custom.lines[styling].stopEnd.stopColor };\n`;\n\n\nconst GrabHandleIndexText = styled.text<{showIndex: boolean, styling: string}>`\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandleText.stroke};\n text-align: center;\n\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n\n\n`;\n\nconst IconGroup = styled.g`\n\n`;\n\ninterface IHandleUnitProps {\n lineSetId: number\n index: number\n angle: number | null\n useAngles: boolean\n unit: number\n size: number\n x: number;\n y: number;\n Icon?: React.FunctionComponent<React.SVGProps<SVGSVGElement>> & {rotate?: number};\n rotate?: number;\n moveCallback: any;\n moveEndCB?: ()=>void;\n options: IDragLineUISharedOptions;\n readOnlyHandle?: boolean;\n styling?: string;\n}\n\nconst HandleUnit : React.FC<IHandleUnitProps> = (props) => {\n // console.log(props.lineSetId, typeof props.lineSetId)\n const { index, useAngles, angle, unit, size, lineSetId, x, y, moveCallback, moveEndCB=()=>{}, Icon, rotate=0, options, readOnlyHandle = false, styling='primary'} = props;\n // console.log(\"Handle \"+ index +\" from set \"+ lineSetId + \" :: \" + x, \", \" + y)\n const handleInstance = React.createRef<SVGSVGElement>();\n\n const [ touchDragging, setTouchDragging ] = useState(false);\n const [ mouseDragging, setMouseDragging ] = useState(false);\n const [ touchIndex, setTouchIndex ] = useState<number | null>(null);\n\n\n /** --- Toucher Events Section --- */\n const handleTouchStart = useCallback((e: any) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n // Remember what touch event index is for this handle.\n for (let i = 0; i < e.touches.length; i++) {\n const touch = e.touches[i];\n if(touch.target.parentNode.parentElement === handleInstance || touch.target.parentNode.parentElement.parentElement){\n setTouchDragging(true);\n setTouchIndex(i);\n }\n }\n },[handleInstance, readOnlyHandle]);\n\n\n const handleTouchEnd = useCallback(() => {\n if (readOnlyHandle) { return; }\n setTouchDragging(false);\n setTouchIndex(null);\n moveEndCB();\n },[moveEndCB, readOnlyHandle]);\n\n const handleTouchMove = useCallback((e: React.TouchEvent<SVGSVGElement>) => {\n if (readOnlyHandle) { return; }\n for (let i = 0; i < e.touches.length; i++) {\n if(i === touchIndex){\n moveCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY}, index);\n }\n }\n },[index, moveCallback, readOnlyHandle, touchIndex]);\n\n /** --- Mouse Events Section --- */\n\n const handleMouseMove = useCallback((e: MouseEvent) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n moveCallback({ x: e.pageX, y: e.pageY}, index);\n },[index, moveCallback, readOnlyHandle]);\n\n const handleMouseUp = useCallback((e: MouseEvent) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n setMouseDragging(false);\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n moveCallback({ x: e.pageX, y: e.pageY}, index);\n setTimeout(moveEndCB);\n },[handleMouseMove, index, moveCallback, moveEndCB, readOnlyHandle]);\n\n const handleMouseDown = useCallback((e: React.MouseEvent<SVGSVGElement, MouseEvent>) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n setMouseDragging(true);\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n },[handleMouseMove, handleMouseUp, readOnlyHandle]);\n\n const maskID = useAngles ? \"mask-\" + lineSetId + '-' + index : '';\n const shadowGradientID = \"shadowGradient-\" + lineSetId + '-' + index;\n const {showPointHandle = true, showPointLabel= false, pointIndexOffset} = options as IDragLineUISharedOptions;\n\n return (\n\n <HandleBase ref={handleInstance} styling={styling} x={x} y={y} mouseDragging={mouseDragging} onTouchStart={handleTouchStart} onTouchEnd={handleTouchEnd} onTouchMove={handleTouchMove} onMouseDown={handleMouseDown}>\n <defs>\n <mask id={maskID}>\n <rect width='100%' height='100%' x='-50%' y='-50%' fill='white' />\n <rect width={size / 3} height={size / 0.9} x={-((size / 3) /2)} y={-((size / 0.9) + 5)} fill='black' transform={`rotate(${angle || 0} 0 0)`} />\n </mask>\n <radialGradient id={shadowGradientID}>\n <StopStart styling={styling} offset='0%' />\n <StopEnd styling={styling} offset='80%' />\n </radialGradient>\n </defs>\n\n {\n Icon ?\n <IconGroup transform={`scale(${unit * 1.5 }) translate(-21 -21) rotate(${rotate}, 21, 21 )`}>\n <Icon height='42' width='42' />\n </IconGroup>\n :\n showPointHandle &&\n <g transform={`scale(${ unit })`}>\n\n <HandleShadowLayer r={size * 1} fillID={shadowGradientID} />\n <HandleContrastLayer styling={styling} r={size / 2.4} strokeWidth={size / 3} />\n\n <HandleReactiveGroup touchDragging={touchDragging} mouseDragging={mouseDragging}>\n <HandleReactiveFill styling={styling} r={size / 1.8} />\n <HandleReactiveRing styling={styling} r={size / 2.25} strokeWidth={size / 3} />\n </HandleReactiveGroup>\n\n <HandleRingLayer styling={styling} r={size / 2} strokeWidth={size / 6} maskID={maskID} />\n\n {showPointLabel &&\n <GrabHandleIndexGroup showIndex>\n <GrabHandleIndexText styling={styling} transform='translate(-5,6)' fontSize='20px' showIndex>\n {index + pointIndexOffset}\n </GrabHandleIndexText>\n </GrabHandleIndexGroup>}\n\n </g>\n }\n\n\n\n </HandleBase>\n );\n};\n\nexport default HandleUnit;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { IDragLineUISharedOptions } from '.';\nimport Icon from '../Icons/Icon';\n\n\nconst ContrastLine = styled.line<{styling: string}>`\n pointer-events: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].contrastLine.stroke};\n mix-blend-mode: multiply;\n`;\n\nconst HighlightLine = styled.line<{styling: string}>`\n pointer-events: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].highlightLine.stroke};\n`;\n\n\n\nconst GrabHandle = styled.circle<{hide: boolean, styling: string}>`\n fill: ${({theme, styling}) => theme.custom.lines[styling].grabHandle.fill};\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandle.stroke};\n opacity: 1;\n transition: opacity 250ms ease;\n cursor: grab;\n\n ${props => props.hide && css`\n pointer-events: none;\n opacity: 0;\n `};\n`;\n\n\nconst GrabHandleIndexGroup = styled.g<{showIndex: boolean}>`\n opacity: 0;\n pointer-events: none;\n ${props => props.showIndex && css`\n opacity: 1;\n `};\n\n`;\n\nconst GrabHandleIndexText = styled.text<{showIndex: boolean, styling: string}>`\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].grabHandleText.stroke};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\nconst LabelText = styled.text<{showIndex: boolean, styling: string}>`\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].label.fill};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\nconst GrabHandleContrast = styled(GrabHandle)`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandleContrast.stroke};\n`;\n\nconst GrabHandleGroup = styled.g<{ showIndex: boolean, originalRadius: number, styling: string}>`\n\n ${GrabHandle}, ${GrabHandleContrast} {\n transition: r 250ms ease;\n }\n\n ${props => props.showIndex && css`\n ${GrabHandle}, ${GrabHandleContrast} {\n pointer-events: none;\n r: ${props.originalRadius * 1.75};\n }\n `};\n`;\n\nconst DMCircle = styled.circle`\n fill: hsla(203, 100%, 35%, 0.49);\n`;\n\ninterface ILineUnitProps {\n lineSetId: number,\n options: IDragLineUISharedOptions,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n unit: number,\n lineMoveCallback: any,\n lineMoveStartCallback: any,\n moveEndCB?: () => void;\n label?: string;\n styling?: string;\n showSmallDirectionMark?: boolean;\n overrideShowMoveHandle?: boolean;\n}\n\n\n\nconst LineUnit : React.FC<ILineUnitProps> = (props) => {\n const { x1, y1, x2, y2, unit, lineMoveCallback, lineMoveStartCallback, options, lineSetId, label, styling = 'primary', moveEndCB = () => { }, showSmallDirectionMark = false, overrideShowMoveHandle = true } = props;\n const { handleFinderActive, revealSetIndex, showMoveHandle, setIndexOffset, showDirectionMark} = options;\n\n // const a = x1 - x2;\n // const b = y1 - y2;\n // const distance = Math.sqrt( a*a + b*b );\n //this distance 60 doesn't work now...\n // const hideGrabHandle = showMoveHandle === false || (showMoveHandle !== true && distance < 60);\n\n const hideGrabHandle = !showMoveHandle || !overrideShowMoveHandle;\n\n\n /** --- Toucher Events Section --- */\n const grabTouchMove = (e: any) => {\n for (let i = 0; i < e.touches.length; i++) {\n // if(i === touchIndex){\n lineMoveCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY});\n // }\n }\n moveEndCB();\n };\n\n const grabTouchStart = (e: any) => {\n for (let i = 0; i < e.touches.length; i++) {\n // if(i === touchIndex){\n lineMoveStartCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY});\n // }\n }\n };\n\n\n /** --- Mouse Events Section --- */\n const handleMouseDown = (e: any) => {\n lineMoveStartCallback({ x: e.pageX, y: e.pageY });\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n e.preventDefault();\n };\n\n const handleMouseUp = (e: any) => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n lineMoveCallback({ x: e.pageX, y: e.pageY });\n moveEndCB();\n e.preventDefault();\n };\n\n const handleMouseMove = (e: any) => {\n lineMoveCallback({ x: e.pageX, y: e.pageY });\n e.preventDefault();\n };\n const midpoint = {\n x: (x2 + x1) / 2,\n y: (y2 + y1) / 2\n };\n\n const directionMarkCoordinate = () => {\n const angle = Math.atan2((y2 - y1), (x2 - x1));\n const angleMode = (Math.PI / 2) - angle;\n const x = midpoint.x + Math.sin(angleMode) -5;\n const y = midpoint.y + Math.cos(angleMode);\n const rotate = (180 / Math.PI) * Math.atan2(y2 - y1, x2 - x1);\n const labelRotate = -rotate;\n return {x, y, rotate, labelRotate};\n };\n\n const getDirectionMarkLine = () => {\n const dmCoordinate = directionMarkCoordinate();\n return (\n <g transform={`translate(${dmCoordinate.x},${dmCoordinate.y}) rotate(${dmCoordinate.rotate}) scale(${unit * 1})`}>\n <g transform='translate(-3,-30) scale(0.8)'>\n <DMCircle r={12} cx={6} cy={7} />\n <Icon color='inverse' icon='Up' size={12} weight='heavy' forSvgUsage />\n </g>\n {showSmallDirectionMark &&\n <g transform='translate(5,25) rotate(-180) scale(0.8)'>\n <DMCircle r={8} cx={3.5} cy={4.5} />\n <Icon color='inverse' icon='Up' size={7} weight='heavy' forSvgUsage />\n </g>}\n {label &&\n <g transform={`translate(0,${showSmallDirectionMark ? 45 : 30}) rotate(${dmCoordinate.labelRotate})`}>\n <LabelText textAnchor='middle' dominantBaseline='middle' styling={styling} fontSize={`${14}px`} x={0} y={0} showIndex={revealSetIndex || handleFinderActive}>\n {label}\n </LabelText>\n </g>}\n </g>\n );\n };\n\n return (\n <g>\n <ContrastLine styling={styling} strokeLinecap='round' x1={x1} y1={y1} x2={x2} y2={y2} strokeWidth={4 * unit} />\n <HighlightLine styling={styling} x1={x1} y1={y1} x2={x2} y2={y2} strokeWidth={2 * unit} />\n\n <GrabHandleGroup styling={styling} showIndex={handleFinderActive && revealSetIndex} originalRadius={8 * unit}>\n <GrabHandleContrast styling={styling} r={8 * unit} strokeWidth={4 * unit} cx={midpoint.x} cy={midpoint.y} hide={hideGrabHandle} />\n <GrabHandle styling={styling} textAnchor='middle' r={8 * unit} strokeWidth={1 * unit} cx={midpoint.x} cy={midpoint.y} hide={hideGrabHandle} onTouchMove={grabTouchMove} onTouchStart={grabTouchStart} onMouseDown={handleMouseDown} />\n </GrabHandleGroup>\n\n <GrabHandleIndexGroup showIndex={!hideGrabHandle && (handleFinderActive || revealSetIndex)}>\n <GrabHandleIndexText styling={styling} fontSize={`${unit * 10}px`} x={midpoint.x - (3 * unit)} y={midpoint.y + (4 * unit)} showIndex={revealSetIndex || handleFinderActive}>\n {lineSetId + setIndexOffset}\n </GrabHandleIndexText>\n </GrabHandleIndexGroup>\n\n {/* <circle r={1* unit} cx={x1} cy={y1} fill='white' /> */}\n {/* <circle r={1* unit} cx={x2} cy={y2} fill='white' /> */}\n\n {showDirectionMark ?\n getDirectionMarkLine()\n :\n label &&\n <LabelText styling={styling} fontSize={`${unit * 14}px`} x={midpoint.x - (16 * unit)} y={midpoint.y - (15 * unit)} showIndex={revealSetIndex || handleFinderActive}>\n {label}\n </LabelText>}\n </g>\n );\n\n};\n\nexport default LineUnit;\n","import { createContext } from 'react';\nimport { IPointSet } from '.';\n\ninterface IContextProps {\n state: IPointSet[]// IState;\n dispatch: any// ({type}:{type:any}) => void;\n }\n\nexport const LineSetContext = createContext({} as IContextProps);\n","import React, { useState, useEffect, useCallback, useContext, useRef } from 'react';\nimport HandleUnit from './HandleUnit';\nimport LineUnit from './LineUnit';\nimport update from 'immutability-helper';\nimport { LineSetContext } from './Contexts';\nimport { IPointSet, IDragLineUISharedOptions, IVector2 } from '.';\nimport styled from 'styled-components';\n\nconst Point = styled.circle<{styling: string}>`\n fill: ${({theme, styling}) => theme.custom.lines[styling].point.fill};\n`;\n\nconst AreaLabelText = styled.text<{styling: string}>`\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].label.fill};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\ninterface ILineSetProps {\n lineSetId: number,\n boundaries: any,\n size: number,\n unit: number,\n lineData: IPointSet,\n options: IDragLineUISharedOptions,\n onLineMoveEnd: () => void;\n getCTM: () => DOMMatrix | null;\n}\n\ninterface AreaLabelProps {\n lineSetData: IPointSet,\n unit: number\n}\n\nconst AreaLabel : React.FC<AreaLabelProps> = ( { lineSetData, unit } ) => {\n const pointsLength = lineSetData.points.length;\n if (pointsLength < 3) return null;\n let midpoint = { x: 0, y: 0 };\n\n lineSetData.points.map(({ x, y }) => {\n midpoint.x += x;\n midpoint.y += y;\n return null;\n });\n\n midpoint = { x: midpoint.x / pointsLength, y: midpoint.y / pointsLength };\n const Textlen = lineSetData.areaName?.length || 1;\n return <AreaLabelText fontSize={`${unit * 14}px`} styling={lineSetData.styling || 'primary'} x={midpoint.x - (4 * Textlen * unit)} y={midpoint.y + (6 * unit)}>{lineSetData.areaName}</AreaLabelText>;\n};\n\nconst LineSet : React.FC<ILineSetProps> = ({ getCTM, boundaries, unit, size, lineSetId, options , onLineMoveEnd}) => {\n // console.log(\"Unit \" + lineSetId + \", reporting in...\")\n\n const {state, dispatch} = useContext(LineSetContext);\n const lineSetData = state[lineSetId];\n\n const [handleAngles, setHandleAngles] = useState<number[]>([]);\n\n const handleRelation = useRef<{offsetX: number, offsetY: number}[]>([]);\n const handleRadius : number = size / 2;\n const handleUsesAngles : boolean = lineSetData.points.length === 2;\n\n /**\n * Ensure provided position vector is within the boundaries (of the container)\n * @param {IVector2} position Vector to be enforced.\n * @returns {IVector2} The position updated clamped to range.\n */\n const enforceBoundaries = useCallback((position: IVector2) => {\n\n if(position.x < boundaries.x.min){\n position.x = boundaries.x.min;\n } else if (position.x > boundaries.x.max){\n position.x = boundaries.x.max;\n }\n\n if(position.y < boundaries.y.min){\n position.y = boundaries.y.min;\n } else if (position.y > boundaries.y.max){\n position.y = boundaries.y.max;\n }\n\n return position;\n\n }, [boundaries]);\n\n\n const handleMoveCallback = useCallback((pointerPosition: IVector2, index: number) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const pointer = enforceBoundaries({\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a),\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d)\n });\n const point ={\n x: Math.round(pointer.x),\n y: Math.round(pointer.y)\n };\n const newLineSetData = update(lineSetData, {points:{[index]: {$merge: point}}});\n\n dispatch({type: \"UPDATE\", index: lineSetId, data: newLineSetData });\n\n }, [getCTM, enforceBoundaries, lineSetData, dispatch, lineSetId]);\n\n const lineDragStart = useCallback((pointerPosition: IVector2) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const pointer = {\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a) - handleRadius,\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d) - handleRadius\n };\n\n handleRelation.current = lineSetData.points.map((handle) => {\n const xDiff = pointer.x - handle.x;\n const yDiff = pointer.y - handle.y;\n return {\n offsetX: xDiff,\n offsetY: yDiff\n };\n });\n\n },[handleRadius, lineSetData.points, getCTM]);\n\n const lineDragUpdate = useCallback((pointerPosition: IVector2) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const { points } = lineSetData;\n\n const pointer = {\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a) - handleRadius,\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d) - handleRadius\n };\n\n const newPoints = points.map((_handle, index) => {\n const {offsetX=0, offsetY=0} = handleRelation.current[index]||{};\n\n return enforceBoundaries({\n x: Math.round(pointer.x - offsetX),\n y: Math.round(pointer.y - offsetY)\n });\n\n });\n\n dispatch({type: \"UPDATE\", index: lineSetId, data: { ...lineSetData, points: [...newPoints] } });\n\n }, [getCTM, lineSetData, handleRadius, dispatch, lineSetId, enforceBoundaries]);\n\n\n\n const calcAngle = (originX: number, originY: number, towardsX: number, towardsY: number) => {\n const angle = Math.atan2(towardsY-originY,towardsX-originX);\n const degrees = angle*180/Math.PI + 90;\n return degrees;\n };\n\n // useCallback maybe to reduce unchanged deals?\n const updateHandleAngles = useCallback((inputHandleData: IPointSet) => {\n const { points } = inputHandleData;\n const outputData : number[] = [];\n\n // Update all handle angles in data set.\n inputHandleData.points.forEach((handle, index) => {\n const nextIndex = ( index + 2 > points.length ) ? 0 : index + 1 ;\n const nextHandle = points[nextIndex];\n const angle = calcAngle(handle.x, handle.y, nextHandle.x, nextHandle.y);\n outputData.push(angle);\n });\n\n setHandleAngles(outputData);\n }, []);\n\n\n useEffect(() => {\n // Update angles when the line's data set has changed.\n if(handleUsesAngles){\n updateHandleAngles(lineSetData);\n }\n }, [lineSetData, updateHandleAngles, handleUsesAngles]);\n\n const handles = (lineSetData?.showPointHandle === undefined || lineSetData?.showPointHandle) &&\n lineSetData.points.map(({ x, y }, index) =>\n <HandleUnit\n key={index+lineSetId}\n lineSetId={lineSetId}\n rotate={lineSetData.rotate}\n Icon={lineSetData.icon}\n index={index}\n unit={unit}\n size={size}\n useAngles={handleUsesAngles}\n angle={handleAngles[index]}\n x={x}\n y={y}\n moveEndCB={onLineMoveEnd}\n moveCallback={handleMoveCallback}\n options={options}\n styling={lineSetData.styling}\n readOnlyHandle={lineSetData.readOnly}\n />\n );\n\n const points = options.showPoint && (lineSetData.points.map(({x,y}, index) => <Point styling={lineSetData.styling||'primary'} key={index} r={unit} cx={x} cy={y} />));\n\n const lines = lineSetData.points.map(({x:x1,y:y1}, index) => {\n const {points, name, styling = 'primary'} = lineSetData;\n //nextIndex index is next Point's index\n const nextIndex = ( index + 1 >= points.length ) ? 0 : index + 1 ;\n //in the case of a line don't draw line back from second point\n if(index === 1 && nextIndex === 0){\n return null;\n }\n const {x:x2,y:y2} = points[nextIndex];\n\n return (\n <LineUnit\n key={index}\n moveEndCB={onLineMoveEnd}\n lineSetId={lineSetId}\n options={options}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n unit={unit}\n label={name}\n styling={styling}\n lineMoveCallback={lineDragUpdate}\n lineMoveStartCallback={lineDragStart}\n showSmallDirectionMark={lineSetData.showSmallDirectionMark}\n overrideShowMoveHandle={lineSetData.showMoveHandle}\n />\n );});\n\n return (\n <g>\n {lines}\n {handles}\n {points}\n <AreaLabel lineSetData={lineSetData} unit={unit} />\n </g>\n );\n};\n\nexport default LineSet;","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport { LineUIOptions, IBoundary } from '.';\nimport Spinner from '../Indicators/Spinner';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n\n`;\n\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{ transculent?: boolean }>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transculent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\nconst Image = styled.img`\n object-fit: contain;\n width: 100%;\n height: 100%;\n`;\n\n\ninterface LineUIProps {\n src: string;\n onSizeChange?: (size: { h: number; w: number }) => void;\n onLineMoveEnd?: () => void;\n options?: LineUIOptions;\n showDirectionMark?: boolean;\n}\nconst LineUI: React.FC<LineUIProps> = ({\n src,\n onSizeChange = () => { },\n onLineMoveEnd = () => { },\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n fixedImgDimensions,\n boundaryOffset = 0,\n showDirectionMark = false\n } = {}\n}) => {\n\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const { state } = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n const [loaded, setLoaded] = useState(false);\n\n\n // Scale Code\n const [imgSize, setImgSize] = useState({ h: 1, w: 1 });\n const [unit, setUnit] = useState(1);\n const imgRef = useRef<HTMLImageElement>(null);\n const frame = useRef<SVGSVGElement>(null);\n\n\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if (!imgRef.current) {\n return;\n }\n\n const { naturalHeight, naturalWidth, clientHeight } = imgRef.current;\n const h = (fixedImgDimensions && fixedImgDimensions.y) || naturalHeight;\n const w = (fixedImgDimensions && fixedImgDimensions.x) || naturalWidth;\n if (h !== imgSize.h || w !== imgSize.w) {\n setImgSize({ h, w });\n onSizeChange({ h, w });\n console.debug('image size:', { naturalHeight, naturalWidth, clientHeight, unit: naturalHeight / clientHeight });\n }\n\n if (h / clientHeight !== unit) {\n setUnit(h / clientHeight);\n }\n setLoaded(true);\n }, [fixedImgDimensions, imgSize.h, imgSize.w, onSizeChange, unit]);\n\n const calculateCTM = useCallback(() => {\n if (!frame.current) { return null; }\n //On size change make sure to refresh CTM\n const ctm = frame.current.getScreenCTM();\n console.debug('calculateCTM', ctm);\n return ctm;\n }, []);\n\n const handlePositionTipShow = (e: any) => {\n if (e.target === frame.current) {\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder || false);\n };\n\n useEffect(() => {\n if (!frame.current) { return; }\n\n // Redefine boundaries loaded image changes our svg viewbox.\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n console.debug('setBoundaries', bounds);\n setBoundaries(bounds);\n }, [imgSize, boundaryOffset]);\n\n useEffect(() => {\n\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Image ref={imgRef} onLoad={initScaleAndBounds} src={src} alt='' />\n {\n (loaded && boundaries) ?\n <Frame ref={frame} viewBox={`0 0 ${imgSize.w} ${imgSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transculent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n :\n <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>\n }\n </Container>\n );\n\n};\n\nexport default LineUI;\n","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport Spinner from '../Indicators/Spinner';\nimport { LineUIOptions, IBoundary, LineUIVideoOptions } from '.';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n`;\nconst Video = styled.video`\n width: 100%;\n height: 100%;\n border-radius: 3px;\n background-color: hsla(0deg, 0%, 0%, 35%);\n`;\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{transcalent?: boolean}>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transcalent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\n\n\n\ninterface LineUIProps {\n src: string;\n onSizeChange?: (size: {h: number; w: number}) => void;\n onLineMoveEnd?: ()=> void;\n onLoaded?: (metadata: {height: number; width: number; }) => void;\n options?: LineUIOptions;\n videoOptions: LineUIVideoOptions;\n}\nconst LineUIVideo : React.FC<LineUIProps> = ({\n src,\n onSizeChange = ()=>{},\n onLineMoveEnd = ()=>{},\n onLoaded = ()=>{},\n videoOptions: {\n loop = false,\n autoPlay = false,\n controls = false,\n muted = true,\n ...videoOptions\n },\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n boundaryOffset = 0,\n showDirectionMark = false\n }={}\n}) => {\n\n const frame = useRef<SVGSVGElement>(null);\n const videoRef = useRef<HTMLVideoElement>(null);\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const {state} = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n\n // Scale Code\n const [videoSize, setVideoSize] = useState({ h: 768, w: 1024 });\n const [unit, setUnit] = useState(1);\n const [loaded, setLoaded] = useState(false);\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if(!videoRef.current) {return;}\n const { videoHeight, videoWidth, clientHeight } = videoRef.current;\n\n if(videoHeight !== videoSize.h || videoWidth !== videoSize.w) {\n setVideoSize({ h: videoHeight, w: videoWidth });\n onSizeChange({ h: videoHeight, w: videoWidth });\n }\n\n if(videoHeight / clientHeight !== unit) {\n setUnit(videoHeight / clientHeight);\n }\n }, [videoSize.h, videoSize.w, unit, onSizeChange]);\n\n const handlePositionTipShow = (e: any) => {\n if(e.target === frame.current){\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder ||false);\n };\n\n const calculateCTM = useCallback(()=>{\n if(!frame.current) {return null;}\n //On size change make sure to refresh CTM\n return frame.current.getScreenCTM();\n },[]);\n\n useEffect(() => {\n // Redefine boundaries and screen matrix when the loaded video changes our svg viewbox.\n if(!frame.current || !loaded) {return;}\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n setBoundaries(bounds);\n }, [videoSize, loaded, boundaryOffset]);\n\n const onLoadedMetadata = useCallback(({target}) =>{\n if(target){\n setLoaded(true);\n initScaleAndBounds();\n const {videoHeight=1, videoWidth=1} = target;\n onLoaded({height: videoHeight, width: videoWidth});\n }\n },[initScaleAndBounds, onLoaded]);\n\n useEffect(() => {\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Video ref={videoRef} controls={controls} muted={muted} autoPlay={autoPlay} loop={loop} {...videoOptions} onLoadedMetadata={onLoadedMetadata} src={src} id='1'> </Video>\n {!loaded && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {\n loaded &&\n <Frame ref={frame} viewBox={`0 0 ${videoSize.w} ${videoSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transcalent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n }\n </Container>\n );\n\n};\n\nexport default LineUIVideo;\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React, { useState, useEffect, useRef, VideoHTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Video = styled.video`\n /* width: 800px; */\n`;\ninterface WebRTCMessage {\n sdp?: RTCSessionDescriptionInit;\n ice?: RTCIceCandidate;\n}\ninterface OwnProps {\n enabled: boolean;\n peerAddress: string;\n maxConnectionAttempts?: number;\n rtcConfiguration?: RTCConfiguration\n id?: string;\n setStatus?: (status: string) => void;\n setError?: (error: string | null) => void;\n}\ntype Props = OwnProps & VideoHTMLAttributes<HTMLVideoElement>\n\nconst WebRTCPlayer: React.FC<Props> = ({\n id = \"1\",\n enabled,\n peerAddress,\n maxConnectionAttempts = 30,\n rtcConfiguration = {},\n setStatus = () => {},\n setError = () => {},\n // Video element defaults\n autoPlay = true,\n muted = true,\n ...props\n }) => {\n\n const [connectionAttempts, setConnectionAttempts] = useState(0);\n const videoRef = useRef<HTMLVideoElement>(null);\n const webSocket = useRef<WebSocket|null>(null);\n const peerConnection = useRef<RTCPeerConnection|null>(null);\n\n\n function handleIncomingError(error: string) {\n setError(error);\n closeWebSocket();\n }\n\n // SDP offer received from peer, set remote description and create an answer\n const onIncomingSDP = async (description: RTCSessionDescriptionInit) => {\n if (!peerConnection.current || !webSocket.current) {\n return;\n }\n\n try {\n if (description.type === \"offer\" && peerConnection.current.signalingState !== \"stable\") {\n await Promise.all([\n peerConnection.current.setLocalDescription({type: \"rollback\"}),\n peerConnection.current.setRemoteDescription(description)\n ]);\n\n } else {\n if(description.sdp){\n //HACK: this seems to allow more clients to negotiate.64002a\n // seems to use [codec] H264 (96, level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f)\n description.sdp = description.sdp.replace(/profile-level-id=(640028|64001f|64002a);/,'');\n }\n await peerConnection.current.setRemoteDescription(new RTCSessionDescription(description));\n setStatus('Remote Description set');\n }\n } catch (error){\n console.error('Error:', error);\n setError('Error Setting remote description');\n return;\n }\n\n // what is this case?\n if (description.type !== 'offer') {\n return;\n }\n\n setStatus('Creating Answer');\n try {\n const answer = await peerConnection.current.createAnswer();\n console.debug('Got local description: ' + JSON.stringify(answer));\n await peerConnection.current.setLocalDescription(answer);\n } catch (error){\n console.error(error);\n if(error instanceof Error){\n setError(error.message);\n }\n return;\n }\n\n // TODO: Why was this being set to null and why AFTER setting it??\n // peerConnection.current.localDescription['ice-option'] = null\n const message = {\n sdp: peerConnection.current.localDescription\n };\n setStatus('Sending Local Description');\n // console.debug('Local Description:' + JSON.stringify(message));\n try {\n await webSocket.current.send(JSON.stringify(message));\n setStatus('Connected');\n } catch (error) {\n console.error(error);\n if(error instanceof Error){\n setError(error.message);\n }\n }\n };\n\n // ICE candidate received from peer, add it to the peer connection\n function onIncomingICE(ice:RTCIceCandidateInit) {\n if(!peerConnection.current){\n console.error('peerConnection.current not found onIncomingICE ');\n return;\n }\n const candidate = new RTCIceCandidate(ice);\n peerConnection.current.addIceCandidate(candidate).catch(setError);\n }\n\n const onServerMessage = ({data = ''}: MessageEvent) => {\n if(data ==='HELLO') {\n console.debug('Received HELLO');\n setStatus('Registered with server, waiting for offer.');\n } else if (data.startsWith('ERROR')) {\n console.error('Received ' + data);\n handleIncomingError(data);\n } else {\n // Handle incoming JSON SDP and ICE messages\n let msg: WebRTCMessage;\n try {\n msg = JSON.parse(data);\n } catch (e) {\n if (e instanceof SyntaxError) {\n handleIncomingError('Error parsing incoming JSON: ' + data);\n } else {\n handleIncomingError('Unknown error parsing response: ' + data);\n }\n return;\n }\n // Incoming JSON signals the beginning of a call\n if (!peerConnection.current) {\n createCall(msg);\n }\n\n if (msg.sdp != null) {\n console.debug('Received Remote SDP:' + JSON.stringify(msg.sdp));\n onIncomingSDP(msg.sdp);\n } else if (msg.ice != null) {\n console.debug('Received Remote ICE:' + JSON.stringify(msg.ice));\n onIncomingICE(msg.ice);\n } else {\n handleIncomingError('Unknown incoming JSON: ' + msg);\n }\n }\n };\n\n function onServerClose(event: any) {\n console.debug('serverClose');\n if(webSocket.current){\n setStatus('Disconnected from server');\n closePeerConnection();\n //TODO: todo Fix this to clear on close\n if (event !== null && event.code !== 1000 && enabled) {\n window.setTimeout(connectToPeer, 3000);\n }\n }\n }\n\n function onServerError(event: any) {\n console.debug(event);\n setError('Unable to connect to server');\n closeWebSocket();\n }\n\n function connectToPeer() {\n console.debug('connectToPeer', connectionAttempts);\n if (connectionAttempts >= maxConnectionAttempts) {\n setError('Too many connection attempts, aborting. Refresh page to try again');\n return;\n }\n setError(null);\n\n const peerId = getPeerId(id);\n setStatus('Connecting to server ' + peerAddress);\n const ws = new WebSocket(peerAddress);\n webSocket.current = ws;\n /* When connected, immediately register with the server */\n ws.addEventListener('open', () => {\n const interval = setInterval(() => {\n try {\n ws.send('HELLO ' + peerId);\n clearInterval(interval);\n setStatus('Registering with server (sent HELLO) for peer id: ' + peerId);\n } catch (error) {\n console.debug(error);\n }\n }, 3000);\n });\n ws.addEventListener('error', onServerError);\n ws.addEventListener('message', onServerMessage);\n ws.addEventListener('close', onServerClose);\n setConnectionAttempts(connectionAttempts + 1);\n }\n\n function onRemoteTrack(event: RTCTrackEvent) {\n if (videoRef.current && videoRef.current.srcObject !== event.streams[0]) {\n console.debug('Incoming stream');\n videoRef.current.srcObject = event.streams[0];\n setStatus('Adding Track');\n }\n }\n\n function createCall(msg: WebRTCMessage) {\n // Reset connection attempts because we connected successfully\n setConnectionAttempts(0);\n console.debug('Creating RTCPeerConnection');\n\n if (!msg.sdp) {\n console.debug('WARNING: First message wasn\\'t an SDP message!?');\n return;\n }\n\n const pc = new RTCPeerConnection(rtcConfiguration);\n peerConnection.current = pc;\n pc.addEventListener('track', onRemoteTrack);\n\n pc.addEventListener('icecandidate', ({candidate = null}) => {\n\n if (!candidate) {\n console.debug('All local ICE Candidates sent.');\n return;\n }\n // We have a local ICE candidate, send it to the remote party with the same uuid\n if(webSocket.current){\n webSocket.current.send(JSON.stringify({ 'ice': candidate }));\n //TODO: try catch here?\n } else {\n console.debug('no WS found on peer connection \\'icecandidate\\' event... how?');\n }\n });\n // pc.addEventListener('negotiationneeded', ()=>{console.debug('negotiationneeded')})\n\n setStatus('RTCPeerConnection created, waiting for SDP');\n }\n\n const closeWebSocket = async () => {\n console.debug('closeWebSocket');\n await closePeerConnection();\n if(webSocket.current){\n await webSocket.current.close();\n webSocket.current = null;\n }\n };\n\n const closePeerConnection = async() => {\n console.debug('closePeerConnection');\n if (peerConnection.current) {\n await peerConnection.current.close();\n peerConnection.current = null;\n }\n };\n\n useEffect(() => {\n if (enabled === true) {\n connectToPeer();\n } else {\n if (webSocket.current) {\n webSocket.current.close(1000, 'WebRTC Disabled');\n }\n }\n return ()=>{\n console.debug('cleanup');\n closeWebSocket();\n };\n }, [enabled]);// eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <Video {...props} autoPlay={autoPlay} muted={muted} ref={videoRef} />\n );\n};\n\nexport default WebRTCPlayer;\n\n\n\nfunction getPeerId(id: string) {\n return 'WRP_' + id + '_' + Math.floor(Math.random() * (9000 - 10) + 10).toString();\n}","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport WebRTCClient from '../WebRTCClient';\nimport Spinner from '../Indicators/Spinner';\nimport { LineUIOptions, IBoundary, LineUIVideoOptions } from '.';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n`;\nconst Video = styled(WebRTCClient)`\n width: 100%;\n height: 100%;\n border-radius: 3px;\n background-color: hsla(0deg, 0%, 0%, 35%);\n`;\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{transcalent?: boolean}>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transcalent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\n\n\n\ninterface LineUIProps {\n ws: string;\n onSizeChange?: (size: {h: number; w: number}) => void;\n onLineMoveEnd?: ()=> void;\n onLoaded?: (metadata: {height: number; width: number; }) => void;\n options?: LineUIOptions;\n videoOptions?: LineUIVideoOptions;\n}\nconst LineUI : React.FC<LineUIProps> = ({\n ws,\n onSizeChange = ()=>{},\n onLineMoveEnd = ()=>{},\n onLoaded = ()=>{},\n videoOptions,\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n boundaryOffset = 0,\n showDirectionMark = false\n }={}\n}) => {\n\n const frame = useRef<SVGSVGElement>(null);\n const videoRef = useRef<HTMLVideoElement>();\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const {state} = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n\n // Scale Code\n const [videoSize, setVideoSize] = useState({ h: 768, w: 1024 });\n const [unit, setUnit] = useState(1);\n const [loaded, setLoaded] = useState(false);\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if(!videoRef.current) {return;}\n const { videoHeight, videoWidth, clientHeight } = videoRef.current;\n\n if(videoHeight !== videoSize.h || videoWidth !== videoSize.w) {\n setVideoSize({ h: videoHeight, w: videoWidth });\n onSizeChange({ h: videoHeight, w: videoWidth });\n }\n\n if(videoHeight / clientHeight !== unit) {\n setUnit(videoHeight / clientHeight);\n }\n }, [videoSize.h, videoSize.w, unit, onSizeChange]);\n\n const handlePositionTipShow = (e: any) => {\n if(e.target === frame.current){\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder ||false);\n };\n\n const calculateCTM = useCallback(()=>{\n if(!frame.current) {return null;}\n //On size change make sure to refresh CTM\n return frame.current.getScreenCTM();\n },[]);\n\n useEffect(() => {\n // Redefine boundaries and screen matrix when the loaded video changes our svg viewbox.\n if(!frame.current || !loaded) {return;}\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n setBoundaries(bounds);\n }, [videoSize, loaded, boundaryOffset]);\n\n const onLoadedMetadata = useCallback(({target}) =>{\n if(target){\n setLoaded(true);\n videoRef.current = target;\n initScaleAndBounds();\n const {videoHeight=1, videoWidth=1} = target;\n onLoaded({height: videoHeight, width: videoWidth});\n }\n },[initScaleAndBounds, onLoaded]);\n\n useEffect(() => {\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Video onLoadedMetadata={onLoadedMetadata} peerAddress={ws} id='1' {...videoOptions} enabled> </Video>\n {!loaded && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {\n loaded &&\n <Frame ref={frame} viewBox={`0 0 ${videoSize.w} ${videoSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transcalent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n }\n </Container>\n );\n\n};\n\nexport default LineUI;\n","import { IPointSet, IVector2 } from './';\nimport update from 'immutability-helper';\n\nexport type IReducerActions =\n | UpdateAction\n | LoadAction\n | AddSetAction\n | RemoveAction\n | AddPointAction\n | RemovePointAction\n | UpdateSetOptions\n | RenameSetAction\n ;\n\ninterface AddSetAction{\n type: 'ADD_SET';\n data: IPointSet;\n}\ninterface UpdateAction {\n type: 'UPDATE'|'UPDATE_SET_POINTS';\n index: number;\n data: IPointSet;\n}\n\ninterface RenameSetAction {\n type: 'RENAME_SET';\n index: number;\n data: {\n name: string;\n };\n}\ninterface UpdateSetOptions {\n type: 'UPDATE_SET_OPTIONS';\n index: number;\n data: Partial<IPointSet>;\n}\ninterface RemoveAction {\n type: 'REMOVE_SET';\n index: number;\n}\ninterface LoadAction {\n type: 'LOAD';\n state: IPointSet[];\n}\ninterface AddPointAction {\n type: 'ADD_POINT';\n index: number;\n}\ninterface RemovePointAction {\n type: 'REMOVE_POINT';\n index: number;\n}\n\nconst getMidpoint = (pointA : IVector2, pointB : IVector2) => {\n return({\n x: pointA.x + (pointB.x - pointA.x) * 0.5,\n y: pointA.y + (pointB.y - pointA.y) * 0.5\n });\n};\n\nexport default (state : IPointSet[], action: IReducerActions) => {\n\n switch(action.type){\n //This UPDATE is better named 'UPDATE_SET_POINTS'\n case \"UPDATE_SET_POINTS\":\n case \"UPDATE\": {\n const points = action.data.points.map((point) => ({...point}));\n return update(state, {[action.index]: { points: {$set: points}}});\n }\n\n case \"RENAME_SET\": {\n const set = { ...state[action.index], name: action.data.name};\n return update(state, {[action.index]: {$set: set}});\n }\n\n case \"UPDATE_SET_OPTIONS\": {\n const set = { ...state[action.index], ...action.data};\n return update(state, {[action.index]: {$set: set}});\n }\n\n case \"ADD_SET\":\n return [...state, action.data];\n\n case \"REMOVE_SET\":\n return update(state, { $splice: [[action.index,1]]});\n\n case \"ADD_POINT\": {\n const newPoint: IVector2 = getMidpoint(state[action.index].points[0], state[action.index].points[1]);\n return update(state, {[action.index]: {points: {$splice: [[1, 0, newPoint]]}}});\n }\n\n case \"REMOVE_POINT\":\n if(state[action.index].points.length <= 2){ return state; }\n return update(state, {[action.index]: {points: {$splice: [[state[action.index].points.length - 1, 1]]}}});\n\n case 'LOAD': {\n const newState = action.state.map(\n ({name, points, ...rest}) => ({\n name,\n points: points.map( ({x,y}) => ({x,y}) ),\n ...rest\n })\n );\n return newState;\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n","import { useEffect } from 'react';\n\nexport const useTitle = (title : string, area? : string, delimiter?: string, update= true) => {\n\n// Index Title\nconst baseTitle = document.title.split('|').slice(-1)[0].trim();\n\n// on unmount will return the baseTitle to Index Title for pages not using this hook.\nuseEffect(() => {\n return () => {\n document.title = baseTitle;\n };\n}, [baseTitle]);\n\n useEffect(() => {\n if(!update) return;\n document.title = makeTitle([\n ...(title ? [title] : []),\n ...(area ? [area] : []),\n ...(baseTitle? [baseTitle] : [])\n ], delimiter);\n\n },[title, area, delimiter, update, baseTitle]);\n};\n\n/**\n * Put the parts together for title use.\n * @param parts Each part to make up the title.\n * @param delimiter Character used for delimiting\n */\nconst makeTitle = (parts: string[], delimiter : string = '|') : string => {\n\n let title = '';\n delimiter = ' ' + delimiter + ' ';\n\n parts.forEach((part, key) => {\n title += part;\n if(parts.length - 1 !== key){\n title += delimiter;\n }\n });\n\n return title;\n\n};","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport { Link } from 'react-router-dom';\nimport { useTitle } from '../../hooks/useTitle';\n\n\nconst Container = styled.div`\n position: relative;\n`;\n\nconst IconContainer = styled.div`\n position: absolute;\n left: -45px;\n bottom: 0;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n display: block;\n }\n`;\n\nconst Title = styled.h1`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.mainTitle};\n `}\n margin: 0 0 20px;\n`;\n\n\nconst AreaTitleCss = css`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.areaTitle};\n `}\n margin: 0;\n position: absolute;\n top: -18px;\n`;\n\nconst AreaTitle = styled.div`\n ${AreaTitleCss}\n`;\n\nconst AreaLinkTitle = styled(Link)`\n ${AreaTitleCss}\n &:hover {\n text-decoration: underline;\n }\n`;\n\ninterface IProps {\n title: string\n icon?: string\n areaTitle?: string\n areaHref?: string\n updateDocTitle?: boolean\n hideAreaInDocTitle? : boolean\n}\n\nconst PageTitle : React.FC<IProps> = ({title, icon, areaTitle, areaHref, updateDocTitle = true, hideAreaInDocTitle=false }) => {\n // Set <title> attribute automagically.\n\n useTitle(title, hideAreaInDocTitle ? undefined : areaTitle || '', undefined, updateDocTitle);\n\n return (\n <Container>\n {areaTitle && areaHref\n ? <AreaLinkTitle to={areaHref}>{areaTitle}</AreaLinkTitle>\n : areaTitle && <AreaTitle>{areaTitle}</AreaTitle>}\n <Title>{title}</Title>\n {icon ?\n <IconContainer><Icon size={24} color='dimmed' {...{icon}} /></IconContainer>\n : null}\n </Container>\n );\n};\n\nexport default PageTitle;","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst Container = styled.p`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.introduction};\n `}\n`;\n\ninterface IProps {}\n\nconst IntroductionText : React.FC<IProps> = ({children}) => {\n return (\n <Container>\n {children}\n </Container>\n );\n};\n\nexport default IntroductionText;","import React from 'react';\nimport styled from 'styled-components';\n\nimport PageTitle from '../atoms/PageTitle';\nimport IntroductionText from '../atoms/IntroductionText';\n\nconst Container = styled.div``;\n\ninterface IProps {\n title: string\n areaHref?: string\n areaTitle?: string\n icon?: string\n introductionText?: string\n updateDocTitle?: boolean\n hideAreaInDocTitle? : boolean\n}\n\nconst PageHeader : React.FC<IProps> = ({title, icon, introductionText, areaHref, areaTitle, updateDocTitle = true, hideAreaInDocTitle}) => {\n return (\n <Container>\n <PageTitle {...{title, icon, areaHref, areaTitle, updateDocTitle, hideAreaInDocTitle}} />\n {introductionText ?\n <IntroductionText>{introductionText}</IntroductionText>\n : null}\n </Container>\n );\n};\n\nexport default PageHeader;","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\n/**\n * This component creates a column of ReactElements\n */\nexport interface IMultiContent {\n contentArray: ReactElement[];\n}\n\nconst MultilineContent : React.FC<IMultiContent> = ({contentArray}) => {\n return(\n <Container>\n {contentArray.map((element, index) => {\n return <div key={`element-${index}`}>{element}</div>;\n })}\n </Container>\n );\n};\n\nexport default MultilineContent;","import React, { useState, useCallback, VideoHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport { IMediaType } from '../../index';\nimport Icon from '../../Icons/Icon';\n\nexport const MediaBoxWrapper = styled.div<{minWidth?: string, minHeight?: string}>`\n position: relative;\n line-height: 0;\n ${({minHeight}) => minHeight && `min-height: ${minHeight}`};\n ${({minWidth}) => minWidth && `min-width: ${minWidth}`};\n`;\n\nconst mediaStyle = `\n max-width: 100%;\n max-height: 100%;\n border-radius: 3px;\n background-color: hsla(0deg, 0%, 0%, 35%);\n`;\n\nconst LoadingOverlay = styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Video = styled.video<{ isLoaded?: boolean, hasModalLimits?: boolean }>`\n ${mediaStyle};\n outline: none;\n\n ${({ theme, isLoaded, hasModalLimits }) => css`\n transition: opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeOut};\n opacity: ${isLoaded ? `1` : `0`};\n\n ${hasModalLimits && css`\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 100px);\n `};\n `};\n`;\n\nconst StyledImage = styled.img<{ isLoaded?: boolean, hasModalLimits?: boolean }>`\n ${mediaStyle};\n\n ${({ theme, isLoaded, hasModalLimits }) => css`\n transition: opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeOut};\n opacity: ${isLoaded ? `1` : `0`};\n\n ${hasModalLimits && css`\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 100px);\n `};\n `};\n`;\n\nexport interface IMediaModal {\n src: string\n mediaType: IMediaType\n alt?: string\n videoOptions?: VideoHTMLAttributes<HTMLVideoElement>\n hasModalLimits?: boolean\n retryLoading?: boolean\n retryLimit?: number\n minWidth?: string\n minHeight?: string\n onError?: (e: Event) => void\n onMediaLoad?: () => void\n}\n\nconst MediaBox: React.FC<IMediaModal> = ({\n src: incomingSrc,\n alt,\n videoOptions = {},\n mediaType,\n hasModalLimits,\n retryLoading= false,\n retryLimit=5,\n minWidth,\n minHeight,\n onError: onErrorCallback = () => { },\n onMediaLoad = () => { },\n}) => {\n const [retryCount, setRetryCount] = useState(0);\n const [src, setSrc] = useState(incomingSrc);\n const [loadFailed, setLoadFailed] = useState(false);\n const [loaded, setLoaded] = useState(false);\n\n const {\n loop = false,\n autoPlay = true,\n controls = false,\n muted = true,\n ...videoValues\n } = videoOptions;\n\n const onError = useCallback((e)=>{\n if(!retryLoading || retryCount >= retryLimit) {\n onErrorCallback(e);\n setLoaded(true);\n setLoadFailed(true);\n } else {\n const randomDelay = (1000 * (retryCount ** 2 + Math.random())); // exponential back off retry\n setRetryCount(count => count+1);\n setTimeout(()=>{\n setSrc(`${incomingSrc}?v=${Date.now()}`);\n }, randomDelay);\n }\n\n },[incomingSrc, onErrorCallback, retryCount, retryLoading, retryLimit]);\n\n const handleLoad = useCallback(() => {\n onMediaLoad();\n setLoaded(true);\n }, [onMediaLoad, setLoaded]);\n\n return (\n <MediaBoxWrapper {...{minWidth, minHeight}}>\n {mediaType === 'video'\n ? <Video\n {...{ src, loop, autoPlay, controls, muted, onError, hasModalLimits }}\n {...videoValues}\n isLoaded={loaded && !loadFailed}\n preload='metadata'\n onCanPlayThrough={handleLoad}\n />\n : <StyledImage\n {...{ src, alt, onError, hasModalLimits }}\n onLoad={handleLoad}\n isLoaded={loaded && !loadFailed}\n />}\n {(!loaded) && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {loadFailed && <LoadingOverlay><Icon icon='MissingImage' size={48} /></LoadingOverlay>}\n </MediaBoxWrapper>\n );\n};\n\nexport default MediaBox;","import React, { ReactElement, useCallback, useRef } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { resetButtonStyles } from '../common';\nimport Icon, {IconWrapper} from '../Icons/Icon';\nimport { useClickOutside } from '../hooks/useClickOutside';\n\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: hsla(202, 33%, 95%, 0.51);\n -webkit-backdrop-filter: blur(5px);\n backdrop-filter: blur(5px);\n z-index: 999;\n ${({theme}) => theme && css``}\n\n font-family: ${({ theme }) => theme.fontFamily.ui};\n ${({ theme }) => theme.styles.modal.overlay};\n`;\n\nconst CloseIcon = styled(Icon)``;\n\nconst CloseButton = styled.button<{ selected?: boolean }>`\n ${resetButtonStyles};\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n right: 0;\n top: -30px;\n color: ${({theme}) => theme.colors.icons.mono};\n font-size: 14px;\n font-weight: 500;\n\n ${IconWrapper} {\n display: flex;\n margin-left: 12px;\n }\n ${({ selected = false }) => selected && css`\n border-bottom: 5px solid hsl(207, 80%, 64%);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n ${({ theme }) => theme && css`\n opacity: .8;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n `}\n }\n\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst LightBox = styled.div<{ padding?: boolean, width?: string}>`\n position: relative;\n margin: 27px 0 0;\n z-index: 9999;\n width: ${({ width }) => width ? width : `580px`};\n padding: ${({ padding }) => padding ? `30px 40px` : `0`};\n border-radius: 5px;\n ${({ theme }) => theme.styles.modal.container};\n`;\n\nexport interface IModalProps {\n isOpen: boolean;\n isCloseEnable?: boolean;\n closeText?: string;\n width?: string;\n padding?: boolean;\n customComponent?: ReactElement;\n onDismiss: () => void;\n dismissCallback?: () => void;\n}\n\nconst Modal: React.FC<IModalProps> = ({\n isOpen = false,\n isCloseEnable = true,\n closeText = '',\n width = '',\n padding = true,\n customComponent,\n onDismiss,\n dismissCallback,\n}) => {\n\n const lightBoxRef = useRef<HTMLDivElement>(null);\n const onClickOutside = () => {\n if (isCloseEnable) {\n if(dismissCallback) {\n dismissCallback();\n }\n dismiss();\n }\n };\n\n useClickOutside(lightBoxRef, onClickOutside);\n\n const dismiss = useCallback(() => {\n if(dismissCallback) {\n dismissCallback();\n }\n onDismiss();\n }, [onDismiss, dismissCallback]);\n\n return (isOpen\n ? ReactDom.createPortal(\n <Container>\n <LightBox ref={lightBoxRef} width={width} padding={padding}>\n {isCloseEnable\n ?\n <CloseButton onClick={() => dismiss()}>\n {closeText ? closeText : 'CLOSE'}\n <CloseIcon icon='CloseCompact' size={15} color='mono' weight='regular' />\n </CloseButton>\n : null}\n {customComponent}\n </LightBox>\n </Container>, document.body)\n : null\n );\n};\n\nexport default Modal;","import React, { useState } from 'react';\nimport Modal, { IModalProps } from '../Modals/Modal';\n\nconst defaultModalProps: IModalProps = {\n isOpen: false,\n onDismiss: () => null,\n};\n\ninterface ModalContextType {\n modalProps: IModalProps;\n setModalProps: (newProps: IModalProps) => void;\n}\n\nconst defaultContext: ModalContextType = {\n modalProps: defaultModalProps,\n setModalProps: (newProps: IModalProps) => { console.log(newProps); },\n};\n\nconst ModalContext = React.createContext<ModalContextType>(defaultContext);\n\nconst ModalProvider: React.FC = ({ children }) => {\n\n const [modalProps, setProps] = useState<IModalProps>(defaultContext.modalProps);\n\n const setModalProps = (newProps: IModalProps) => {\n setProps(newProps);\n };\n\n return (\n <ModalContext.Provider value={{ modalProps, setModalProps }}>\n <Modal {...modalProps} />\n {children}\n </ModalContext.Provider>\n );\n};\n\nexport { ModalContext };\nexport default ModalProvider;","import { ReactElement, useCallback, useContext} from 'react';\nimport { ModalContext } from '../context/ModalContext';\nimport { IModalProps } from '../Modals/Modal';\n\n/**\n * This type is a reduced version of the modalProps\n * but with the possibilities to grow beyond the basic modal\n * features\n */\nexport type IModal = {\n closeText?: string,\n isCloseEnable?: boolean,\n width?: string,\n padding?: boolean,\n dismissCallback?: () => void,\n customComponent?: ReactElement\n}\nexport const useModal = () => {\n const { modalProps, setModalProps } = useContext(ModalContext);\n\n const setModalOpen = useCallback((newStatus: boolean) => {\n if (newStatus === undefined) { return;}\n\n const updateProps: IModalProps = {\n ...modalProps,\n isOpen: newStatus,\n };\n setModalProps(updateProps);\n }, [modalProps, setModalProps]);\n\n const onDismiss = useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n const createModal = useCallback((modal?: IModal) => {\n\n if(!modal) {\n setModalProps({isOpen: true, onDismiss});\n }\n\n const updateProps = {\n isOpen: true,\n closeText: modal?.closeText,\n isCloseEnable: modal?.isCloseEnable,\n width: modal?.width,\n padding: modal?.padding,\n dismissCallback: modal?.dismissCallback,\n customComponent: modal?.customComponent,\n onDismiss,\n };\n\n setModalProps(updateProps);\n }, [onDismiss, setModalProps]);\n\n return {\n createModal,\n isModalOpen: modalProps.isOpen,\n setModalOpen,\n };\n};","import React, {useCallback, VideoHTMLAttributes } from 'react';\nimport { IMediaType } from '..';\nimport MediaBox, { IMediaModal } from \"../Misc/atoms/MediaBox\";\nimport { useModal, IModal } from \"./useModal\";\n\n\nexport type ICreateMediaModal = IMediaModal & IModal;\n\nconst videoDefaultOptions: VideoHTMLAttributes<HTMLVideoElement> = { controls: true };\n\nexport const useMediaModal = () => {\n\n // default options for media box\n const { createModal, isModalOpen, setModalOpen } = useModal();\n\n async function isMediaUrlValid(src: string, mediaType: IMediaType): Promise<boolean> {\n let isValid = false;\n\n if (mediaType === 'img') {\n const img = new Image();\n img.src = src;\n try {\n await new Promise((resolve, reject) => {\n img.onload = () => resolve(isValid = true);\n img.onerror = reject;\n });\n } catch (error) {\n isValid = false;\n console.log(`[useMediaModal - isMediaUrlValid] Invalid preview url ${src} - image load failed, modal will not be open`, error);\n }\n }\n\n if (mediaType === 'video') {\n const videoElement = document.createElement('video');\n videoElement.src = src;\n\n try {\n await new Promise((resolve, reject) => {\n videoElement.oncanplaythrough = () => resolve(isValid = true);\n videoElement.onerror = reject;\n });\n\n } catch (error) {\n isValid = false;\n console.log(`[useMediaModal - isMediaUrlValid] Invalid preview url ${src} - video load failed, modal will not be open`, error);\n }\n }\n\n return isValid;\n }\n\n\n const createMediaModal = useCallback(async (mediaModal: ICreateMediaModal) => {\n const {\n src,\n mediaType,\n alt,\n videoOptions = videoDefaultOptions,\n onError,\n onMediaLoad,\n closeText,\n dismissCallback,\n retryLoading = false,\n retryLimit=5,\n minHeight='300px',\n minWidth='300px',\n } = mediaModal;\n\n createModal({\n padding: false,\n width: 'auto',\n closeText,\n dismissCallback,\n customComponent: (\n <MediaBox\n {...{\n src,\n mediaType,\n alt,\n videoOptions,\n onError,\n onMediaLoad,\n retryLoading,\n retryLimit,\n minHeight,\n minWidth,\n }}\n hasModalLimits\n />\n )\n });\n\n }, [createModal]);\n\n return {\n createMediaModal,\n isMediaUrlValid,\n isMediaModalOpen: isModalOpen,\n setMediaModalOpen: setModalOpen,\n };\n};","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { useMediaModal } from '../../hooks/useMediaModal';\nimport { IMediaType } from '../..';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\ntype VideoAspects = '4:3' | '16:9';\n\nconst Container = styled.div<{ hoverZoom?: boolean, aspect?: VideoAspects, mediaUrl?: string}>`\n position: relative;\n height: inherit;\n background: grey;\n border-radius: 3px;\n overflow: hidden;\n width: 55px;\n height: auto;\n opacity: 0.65;\n margin-right: 10px;\n\n &::after {\n content: '';\n display: block;\n padding-bottom: 75%;\n ${({ aspect }) => aspect === '16:9' && css`\n padding-left: 56.25%;\n `}\n }\n\n ${({ theme }) => theme && css`\n transition:\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n transform ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n `}\n\n &:hover {\n ${({ mediaUrl }) => mediaUrl && css`\n cursor: pointer;\n `};\n\n ${({ theme, hoverZoom }) => theme && hoverZoom && css`\n transform: scale(1.5);\n opacity: 1;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut};\n `}\n }\n\n`;\nconst Image = styled.img<{ showImage: boolean }>`\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n display: ${({showImage}) => showImage===true ? 'block': 'none'};\n`;\n\nconst PlayableDrop = styled.div`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: hsla(0, 0%, 0%, .5);\n height: 24px;\n width: 24px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n ${IconWrapper} {\n display: flex;\n svg {\n padding-left: 2px;\n path {\n stroke: hsla(0, 0%, 100%, 1.000);\n }\n }\n };\n`;\n\ninterface IProps {\n image?: string\n hoverZoom?: boolean,\n aspect?: VideoAspects\n mediaUrl?: string\n mediaType?: IMediaType\n retryImageLoad?: boolean\n retryLimit?: number;\n}\n\n// Image\n// No Image Placeholder\n\nconst TableRowThumbnail: React.FC<IProps> = ({ hoverZoom = true, image='', mediaUrl, mediaType, retryImageLoad= false, retryLimit=5}) => {\n const [showImage, setShowImage] = useState(true);\n const [imgSrc, setImgSrc] = useState(image);\n const { createMediaModal } = useMediaModal();\n const [retryCount, setRetryCount] = useState(0);\n const imgRef = useRef<HTMLImageElement>(null);\n const timeoutRef = useRef<(ReturnType<typeof setTimeout>)|null>(null);\n\n const handleModal = useCallback(async () => {\n\n if ( mediaUrl && mediaType ) {\n createMediaModal({ src: mediaUrl, mediaType });\n }\n }, [createMediaModal, mediaType, mediaUrl]);\n\n useEffect(()=>{\n setShowImage(false);\n setRetryCount(0);\n setImgSrc(image);\n },[image]);\n\n useEffect(()=>{\n if(imgRef.current && imgRef.current.complete && imgSrc !== ''){\n timeoutRef.current && clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n setShowImage(true);\n }\n },[imgSrc]);\n\n const retryTimeout = useCallback(()=>{\n timeoutRef.current = null;\n setImgSrc(`${image}?v=${Date.now()}`);\n },[image]);\n\n const retryImage = useCallback(()=>{\n setShowImage(false);\n if(!retryImageLoad || retryCount >= retryLimit ||timeoutRef.current) return;\n const randomDelay = (1000 * (retryCount ** 2 + Math.random())); // exponential back off retry\n setRetryCount(count => count+1);\n timeoutRef.current = setTimeout(retryTimeout, randomDelay);\n },[retryCount, retryImageLoad, retryLimit, retryTimeout]);\n\n\n\n const onLoad = useCallback(()=>{\n timeoutRef.current && clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n setShowImage(true);\n },[]);\n\n return (\n <Container {...{ hoverZoom, mediaUrl }} aspect='16:9' onClick={handleModal}>\n <Image ref={imgRef} src={imgSrc} onError={retryImage} onLoad={onLoad} showImage={showImage} />\n {mediaUrl && (mediaType === 'video') &&\n <PlayableDrop>\n <Icon size={12} icon='Play' color='inverse' />\n </PlayableDrop>}\n </Container>\n );\n};\n\nexport default TableRowThumbnail;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport {IDeviceStatus} from '..';\n\ntype TypeDeviceStatus = IDeviceStatus;\n\nconst Container = styled.div<{ status: TypeDeviceStatus }>`\n height: 42px;\n width: 4px;\n border-radius: 3px;\n display: block;\n\n ${({status, theme: {colors}}) => css`\n background: ${colors.status[status]};\n content:'${status}';\n `}\n\n`;\n\ninterface IProps {\n status: TypeDeviceStatus\n}\n\nconst TypeTableDeviceStatus : React.FC<IProps> = ({status = 'neutral'}) => {\n return <Container status={status} />;\n};\n\nexport default TypeTableDeviceStatus;","import { useCallback } from 'react';\n\nexport const useCopyToClipboard = () => {\n const copyToClipboard = useCallback((str : string) : boolean => {\n\n // Make an area to allow for copying.\n const el = document.createElement('textarea');\n el.value = str;\n el.setAttribute('readonly', '');\n el.style.position = 'absolute';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n\n const selection = document.getSelection();\n\n if(selection){\n const selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false;\n el.select();\n\n const success = document.execCommand('copy');\n document.body.removeChild(el);\n if(selected) {\n selection.removeAllRanges();\n selection.addRange(selected);\n }\n return success;\n }\n\n return false;\n\n },[]);\n\n return {copyToClipboard};\n};","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport { useCopyToClipboard } from '../../hooks/useCopyToClipboard';\nimport {TypeCellStyle, TypeCellAlignment} from '..';\n\nconst CopyToClipboard = styled.button`\n\n cursor: pointer;\n opacity: 0;\n\n position: absolute;\n right: 0;\n top: 14px;\n width: 20px;\n height: 20px;\n background: transparent;\n border: none;\n outline: none;\n\n ${({theme}) => theme && css`\n transition: ${theme.animation.speed.normal} ${theme.animation.easing.easeOut};\n `}\n\n svg {\n display: block;\n }\n\n &:hover {\n opacity: 1 !important;\n }\n\n`;\n\nconst CellContainer = styled.div<{ cellStyle: TypeCellStyle, alignment: TypeCellAlignment, hideDivider?: boolean, hasCopyButton?:boolean }>`\n display: table-cell;\n height: 50px;\n vertical-align: middle;\n position: relative;\n line-height: 30px;\n font-family: ${p => p.theme.fontFamily.data};\n\n &:hover ${CopyToClipboard}{\n opacity: 0.5;\n }\n\n &, a {\n ${({theme, cellStyle, alignment}) => cellStyle === 'firstColumn' ? css`\n ${theme.typography.table.columnData[cellStyle]};\n ` : css`\n ${theme.typography.table.columnData[cellStyle][alignment]};\n `}\n }\n\n a:hover {\n text-decoration: underline;\n }\n\n ${({hasCopyButton}) => hasCopyButton && css`\n padding-right: 20px;\n `};\n\n ${({theme: {styles}, hideDivider}) => !hideDivider && css`\n &::after {\n ${styles.tables.rows.divider};\n content: '';\n display: block;\n height: 1px;\n left: 0;\n right: 0;\n width: 100%;\n bottom: 0px;\n position: absolute;\n }\n `}\n`;\n\nconst UnitText = styled.span`\n ${({theme}) => css`\n ${theme.typography.table.columnData['unit']};\n `}\n`;\n\nconst StatusBlip = styled.div<{status?:string}>`\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 8px;\n ${({status = 'neutral', theme: {colors}}) => css`\n background: ${colors.status[status]};\n `}\n`;\ninterface IProps {\n isLastRow?: boolean\n hideDivider?: boolean\n cellStyle?: TypeCellStyle\n alignment?: TypeCellAlignment\n href?: string\n showUnit?: boolean\n showStatus?: boolean\n unit?: string\n status?: string\n hasCopyButton?: boolean\n}\n\nconst TypeTableCell : React.FC<IProps> = ({ showUnit = false, showStatus = false, status, unit = '', cellStyle = 'normalImportance', alignment = 'left', hideDivider, isLastRow, hasCopyButton, href, children }) => {\n\n // No divider on the last row.\n hideDivider = isLastRow ? true : hideDivider;\n\n const {copyToClipboard} = useCopyToClipboard();\n\n\n return (\n <CellContainer {...{cellStyle, alignment, hideDivider, hasCopyButton}}>\n {showStatus ? <StatusBlip {...{status}} /> : null}\n {href ? <a href={href}>{children}</a> : children}\n {showUnit ? <UnitText>{unit}</UnitText> : null}\n {hasCopyButton ? <CopyToClipboard onClick={() => typeof children === 'string' && copyToClipboard(children)}><Icon icon='Copy' size={16} /></CopyToClipboard> : null}\n </CellContainer>\n );\n};\n\nexport default TypeTableCell;\n","import React, { useCallback } from 'react';\nimport styled, {css} from 'styled-components';\n\nimport Checkbox from '../../Form/atoms/Checkbox';\nimport TableRowThumbnail from './TableRowThumbnail';\nimport TypeTableDeviceStatus from './TypeTableDeviceStatus';\nimport TypeTableCell from './TypeTableCell';\nimport Icon from '../../Icons/Icon';\nimport { ITableColumnConfig, IRowData } from '..';\n\n\nconst RowContainer = styled.div<{isEmpty: boolean}>`\n display: table-row;\n ${({isEmpty}) => isEmpty && css`\n visibility: hidden;\n `};\n`;\n\ninterface IProps {\n isLastRow?: boolean\n selectable?: boolean\n hasStatus?: boolean\n hasThumbnail?: boolean\n hasTypeIcon?: boolean\n columnConfig: ITableColumnConfig[]\n rowData: IRowData\n selectCallback? : (event: any, id?: string | number) => void\n}\n\nconst TypeTableRow : React.FC<IProps> = ({selectable = false, selectCallback, hasStatus, hasThumbnail, hasTypeIcon, rowData, isLastRow, columnConfig }) => {\n\n const wrappedSelectCallback = useCallback((checked) => {\n if(selectCallback){ selectCallback(checked, rowData.id); }\n }, [rowData.id, selectCallback]);\n\n const isEmpty = rowData.columns.length === 0;\n\n return (\n <RowContainer isEmpty={isEmpty}>\n {selectable ? <TypeTableCell hideDivider><Checkbox checked={rowData._checked} onChangeCallback={wrappedSelectCallback} /></TypeTableCell> : null}\n {hasStatus ? <TypeTableCell hideDivider><TypeTableDeviceStatus status={rowData.header?.status} /></TypeTableCell> : null}\n {hasThumbnail ? <TypeTableCell hideDivider><TableRowThumbnail image={rowData.header?.image} mediaUrl={rowData.header?.mediaUrl} mediaType={rowData.header?.mediaType} retryImageLoad={rowData.header?.retryImageLoad} /></TypeTableCell> : null}\n {hasTypeIcon ? <TypeTableCell hideDivider><Icon icon={rowData.header?.icon || ''} color='dimmed' weight='regular' size={16} /></TypeTableCell> : null}\n\n {rowData.columns.map((cell, key) => {\n const {cellStyle, alignment, showUnit, showStatus, hasCopyButton} = columnConfig[key];\n const {unit, status, text, customComponent} = cell;\n return <TypeTableCell key={key} href={cell.href} {...{cellStyle, alignment, showUnit, showStatus, hasCopyButton, unit, status, isLastRow}}>{customComponent ? customComponent : text}</TypeTableCell>;\n })}\n\n </RowContainer>\n );\n};\n\n\nexport default TypeTableRow;","import React from 'react';\nimport styled, {css}from 'styled-components';\nimport Icon, {IconWrapper} from '../../Icons/Icon';\n\nconst HeaderTitle = styled.div<{sortable?: boolean, isSortActive?: boolean, ascending?:boolean}>`\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n display: inline-flex;\n justify-content: center;\n align-content: center;\n position: relative;\n padding: 0 2px;\n user-select: none;\n z-index: 99;\n\n ${IconWrapper} {\n position: absolute;\n top: 0px;\n left: -15px;\n display: none;\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n padding: 3px 1px;\n\n ${({ascending}) => ascending && css`\n transform: rotate(180deg);\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n top: 0;\n `}\n }\n\n ${({isSortActive}) => isSortActive && css`\n &:not(hover) {\n ${IconWrapper} {\n display: inline-flex;\n }\n }\n `}\n\n ${({theme: { styles }, sortable}) => sortable && css`\n\n ${styles.tables.header.sortable.default};\n\n &:hover {\n cursor: pointer;\n ${styles.tables.header.sortable.hover};\n\n ${IconWrapper} {\n ${styles.tables.header.sortable.hover};\n display: inline-flex;\n }\n }\n `}\n`;\n\ninterface IHeaderProps {\n isSortActive?: boolean\n header: string\n sortable?: boolean\n ascending?: boolean\n columnId?: string\n indexKey: number\n toggleSort: (dataKey: number, columnId?: string) => void\n}\n\nconst TableHeaderTitle : React.FC<IHeaderProps> = ({\n header,\n sortable,\n isSortActive,\n ascending,\n columnId,\n indexKey,\n toggleSort\n}) => {\n\n const handleClick = (key: number, colId?: string) => {\n toggleSort(key, colId);\n };\n\n return(\n <HeaderTitle\n sortable={sortable}\n isSortActive={isSortActive}\n ascending={ascending}\n onClick={() => {handleClick(indexKey, columnId);}}\n >\n {sortable && <Icon icon='FilterSorting' size={14} color='dimmed' />}\n {header}\n </HeaderTitle>\n );\n};\n\nexport default TableHeaderTitle;","import React, { useState, useCallback, Fragment } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TypeCellAlignment, ITableColumnConfig } from '..';\nimport Checkbox from '../../Form/atoms/Checkbox';\nimport TableHeaderTitle from '../atoms/TableHeaderTitle';\n\nconst HeaderRow = styled.div`\n display: table-row;\n height: 50px;\n`;\n\nconst HeaderItem = styled.div<{ fixedWidth?: number, alignment?: TypeCellAlignment, hasCopyButton?: boolean, minWidth?: number, headerStyle: string, isSortActive?: boolean }>`\n display: table-cell;\n height: inherit;\n vertical-align:top;\n line-height: 20px;\n position: relative;\n font-family: ${p => p.theme.fontFamily.ui};\n\n ${({ hasCopyButton }) => hasCopyButton && css`\n padding-right: 20px;\n `};\n\n ${({ theme, alignment, headerStyle }) => alignment ? css`\n ${theme.typography.table[headerStyle][alignment]};\n ` : css`\n ${theme.typography.table[headerStyle]['left']};\n `};\n\n ${p => p.fixedWidth && css`\n width: ${p.fixedWidth}px;\n `};\n\n ${({ minWidth }) => minWidth && css`\n min-width:${minWidth}px;\n `};\n\n ${({ theme: {styles}, headerStyle, isSortActive }) => headerStyle === 'subHeader' && css`\n padding-bottom: 15px;\n\n &::after {\n ${styles.tables.header.divider};\n content: '';\n display: block;\n height: 1px;\n left: ${isSortActive ? '-15px' : '0'};\n right: 0;\n width: ${isSortActive ? 'calc(100% + 15px)' : '100%'};\n bottom: 0px;\n position: absolute;\n }\n`};\n`;\n\n// Default alignment is left//\nconst TitleItems = styled.div<{ alignment?: TypeCellAlignment }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n ${({ alignment }) => alignment && css`\n ${alignment === 'right' ? 'align-items: flex-end' : null};\n ${alignment === 'center' ? 'align-items: center' : null};\n `};\n`;\n\nconst GroupTitle = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n margin-bottom: 4px;\n`;\n\nconst Title = styled.div`\n ${({ theme: {typography} }) => css`\n ${typography.tables.groupName};\n `};\n padding-left: 2px;\n padding-right: 8px;\n white-space: nowrap;\n`;\n\n// Keeps the height consistent with other rows\nconst EmptyTitle = styled.div`\n height: 20px;\n`;\n\nconst MiddleLine = styled.div<{ isLastOfGroup?: boolean }>`\n ${({ theme: {styles} }) => css`\n ${styles.tables.header.groupLine};\n `};\n\n height: 1px;\n flex: 1;\n ${({ isLastOfGroup }) => isLastOfGroup && css`\n margin-right: 15px;\n `};\n`;\n\nconst renderGroupHeader = (columnConfig: ITableColumnConfig[], index: number) => {\n if (index < 0) { return null; }\n\n let isLastOfGroup: boolean = true;\n\n // Is Last of the group if the next is different\n if (index < (columnConfig.length - 1)) {\n isLastOfGroup = (columnConfig[index].groupTitle !== columnConfig[index + 1].groupTitle);\n }\n\n // if the column doesn't belong to any group\n if (!columnConfig[index].groupTitle) {\n return (\n <EmptyTitle />\n );\n }\n\n // has group, previous was equal\n if ((index !== 0) && (columnConfig[index - 1].groupTitle === columnConfig[index].groupTitle)) {\n return (\n <Fragment>\n <EmptyTitle />\n <MiddleLine {...{ isLastOfGroup }} />\n </Fragment>\n );\n }\n\n // New GroupTitle\n return (\n <Fragment>\n <Title>{columnConfig[index].groupTitle}</Title>\n <MiddleLine {...{ isLastOfGroup }} />\n </Fragment>\n );\n};\n\ninterface ITableHeader {\n selectable?: boolean\n hasStatus: boolean\n hasThumbnail: boolean\n hasTypeIcon: boolean\n allChecked: boolean\n isEmptyTable: boolean\n isLoading: boolean\n hasHeaderGroups: boolean\n columnConfig: ITableColumnConfig[]\n defaultAscending: boolean\n toggleAllCallback?: (checked: boolean) => void\n sortCallback?: (ascending: boolean, columnId: string) => void\n}\n\nconst TypeTableHeader: React.FC<ITableHeader> = ({\n selectable,\n hasStatus,\n hasThumbnail,\n hasTypeIcon,\n allChecked,\n isEmptyTable,\n isLoading,\n hasHeaderGroups,\n columnConfig,\n defaultAscending,\n toggleAllCallback = () => { },\n sortCallback = () => { },\n}) => {\n\n const [sortSpec, setSortSpec] = useState(columnConfig);\n const [ascendingState, setAscendingState] = useState(defaultAscending);\n\n const toggleAllCallbackWrapper = useCallback((checked: boolean) => {\n toggleAllCallback(checked);\n }, [toggleAllCallback]);\n\n\n /**\n * Rules for toggling ascending value\n * - Clicked column was active, toggle value of ascending.\n * - No column was sorted before, keep the sorting ascending.\n * - Clicked column was not active persist the last ascending option\n */\n const toggleSort = useCallback((indexKey: number, columnId?: string) => {\n\n if (sortSpec[indexKey] === undefined) { return; }\n if (!sortSpec[indexKey].sortable) { return; }\n\n const updatedSort = [...sortSpec];\n\n let lastActiveKey: number | null = null;\n updatedSort.forEach((col, key) => {\n if (col.sortActive) {\n lastActiveKey = key;\n }\n if (key === indexKey) {\n col.sortActive = true;\n } else {\n col.sortActive = false;\n }\n });\n\n const newAscending: boolean = (lastActiveKey === indexKey) ? !ascendingState : ascendingState;\n const colId: string = (columnId === undefined) ? `column_${indexKey}` : columnId;\n sortCallback(newAscending, colId);\n setSortSpec(updatedSort);\n setAscendingState(newAscending);\n }, [ascendingState, sortCallback, sortSpec]);\n\n return (\n <HeaderRow>\n {selectable ? (\n <HeaderItem headerStyle='header' fixedWidth={30}>\n <Checkbox checked={allChecked} disabled={isEmptyTable || isLoading} onChangeCallback={toggleAllCallbackWrapper} />\n </HeaderItem>)\n : null}\n {hasStatus ? <HeaderItem headerStyle='header' fixedWidth={10} /> : null}\n {hasThumbnail ? <HeaderItem headerStyle='header' fixedWidth={70} /> : null}\n {hasTypeIcon ? <HeaderItem headerStyle='header' fixedWidth={35} /> : null}\n\n {columnConfig.map((column, key, allColls) => {\n const { header, alignment, hasCopyButton, sortActive, columnId, sortable, minWidth }: ITableColumnConfig = column;\n return (\n <HeaderItem\n key={key}\n {...{ alignment, hasCopyButton, minWidth }}\n headerStyle={hasHeaderGroups ? 'subHeader' : 'header'}\n isSortActive={sortActive}\n >\n <TitleItems {...{ alignment }}>\n {hasHeaderGroups &&\n <GroupTitle>\n {hasHeaderGroups && renderGroupHeader(allColls, key)}\n </GroupTitle>}\n <TableHeaderTitle\n header={header}\n sortable={sortable}\n indexKey={key}\n columnId={columnId}\n isSortActive={sortActive}\n ascending={ascendingState}\n toggleSort={toggleSort}\n />\n </TitleItems>\n </HeaderItem>);\n })}\n </HeaderRow>\n );\n};\n\nexport default TypeTableHeader;","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport TypeTableRow from '../atoms/TypeTableRow';\nimport { ITableColumnConfig, ITypeTableData, IRowData } from '..';\nimport TypeTableHeader from '../molecules/TypeTableHeader';\n\nconst Container = styled.div``;\n\nconst TableContainer = styled.div`\n display: table;\n width: 100%;\n position: relative;\n`;\n\nconst LoadingText = styled.div`\n color: hsla(195, 10%, 52%, 0.72);\n`;\n\nconst LoadingBox = styled.div`\n position: absolute;\n left: 0;\n z-index: 99;\n background-color: ${({ theme }) => theme.styles.tables.loadingOverlay};\n height: calc(100% - 50px);\n width: 100%;\n min-height: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 20px;\n\n ${LoadingText} {\n margin-top: 10px;\n }\n`;\n\nconst EmptyTableBox = styled.div`\n position: absolute;\n left: 0;\n z-index: 99;\n padding: 20px;\n width: 100%;\n min-height: 100px;\n text-align: center;\n h3 {\n font-weight: 500;\n color: hsl(208, 8%, 38%);\n }\n color: hsl(207, 5%, 57%);\n`;\n\nconst isChecked = ({ _checked = false }: IRowData) => {\n return _checked === true;\n};\n\ninterface IProps {\n columnConfig: ITableColumnConfig[]\n rows: ITypeTableData\n selectable?: boolean\n hasStatus?: boolean\n hasThumbnail?: boolean\n hasTypeIcon?: boolean\n defaultAscending?: boolean\n isLoading?: boolean\n loadingText?: string\n emptyTableTitle?: string\n emptyTableText?: string\n hasHeaderGroups?: boolean\n selectCallback?: (checked: boolean, id?: string | number) => void\n toggleAllCallback?: (checked: boolean) => void\n sortCallback?: (ascending: boolean, columnId: string) => void\n}\n\nconst TypeTable: React.FC<IProps> = ({\n columnConfig,\n selectable,\n rows = [],\n hasStatus = false,\n hasThumbnail = false,\n hasTypeIcon = false,\n defaultAscending = false,\n isLoading = false,\n loadingText = 'Loading Data...',\n emptyTableTitle = '',\n emptyTableText = '',\n hasHeaderGroups = false,\n sortCallback = () => { },\n selectCallback = () => { },\n toggleAllCallback = () => { },\n}) => {\n\n /* Note about Empty table\n Currently IRowData Type enforces user to send columns\n so rows length will always be at least 1\n I wasn't sure if I should edit IRowData to have columns optional\n If we allow columns to be optional, previous implementations\n wont be able to have \"No data\" Message\n*/\n\n const [allChecked, setAllChecked] = useState(false);\n const isEmptyTable = (rows.length === 1) && (rows[0].columns.length === 0) && (!isLoading);\n\n useEffect(() => {\n let areAllChecked = false;\n if (rows.every(isChecked) && (rows.length > 0) && !isEmptyTable) {\n areAllChecked = true;\n }\n setAllChecked(areAllChecked);\n }, [isEmptyTable, rows]);\n\n return (\n <Container>\n <TableContainer>\n <TypeTableHeader\n {...{\n selectable,\n hasStatus,\n hasThumbnail,\n hasTypeIcon,\n defaultAscending,\n allChecked,\n isEmptyTable,\n isLoading,\n hasHeaderGroups,\n columnConfig,\n toggleAllCallback,\n sortCallback,\n }}\n />\n {isLoading ? (\n <LoadingBox>\n <Spinner size='large' styling='primary' />\n <LoadingText>{loadingText}</LoadingText>\n </LoadingBox>\n ) : null}\n {isEmptyTable\n ? (\n <EmptyTableBox>\n <h3>{emptyTableTitle}</h3>\n <p>{emptyTableText}</p>\n </EmptyTableBox>\n )\n : null}\n {rows.map((rowData, key) => {\n const isLastRow = (rows.length - 1 === key) ? true : false;\n return (\n <TypeTableRow\n key={key} {...{\n rowData,\n isLastRow,\n selectable,\n selectCallback,\n columnConfig,\n hasStatus,\n hasThumbnail,\n hasTypeIcon\n }}\n />\n );\n })}\n </TableContainer>\n </Container>\n );\n};\n\nexport default TypeTable;","import React, { InputHTMLAttributes, useState, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport SmallInput from '../../Form/atoms/SmallInput';\nimport Button from '../../Form/atoms/Button';\nimport ButtonWithLoading from '../../Form/atoms/ButtonWithLoading';\nimport { StyledLabel } from '../../Form/atoms/Label';\nimport IconButton from '../../Form/atoms/IconButton';\nimport { TypeCellAlignment } from '../';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { Link } from 'react-router-dom';\n\nconst Container = styled.div`\n position: relative;\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n`;\nconst StyledButton = styled(Button)`\n flex-shrink: 0;\n`;\n\nconst StyledLoadingButton = styled(ButtonWithLoading)`\n flex-shrink: 0;\n`;\n\nconst StyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst EditContainer = styled.div`\n min-width: 320px;\n background-color: hsl(0, 0%, 100%);\n z-index: 99;\n position: absolute;\n bottom: -15px;\n left: -11px;\n display: flex;\n align-items: center;\n justify-content: center;\n ${StyledLabel} {\n margin:0;\n span {\n margin: 0;\n }\n }\n ${StyledButton} {\n margin-left: 5px;\n }\n ${StyledLoadingButton} {\n margin-left: 5px;\n }\n`;\n\nconst StyledIconButton = styled(IconButton)``;\n\nconst TextContainer = styled.div<{ alignment: TypeCellAlignment }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-right: 18px;\n\n ${({ alignment }) => alignment === 'center' && css`\n justify-content: center;\n `}\n\n ${({ alignment }) => alignment === 'right' && css`\n justify-content: flex-end;\n`}\n\n ${StyledIconButton} {\n opacity: 0;\n position: absolute;\n top: 7px;\n right: 0;\n };\n\n &:hover {\n ${StyledIconButton} {\n opacity: 1;\n };\n }\n`;\n\nexport interface OwnProps {\n defaultValue: string\n rowKey: string\n alignment?: TypeCellAlignment\n toLink?: string\n saveCallback?: (inputValue: string, rowKey: string) => void\n}\n\ntype IEditableCell = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst EditCell: React.FC<IEditableCell> = ({\n type = 'text',\n placeholder = '',\n defaultValue,\n rowKey,\n alignment = 'left',\n toLink = '',\n saveCallback,\n ...props\n}) => {\n const [isEditMode, setIsEditMode] = useState(false);\n const [updatedValue, setUpdatedValue] = useState(defaultValue);\n const [loading, setLoading] = useState(false);\n\n const handleSave = useCallback(async (value: string) => {\n setLoading(true);\n if (saveCallback) {\n await saveCallback(value, rowKey);\n }\n setIsEditMode(false);\n setLoading(false);\n }, [rowKey, saveCallback]);\n\n const verifyKeyPress = useCallback(async (eve: React.KeyboardEvent<HTMLInputElement>) => {\n\n // var code = parseInt(eve.key, 10);\n const code = eve.keyCode | eve.which | parseInt(eve.key, 10);\n\n if (code === 13 && handleSave) {\n await handleSave(updatedValue);\n setIsEditMode(false);\n }\n\n if (code === 27) {\n setUpdatedValue(defaultValue);\n setIsEditMode(false);\n }\n\n }, [handleSave, updatedValue, defaultValue]);\n\n const editContainerRef = useRef<HTMLDivElement>(null);\n\n const onClickOutsideEdit = () => {\n setUpdatedValue(defaultValue);\n setIsEditMode(false);\n };\n\n useClickOutside(editContainerRef, onClickOutsideEdit);\n\n return (\n <Container>\n {isEditMode\n ? (\n <EditContainer ref={editContainerRef}>\n <SmallInput\n {...props}\n autoFocus\n label=''\n disabled={loading}\n type={type}\n placeholder={placeholder}\n defaultValue={defaultValue}\n onKeyUp={(eve: React.KeyboardEvent<HTMLInputElement>) => verifyKeyPress(eve)}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setUpdatedValue(e.target.value); }}\n />\n <StyledLoadingButton\n onClick={() => {\n handleSave(updatedValue);\n }}\n size='small'\n loading={loading}\n >\n {loading ? 'Saving' : 'Save'}\n </StyledLoadingButton>\n {!loading && (\n <StyledButton\n onClick={() => setIsEditMode(false)}\n design='secondary'\n size='small'\n >Cancel\n </StyledButton>)}\n </EditContainer>)\n : (\n <TextContainer alignment={alignment}>\n {toLink ? <StyledLink to={toLink}>{updatedValue}</StyledLink> : updatedValue}\n <StyledIconButton icon='Edit' weight='light' size={16} onClick={() => setIsEditMode(true)} />\n </TextContainer>)}\n </Container>\n );\n};\n\nexport default EditCell;","export type PTZReducerActions =\n | ConnectStartAction\n | ConnectFailAction\n | ConnectSuccessAction\n // | DisconnectStartAction\n // | DisconnectFailAction\n | DisconnectSuccessAction\n | MoveStart\n | Stop\n | ZoomStart\n | Home\n | SetImage\n | PTZError\n;\n\ninterface ConnectStartAction {\n type: 'CONNECTING';\n address: string;\n}\ninterface ConnectFailAction {\n type: 'CONNECTION_FAIL';\n errorMessage: string;\n}\ninterface PTZError {\n type: 'PTZ_ERROR';\n errorMessage: string;\n}\ninterface ConnectSuccessAction {\n type: 'CONNECTED';\n}\n// interface DisconnectStartAction {\n// type: 'DISCONNECTING';\n// }\n// interface DisconnectFailAction {\n// type: 'DISCONNECT_FAIL';\n// }\ninterface DisconnectSuccessAction {\n type: 'DISCONNECTED';\n}\ninterface MoveStart {\n type: 'MOVE_START';\n direction: MoveDirections;\n}\n// interface MoveStop {\n// type: 'MOVE_STOP';\n// }\ninterface ZoomStart {\n type: 'ZOOM_START';\n zooming: ZoomStates\n}\ninterface SetImage {\n type: 'SET_IMAGE';\n image: string;\n}\ninterface Stop {\n type: 'STOP';\n}\ninterface Home {\n type: 'HOME';\n}\n\n\nexport interface PTZCredentials {\n host: string;\n username: string;\n password: string;\n}\ntype MoveDirections = 'left'|'right'|'up'|'down'|'home'|null;\ntype ZoomStates = 'in'|'out'|null;\nexport interface PTZState {\n connection: 'connected'|'connecting'|'error'|'disconnecting'|'disconnected';\n moving: MoveDirections;\n zooming: ZoomStates;\n loading: boolean;\n image: string;\n address?: string;\n errorMessage?: string;\n stateID: number;\n}\n\n\nexport default (state : PTZState, action: PTZReducerActions): PTZState => {\n\n switch(action.type){\n case 'CONNECTING': {\n return {\n ...state,\n connection: 'connecting',\n address: action.address,\n loading: true,\n errorMessage: ''\n };\n }\n case 'CONNECTED': {\n return {\n ...state,\n connection: 'connected',\n loading: false\n };\n }\n case 'CONNECTION_FAIL': {\n return {\n ...state,\n loading: false,\n connection: 'error',\n errorMessage: action.errorMessage\n };\n }\n case 'PTZ_ERROR': {\n //UNHANDLED ERROR\n return {\n ...state,\n loading: false,\n errorMessage: action.errorMessage\n };\n }\n // case 'DISCONNECTING': {\n // return {\n // ...state,\n // connection: 'disconnecting',\n // };\n // }\n case 'DISCONNECTED': {\n return {\n image: '',\n connection: 'disconnected',\n moving: null,\n zooming: null,\n loading: false,\n stateID: state.stateID\n };\n }\n // case 'DISCONNECT_FAIL': {\n // return {...state, connection: 'error'};\n // }\n case 'SET_IMAGE': {\n return {\n ...state,\n image: action.image\n };\n }\n case 'MOVE_START': {\n return {\n ...state,\n moving: action.direction,\n };\n }\n case 'STOP': {\n return {\n ...state,\n moving: null,\n zooming: null,\n };\n }\n case 'ZOOM_START': {\n return {\n ...state,\n zooming: action.zooming,\n };\n }\n case 'HOME': {\n return state;\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n\n\n\n\n\n","import { useCallback, useEffect, useReducer } from 'react';\nimport useWebSocket from 'react-use-websocket';\nimport reducer from './PTZReducer';\n\nconst usePTZ = ({socketUrl='', imageRefresh = 1000}) => {\n const {\n sendJsonMessage,\n lastMessage\n } = useWebSocket(socketUrl);\n\n const [state, dispatch ] = useReducer(reducer, {\n connection: 'disconnected',\n moving: null,\n zooming: null,\n image: '',\n loading: false,\n stateID: Math.floor(Math.random() * 1000)\n });\n const {address=null} = state;\n\n const connect = useCallback(async ({username: user, password: pass, host: address, port = 80}: {username: string, password: string, host: string, port?: number})=>{\n dispatch({\n type: 'CONNECTING',\n address\n });\n await sendJsonMessage({\n method: 'connect',\n params: {\n address,\n port,\n user,\n pass\n }\n });\n },[sendJsonMessage]);\n\n const move = useCallback(({direction}: {direction: 'up'|'down'|'left'|'right'}) => {\n console.debug('move', direction);\n const speed = {\n x: 0,\n y: 0,\n z: 0\n };\n\n dispatch({\n type: 'MOVE_START',\n direction\n });\n\n switch (direction){\n case 'up':\n speed.y = 1;\n break;\n case 'down':\n speed.y = -1;\n break;\n case 'left':\n speed.x = -1;\n break;\n case 'right':\n speed.x = 1;\n break;\n }\n\n sendJsonMessage({\n method: 'ptzMove',\n params: {\n address,\n speed,\n timeout: 30\n }\n });\n },[sendJsonMessage, address]);\n\n const zoom = useCallback(({zooming}: {zooming: 'in'|'out'}) => {\n console.debug('zoom', zooming);\n const speed = {\n x: 0,\n y: 0,\n z: 0\n };\n dispatch({\n type: 'ZOOM_START',\n zooming\n });\n switch (zooming) {\n case 'in':\n speed.z = 1;\n break;\n case 'out':\n speed.z = -1;\n break;\n }\n sendJsonMessage({\n method: 'ptzMove',\n params: {\n address,\n speed,\n timeout: 30\n }\n });\n },[sendJsonMessage, address]);\n\n const stop = useCallback(()=>{\n sendJsonMessage({\n method: 'ptzStop',\n params: {\n address\n }\n });\n },[sendJsonMessage, address]);\n\n const disconnect = useCallback(async () => {\n dispatch({\n type: 'DISCONNECTED',\n });\n },[]);\n\n const getImage = useCallback(async ()=>{\n if(!address) { return; }\n sendJsonMessage({\n method: 'fetchSnapshot',\n params: {\n address\n }\n });\n },[address, sendJsonMessage]);\n\n useEffect(()=>{\n const intervalHandler = setInterval(getImage, imageRefresh);\n return () => {\n window.clearInterval(intervalHandler);\n };\n },[getImage, imageRefresh]);\n\n\n useEffect(()=>{\n if(!lastMessage){ return; }\n const {id ='', result=null, error} = JSON.parse(lastMessage.data);\n if(error && id !== 'fetchSnapshot'){\n dispatch({\n type: 'PTZ_ERROR',\n errorMessage: error\n });\n return;\n } else if(id === 'connect') {\n getImage();\n dispatch({\n type: 'CONNECTED',\n });\n } else if(id === 'fetchSnapshot'){\n dispatch({\n type: 'SET_IMAGE',\n image: result||''\n });\n } else if(id === 'ptzMove'){\n console.debug('ptzMove');\n } else if(id === 'ptzStop'){\n console.debug('ptzStop');\n dispatch({\n type: 'STOP'\n });\n }\n },[address, getImage, lastMessage]);\n\n return {state, dispatch, actions: { connect, getImage, disconnect, zoom, stop, move} };\n};\n\nexport default usePTZ;","import React from 'react';\nimport { createContext } from 'react';\nimport { PTZReducerActions, PTZState } from \"./PTZReducer\";\nimport usePTZ from './usePTZ';\n\nexport interface IPTZContext {\n state: PTZState,\n dispatch: React.Dispatch<PTZReducerActions>\n actions: PTZActions\n}\ninterface PTZActions {\n move: ({direction}:{direction: 'up'|'down'|'left'|'right'}) => void;\n zoom: ({zooming}: {zooming: 'in'|'out'}) => void;\n stop: () => void;\n connect: (params: {username: string, password: string, host: string, port?: number}) => void;\n disconnect: () => void;\n}\n\nexport const PTZContext = createContext<IPTZContext>({state: {} as PTZState, dispatch: ()=>{}, actions: {} as PTZActions});\n\ninterface Props {\n socketUrl?: string;\n imageRefresh?: number\n}\n\nconst PTZProvider: React.FC<Props> = ({socketUrl ='ws://localhost/wsapp/', imageRefresh = 1000, children}) => {\n\n const {state, dispatch, actions} = usePTZ({socketUrl, imageRefresh});\n return (\n <PTZContext.Provider value={{state, dispatch, actions}}>\n {children}\n </PTZContext.Provider>\n );\n};\n\nexport default PTZProvider;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'up'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M97.1695375,0.000553838433 L97.5,0.333477759 L97.5,96.5 L1.33347776,96.5 L1.00279053,96.1695538 L1.01292824,94.904196 C1.86331972,42.4545249 44.5585771,0.176923219 97.1695375,0.000553838433 Z' id='PTZ-Hover-Up' />\n </Hover>\n\n <Active active={moving === 'up'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(1.002791, 0.000554)'>\n <path d='M96.1667469,-4.68958206e-13 L96.4972095,0.33292392 L96.4972095,96.4994462 L0.33068723,96.4994462 L2.98427949e-13,96.169 L0.0101377147,94.9036422 C0.860529194,42.4539711 43.5557866,0.176369381 96.1667469,-4.68958206e-13 Z' id='PTZ-Active-Up-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' />\n <path d='M96.1667469,9.08073616e-12 L96.4972095,0.33292392 L96.1682095,0.658446162 L96.1835085,4.9999719 C46.8438228,5.16537489 6.62803783,44.4114895 5.04606009,93.4545769 L5.00997725,94.9436996 L4.99983954,96.2090574 L0.655209472,96.1734462 L0.33068723,96.4994462 L1.20792265e-12,96.169 L0.0101377147,94.9036422 C0.860529194,42.4539711 43.5557866,0.176369381 96.1667469,9.08073616e-12 Z' id='PTZ-Active-Up-Highlight' stroke='url(#linearGradient-18)' fill='url(#linearGradient-17)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-138.146447, -137.146447) translate(68.000000, 68.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-26' />\n <use fill='black' fillOpacity='1' filter='url(#filter-27)' xlinkHref='#path-26' />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\nconst Arrow = styled.g`\n\n`;\n\n\ninterface Props {\n\n}\n\n\n\nconst Down: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n move({direction: 'down'});\n setHover(false);\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M193.146668,96.3343288 L193.47713,96.6672527 L193.47713,192.833775 L97.3106078,192.833775 L96.9799206,192.503329 L96.9900583,191.237971 C97.8404498,138.7883 140.535707,96.5106982 193.146668,96.3343288 Z' id='PTZ-Hover-Down' transform='translate(145.228525, 144.584052) rotate(180.000000) translate(-145.228525, -144.584052) ' />\n </Hover>\n\n <Active active={moving === 'down'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(96.979921, 96.167076)' fill='url(#linearGradient-12)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Down-Slice' fillOpacity='0.56' transform='translate(48.248605, 48.416976) rotate(180.000000) translate(-48.248605, -48.416976) ' />\n <path d='M0.519854724,96.4994462 L0.189392188,96.1665222 L0.518392188,95.841 L0.50309316,91.4994743 C49.8427789,91.3340713 90.0585638,52.0879566 91.6405416,3.0448693 L91.6766244,1.55574655 L91.6867621,0.290388759 L96.0313922,0.326 L96.3559144,-4.8316906e-13 L96.6866017,0.330446162 L96.6764639,1.59580395 C95.8260725,54.0454751 53.1308151,96.3230768 0.519854724,96.4994462 Z' id='PTZ-Active-Down-Highlight' stroke='url(#linearGradient-15)' />\n </Active>\n\n <Arrow id='PTZ-Arrows-Icons' transform='rotate(-45) translate(-138.146447, -137.146447) translate(68.000000, 68.000000) translate(71.000000, 125.000000) rotate(180.000000) translate(-71.000000, -125.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-22' />\n <use fill='black' fillOpacity='1' filter='url(#filter-23)' xlinkHref='#path-22' />\n </Arrow>\n </Container>\n\n );\n};\n\nexport default Down;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\n\nconst Left: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'left'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M96.9801453,96.3343288 L97.3106078,96.6672527 L97.3106078,192.833775 L1.14408557,192.833775 L0.813398341,192.503329 L0.823536055,191.237971 C1.67392753,138.7883 44.3691849,96.5106982 96.9801453,96.3343288 Z' id='PTZ-Hover-Left' transform='translate(49.062003, 144.584052) rotate(-90.000000) translate(-49.062003, -144.584052) ' />\n </Hover>\n\n <Active active={moving === 'left'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(0.813398, 96.167076)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Up-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' transform='translate(48.248605, 48.416976) rotate(-90.000000) translate(-48.248605, -48.416976) ' />\n <path d='M0.188273843,0.331580881 L0.521197763,0.00111834491 L0.846720004,0.330118345 L5.18824575,0.314819318 C5.35364873,49.654505 44.5997634,89.87029 93.6428507,91.4522677 L95.1319735,91.4883506 L96.3973312,91.4984883 L96.36172,95.8431183 L96.68772,96.1676406 L96.3572738,96.4983278 L95.0919161,96.4881901 C42.6422449,95.6377986 0.364643223,52.9425412 0.188273843,0.331580881 Z' id='PTZ-Active-Left-Highlight' stroke='url(#linearGradient-14)' fill='url(#linearGradient-13)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-138.146447, -137.146447) translate(68.000000, 68.000000) translate(12.000000, 69.000000) rotate(-90.000000) translate(-12.000000, -69.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-20' />\n <use fill='black' fillOpacity='1' filter='url(#filter-21)' xlinkHref='#path-20' />\n </g>\n </Container>\n\n );\n};\n\nexport default Left;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Right: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'right'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M193.146668,0.167806588 L193.47713,0.500730508 L193.47713,96.6672527 L97.3106078,96.6672527 L96.9799206,96.3368066 L96.9900583,95.0714488 C97.8404498,42.6217777 140.535707,0.344175968 193.146668,0.167806588 Z' id='PTZ-Hover-Right' transform='translate(145.228525, 48.417530) rotate(90.000000) translate(-145.228525, -48.417530) ' />\n </Hover>\n\n <Active active={moving === 'right'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(96.979921, 0.000554)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Right-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' transform='translate(48.248605, 48.416976) rotate(90.000000) translate(-48.248605, -48.416976) ' />\n <path d='M96.68772,96.1678653 L96.3547961,96.4983278 L96.0292738,96.1693278 L91.6877481,96.1846268 C91.5223451,46.8449411 52.2762305,6.62915618 3.23314314,5.04717843 L1.74402039,5.0110956 L0.478662601,5.00095788 L0.514273843,0.656327817 L0.188273843,0.331805575 L0.518720004,0.00111834491 L1.78407779,0.0112560596 C54.2337489,0.861647539 96.5113506,43.5569049 96.68772,96.1678653 Z' id='PTZ-Active-Right-Highlight' stroke='url(#linearGradient-16)' fill='url(#linearGradient-13)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-137.792893, -137.500000) translate(68.000000, 68.000000) translate(127.000000, 69.000000) rotate(90.000000) translate(-127.000000, -69.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-24' />\n <use fill='black' fillOpacity='1' filter='url(#filter-25)' xlinkHref='#path-24' />\n </g>\n </Container>\n\n );\n};\n\nexport default Right;","import React from 'react';\n\ninterface Props {\n\n}\n\nconst PTZControl: React.FC<Props> = ({children}) => {\n return (\n <svg width='237px' height='245px' viewBox='0 0 237 245' version='1.1'>\n <defs>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-1'>\n <stop stopColor='#2E3F4B' offset='0%' />\n <stop stopColor='#273743' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-2'>\n <stop stopColor='#2F4555' offset='0%' />\n <stop stopColor='#1F2F3A' offset='100%' />\n </linearGradient>\n <circle id='path-3' cx='138.5' cy='137.5' r='106.5' />\n <filter x='-9.9%' y='-12.2%' width='119.7%' height='124.4%' filterUnits='objectBoundingBox' id='filter-4'>\n <feMorphology radius='1.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1' />\n <feOffset dx='0' dy='5' in='shadowSpreadOuter1' result='shadowOffsetOuter1' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter1' result='shadowBlurOuter1' />\n <feComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1' />\n <feColorMatrix values='0 0 0 0 0.107227805 0 0 0 0 0.154449538 0 0 0 0 0.188179348 0 0 0 0.242706512 0' type='matrix' in='shadowBlurOuter1' result='shadowMatrixOuter1' />\n <feMorphology radius='0.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter2' />\n <feOffset dx='0' dy='-5' in='shadowSpreadOuter2' result='shadowOffsetOuter2' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter2' result='shadowBlurOuter2' />\n <feComposite in='shadowBlurOuter2' in2='SourceAlpha' operator='out' result='shadowBlurOuter2' />\n <feColorMatrix values='0 0 0 0 0.225481289 0 0 0 0 0.324960407 0 0 0 0 0.399569746 0 0 0 0.400923295 0' type='matrix' in='shadowBlurOuter2' result='shadowMatrixOuter2' />\n <feMerge>\n <feMergeNode in='shadowMatrixOuter1' />\n <feMergeNode in='shadowMatrixOuter2' />\n </feMerge>\n </filter>\n <linearGradient x1='50%' y1='100%' x2='50%' y2='2.48363598%' id='linearGradient-5'>\n <stop stopColor='#262E37' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#262E37' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <path d='M96.5,0 C149.795478,0 193,43.2045216 193,96.5 C193,149.795478 149.795478,193 96.5,193 C43.2045216,193 0,149.795478 0,96.5 C0,43.2045216 43.2045216,0 96.5,0 Z' id='path-6' />\n <filter x='-0.8%' y='-0.8%' width='101.6%' height='101.6%' filterUnits='objectBoundingBox' id='filter-8'>\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 0.168627451 0 0 0 0 0.215686275 0 0 0 0 0.262745098 0 0 0 0.0113090035 0' type='matrix' in='shadowInnerInner1' result='shadowMatrixInner1' />\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner2' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner2' result='shadowOffsetInner2' />\n <feComposite in='shadowOffsetInner2' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner2' />\n <feColorMatrix values='0 0 0 0 0.162705208 0 0 0 0 0.231672463 0 0 0 0 0.300639719 0 0 0 1 0' type='matrix' in='shadowInnerInner2' result='shadowMatrixInner2' />\n <feMerge>\n <feMergeNode in='shadowMatrixInner1' />\n <feMergeNode in='shadowMatrixInner2' />\n </feMerge>\n </filter>\n <linearGradient x1='49.8274193%' y1='13.7528099%' x2='50.1815273%' y2='82.6324827%' id='linearGradient-9'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='50.170103%' y1='15.6407997%' x2='49.8181984%' y2='84.5265853%' id='linearGradient-10'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='99.9976822%' y1='100%' x2='30.4274195%' y2='28.550434%' id='linearGradient-11'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='87.5668564%' y1='87.9295401%' x2='33.2810997%' y2='28.936849%' id='linearGradient-12'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='87.568598%' y1='87.9277819%' x2='33.2803247%' y2='28.9378254%' id='linearGradient-13'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='22.297939%' y1='79.0413218%' x2='39.761035%' y2='60.7027769%' id='linearGradient-14'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='80.348219%' y1='76.4229599%' x2='62.8569051%' y2='60.0361013%' id='linearGradient-15'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='77.520937%' y1='22.5831044%' x2='57.8137717%' y2='41.946341%' id='linearGradient-16'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='43.428843%' x2='25.1751595%' y2='28.0552504%' id='linearGradient-17'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='30.6678499%' y1='23.1406239%' x2='41.9194217%' y2='34.4210798%' id='linearGradient-18'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-19'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n <path d='M25.6553811,77.370593 L14.0428746,58.1532717 C13.6102476,57.4373681 12.8355055,57 12,57 C11.1644945,57 10.3897524,57.4373681 9.95712537,58.1532717 L-1.65538114,77.370593 C-2.10132346,78.1091204 -2.11539958,79.0310048 -1.69221345,79.7828447 C-1.26902733,80.5346846 -0.474230758,81 0.387493489,81 L23.6125065,81 C24.4742308,81 25.2690273,80.5346846 25.6922135,79.7828447 C26.1153996,79.0310048 26.1013235,78.1091204 25.6553811,77.370593 Z' id='path-20' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-21'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M84.6553811,133.370593 L73.0428746,114.153272 C72.6102476,113.437368 71.8355055,113 71,113 C70.1644945,113 69.3897524,113.437368 68.9571254,114.153272 L57.3446189,133.370593 C56.8986765,134.10912 56.8846004,135.031005 57.3077865,135.782845 C57.7309727,136.534685 58.5257692,137 59.3874935,137 L82.6125065,137 C83.4742308,137 84.2690273,136.534685 84.6922135,135.782845 C85.1153996,135.031005 85.1013235,134.10912 84.6553811,133.370593 Z' id='path-22' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-23'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M140.655381,77.370593 L129.042875,58.1532717 C128.610248,57.4373681 127.835505,57 127,57 C126.164495,57 125.389752,57.4373681 124.957125,58.1532717 L113.344619,77.370593 C112.898677,78.1091204 112.8846,79.0310048 113.307787,79.7828447 C113.730973,80.5346846 114.525769,81 115.387493,81 L138.612507,81 C139.474231,81 140.269027,80.5346846 140.692213,79.7828447 C141.1154,79.0310048 141.101323,78.1091204 140.655381,77.370593 Z' id='path-24' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-25'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M84.6553811,20.370593 L73.0428746,1.15327173 C72.6102476,0.437368074 71.8355055,0 71,0 C70.1644945,0 69.3897524,0.437368074 68.9571254,1.15327173 L57.3446189,20.370593 C56.8986765,21.1091204 56.8846004,22.0310048 57.3077865,22.7828447 C57.7309727,23.5346846 58.5257692,24 59.3874935,24 L82.6125065,24 C83.4742308,24 84.2690273,23.5346846 84.6922135,22.7828447 C85.1153996,22.0310048 85.1013235,21.1091204 84.6553811,20.370593 Z' id='path-26' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-27'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n </defs>\n <g stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' transform='translate(-20, -16)'>\n <g id='PTZ-Base-Outer'>\n <use fill='black' fillOpacity='1' filter='url(#filter-4)' xlinkHref='#path-3' />\n <use stroke='url(#linearGradient-2)' strokeWidth='1' fill='url(#linearGradient-1)' fillRule='evenodd' xlinkHref='#path-3' />\n </g>\n\n <g id='PTZ-Base-Inner' transform='translate(138.500000, 137.500000) rotate(45.000000) translate(-138.500000, -137.500000) translate(42.000000, 41.000000)'>\n <mask id='mask-7' fill='white'>\n <use xlinkHref='#path-6' />\n </mask>\n <g>\n <use fillOpacity='0.56' fill='url(#linearGradient-5)' fillRule='evenodd' xlinkHref='#path-6' />\n <use fill='black' fillOpacity='1' filter='url(#filter-8)' xlinkHref='#path-6' />\n </g>\n <line x1='96.5' y1='0.333477759' x2='96.5' y2='192.666522' id='PTZ-Base-Division-B' stroke='url(#linearGradient-9)' strokeLinecap='square' mask='url(#mask-7)' />\n <line x1='96.5' y1='0.333477759' x2='96.5' y2='192.666522' id='PTZ-Base-Division-A' stroke='url(#linearGradient-10)' strokeLinecap='square' mask='url(#mask-7)' transform='translate(96.500000, 96.500000) rotate(-90.000000) translate(-96.500000, -96.500000) ' />\n </g>\n {children}\n </g>\n </svg>\n );\n};\n\nexport default PTZControl;","import React from 'react';\n\ninterface Props {\n\n}\n\nconst ZoomBase: React.FC<Props> = ({ children }) => {\n return (\n <svg width='239px' height='121px' viewBox='0 0 239 121'>\n <defs>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-zoom1'>\n <stop stopColor='#2E3F4B' offset='0%' />\n <stop stopColor='#273743' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-zoom2'>\n <stop stopColor='#2F4555' offset='0%' />\n <stop stopColor='#1F2F3A' offset='100%' />\n </linearGradient>\n <path\n d='M42.6,0 L170.4,0 C193.92733,0 213,19.0278981 213,42.5 C213,65.9721019 193.92733,85 170.4,85 L42.6,85 C19.0726697,85 0,65.9721019 0,42.5 C0,19.0278981 19.0726697,0 42.6,0 Z'\n id='path-zoom3'\n />\n <filter x='-9.9%' y='-30.6%' width='119.7%' height='161.2%' filterUnits='objectBoundingBox' id='filter-zoom4'>\n <feMorphology radius='1.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1' />\n <feOffset dx='0' dy='5' in='shadowSpreadOuter1' result='shadowOffsetOuter1' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter1' result='shadowBlurOuter1' />\n <feComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1' />\n <feColorMatrix values='0 0 0 0 0.107227805 0 0 0 0 0.154449538 0 0 0 0 0.188179348 0 0 0 0.242706512 0' type='matrix' in='shadowBlurOuter1' result='shadowMatrixOuter1' />\n <feMorphology radius='0.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter2' />\n <feOffset dx='0' dy='-5' in='shadowSpreadOuter2' result='shadowOffsetOuter2' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter2' result='shadowBlurOuter2' />\n <feComposite in='shadowBlurOuter2' in2='SourceAlpha' operator='out' result='shadowBlurOuter2' />\n <feColorMatrix values='0 0 0 0 0.225481289 0 0 0 0 0.324960407 0 0 0 0 0.399569746 0 0 0 0.400923295 0' type='matrix' in='shadowBlurOuter2' result='shadowMatrixOuter2' />\n <feMerge>\n <feMergeNode in='shadowMatrixOuter1' />\n <feMergeNode in='shadowMatrixOuter2' />\n </feMerge>\n </filter>\n <linearGradient x1='50%' y1='100%' x2='50%' y2='2.48363598%' id='linearGradient-zoom5'>\n <stop stopColor='#262E37' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#262E37' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <path\n d='M32.1164062,0.625 L160.582031,0.625 C178.319433,0.625 192.698438,14.8959236 192.698438,32.5 C192.698438,50.1040764 178.319433,64.375 160.582031,64.375 L32.1164062,64.375 C14.3790049,64.375 0,50.1040764 0,32.5 C0,14.8959236 14.3790049,0.625 32.1164062,0.625 Z'\n id='path-zoom6'\n />\n <filter x='-0.8%' y='-2.4%' width='101.6%' height='104.7%' filterUnits='objectBoundingBox' id='filter-zoom7'>\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 0.168627451 0 0 0 0 0.215686275 0 0 0 0 0.262745098 0 0 0 0.0113090035 0' type='matrix' in='shadowInnerInner1' result='shadowMatrixInner1' />\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner2' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner2' result='shadowOffsetInner2' />\n <feComposite in='shadowOffsetInner2' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner2' />\n <feColorMatrix values='0 0 0 0 0.162705208 0 0 0 0 0.231672463 0 0 0 0 0.300639719 0 0 0 1 0' type='matrix' in='shadowInnerInner2' result='shadowMatrixInner2' />\n <feMerge>\n <feMergeNode in='shadowMatrixInner1' />\n <feMergeNode in='shadowMatrixInner2' />\n </feMerge>\n </filter>\n <linearGradient x1='-103.741879%' y1='13.7528099%' x2='211.711869%' y2='82.6324827%' id='linearGradient-zoom8'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='12.2402545%' y1='50%' x2='57.7520941%' y2='28.4033239%' id='linearGradient-zoom9'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='92.8257893%' y1='51.9201456%' x2='57.7520941%' y2='28.4033239%' id='linearGradient-zoom10'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='65.5323776%' y1='100%' x2='65.5323776%' y2='0%' id='linearGradient-zoom11'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='112.326836%' y1='50%' x2='-13.3174936%' y2='50%' id='linearGradient-zoom12'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='-15.3833763%' y1='43.598779%' x2='72.9059278%' y2='57.6171557%' id='linearGradient-zoom13'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-zoom14'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-zoom15'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n </defs>\n <g stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' transform='translate(-200.000000, -490.000000) translate(213.000000, 508.000000)'>\n <g id='PTZ-Zoom-Base-Outer'>\n <use fill='black' fillOpacity='1' filter='url(#filter-zoom4)' xlinkHref='#path-zoom3' />\n <use stroke='url(#linearGradient-zoom2)' strokeWidth='1' fill='url(#linearGradient-zoom1)' fillRule='evenodd' xlinkHref='#path-zoom3' />\n </g>\n\n <g id='PTZ-Zoom-Divider-Section' transform='translate(10.000000, 10.000000)'>\n <g id='PTZ-Zoom-Base-Inner'>\n <use fillOpacity='0.56' fill='url(#linearGradient-zoom5)' fillRule='evenodd' xlinkHref='#path-zoom6' />\n <use fill='black' fillOpacity='1' filter='url(#filter-zoom7)' xlinkHref='#path-zoom6' />\n </g>\n <path d='M105.820053,40.7088832 L99.6638296,34.5975949 C102.060022,31.621888 101.697137,27.3062591 98.8371361,24.766097 C95.9771351,22.2259349 91.6163355,22.346137 88.902734,25.0399314 C86.1891326,27.7337257 86.0680466,32.0626948 88.6268862,34.90182 C91.1857259,37.7409453 95.5330871,38.1011814 98.5306741,35.7224793 L104.686898,41.8337675 C105.002147,42.1387442 105.504804,42.1387442 105.820053,41.8337675 C106.132899,41.5231118 106.132899,41.0195389 105.820053,40.7088832 Z M88.425235,30.1282878 C88.425235,27.0527607 90.9367746,24.5595534 94.0349157,24.5595534 C97.1330568,24.5595534 99.6445964,27.0527607 99.6445964,30.1282878 C99.6445964,33.2038149 97.1330568,35.6970222 94.0349157,35.6970222 C90.9382392,35.693515 88.428768,33.202361 88.425235,30.1282878 Z' id='PTZ-Zoom-Divider-Section-Icon' fill='#6A839E' fillRule='nonzero' />\n <line x1='95.3544271' y1='1.5' x2='95.3544271' y2='13.5' id='PTZ-Zoom-Divider-Section-Top-Line' stroke='url(#linearGradient-zoom8)' strokeLinecap='square' />\n <line x1='95.3544271' y1='50.5' x2='95.3544271' y2='62.5' id='PTZ-Zoom-Divider-Section-Bottom-Line' stroke='url(#linearGradient-zoom8)' strokeLinecap='square' />\n </g>\n {children}\n </g>\n\n </svg>\n );\n};\n\nexport default ZoomBase;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {zooming}, actions: {zoom, stop}} = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n zoom({zooming: 'in'});\n },[zoom]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(10.000000, 10.625000)'>\n <Hover hover={hover} fillOpacity='0.56'>\n <path\n d='M96,0 L96,63.75 L160.883594,63.75 C178.620995,63.75 193,49.4790764 193,31.875 C193,14.2709236 178.620995,0 160.883594,0 L96,0 Z'\n id='PTZ-Zoom-Hover-Plus-Slice'\n fill='url(#linearGradient-zoom9)'\n />\n {/* <path d=\"M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z\" id=\"PTZ-Zoom-Hover-Minus-Slice\" fill=\"url(#linearGradient-zoom10)\"></path> */}\n </Hover>\n <Active active={zooming === 'in'} transform='translate(96.000000, 0.000000)'>\n <path\n d='M0,0 L0,63.75 L64.8835938,63.75 C82.6209951,63.75 97,49.4790764 97,31.875 C97,14.2709236 82.6209951,0 64.8835938,0 L0,0 Z' id='PTZ-Zoom-Active-Plus-Slice'\n fillOpacity='0.61'\n fill='url(#linearGradient-zoom11)'\n />\n <path\n d='M96,0 L96,5 L32.1164062,5 C17.4302083,5 5.48398392,16.5663708 5.01434007,30.9927914 L5.00363033,31.4308221 L5,31.875 C5,46.5608308 16.8905918,58.5089041 31.6677396,58.746397 L32.1164062,58.75 L96,58.75 L96,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L96,0 Z'\n stroke='url(#linearGradient-zoom13)'\n fill='url(#linearGradient-zoom12)'\n transform='translate(48.000000, 31.875000) scale(-1, 1) translate(-48.000000, -31.875000) '\n />\n\n\n </Active>\n <g id='PTZ-Zoom-Icons-Section' transform='translate(-10.000000, -10.625000) translate(35.000000, 30.000000)' fillRule='nonzero'>\n <path d='M117.149921,14.1184213 L124.420095,14.1184213 C124.657568,14.1184213 124.850079,14.3104799 124.850079,14.5473962 L124.850079,21.8005035 C124.850079,22.9850849 125.812631,23.9453779 127,23.9453779 C128.187369,23.9453779 129.149921,22.9850849 129.149921,21.8005035 L129.149921,14.5473962 C129.149921,14.3104799 129.342432,14.1184213 129.579905,14.1184213 L136.850079,14.1184213 C138.037448,14.1184213 139,13.1581283 139,11.9735469 C139,10.7889655 138.037448,9.82867248 136.850079,9.82867248 L129.579905,9.82867248 C129.342432,9.82867248 129.149921,9.63661388 129.149921,9.3996976 L129.149921,2.14487441 C129.149921,0.960292981 128.187369,-3.55271368e-15 127,-3.55271368e-15 C125.812631,-3.55271368e-15 124.850079,0.960292981 124.850079,2.14487441 L124.850079,9.3996976 C124.850079,9.63661388 124.657568,9.82867248 124.420095,9.82867248 L117.149921,9.82867248 C115.962552,9.82867248 115,10.7889655 115,11.9735469 C115,13.1581283 115.962552,14.1184213 117.149921,14.1184213 L117.149921,14.1184213 Z' id='PTZ-Zoom-Icon-Plus' fill='url(#linearGradient-zoom14)' />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {zooming}, actions: {zoom, stop}} = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n zoom({zooming: 'out'});\n },[zoom]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(10.000000, 10.625000)'>\n <Hover hover={hover} fillOpacity='0.56'>\n <path\n d='M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z'\n id='PTZ-Zoom-Hover-Minus-Slice'\n fill='url(#linearGradient-zoom10)'\n />\n </Hover>\n <Active active={zooming === 'out'}>\n <path\n d='M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z'\n fillOpacity='0.61'\n fill='url(#linearGradient-zoom11)'\n />\n\n <path\n d='M97,0 L97,5 L33.1164062,5 C18.4302083,5 6.48398392,16.5663708 6.01434007,30.9927914 L6.00363033,31.4308221 L6,31.875 C6,46.5608308 17.8905918,58.5089041 32.6677396,58.746397 L33.1164062,58.75 L97,58.75 L97,63.75 L33.1164062,63.75 C15.3790049,63.75 1,49.4790764 1,31.875 C1,14.2709236 15.3790049,0 33.1164062,0 L97,0 Z'\n stroke='url(#linearGradient-zoom13)'\n fill='url(#linearGradient-zoom12)'\n />\n </Active>\n <g transform='translate(-10.000000, -10.625000) translate(35.000000, 30.000000)' fillRule='nonzero'>\n <path\n d='M2.14992117,10 C0.962552494,10 0,10.960293 0,12.1448744 C0,13.3294558 0.962552494,14.2897488 2.14992117,14.2897488 L21.8500788,14.2897488 C23.0374475,14.2897488 24,13.3294558 24,12.1448744 C24,10.960293 23.0374475,10 21.8500788,10 L2.14992117,10 Z'\n id='PTZ-Zoom-Icon-Minus'\n fill='url(#linearGradient-zoom15)'\n />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useContext } from 'react';\n\nimport Up from '../atoms/Up';\nimport Down from '../atoms/Down';\nimport Left from '../atoms/Left';\nimport Right from '../atoms/Right';\nimport Base from '../molecules/Base';\n\nimport ZoomBase from '../molecules/ZoomBase';\nimport ZoomIn from '../atoms/ZoomIn';\nimport ZoomOut from '../atoms/ZoomOut';\nimport styled from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\ninterface Props {\n debug?: boolean;\n}\n\nconst Container = styled.div`\n user-select: none;\n display: flex;\n flex-direction: column;\n`;\n\nconst Controls: React.FC<Props> = ({debug = false}) => {\n const { state } = useContext(PTZContext);\n\n return (\n <Container>\n <Base>\n <Up />\n <Down />\n <Left />\n <Right />\n </Base>\n <ZoomBase>\n <ZoomOut />\n <ZoomIn />\n </ZoomBase>\n {\n debug &&\n <pre>\n {JSON.stringify(state, null, 2)}\n </pre>\n }\n </Container>\n );\n};\n\nexport default Controls;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { MediaBoxWrapper } from '../../Misc/atoms/MediaBox';\nimport { IFeedbackColor } from '../..';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport MediaBox, { IMediaModal } from '../../Misc/atoms/MediaBox';\nimport { EllipsisStyles } from '../../common';\n\nconst Container = styled.div`\n width: 100%;\n height: 170px;\n border-radius: 3px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n position: relative;\n\n ${MediaBoxWrapper} {\n height: 100%;\n width: 100%;\n text-align: center;\n img, video {\n border-radius: 3px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n`;\n\nconst EmptyWithIcon = styled.div<{hasPadding: boolean}>`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n ${({hasPadding})=> hasPadding && `\n padding-bottom: 43px\n `}\n;\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\nconst Notice = styled.div`\n ${({ theme, color }) => color && css`\n background-color: ${theme.colors.feedback[color]};\n color: ${theme.colors.icons.inverse};\n `};\n opacity: 0.85;\n height: 46px;\n width: 300px;\n position: absolute;\n bottom: 0px;\n left: 0px;\n display: flex;\n align-items: center;\n padding: 10px;\n`;\n\nconst NoticeMessage = styled.div`\n ${EllipsisStyles};\n max-width: 245px;\n font-size: 10px;\n`;\n\nconst NoticeTitle = styled.div`\n ${EllipsisStyles};\n max-width: 245px;\n font-size: 12px;\n`;\n\nconst NoticeIcon = styled.div`\n height: 20px;\n width: 20px;\n margin-left: 2px;\n\n ${IconWrapper} {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst NoticeTextGroup = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 14px;\n`;\n\nconst StatusLine = styled.div<{ color: IFeedbackColor }>`\n background-color: ${({ theme, color }) => color && theme.colors.feedback[color]};\n height: 3px;\n width: 100%;\n`;\n\nexport interface IMediaStream extends IMediaModal {\n isEmptyWithIcon?: boolean\n emptyIcon?: string\n status?: IFeedbackColor\n noticeMessage?: string\n noticeTitle?: string\n noticeIcon?: string\n hasNotice?: boolean\n}\n\nconst MediaStream: React.FC<IMediaStream> = ({\n isEmptyWithIcon = false,\n status = 'neutral',\n noticeIcon,\n hasNotice = false,\n noticeMessage,\n noticeTitle,\n emptyIcon,\n ...props\n}) => {\n return (\n <Container>\n {isEmptyWithIcon\n ? <EmptyWithIcon hasPadding={hasNotice}><Icon icon={emptyIcon ? emptyIcon : 'PasswordHide'} color='dimmed' size={41} /></EmptyWithIcon>\n : <MediaBox {...{ ...props }} />}\n {hasNotice && (\n <Notice color={status}>\n {noticeIcon && <NoticeIcon><Icon icon={noticeIcon} size={20} color='inverse' /></NoticeIcon>}\n <NoticeTextGroup>\n {noticeTitle && <NoticeTitle>{noticeTitle}</NoticeTitle>}\n {noticeMessage && <NoticeMessage>{noticeMessage}</NoticeMessage>}\n </NoticeTextGroup>\n </Notice>\n )}\n <StatusLine color={status} />\n </Container>\n );\n};\n\nexport default MediaStream;","import React, { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { EllipsisStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div`\n display: flex;\n height: 60px;\n`;\n\nconst LeftData = styled.div<{ hasRightData: boolean }>`\n ${({ theme, hasRightData }) => hasRightData && css`\n border-right: ${theme.colors.divider} 1px solid;\n width: 195px;\n `};\n\n padding: 0 12px 0 12px;\n display: flex;\n\n ${IconWrapper} {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst RightData = styled.div`\n padding: 0 12px 0 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nconst DeviceDataGroup = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 14px;\n justify-content: center;\n`;\n\nconst LeftTitle = styled.div<{ hasMarginBottom: boolean, hasRightData: boolean }>`\n ${EllipsisStyles};\n ${({ hasRightData }) => hasRightData\n ? `max-margin: 140px;`\n : `max-margin: 250px;`\n }};\n ${({ hasMarginBottom }) => hasMarginBottom && `margin-bottom: 1px;`};\n\n color: hsla(195, 10%, 52%, 0.72);\n font-size: 10px;\n`;\n\nconst LeftSubTitle = styled.div<{ hasRightData: boolean }>`\n font-family: ${({ theme }) => theme.fontFamily.data};\n ${EllipsisStyles};\n ${({ hasRightData }) => hasRightData\n ? `max-width: 140px;`\n : `max-width: 250px;`\n }\n\n color: hsl(208, 8%, 38%);\n font-size: 16px;\n`;\n\nconst Title = styled.div<{ hasMarginBottom: boolean }>`\n ${EllipsisStyles};\n max-width: 80px;\n color: hsla(195, 10%, 52%, 0.72);\n font-size: 10px;\n ${({ hasMarginBottom }) => hasMarginBottom && `margin-bottom: 6px;`};\n`;\n\nconst SubTitle = styled.div`\n ${EllipsisStyles};\n max-width: 80px;\n color: hsl(195, 10%, 52%);\n font-size: 12px;\n`;\n\nexport interface IPanelMetaData {\n deviceIcon?: string\n leftSubTitle?: string\n leftTitle?: string\n rightTitle?: string\n rightSubTitle?: string\n hideIcon?: boolean\n}\n\nconst PanelMetaData: React.FC<IPanelMetaData> = ({\n deviceIcon = 'Camera',\n leftSubTitle,\n leftTitle,\n rightTitle,\n rightSubTitle,\n hideIcon = false\n}) => {\n\n const hasRightData = useMemo(() => (!!rightTitle || !!rightSubTitle) , [rightSubTitle, rightTitle]);\n\n return (\n <Container>\n <LeftData {...{ hasRightData }}>\n {!hideIcon && <Icon icon={deviceIcon} color='dimmed' size={18} />}\n <DeviceDataGroup>\n {leftTitle && <LeftTitle hasMarginBottom={!!leftSubTitle} {...{ hasRightData }}>{leftTitle}</LeftTitle>}\n {leftSubTitle && <LeftSubTitle {...{ hasRightData }}>{leftSubTitle}</LeftSubTitle>}\n </DeviceDataGroup>\n </LeftData>\n {hasRightData && (\n <RightData>\n {rightTitle && <Title hasMarginBottom={!!rightSubTitle}>{rightTitle}</Title>}\n {rightSubTitle && <SubTitle>{rightSubTitle}</SubTitle>}\n </RightData>\n )}\n </Container>\n );\n};\n\nexport default PanelMetaData;","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport MediaStream, { IMediaStream } from '../atoms/MediaStream';\nimport PanelMetaData, { IPanelMetaData } from '../atoms/PanelMetaData';\n\nexport const CameraPanelWrapper = styled.div<{hasOnClick: boolean}>`\n width: 300px;\n height: 230px;\n border-radius: 3px;\n box-shadow: 0 2px 10px 0 hsla(211, 42%, 86%, 0.41);\n background-color: ${({theme}) => theme.styles.global.background.backgroundImage};\n }\n\n ${({hasOnClick}) => hasOnClick &&`\n cursor: pointer;\n `};\n`;\n\nexport interface ICameraPanel {\n streamProps: IMediaStream\n panelMetaData?: IPanelMetaData\n customBottom?: ReactElement\n panelOnClick?: () => void\n}\n\nconst NewComponent : React.FC<ICameraPanel> = ({\n streamProps,\n panelMetaData,\n customBottom,\n panelOnClick,\n ...props}) => {\n return(\n <CameraPanelWrapper onClick={panelOnClick} hasOnClick={panelOnClick === undefined? false : true} {...props}>\n <MediaStream {...streamProps} />\n {customBottom\n ? customBottom\n : panelMetaData && <PanelMetaData {... panelMetaData} />}\n </CameraPanelWrapper>\n );\n};\n\nexport default NewComponent;","import React from 'react';\nimport styled from 'styled-components';\nimport CameraPanel, { ICameraPanel } from '../molecules/CameraPanel';\n\nconst CameraGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fill, 300px);\n gap: 20px 20px;\n`;\n\ninterface ICameraPanels {\n panels: ICameraPanel[]\n}\n\nconst CameraPanels: React.FC<ICameraPanels> = ({ panels }) => {\n return (\n <CameraGrid>\n {panels.map((props, index) => {\n return <CameraPanel key={index} {...props} />;\n })}\n </CameraGrid>\n );\n};\n\nexport default CameraPanels;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport Icon, {IconProps, IconWrapper} from '../../Icons/Icon';\nimport { Link } from 'react-router-dom';\n\nconst TextContainer = styled.div`\n user-select: none;\n`;\n\nconst StyledLink = styled(Link)`\n text-decoration: none;\n`;\n\nexport const TagWrapper = styled.div<{ hoverColor:ISvgIcons['color']; enableHover:boolean; size: number}>`\n font-family: ${({theme}) => theme.fontFamily.ui };\n font-size: ${({size}) => size}px;\n font-weight: 500;\n color: hsl(200, 3%, 39%);\n padding: 4px 10px;\n border: solid 1px hsl(120, 1%, 85%);\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n height: 26px;\n\n ${IconWrapper} {\n [stroke]{\n ${({theme}) => theme.colors.icons['dimmed']};\n }\n margin-right: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n ${({theme, hoverColor, enableHover}) => enableHover && css`\n &:hover {\n cursor: pointer;\n border-color: ${theme.colors.icons[hoverColor]};\n color: ${theme.colors.icons[hoverColor]};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.icons[hoverColor]};\n }\n }\n }\n `};\n`;\n\ninterface OwnProps {\n label?: string\n linkTo?: string\n}\n\nexport type ITag = OwnProps & IconProps;\n\nconst Tag : React.FC<ITag> = ({\n icon = '',\n size = 14,\n weight = 'regular',\n label='',\n linkTo,\n ...props \n}) => {\n\n const renderTag = () => (\n <TagWrapper hoverColor='primary' enableHover={linkTo ? true : false} size={size}>\n {icon && (\n <Icon\n icon={icon}\n size={size}\n weight={weight}\n {...props}\n />\n )}\n <TextContainer>{label}</TextContainer>\n </TagWrapper>\n );\n\n return(\n linkTo\n ? (\n <StyledLink to={linkTo}>\n {renderTag()}\n </StyledLink>)\n : renderTag()\n );\n};\n\nexport default Tag;","import React from 'react';\nimport styled from 'styled-components';\nimport Tag, {ITag, TagWrapper} from '../atoms/Tag';\n\n\nexport const TagListWrapper = styled.div`\n display: flex;\n ${TagWrapper} {\n margin-right: 10px;\n margin-bottom: 6px;\n flex-shrink: 0;\n }\n flex-wrap: wrap;\n`;\n\nexport interface ITagList {\n tagsConfig: ITag[]\n}\n\nconst TagList : React.FC<ITagList> = ({tagsConfig}) => {\n return(\n <TagListWrapper>\n {tagsConfig.map((tagProps, index) => {\n return (\n <Tag key={`tag-${index}`} {...tagProps} />\n );\n })}\n </TagListWrapper>\n );\n};\n\nexport default TagList;","import debounce from 'lodash.debounce';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport BasicSearchInput, { IBasicSearchInput } from '../atoms/BasicSearchInput';\n\n// Adding default value thinking of query params or other outside initialized value\ninterface IDebouncedSearcher extends IBasicSearchInput {\n defaultValue?: string;\n onDebouncedChange?: (newValue: string) => void\n}\n\nconst DebouncedSearcher: React.FC<IDebouncedSearcher> = ({\n onDebouncedChange = () => { },\n defaultValue,\n ...props\n}) => {\n const [typedValue, setTypedValue] = useState<string>(defaultValue || '');\n\n const debounceChange = useRef(debounce(newValue => updateChange(newValue), 600)).current;\n\n const updateChange = useCallback((newValue: string) => {\n onDebouncedChange(newValue);\n }, [onDebouncedChange]);\n\n const updateTyped = useCallback((e: React.FormEvent<HTMLInputElement>) => {\n const newValue = e.currentTarget.value;\n setTypedValue(newValue);\n debounceChange(newValue);\n }, [debounceChange]);\n\n useEffect(() => {\n if (defaultValue) {\n setTypedValue(defaultValue);\n }\n }, [defaultValue]);\n\n return (\n <BasicSearchInput {...props} onChange={updateTyped} value={typedValue} />\n );\n};\n\nexport default DebouncedSearcher;","import React from 'react';\nimport styled from 'styled-components';\nimport Button from '../../Form/atoms/Button';\nimport ButtonWithIcon, { IButtonWithIcon } from '../../Form/atoms/ButtonWithIcon';\n\nconst Container = styled.div``;\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: hsl(207, 5%, 57%);\n font-size: 12px;\n font-weight: 700;\n margin-bottom: 17px;\n`;\n\nconst ButtonsWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst LeftButtons = styled.div`\n button {\n margin: 0 10px 10px 0;\n }\n`;\n\nconst RightButtons = styled.div`\n flex-shrink: 0;\n`;\n\nconst SelectedResults = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n margin-top: 29px;\n min-height: 19px;\n color: hsl(207, 5%, 57%);\n font-size: 12px;\n`;\n\n\nconst renderSelected = (template: string, selected: number, total: number) => {\n const newSelected = template.replace('[SELECTED]', `${selected}`);\n return newSelected.replace('[TOTAL]', `${total}`);\n};\n\nexport interface IActionsButton extends IButtonWithIcon {\n text: string\n}\n\nexport interface IActionsBar {\n title?: string\n finishTextButton?: string\n actionButtons?: IActionsButton[]\n selectedTemplate?: string\n totalSelected?: number\n totalAvailable?: number\n finishCallback?: () => void\n}\n\nconst ActionsBar: React.FC<IActionsBar> = ({\n title = 'Actions:',\n finishTextButton = 'Finish',\n actionButtons = [],\n selectedTemplate = 'Selected [SELECTED] of [TOTAL] Results',\n totalSelected = 0,\n totalAvailable = 0,\n finishCallback = () => { }\n}) => {\n return (\n <Container>\n <Title>{title}</Title>\n <ButtonsWrapper>\n <LeftButtons>\n {actionButtons.map(({ design, size, position, text, ...props }, index) => {\n return (\n <ButtonWithIcon\n key={index}\n design={design || 'secondary'}\n size={size || 'small'}\n position={position || 'left'}\n {...props}\n >\n {text}\n </ButtonWithIcon>\n );\n })}\n </LeftButtons>\n <RightButtons>\n <Button size='small' onClick={finishCallback}>{finishTextButton}</Button>\n </RightButtons>\n </ButtonsWrapper>\n <SelectedResults>{renderSelected(selectedTemplate, totalSelected, totalAvailable)}</SelectedResults>\n </Container>\n );\n};\n\nexport default ActionsBar;","import { useEffect, useRef } from 'react';\n\nexport function useInterval(callback: ()=>void, delay: number) {\n const savedCallback = useRef<()=>void>();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current && savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}","import { useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport const useTo = ()=>{\n const history = useHistory();\n const to = useCallback((url: string) => () => history.push(url),[history]);\n return to;\n};","import React, { useState, useCallback, useMemo } from 'react';\nimport Notification, { INotificationProps } from '../Alerts/atom/Notification';\nimport { uniqueID } from '../helpers';\n\ntype NotificationContextType = {\n sendNotification: (newNotification: INotificationProps) => void\n clearNotifications: () => void\n};\n\nconst defaultContext: NotificationContextType = {\n sendNotification: () => console.log(\"This is the context initialization should not appear\"),\n clearNotifications: () => console.log(\"This is the context initialization should not appear\"),\n};\n\nconst NotificationContext = React.createContext<NotificationContextType>(defaultContext);\n\nconst notificationList: INotificationProps[] = [];\n\nconst NotificationProvider: React.FC = ({ children }) => {\n const [activeNotification, setActiveNotification] = useState<INotificationProps | null>(null);\n\n const showNotification = useCallback(() => {\n const nextNotification = notificationList.shift();\n\n if (!nextNotification) { return; }\n\n const updateOnClose = () => {\n if (nextNotification.closeCallback) {\n nextNotification.closeCallback();\n }\n setActiveNotification(null);\n showNotification();\n };\n\n const displayedNotification = { ...nextNotification, closeCallback: updateOnClose };\n\n setActiveNotification(displayedNotification);\n }, []);\n\n const sendNotification = useCallback(async (newNotification: INotificationProps) => {\n\n const validNotification: INotificationProps = {\n message: newNotification.message,\n type: newNotification.type,\n id: uniqueID()\n };\n\n if (newNotification.icon) {\n validNotification.icon = newNotification.icon;\n }\n\n if (newNotification.actionTextButton) {\n validNotification.actionTextButton = newNotification.actionTextButton;\n }\n\n if (newNotification.onTextButtonClick) {\n validNotification.onTextButtonClick = newNotification.onTextButtonClick;\n }\n\n if (newNotification.closeCallback) {\n validNotification.closeCallback = newNotification.closeCallback;\n }\n\n if (newNotification.isPinned) {\n validNotification.isPinned = newNotification.isPinned;\n }\n\n notificationList.push(validNotification);\n\n if (notificationList.length === 1 && activeNotification === null) {\n showNotification();\n }\n },[activeNotification, showNotification]);\n\n const clearNotifications = useCallback(() => {\n notificationList.length = 0;\n setActiveNotification((prev) => {\n\n if(prev !== null) {\n return {...prev, closeNow: true};\n }\n\n return prev;\n });\n },[]);\n\n const contextValue = useMemo(() => ({sendNotification, clearNotifications}),[clearNotifications, sendNotification]);\n\n return (\n <NotificationContext.Provider value={contextValue}>\n {activeNotification\n ? <Notification {...activeNotification} />\n : null}\n {children}\n </NotificationContext.Provider>\n );\n};\n\nexport { NotificationContext };\nexport type { NotificationContextType };\nexport default NotificationProvider;","import React from 'react';\nimport { NotificationContext } from '../context/NotificationContext';\n\nexport const useNotification = () => React.useContext(NotificationContext);","import { useRef, useCallback, useEffect } from 'react';\n\n\nexport const usePoll = (callback = ()=>{}, interval = 1000) => {\n const timeoutIDRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const callbackRef = useRef<()=>void>(callback);\n const canceled = useRef<boolean>(false);\n\n\n const pollOnce = useCallback(async()=>{\n if(timeoutIDRef.current !== null){\n console.debug('Clearing previous');\n clearTimeout(timeoutIDRef.current);\n timeoutIDRef.current = null;\n }\n\n await callbackRef.current();\n //Start next one in the chain\n if(!canceled.current){\n console.debug('Starting next timeout');\n timeoutIDRef.current = setTimeout(pollOnce, interval);\n }\n },[interval]);\n\n useEffect(()=>{\n callbackRef.current = callback;\n },[callback]);\n\n useEffect(()=>{\n\n pollOnce();\n\n return () => {\n console.debug('canceled');\n canceled.current = true;\n if(timeoutIDRef.current !== null){\n console.debug('clearing final', timeoutIDRef.current);\n clearTimeout(timeoutIDRef.current);\n timeoutIDRef.current = null;\n }\n };\n },[pollOnce]);\n};\n","import {useState, useLayoutEffect } from \"react\";\n\n/**\n * Custom hook that tells you whether a given media query is active.\n */\n\nexport default function useMediaQuery(query: string) {\n\n const [matches, setMatches] = useState(false);\n useLayoutEffect(\n () => {\n\n const mediaQuery = window.matchMedia(query);\n setMatches(mediaQuery.matches);\n const handler = (event: MediaQueryListEvent) => setMatches(event.matches);\n\n mediaQuery.addEventListener(\"change\", handler);\n\n return () => mediaQuery.removeEventListener(\"change\", handler);\n\n },\n // eslint-disable-next-line\n [] // Empty array ensures effect is only run on mount and unmount\n );\n return matches;\n}","import useMediaQuery from \"./useMediaQuery\";\nimport {deviceMediaQuery} from '../themes/common';\n\n/**\n * Get a set of boolean representing which breakpoint is activeScreen\n * and which breakpoints are inactiveScreen.\n */\n\nexport type IBreakpoints = 'small'\n| 'medium'\n| 'large'\n| 'xlarge'\n| 'xxlarge';\n\ninterface OwnProps {\n isSmall: boolean\n isMedium: boolean\n isLarge: boolean\n isXLarge: boolean\n isXXLarge: boolean\n activeScreen: IBreakpoints\n}\n\nexport default function useBreakpoints() {\n const breakpoints : OwnProps= {\n isSmall: useMediaQuery(deviceMediaQuery.small),\n isMedium: useMediaQuery(deviceMediaQuery.medium),\n isLarge: useMediaQuery(deviceMediaQuery.large),\n isXLarge: useMediaQuery(deviceMediaQuery.xlarge),\n isXXLarge: useMediaQuery(deviceMediaQuery.xxlarge),\n activeScreen: \"small\"\n };\n\n if (breakpoints.isSmall) breakpoints.activeScreen = 'small';\n if (breakpoints.isMedium) breakpoints.activeScreen = 'medium';\n if (breakpoints.isLarge) breakpoints.activeScreen = 'large';\n if (breakpoints.isXLarge) breakpoints.activeScreen = 'xlarge';\n if (breakpoints.isXXLarge) breakpoints.activeScreen = 'xxlarge';\n\n return breakpoints;\n}","import { useCallback, useEffect, useState } from 'react';\n\nconst matchDark = '(prefers-color-scheme: dark)';\n\n//Current state of Dark changes to the opposite\nconst toggleThemeClass = (isDarkEnabled: boolean) => {\n\n if (isDarkEnabled) {\n document.body.classList.add('light-theme');\n document.body.classList.remove('dark-theme');\n } else {\n document.body.classList.add('dark-theme');\n document.body.classList.remove('light-theme');\n }\n};\n\nconst setInitial = () => {\n\n const localStorageTheme = localStorage.getItem('isDarkThemeEnabled');\n let startDark = true;\n\n if(localStorageTheme === null){\n startDark = window.matchMedia(matchDark) && window.matchMedia(matchDark).matches;\n } else {\n startDark = localStorageTheme !== 'false';\n }\n\n toggleThemeClass(!startDark);\n\n return startDark;\n};\n\nconst useThemeToggle = () => {\n\n const [isDarkThemeEnabled, setIsDarkThemeEnabled] = useState(setInitial);\n\n // toggle with Button\n const onThemeToggle = useCallback(() => {\n setIsDarkThemeEnabled((enabled) => {\n localStorage.isDarkThemeEnabled = !enabled;\n toggleThemeClass(enabled);\n\n return !enabled;\n });\n }, []);\n\n // Toggle when changing with OS and no local Storage variable has been set yet\n const osThemeToggle = useCallback((event: MediaQueryListEvent ) => {\n\n const localStorageTheme = localStorage.getItem('isDarkThemeEnabled');\n if(localStorageTheme !== null) { return; }\n\n const isDark = event.matches;\n\n setIsDarkThemeEnabled(() => {\n toggleThemeClass(!isDark);\n return isDark;\n });\n\n },[]);\n\n useEffect(() => {\n const matcher = window.matchMedia(matchDark);\n matcher.addEventListener('change', osThemeToggle);\n\n return () => {\n matcher.removeEventListener('change', osThemeToggle);\n };\n\n }, [onThemeToggle, osThemeToggle]);\n\n return {\n isDarkThemeEnabled,\n setIsDarkThemeEnabled,\n onThemeToggle,\n isLightMode: !isDarkThemeEnabled\n };\n\n};\n\nexport default useThemeToggle;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Button from '../Form/atoms/Button';\nimport { TypeButtonDesigns } from '../Form';\nimport { useModal } from '../hooks';\n\nconst Container = styled.div``;\n\nconst Title = styled.div`\n ${({theme: { typography }}) => typography.modal.title};\n`;\n\nconst MessageBox = styled.div`\n ${({theme: { typography }}) => typography.modal.basicContent};\n margin: 28px 0;\n`;\n\nconst StyledButton = styled(Button)`\n margin-left: 10px;\n`;\n\nconst ButtonsGroup = styled.div`\n text-align: right;\n`;\n\n\ntype IConfirmationModal = {\n title?: string,\n message: string,\n leftButtonText?: string,\n leftButtonDesign?: TypeButtonDesigns,\n leftButtonCallback?: () => void,\n rightButtonText?: string,\n rightButtonDesign?: TypeButtonDesigns,\n rightButtonCallback?: () => void,\n}\n\nconst ConfirmationModal: React.FC<IConfirmationModal> = ({\n title = '',\n message = '',\n leftButtonText = 'submit',\n leftButtonDesign = 'primary',\n leftButtonCallback = () => { },\n rightButtonDesign = 'secondary',\n rightButtonText = 'cancel',\n rightButtonCallback = () => { },\n}) => {\n\n const { setModalOpen } = useModal();\n\n const handlePrimaryBtn = () => {\n leftButtonCallback();\n setModalOpen(false);\n };\n\n const handleSecondaryBtn = () => {\n rightButtonCallback();\n setModalOpen(false);\n };\n\n return (\n <Container>\n <Title>{title}</Title>\n <MessageBox>{message}</MessageBox>\n <ButtonsGroup>\n <StyledButton\n design={leftButtonDesign}\n onClick={handlePrimaryBtn}\n >\n {leftButtonText}\n </StyledButton>\n <StyledButton\n design={rightButtonDesign}\n onClick={handleSecondaryBtn}\n >\n {rightButtonText}\n </StyledButton>\n </ButtonsGroup>\n </Container>\n );\n};\n\nexport default ConfirmationModal;","import styled, {css} from 'styled-components';\nimport {deviceMediaQuery} from '../../themes/common';\n\nexport const MOBILE_CLOSE_HEIGHT = 50;\nexport const MOBILE_NAVBAR_HEIGHT = 68;\n\nexport const Layout = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n ${({ theme }) => theme.styles.global.background};\n`;\n\nexport const MobileLayout = styled.div``;\n\n\nexport const Content = styled.div<{ maxWidth?: string, padBottom?: boolean }>`\n padding: ${({padBottom = true}) => padBottom ? '70px 90px' : '70px 90px 0'};\n flex: 1;\n overflow: auto;\n\n & > div {\n max-width: 1400px;\n }\n\n ${\n ({ maxWidth }) =>\n maxWidth && css`\n & > div {\n max-width: ${maxWidth};\n }\n `\n }\n`;\nexport const MainContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ContentArea = styled.div<{ maxWidth?: string, paddingOverride?: string}>`\n flex: 1;\n width: 100%;\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '40px 20px'};\n margin-left: auto;\n margin-right: auto;\n\n @media ${deviceMediaQuery.medium} {\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '40px'};\n }\n\n @media ${deviceMediaQuery.large} {\n max-width: ${({maxWidth}) => maxWidth ? maxWidth : `1200px`};\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '70px 90px'};\n }\n`;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\n\nconst ContextTitle = styled.div<{ compact?: boolean }>`\n opacity: 0;\n\n ${({ theme }) => css`\n transition: opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeInOut};\n `}\n\n ${({ compact }) => compact && css`\n font-size:14px;\n `}\n`;\n\nconst ContextIcon = styled.div<{ compact?: boolean }>`\n ${({ theme }) => css`\n ${theme.styles.global.mainMenu.iconBackground.default};\n transition: background ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeInOut};\n `};\n\n flex: 0 0 40px;\n width: 40px;\n height: 40px;\n margin: 0 20px;\n\n border-radius: 7px;\n display:flex;\n justify-content:center;\n align-items:center;\n\n svg {\n display: block;\n }\n`;\n\nconst ContextIndicator = styled.div`\n width: 12px;\n height: 12px;\n flex: 0 0 14px;\n margin: 0 20px 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n display: block;\n height: 12px;\n width: 12px;\n }\n\n opacity: 0;\n\n ${({ theme }) => css`\n transition: opacity 0 ${theme.animation.easing.primary.easeInOut};\n `}\n\n`;\nconst ContextActionBaseCSS = css`\n -webkit-tap-highlight-color: transparent;\n border: none;\n background: none;\n display: flex;\n justify-content:left;\n align-items:center;\n flex-wrap: wrap;\n cursor: pointer;\n width: 100%;\n outline: none;\n padding: 0;\n text-decoration: none;\n`;\n\nconst StyledAnchor = styled.a`\n display: flex;\n text-decoration: none;\n`;\n\nconst ExternalIconWrapper = styled.div`\n margin-left: 15px;\n`;\n\nconst ContextWrapper = styled.div<{$menuOpen?: boolean}>`\n ${ContextActionBaseCSS}\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ $menuOpen }) => $menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n`}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n`;\n\nconst ContextActionA = styled(Link) <{ $menuOpen?: boolean, $isActive: boolean }>`\n ${ContextActionBaseCSS}\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ $menuOpen }) => $menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n `}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n\n ${({ $isActive }) => $isActive && css`\n ${ContextIcon},\n &:hover ${ContextIcon}{\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.active};\n }\n `}\n`;\nconst ContextActionButton = styled.button<{ menuOpen?: boolean, isActive: boolean }>`\n ${ContextActionBaseCSS}\n\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ menuOpen, theme }) => menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n\n ${ContextIndicator}{\n opacity: 1;\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.fast};\n }\n `}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n\n ${({ isActive }) => isActive && css`\n ${ContextIcon},\n &:hover ${ContextIcon}{\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.active};\n }\n `}\n`;\n\ninterface IProps {\n title: string\n icon: string\n isActive: boolean\n menuOpen?: boolean\n submenuOpen?: boolean\n hasSubmenu?: boolean\n contextKey?: number\n href?: string\n compact?: boolean\n isExternalLink?: boolean\n onClickCallback?: (...args: any[]) => void\n}\n\nconst ContextItem: React.FC<IProps> = ({\n hasSubmenu = false,\n contextKey = -1,\n submenuOpen,\n menuOpen,\n title,\n href,\n icon,\n compact,\n isActive,\n isExternalLink,\n onClickCallback }) => {\n\n const internal = (\n <React.Fragment>\n <ContextIcon {...{ compact }}>\n <Icon icon={icon} color={isActive ? 'inverse' : 'dimmed'} size={20} />\n </ContextIcon>\n <ContextTitle {...{ compact }}>{title}</ContextTitle>\n {hasSubmenu ? <ContextIndicator><Icon icon={submenuOpen ? 'Up' : 'Down'} color='dimmed' /></ContextIndicator> : null}\n </React.Fragment>);\n\n if (hasSubmenu) {\n return (\n <ContextActionButton menuOpen={menuOpen} isActive={isActive} onClick={() => onClickCallback && onClickCallback(contextKey)}>\n {internal}\n </ContextActionButton>\n );\n } else {\n return (\n isExternalLink\n ? (\n <StyledAnchor href={href} target='_blank'>\n <ContextWrapper $menuOpen={menuOpen}>\n {internal}\n <ExternalIconWrapper>\n <Icon icon='ExternalLink' color='dimmed' size={12} />\n </ExternalIconWrapper>\n </ContextWrapper>\n </StyledAnchor>\n )\n : (\n <ContextActionA\n $menuOpen={menuOpen}\n to={href ? href : '#'}\n $isActive={isActive}\n onClick={() => onClickCallback && onClickCallback(contextKey)}\n >\n {internal}\n </ContextActionA>)\n );\n }\n\n};\n\nexport default ContextItem;","import { useReducer, useCallback, useLayoutEffect } from 'react';\n\nimport useBreakpoints, { IBreakpoints } from './useBreakpoints';\n\ninterface IMenuState {\n desktopSize: IBreakpoints\n isMenuPinned: boolean\n isMenuOpen: boolean\n canPin: boolean\n}\n\ninterface SET_MENU {\n type: 'SET_MENU'\n data: {\n desktopSize: IBreakpoints\n defaultMenuOpen: boolean\n canAlwaysPin?: boolean\n }\n}\n\ninterface SET_OPEN {\n type: 'SET_OPEN'\n}\n\ninterface SET_CLOSE {\n type: 'SET_CLOSE'\n}\n\ninterface TOGGLE_PIN {\n type: 'TOGGLE_PIN'\n}\n\ntype IMenuActions = SET_MENU | SET_OPEN | SET_CLOSE | TOGGLE_PIN\n\n\nconst menuReducer = (state: IMenuState, action: IMenuActions) => {\n\n switch (action.type) {\n\n // initial State based in props and desktop size and local storage\n case 'SET_MENU': {\n const openValueStorage = localStorage.getItem(window.location.hostname + '_isMenuOpen');\n\n let isMenuOpen = (openValueStorage === 'true') || (openValueStorage === null && (!!action.data.defaultMenuOpen));\n let isMenuPinned = (openValueStorage === 'true') && !!action.data.canAlwaysPin;\n const canPin = (action.data.desktopSize === 'xlarge') || !!action.data.canAlwaysPin;\n\n if (action.data.desktopSize === 'xxlarge' && action.data.canAlwaysPin === false) {\n isMenuOpen = true;\n isMenuPinned = true;\n }\n\n return {\n ...state,\n desktopSize: action.data.desktopSize,\n isMenuOpen,\n isMenuPinned,\n canPin,\n };\n }\n\n // handle autoOpen based on desktop\n case 'SET_OPEN': {\n if (state.isMenuOpen === true) { return state; }\n if (state.desktopSize === 'xxlarge' && !state.canPin) { return state; }\n\n return {\n ...state,\n isMenuOpen: true\n };\n }\n\n // handle auto close based on desktop\n case 'SET_CLOSE': {\n if (state.isMenuOpen === false) { return state; }\n if (state.desktopSize === 'xxlarge' && !state.canPin) { return state; }\n if (state.isMenuPinned === true) { return state; }\n\n return {\n ...state,\n isMenuOpen: false,\n };\n }\n\n case 'TOGGLE_PIN': {\n if (!state.canPin) { return state; }\n\n let isMenuOpen = true;\n\n if (state.isMenuPinned) {\n localStorage.setItem(window.location.hostname + '_isMenuOpen', 'false');\n isMenuOpen = false;\n } else {\n localStorage.setItem(window.location.hostname + '_isMenuOpen', 'true');\n }\n\n return {\n ...state,\n isMenuOpen,\n isMenuPinned: !state.isMenuPinned,\n };\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n\nconst menuState: IMenuState = {\n desktopSize: 'large',\n isMenuPinned: false,\n isMenuOpen: false,\n canPin: false\n};\n\nconst useMenu = (defaultMenuOpen: boolean, canAlwaysPin: boolean) => {\n\n const { activeScreen } = useBreakpoints();\n const [state, dispatch] = useReducer(menuReducer, menuState);\n\n const setMenu = useCallback((defaultMenuOpen: boolean, canAlwaysPin: boolean, desktopSize: IBreakpoints,) => {\n dispatch({ type: 'SET_MENU', data: { defaultMenuOpen, desktopSize, canAlwaysPin } });\n }, []);\n\n const setMenuOpen = useCallback(() => {\n dispatch({ type: 'SET_OPEN' });\n }, []);\n\n const setMenuClose = useCallback(() => {\n dispatch({ type: 'SET_CLOSE' });\n }, []);\n\n const togglePinned = useCallback(() => {\n dispatch({ type: 'TOGGLE_PIN' });\n }, []);\n\n useLayoutEffect(() => {\n setMenu(defaultMenuOpen, canAlwaysPin, activeScreen);\n }, [activeScreen, defaultMenuOpen, canAlwaysPin, setMenu]);\n\n return {\n menuState: state,\n setMenuOpen,\n setMenuClose,\n togglePinned\n };\n};\n\nexport default useMenu;","import React, { useRef, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {Link} from 'react-router-dom';\nimport ContextItem from './ContextItem';\nimport { IMenuItemTop, IMenuItemSubmenu } from '..';\nimport {resetButtonStyles} from '../../common/index';\nimport Icon from '../../Icons/Icon';\n\nconst Submenu = styled.ul`\n display: block;\n position: relative;\n margin-left: 40px;\n padding: 0;\n\n`;\nconst SubmenuHeader = styled.div`\n display: block;\n height: 40px;\n margin-left: 40px;\n`;\n\nconst SubmenuItemTitle = styled.span`\n display: block;\n ${({theme}) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.subheader}\n `};\n\n`;\n\nconst SubmenuItemLink = styled(Link)`\n ${resetButtonStyles};\n display: block;\n`;\n\nconst ExternalIconWrapper = styled.div`\n margin-left: 15px;\n`;\n\nconst SubmenuItemAnchor = styled.a`\n ${resetButtonStyles};\n display: flex;\n align-items: center;\n`;\n\nconst SubmenuItem = styled.li<{isActive?: boolean}>`\n display: block;\n height: 30px;\n padding-left: 40px;\n position: relative;\n\n &::after {\n display: block;\n content: '';\n height: 1px;\n width: 14px;\n position: absolute;\n left: 0;\n top: 10px;\n background: ${({theme: {colors}}) => colors.divider};\n }\n\n ${SubmenuItemLink}, ${SubmenuItemAnchor}{\n\n ${({theme, isActive}) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.subItem.default};\n\n &:hover {\n ${theme.typography.global.mainMenu.subItem.hover};\n }\n\n ${isActive && css`\n &, &:hover {\n ${theme.typography.global.mainMenu.subItem.active};\n }\n `}\n\n `};\n\n\n\n }\n`;\n\nconst SubmenuContainer = styled.div`\n ${({theme}) => theme && css`\n transition:\n max-height ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n `};\n\n position: relative;\n overflow: hidden;\n\n &::after {\n display: block;\n content: '';\n width: 1px;\n position: absolute;\n left: 40px;\n top: 0;\n bottom: 35px;\n background: ${({theme: {colors}}) => colors.divider};\n }\n\n`;\n\nconst ContextContainer = styled.div<{ open: boolean, maxHeight: number, minHeight?: number, loading: 'true'|'false' }>`\n min-height: ${({minHeight}) => minHeight ? `${minHeight}px` : `70px`};\n width: inherit;\n\n ${SubmenuContainer}{\n max-height: 0;\n opacity: 0;\n }\n ${({open, maxHeight, theme}) => open && css`\n ${SubmenuContainer}{\n transition:\n max-height ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n max-height: ${maxHeight}px !important;\n opacity: 1;\n }\n `};\n\n ${({loading}) => loading === 'true' && css`\n ${SubmenuContainer}{\n max-height: none !important;\n opacity: 1;\n }\n `};\n\n`;\n\ninterface IProps {\n item: IMenuItemTop\n contextKey: number\n submenuOpen: boolean\n loading: boolean\n menuOpen?: boolean\n topLevelPath: string\n minHeight?: number\n onClickCallback?: (...args: any[]) => void\n readyCallback?: (...args: any[]) => void\n}\n\nconst NavigationItem : React.FC<IProps> = ({item, menuOpen, submenuOpen, contextKey, loading, topLevelPath, minHeight, onClickCallback, readyCallback}) => {\n const { icon, title, href, submenu, isExternalLink } = item;\n const isActive = topLevelPath === href;\n\n const refSubmenu = useRef<any>(null);\n const [submenuHeight, setSubmenuHeight] = useState<number>(0);\n\n const submenus : any[] = generateSubmenus(submenu, onClickCallback ) || [];\n const hasSubmenu : boolean = submenus.length > 0;\n\n useEffect(() => {\n if(refSubmenu && refSubmenu.current && refSubmenu.current.clientHeight !== 0){\n setSubmenuHeight(refSubmenu.current.clientHeight);\n }\n\n if(readyCallback){ readyCallback(contextKey); }\n\n }, [refSubmenu, setSubmenuHeight, readyCallback, contextKey]);\n\n return (\n <ContextContainer open={submenuOpen} loading={loading ? 'true': 'false'} maxHeight={submenuHeight} minHeight={minHeight}>\n <ContextItem {...{title, href, isActive, icon, hasSubmenu, isExternalLink, submenuOpen, menuOpen, onClickCallback, contextKey}} />\n {hasSubmenu ? <SubmenuContainer ref={refSubmenu}>{submenus}</SubmenuContainer> : null}\n </ContextContainer>\n );\n\n};\n\n/**\n * Generate the submenu component structure.\n * @param submenu JSON Object with the menu structure\n */\nconst generateSubmenus = (\n submenu? : IMenuItemSubmenu[],\n onClickCallback?: (...args: any[]) => void,\n ) => {\n\n if(!submenu){ return; }\n\n const grouping : any[] = [];\n const output : any = [];\n\n // First submenu\n grouping.push([]);\n\n submenu.forEach((item, key) => {\n const {title, href, isExternalLink} = item;\n if(href){\n // Treat as menu item/\n if(isExternalLink) {\n grouping[grouping.length - 1].push(\n <SubmenuItem key={key} isActive={false}>\n <SubmenuItemAnchor href={href} target='_blank'>\n {title}\n <ExternalIconWrapper>\n <Icon icon='ExternalLink' color='dimmed' size={10} />\n </ExternalIconWrapper>\n </SubmenuItemAnchor>\n </SubmenuItem>);\n }else {\n grouping[grouping.length - 1].push(<SubmenuItem key={key} isActive={false}><SubmenuItemLink to={href} onClick={() => onClickCallback && onClickCallback(-1)}>{title}</SubmenuItemLink></SubmenuItem>);\n }\n } else {\n // Assume this is a grouping header.\n if(grouping[grouping.length - 1].length > 1){ grouping.push([]); }\n grouping[grouping.length - 1].push(<SubmenuHeader key={key}><SubmenuItemTitle>{title}</SubmenuItemTitle></SubmenuHeader>);\n }\n });\n\n grouping.forEach((group, key) => {\n output.push(<Submenu key={key}>{group}</Submenu>);\n });\n\n return output;\n\n};\n\nexport default NavigationItem;\n\n","import React, { useState, useCallback, useEffect } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\n\nimport { Link, useLocation } from 'react-router-dom';\nimport ContextItem from '../atoms/ContextItem';\nimport useMenu from '../../hooks/useMenu';\n\nimport { IBreakpoints } from '../../hooks/useBreakpoints';\n\nimport SvgLogoMark from '../../svg/LogoMark';\nimport SvgLogoText from '../../svg/LogoText';\nimport NavigationItem from '../atoms/NavigationItem';\nimport { IMenu } from '..';\nimport { getTopLevelPath } from '../../helpers/index';\n\nconst Logo = styled(Link)`\n height: 50px;\n margin: 0 20px 55px 15px;\n display: flex;\n\n object {\n pointer-events: none;\n }\n`;\nconst LogoMark = styled.div`\n height: 50px;\n flex: 0 0 50px;\n margin-right: 15px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n`;\nconst LogoType = styled.div`\n opacity: 0;\n flex: 1;\n height: 50px;\n display: flex;\n justify-content: left;\n align-items: center;\n`;\n\nconst SVGObject = styled.object``;\nconst SVGObjectText = styled.object`\n max-width: 180px;\n`;\n\nconst NavigationContainer = styled.div``;\n\nconst MenuFooter = styled.div`\n ${({ theme }) => theme && css`\n ${theme.styles.global.mainMenu.footerBackground}\n `};\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: flex-end;\n`;\n\nconst FooterItemContainer = styled.div`\n min-height: 70px;\n`;\n\nconst PushContainer = styled.div<{ isPinned: boolean; }>`\n position: relative;\n height: 100%;\n ${({ theme, isPinned }) => theme && css`\n width: ${isPinned ? theme.dimensions.global.mainMenu.width.open : theme.dimensions.global.mainMenu.width.closed};\n `};\n`;\n\nconst Container = styled.div<{ open: boolean; desktopSize: IBreakpoints }>`\n z-index: 99;\n position: fixed;\n top: 0;\n left: 0;\n ${({ theme, open, desktopSize }) => theme && css`\n ${theme.styles.global.mainMenu.background}\n ${desktopSize === 'xxlarge' ? `` : css`\n transition: width ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut}\n `\n };\n width: ${open ? theme.dimensions.global.mainMenu.width.open : theme.dimensions.global.mainMenu.width.closed};\n border-right: 1px solid ${theme.styles.global.mainMenu.lines.backgroundColor};\n\n ${LogoType}{\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n opacity: ${open ? 1 : 0};\n }\n `}\n\n box-sizing: border-box;\n height: 100%;\n padding: 20px 0 0 0;\n overflow: hidden;\n`;\n\nconst ContainerInner = styled.div`\n width: ${({ theme }) => theme.dimensions.global.mainMenu.width.open};\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\n\nconst MainMenu: React.FC<IMenu> = ({ content, home = \"/\", logoMark, logoText, keepOpenText = \"Keep Open\", autoHideText = \"Auto-Hide\", supportUrl, defaultMenuOpen = true, canAlwaysPin = false, onMenuToggle= ()=>{}}) => {\n\n const { menuState, setMenuOpen, setMenuClose, togglePinned } = useMenu(defaultMenuOpen, canAlwaysPin);\n\n const [focusedContext, setFocusedContext] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(true);\n const location = useLocation();\n let checkedInItems: number = 0;\n\n /* Handling of menu open, closing and pinning. */\n const autoMenuOpen = useCallback((e: any) => {\n if (e.pointerType === 'touch') { return; }\n setMenuOpen();\n\n }, [setMenuOpen]);\n\n const autoMenuClose = useCallback(() => {\n // TODO: Move the focused back to the active view so it re-opens on current context.\n setMenuClose();\n }, [setMenuClose]);\n\n const toggleMenuPin = useCallback((e: any) => {\n if (e.pointerType === 'touch') { return; }\n togglePinned();\n }, [togglePinned]);\n\n useEffect(() => {\n onMenuToggle(menuState.isMenuOpen);\n },[menuState.isMenuOpen, onMenuToggle]);\n\n /** Manage which context is open. */\n /** Submenu sends -1 because context only is for the parent\n * The -1 value is important in the mobile version of this menu\n */\n const setFocusedContextCb = useCallback(contextKey => {\n if(contextKey === -1) { return; }\n\n setFocusedContext(focusedContext !== contextKey ? contextKey : -1);\n }, [setFocusedContext, focusedContext]);\n\n /** Manage the loading cycle. */\n const readyCallback = useCallback(() => {\n // Basic count of menu items (that need to measure height) that have checked in.\n checkedInItems++;\n if (checkedInItems === content.items.length) {\n setLoading(false);\n }\n }, [checkedInItems, content]);\n\n return (\n <PushContainer isPinned={menuState.isMenuPinned}>\n {ReactDom.createPortal(\n <Container\n open={menuState.isMenuOpen}\n desktopSize={menuState.desktopSize}\n onPointerEnter={menuState.isMenuPinned ? () => {} : autoMenuOpen}\n onTouchStart={() => console.log('touch')}\n onMouseLeave={menuState.isMenuPinned ? () => {} : autoMenuClose}\n >\n <ContainerInner>\n <Logo to={home}>\n <LogoMark>{logoMark ? <SVGObject type='image/svg+xml' data={logoMark} /> : <SvgLogoMark />}</LogoMark>\n <LogoType>{logoText ? <SVGObjectText type='image/svg+xml' data={logoText} /> : <SvgLogoText />}</LogoType>\n </Logo>\n\n <NavigationContainer>\n {content.items.map((item, key) => {\n return (\n <NavigationItem\n topLevelPath={getTopLevelPath(location.pathname)}\n key={key}\n contextKey={key}\n menuOpen={menuState.isMenuOpen}\n submenuOpen={key === focusedContext && menuState.isMenuOpen}\n onClickCallback={setFocusedContextCb}\n {...{ item, loading, focusedContext, readyCallback }}\n />\n );\n })}\n </NavigationContainer>\n\n <MenuFooter>\n\n {supportUrl && (\n <FooterItemContainer>\n <ContextItem compact isActive={false} icon='Question' title='Help & Support' href={supportUrl} menuOpen={menuState.isMenuOpen} />\n </FooterItemContainer>\n )}\n\n {(menuState.canPin)\n ? (\n <FooterItemContainer>\n <ContextItem\n compact\n isActive={false}\n icon={menuState.isMenuOpen && menuState.isMenuPinned ? 'Left' : 'Menu'}\n title={menuState.isMenuPinned ? keepOpenText : autoHideText}\n onClickCallback={toggleMenuPin}\n menuOpen={menuState.isMenuOpen}\n />\n </FooterItemContainer>\n )\n : null}\n </MenuFooter>\n </ContainerInner>\n </Container>,\n document.body)}\n </PushContainer>\n );\n};\n\nexport default MainMenu;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport Icon from '../../Icons/Icon';\n\nconst Container = styled.div`\n padding: 16px 10px 14px 23px;\n display: flex;\n flex-direction: row;\n border-top: 1px solid ${({ theme }) => theme.colors.divider};\n align-items: center;\n cursor: pointer;\n svg {\n margin-top: 7px;\n }\n`;\n\nconst ColumnContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding-left: 14px;\n align-items: flex-start;\n`;\n\nconst Title = styled.div`\n opacity: 0.76;\n font-family: ${({ theme }) => theme.fontFamily.ui};\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.34px;\n color: ${({ theme }) => theme.typography.global.mainMenu.subheader.color};\n`;\n\nconst SubTitle = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 0.29px;\n color: ${({ theme }) => theme.typography.global.mainMenu.subheader.color};\n padding-top: 2px;\n opacity: 0.5;\n`;\n\ninterface IDrawerBottomMenu {\n icon: string,\n title: string,\n subTitle: string,\n onClickCallback?: () => void\n}\n\nconst DrawerBottomMenu: FC<IDrawerBottomMenu> = ({ icon = 'Settings', title, subTitle, onClickCallback = () => {} }) => {\n\n return (\n <Container onClick={onClickCallback}>\n <Icon icon={icon} size={18} color='dimmed' />\n\n <ColumnContainer>\n <Title>{title}</Title>\n <SubTitle>{subTitle}</SubTitle>\n </ColumnContainer>\n\n </Container>\n );\n};\n\nexport default DrawerBottomMenu;\n","import React, { useCallback, Fragment } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport { ITopBar } from '../index';\nimport { resetButtonStyles } from '../../common/index';\nimport DrawerBottomMenu from '../atoms/DrawerBottomMenu';\n\nconst DrawerTop = styled.div``;\nconst DrawerBottom = styled.div`\n ${({ theme }) => css`\n width: 100%;\n position: fixed;\n bottom: 0;\n\n @media ${theme.deviceMediaQuery.large} {\n position: static;\n bottom: 0;\n }\n `};\n`;\n\nconst DrawerHeader = styled.h2`\n ${({ theme }) => theme.typography.global.mainMenu.subheader};\n padding: 0;\n margin: 0 0 5px;\n`;\nconst CurrentUser = styled.div`\n padding: 20px 20px 15px;\n\n ${({ theme }) => css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n ${theme.typography.global.mainMenu.identity};\n `};\n`;\n\nconst UserOptions = styled.div`\n padding: 20px 20px 10px 20px;\n ${({ theme }) => css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n `};\n\n`;\n\nconst Logout = styled.div`\n padding: 0 20px;\n`;\n\nconst LinkMenu = styled.ul`\n padding: 0;\n margin: 12px 0 0 0;\n list-style: none;\n`;\n\nconst LinkMenuItem = styled.li`\n padding: 10px 0;\n`;\n\nconst LinkMenuItemA = styled(Link) <{ isActive?: boolean }>`\n ${resetButtonStyles};\n display: block;\n width: 100%;\n\n ${({ theme }) => css`\n ${theme.typography.global.mainMenu.subItem.default};\n\n &:hover {\n ${theme.typography.global.mainMenu.subItem.hover};\n }\n `};\n\n ${({ theme, isActive }) => isActive && css`\n &, &:hover {\n ${theme.typography.global.mainMenu.subItem.active};\n }\n `};\n`;\n\ninterface IUserMenu extends ITopBar {\n closeOnClick?: () => void\n}\n\nconst UserMenu: React.FC<IUserMenu> = ({\n hasLanguage = false,\n selectedLanguageText = '',\n hasLogout = true,\n logoutLink = '/logout',\n logoutText = 'Logout',\n hasCurrentUser = true,\n currentUserText = 'Current User',\n accountOptionText = \"Account Options\",\n userSubmenu = [],\n userDrawerBespoke,\n loggedInUser,\n hasSwitchTheme = false,\n isLightMode = true,\n switchThemeText = 'SWITCH THEME',\n selectedThemeText = '',\n onLogout = () => { },\n onLanguageToggle = () => { },\n closeOnClick,\n onThemeToggle = () => { }\n}) => {\n\n const logoutHandler = useCallback(async (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n e.preventDefault();\n await onLogout();\n window.location.assign(logoutLink);\n if (closeOnClick) {\n closeOnClick();\n }\n }, [closeOnClick, logoutLink, onLogout]);\n\n const handleCloseWhenClick = useCallback(() => {\n if (closeOnClick) {\n closeOnClick();\n }\n }, [closeOnClick]);\n\n return (\n <Fragment>\n <DrawerTop>\n {hasCurrentUser ?\n <CurrentUser>\n <DrawerHeader>{currentUserText}</DrawerHeader>\n {loggedInUser}\n </CurrentUser>\n : null}\n\n {userSubmenu.length > 0 ?\n <UserOptions>\n <DrawerHeader>{accountOptionText}</DrawerHeader>\n <LinkMenu>\n {userSubmenu.map(({ text, href }, index) => {\n return (\n <LinkMenuItem key={index}>\n <LinkMenuItemA to={href} onClick={handleCloseWhenClick}>{text}</LinkMenuItemA>\n </LinkMenuItem>\n );\n })}\n </LinkMenu>\n </UserOptions>\n : null}\n\n {userDrawerBespoke ? userDrawerBespoke : null}\n\n {hasLogout ?\n <Logout>\n <LinkMenu>\n <LinkMenuItem><LinkMenuItemA onClick={logoutHandler} to={logoutLink}>{logoutText}</LinkMenuItemA></LinkMenuItem>\n </LinkMenu>\n </Logout>\n : null}\n </DrawerTop>\n\n <DrawerBottom>\n {hasSwitchTheme && <DrawerBottomMenu icon={isLightMode ? 'LightMode' : 'DarkMode'} title={switchThemeText} subTitle={selectedThemeText} onClickCallback={onThemeToggle} />}\n {hasLanguage && <DrawerBottomMenu icon='Language' title='LANGUAGE / 言語' subTitle={selectedLanguageText} onClickCallback={onLanguageToggle} />}\n </DrawerBottom>\n </Fragment>\n );\n};\n\nexport default UserMenu;","import React from 'react';\nimport styled from 'styled-components';\nimport { INotificationItem } from '../index';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 18px 20px 12px 20px;\n height: 122px;\n`;\n\nconst ImgWrapper = styled.div`\n border-radius: 5px;\n overflow: hidden;\n height: 40px;\n width: 40px;\n flex-shrink: 0;\n`;\n\nconst EmptyImg = styled.div`\n background-color: hsl(210, 22%, 91%);\n width: 100%;\n height: 100%;\n`;\n\nconst Image = styled.div<{ image?: string }>`\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-image: url(${p => p.image});\n background-position: center center;\n background-size: cover;\n background-repeat: no-repeat; \n display: ${p => p.image ? 'block' : 'none'};\n`;\n\nconst InfoContainer = styled.div`\n margin-left: 20px;\n`;\n\nconst Title = styled.div`\n font-size: 16px;\n font-weight: 500;\n color: hsl(0, 0%, 34%);\n`;\n\nconst Message = styled.div`\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n color: hsl(0, 0%, 34%);\n margin: 4px 0;\n height: 30px;\n text-overflow: ellipsis;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n`;\n\nconst TimeMsg = styled.div`\n font-size: 13px;\n font-weight: 500;\n color: hsl(0, 0%, 67%);\n margin-top: 15px;\n`;\n\n\nconst NotificationItem: React.FC<INotificationItem> = ({ imgUrl, title, message, time }) => {\n return (\n <Container>\n <ImgWrapper>\n {imgUrl\n ? <Image image={imgUrl} />\n : <EmptyImg />}\n </ImgWrapper>\n <InfoContainer>\n <Title>{title}</Title>\n <Message>{message}</Message>\n <TimeMsg>{time}</TimeMsg>\n </InfoContainer>\n </Container>\n );\n};\n\nexport default NotificationItem;","import React, { Fragment } from 'react';\nimport styled from 'styled-components';\nimport { INotificationsHistory, INotificationItem } from '../index';\nimport NotificationItem from '../atoms/NotificationItem';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst StatusContainer = styled.h2`\n text-transform: uppercase;\n padding: 10px 0 10px 20px;\n font-size: 14px;\n font-weight: 500;\n color: hsl(0, 0%, 34%);\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n margin: 0;\n`;\n\nconst NotificationWrapper = styled.div`\n border-bottom: ${({ theme: { colors } }) => colors.divider} 1px solid;\n`;\n\nconst renderNotifications = (items: INotificationItem[], type: string) => (\n items.map((item, index) => {\n return (\n <NotificationWrapper key={`alert-${type}-${index}`}>\n <NotificationItem {...item} />\n </NotificationWrapper>);\n })\n);\n\nconst NotificationsHistory: React.FC<INotificationsHistory> = ({\n read,\n unread,\n noNotificationsText = 'No new notifications',\n readNotificationsText = 'New',\n unreadNotificationsText = 'Read',\n\n}) => {\n\n if ((read.length === 0) && (unread.length === 0)) {\n return (\n <Container>\n <StatusContainer>{noNotificationsText}</StatusContainer>\n </Container>\n );\n }\n\n return (\n <Container>\n {unread && (\n <Fragment>\n <StatusContainer>{readNotificationsText}</StatusContainer>\n {renderNotifications(unread, 'unread')}\n </Fragment>\n )}\n {read && (\n <Fragment>\n <StatusContainer>{unreadNotificationsText}</StatusContainer>\n {renderNotifications(read, 'read')}\n </Fragment>\n )}\n </Container>\n );\n};\n\nexport default NotificationsHistory;","import React, { useState } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport StatusIcon from '../../Icons/StatusIcon';\nimport UserMenu from '../molecules/UserMenu';\nimport { ITopBar } from '../index';\nimport NotificationsHistory from './NotificationsHistory';\nimport { removeAutoFillStyle } from '../../common';\n\nconst Container = styled.div`\n z-index: 9;\n position: sticky;\n top: 0;\n align-self: flex-start;\n height: 65px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n\n ${({ theme, theme: { colors } }) => colors && css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n // box-shadow: 5px 7px 10px 0 hsla(205, 16%, 77%, 0.1);\n background-color:${theme.styles.global.mainMenu.background.backgroundColor};\n `}\n`;\n\nconst SearchBar = styled.div`\n margin-left: 25px;\n flex: 0 1 500px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst IconWrapper = styled.div`\n flex: 0 40px;\n width: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n > div {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nconst SearchInput = styled.input`\n ${removeAutoFillStyle};\n font-family: ${({ theme }) => theme.fontFamily.data};\n flex: 1;\n height: 35px;\n line-height: 35px;\n border: none;\n outline: none;\n background: transparent;\n\n ${({ theme: { typography } }) => typography.global.topBar.search.value};\n\n &::placeholder {\n font-style: italic;\n ${({ theme: { typography } }) => typography.global.topBar.search.placeholder};\n }\n`;\n\nconst ButtonArea = styled.div`\n height: inherit;\n padding-right: 10px;\n display: flex;\n`;\n\nconst DrawerToggle = styled.button.attrs({ type: 'button' }) <{ isActive: boolean }>`\n width: 60px;\n margin: 0 5px;\n height: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n\n ${({ theme }) => css`\n border-bottom: 5px solid transparent;\n /*${theme.colors.menu.indicator};*/\n\n &:hover {\n border-bottom-color: ${theme.colors.menu.hover};\n }\n\n transition: border ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `};\n\n ${({ isActive, theme }) => isActive && css`\n &, &:hover {\n border-bottom-color: ${theme.colors.menu.active};\n }\n `}\n`;\n\nconst DrawerPortalWrapper = styled.div``;\n\nconst Drawer = styled.div<{ isOpen: boolean, baseWidth?: string }>`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n\n position: fixed;\n right: -10px;\n top: 65px;\n bottom: 0;\n background: ${({ theme }) => theme.styles.global.mainMenu.background};\n border-left: ${({ theme }) => theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n width: ${({ baseWidth }) => baseWidth ? baseWidth : `200px`};\n opacity: 0;\n visibility: hidden;\n z-index: 100;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n ${({ theme }) => css`\n transition:\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut},\n right ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `};\n\n ${({ isOpen }) => isOpen && css`\n right: 0;\n opacity: 1;\n visibility: visible;\n `}\n`;\n\n/**\n * Negative margin hides the scroll;\n * Reviewed on Chrome an Firefox\n */\nconst NotificationsContainer = styled.div`\n overflow-y: scroll;\n margin-right: -17px;\n`;\n\ntype IDrawerKeys = 'user' | 'notifications' | 'custom' | null;\n\n\nconst TopBar: React.FC<ITopBar> = ({\n hasNotifications = false,\n hasLanguage = false,\n selectedLanguageText = '',\n hasLogout = true,\n logoutLink = '/logout',\n logoutText = 'Logout',\n hasSearch = false,\n hasCurrentUser = true,\n currentUserText = 'Current User',\n accountOptionText = 'Account Options',\n searchPlaceholder = 'Search for devices, analysis tasks, etc.',\n userSubmenu = [],\n userDrawerBespoke,\n loggedInUser,\n notificationsHistory,\n customDrawer,\n hasSwitchTheme = false,\n isLightMode = true,\n switchThemeText = 'SWITCH THEME',\n selectedThemeText = '',\n onLogout = () => { },\n onLanguageToggle = () => { },\n onThemeToggle = () => { }\n}) => {\n\n const [openDrawer, setOpenDrawer] = useState<IDrawerKeys>(null);\n\n const toggleDrawers = (drawerKey: IDrawerKeys) => {\n setOpenDrawer(\n prevDrawer => {\n // if prevDrawer is open, just update to null to close\n if (prevDrawer === drawerKey) {\n return null;\n }\n\n return drawerKey;\n }\n );\n };\n\n return (\n <Container>\n {hasSearch ?\n <SearchBar>\n <IconWrapper>\n <Icon icon='Search' size={18} color='dimmed' />\n </IconWrapper>\n <SearchInput placeholder={searchPlaceholder} />\n </SearchBar> : <div />}\n\n <ButtonArea>\n {customDrawer && (\n <DrawerToggle isActive={openDrawer === 'custom'} onClick={() => toggleDrawers('custom')}>\n <StatusIcon {...customDrawer} />\n </DrawerToggle>\n )}\n {hasNotifications && (\n <DrawerToggle isActive={openDrawer === 'notifications'} onClick={() => toggleDrawers('notifications')}>\n <Icon icon='Notifications' size={18} color='dimmed' />\n </DrawerToggle>\n )}\n <DrawerToggle isActive={openDrawer === 'user'} onClick={() => toggleDrawers('user')}>\n <Icon icon='UserProfile' size={18} color='dimmed' />\n </DrawerToggle>\n </ButtonArea>\n\n {ReactDom.createPortal(\n <DrawerPortalWrapper>\n {/* User Menu */}\n <Drawer isOpen={openDrawer === 'user'}>\n <UserMenu {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n logoutText,\n hasCurrentUser,\n currentUserText,\n accountOptionText,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle,\n selectedLanguageText,\n hasSwitchTheme,\n isLightMode,\n switchThemeText,\n selectedThemeText,\n onThemeToggle\n }}\n />\n </Drawer>\n\n {/* Notifications */}\n {hasNotifications ?\n <Drawer isOpen={openDrawer === 'notifications'} baseWidth='300px'>\n <NotificationsContainer>\n {notificationsHistory ? <NotificationsHistory {...notificationsHistory} /> : null}\n </NotificationsContainer>\n </Drawer> : null}\n\n {customDrawer && (\n <Drawer isOpen={openDrawer === 'custom'} baseWidth={customDrawer.width ? customDrawer.width : \"200px\"}>\n {customDrawer.customComponent}\n </Drawer>\n )}\n </DrawerPortalWrapper>, document.body)}\n </Container>\n );\n\n};\n\nexport default TopBar;","import React, { useState, HTMLAttributes } from 'react';\n\nexport interface ContextProps {\n selected: string,\n setSelected: (value: string) => void\n}\nexport const TabContext = React.createContext<ContextProps>({\n selected: '',\n setSelected: () => { }\n});\n\ntype Props = HTMLAttributes<HTMLDivElement>\n\nconst Tabs: React.FC<Props> = ({ children }) => {\n const [selected, setSelected] = useState('');\n\n return (\n <TabContext.Provider value={{ selected, setSelected }}>\n {children}\n </TabContext.Provider>\n );\n};\n\nexport { Tabs };","import React, { useContext, useEffect, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from './Tabs';\n\nexport const TabListWrapper = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\ninterface OwnProps {\n defaultTabId: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst TabList: React.FC<Props> = ({ children, defaultTabId}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n useEffect(() => {\n setSelected(defaultTabId);\n }, [defaultTabId, setSelected]);\n\n return (\n <TabListWrapper>\n {children}\n </TabListWrapper>\n );\n};\n\nexport { TabList };","import React, { useContext, HTMLAttributes, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TabContext, ContextProps } from '../Tabs';\n\nconst TabComponent = styled.div`\n margin-right: 39px;\n display: flex;\n align-items: center;\n line-height: 20px;\n`;\n\nconst TabLabel = styled.label<{ active: boolean }>`\n height: 40px;\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n font-size: 15px;\n font-weight: ${({ active }) => active ? '600' : '500'};\n letter-spacing: 0.09px;\n color: ${({ active }) => active ? '#0097ce' : '#787878'};\n cursor: pointer;\n border-bottom: ${({ active }) => active ? '2px solid #0097ce' : '2px solid transparent'};\n padding-top: 6px;\n padding-bottom: 14px;\n flex-shrink: 0;\n`;\n\ninterface OwnProps {\n tabFor: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst Tab: React.FC<Props> = ({ children, tabFor, onClick, ...props }) => {\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((event:React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n onClick && onClick(event);\n setSelected(tabFor);\n }, [onClick, setSelected, tabFor]);\n\n return (\n <TabComponent {...props} onClick={onChangeTab}>\n <TabLabel active={selected === tabFor}>\n {children}\n </TabLabel>\n </TabComponent>\n );\n};\n\nexport { Tab };","import React, { useContext, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from './Tabs';\n\nconst Container = styled.div`\n`;\n\ninterface OwnProps {\n tabId: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst TabContent: React.FC<Props> = ({ children, tabId, ...props }) => {\n const { selected }: ContextProps = useContext(TabContext);\n\n return (\n selected === tabId ?\n <Container {...props}>\n {children}\n </Container> :\n null\n );\n};\n\nexport { TabContent };","import React, { useContext, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TabContext, ContextProps } from '../Tabs';\nimport { IconWrapper } from '../../Icons/Icon';\nimport StatusIcon from '../../Icons/StatusIcon';\nimport { resetButtonStyles } from '../../common/index';\nimport { IStatusDot } from '../..';\n\nconst Container = styled.button`\n ${resetButtonStyles}\n flex-basis: auto;\n flex-grow: 1;\n`;\n\nconst LinkTab = styled.div<{ isActive: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n ${({ theme }) => css`\n transition: border ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n border-bottom: 5px solid ${theme.colors.menu.indicator};\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.icons['dimmed']};\n }\n }\n\n &:hover {\n border-bottom-color: ${theme.colors.menu.hover};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.menu.hover};\n }\n }\n }\n `};\n\n ${({ isActive, theme }) => isActive && css`\n &, &:hover {\n border-bottom-color: ${theme.colors.menu.active};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.menu.active};\n }\n }\n }\n `}\n`;\n\ninterface IMobileTab {\n tabFor: string\n icon: string\n closeId: string\n counter?: number\n status?: IStatusDot\n}\n\nconst MobileTab: React.FC<IMobileTab> = ({ tabFor, icon, closeId, counter, status, ...props }) => {\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((tabId: string) => {\n const newValue = (selected === tabId) ? closeId : tabId;\n setSelected(newValue);\n }, [closeId, selected, setSelected]);\n\n return (\n <Container {...props} onClick={() => onChangeTab(tabFor)}>\n <LinkTab isActive={selected === tabFor}>\n <StatusIcon {...{icon, status, counter}} />\n </LinkTab>\n </Container>\n );\n};\n\nexport { MobileTab };","import React, { useContext, useCallback } from 'react';\nimport { TabContext, ContextProps } from '../Tabs';\nimport styled, { css } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div<{ active: boolean }>`\n display: flex;\n align-items: center;\n margin-right: 22px;\n padding-bottom: 7px;\n height: 60px;\n cursor: pointer;\n\n ${({ active }) => active ? css`\n border-bottom: 3px solid hsl(196, 100%, 40%);\n `\n : css`\n border-bottom: 3px solid transparent;\n `};\n ${IconWrapper} {\n margin-left: 2px;\n flex-shrink: 0;\n }\n`;\n\nconst Title = styled.div<{ active: boolean }>`\n font-size: 14px;\n font-family: ${({ theme }) => theme.fontFamily.ui};\n letter-spacing: 0.09px;\n font-weight: 500;\n color: ${({ active }) => active ? 'hsl(196, 100%, 40%)' : 'hsl(0, 0%, 46%)'};\n margin-bottom: 5px;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\n\nconst SubTitle = styled.div`\n font-size: 12px;\n font-family: ${({ theme }) => theme.fontFamily.data};\n font-style: italic;\n color: hsla(195, 10%, 52%, 0.72);\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nconst TextGroup = styled.div`\n margin-left: 12px;\n margin-right: 20px;\n`;\n\nexport interface ITabWithIcon {\n icon: string\n title: string\n subtitle?: string\n tabFor: string\n}\n\nconst TabWithIcon: React.FC<ITabWithIcon> = ({ icon, title, subtitle, tabFor, ...props }) => {\n\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((tabId: string) => {\n setSelected(tabId);\n }, [setSelected]);\n\n const active = selected === tabFor;\n\n return (\n <Container {...{ active }} {...props} onClick={() => onChangeTab(tabFor)}>\n <Icon {...{ icon }} weight='regular' size={15} color={active ? 'primary' : 'dimmed'} />\n <TextGroup>\n <Title {...{ active }}>{title}</Title>\n {subtitle && <SubTitle>{subtitle}</SubTitle>}\n </TextGroup>\n </Container>\n );\n};\n\nexport { TabWithIcon };","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport { Tabs } from '../Tabs';\nimport { TabList } from '../TabList';\nimport { TabContent } from '../TabContent';\nimport { TabWithIcon, ITabWithIcon } from '../atoms/TabWithIcon';\n\nconst Container = styled.div``;\n\nconst TabListWrapper = styled.div<{ paddingLeft?: string }>`\n padding-top: 10px;\n padding-left: ${({ paddingLeft }) => paddingLeft ? paddingLeft : '87px'};\n box-shadow: 0 -5px 5px 0 hsla(0, 0%, 0%, 0.01);\n border-bottom: 1px solid hsl(0, 0%, 89%);\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n &::-webkit-scrollbar { /* WebKit */\n width: 0;\n height: 0;\n }\n`;\n\nexport interface ITabIcon extends ITabWithIcon {\n customComponent?: ReactElement\n}\n\nexport interface ITabsWithIconBar {\n defaultTabId: string\n tabList: ITabIcon[]\n paddingLeft?: string\n}\n\nconst TabsWithIconBar: React.FC<ITabsWithIconBar> = ({ defaultTabId, tabList, paddingLeft }) => {\n\n return (\n <Container>\n <Tabs>\n <TabListWrapper {...{ paddingLeft }}>\n <TabList {...{ defaultTabId }}>\n {tabList.map(({ icon, title, subtitle, tabFor }) => {\n return (\n <TabWithIcon key={`tabWithIcon-${tabFor}`} {...{ icon, title, subtitle, tabFor }} />\n );\n })}\n </TabList>\n </TabListWrapper>\n\n {tabList.map(({ tabFor, customComponent }) => {\n return (\n <TabContent key={`TabContent-${tabFor}`} tabId={tabFor}>{customComponent}</TabContent>\n );\n }\n )}\n </Tabs>\n </Container>\n );\n};\n\nexport { TabsWithIconBar };","import React, { ButtonHTMLAttributes, useContext } from 'react';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\nimport styled, {css} from 'styled-components';\nimport { resetButtonStyles } from '../../common/index';\nimport Icon from '../../Icons/Icon';\nimport { MOBILE_CLOSE_HEIGHT } from './Layout';\n\nconst StyledButton = styled.button`\n ${resetButtonStyles}\n\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n ${theme.styles.global.mainMenu.background};\n border-top: 1px solid ${theme.colors.divider};\n `};\n \n height: ${MOBILE_CLOSE_HEIGHT}px;\n position: fixed;\n bottom: 0;\n font-size: 14px;\n outline: none;\n\n width: 100%;\n text-align: center;\n white-space: nowrap;\n padding: 0 40px;\n\n`;\n\nconst IconContainer = styled.div`\n height: inherit;\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n margin: 0 20px;\n\n svg {\n display:block;\n }\n`;\n\nconst TextWrapper = styled.div`\n text-transform: uppercase;\n`;\n\ninterface ICloseProps {\n closeId: string\n closeText?: string\n}\n\ntype IClose = ICloseProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst CloseButton: React.FC<IClose> = ({\n closeId,\n closeText = 'CLOSE MENU',\n ...props }) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n return (\n <StyledButton\n onClick={() => setSelected(closeId)}\n {...props}\n >\n <IconContainer>\n <Icon icon='CloseCompact' color='dimmed' size={16} />\n </IconContainer>\n <TextWrapper>{closeText}</TextWrapper>\n </StyledButton>\n );\n};\n\nexport default CloseButton;","import React, {useContext} from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport { MOBILE_NAVBAR_HEIGHT, MOBILE_CLOSE_HEIGHT } from '../atoms/Layout';\n\n//\n// Containers height is full height but header and close button\n//\n\nconst Container = styled.div`\n position: relative;\n min-height: calc(100vh - ${MOBILE_NAVBAR_HEIGHT + MOBILE_CLOSE_HEIGHT }px);\n width: 100%;\n overflow-y: scroll;\n`;\n\nconst ContentWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n`;\n\ninterface OwnProps {\n closeId: string\n}\n\nconst MobileNavbarContent: React.FC<OwnProps> = ({ closeId, children }) => {\n const { selected }: ContextProps = useContext(TabContext);\n\n return (\n selected === closeId\n ? null\n : (\n <Container>\n <ContentWrapper>\n {children}\n </ContentWrapper>\n </Container>\n )\n );\n};\n\nexport default MobileNavbarContent;","import React, { useCallback, useState, useContext } from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLocation } from 'react-router-dom';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport { IMenu } from '..';\nimport NavigationItem from '../atoms/NavigationItem';\nimport ContextItem from '../atoms/ContextItem';\nimport { getTopLevelPath } from '../../helpers/index';\n\nconst Container = styled.div``;\n\nconst ItemWrapper = styled.div`\n padding: 14px 0;\n ${({ theme }) => css`\n border-bottom: 1px solid ${theme.colors.divider}\n `};\n`;\n\ninterface IMobileMenu extends IMenu {\n closeId: string\n}\n\nconst MobileMenu: React.FC<IMobileMenu> = ({\n content,\n supportUrl,\n closeId\n}) => {\n\n const [loading, setLoading] = useState<boolean>(true);\n const [focusedContext, setFocusedContext] = useState<number>(0);\n const location = useLocation();\n let checkedInItems: number = 0;\n const { setSelected }: ContextProps = useContext(TabContext);\n\n\n /** Manage which context is open. \n * -1 is the value of a sub menu\n * In this mobile version of the menu will close after selecting an option\n * It will not close if the menu has a submenu to allow it to display the options\n */\n const setFocusedContextCb = useCallback(contextKey => {\n if((contextKey === -1) || (!content.items[contextKey].submenu) ){\n setSelected(closeId);\n }\n\n if(contextKey === -1) { return; }\n\n setFocusedContext(focusedContext !== contextKey ? contextKey : -1);\n\n }, [closeId, content.items, focusedContext, setSelected]);\n\n /** Manage the loading cycle. */\n const readyCallback = useCallback(() => {\n // Basic count of menu items (that need to measure height) that have checked in.\n checkedInItems++;\n if (checkedInItems === content.items.length) {\n setLoading(false);\n }\n }, [checkedInItems, content.items.length]);\n\n const handleCloseMenu = useCallback(() => {\n setSelected(closeId);\n },[closeId, setSelected]);\n\n return (\n <Container>\n {content.items.map((item, key) => {\n return (\n <ItemWrapper key={key} data-key={key}>\n <NavigationItem\n minHeight={30}\n topLevelPath={getTopLevelPath(location.pathname)}\n contextKey={key}\n menuOpen\n submenuOpen={key === focusedContext}\n onClickCallback={setFocusedContextCb}\n {...{ item, loading, focusedContext, readyCallback }}\n />\n </ItemWrapper>\n\n );\n })}\n {supportUrl && (\n <ItemWrapper>\n <ContextItem\n compact\n isActive={false}\n icon='Question'\n title='Help & Support'\n href={supportUrl}\n menuOpen\n onClickCallback={handleCloseMenu}\n />\n </ItemWrapper>)}\n </Container>\n );\n};\n\nexport default MobileMenu;","import React, { useContext } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport SvgLogoMark from '../../svg/LogoMark';\nimport {resetButtonStyles} from '../../common/index';\nimport { Link } from 'react-router-dom';\n\nconst Logo = styled(Link)`\n ${resetButtonStyles};\n display: flex;\n flex-basis: 0;\n flex-grow: 1;\n justify-content: center;\n align-items: center;\n object {\n pointer-events: none;\n height: 25px;\n }\n`;\nconst LogoMark = styled.div`\n margin-right: 15px;\n`;\n\nconst SVGObject = styled.object``;\n\ninterface ILogoLink {\n closeId: string\n logoMark?: string,\n home?: string,\n}\n\nconst MobileLogoLink: React.FC<ILogoLink> = ({\n home = \"/\",\n logoMark,\n closeId,\n}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n return(\n <Logo to={home} onClick={() => setSelected(closeId)}>\n <LogoMark>{logoMark ? <SVGObject type='image/svg+xml' data={logoMark} /> : <SvgLogoMark />}</LogoMark>\n </Logo>\n );\n};\n\nexport default MobileLogoLink;","import React, { useCallback, useContext } from 'react';\nimport styled from 'styled-components';\nimport UserMenu from '../molecules/UserMenu';\nimport { ITopBar } from '../index';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nconst Container = styled.div`\n background: ${({ theme }) => theme.styles.global.mainMenu.background};\n z-index: 100;\n display: flex;\n flex-direction: column;\n`;\n\ninterface IMobileUserMenu extends ITopBar {\n closeId: string\n}\n\nconst MobileUserMenu: React.FC<IMobileUserMenu> = ({\n closeId,\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle\n}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n const handleCloseMenu = useCallback(() => {\n setSelected(closeId);\n },[closeId, setSelected]);\n\n return (\n <Container>\n <UserMenu\n {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle,\n }}\n closeOnClick={handleCloseMenu}\n />\n </Container>\n );\n};\n\nexport default MobileUserMenu;","import React from 'react';\nimport styled from 'styled-components';\nimport { Tabs, TabContent, MobileTab } from '../../Tabs/index';\nimport { TabListWrapper, TabList } from '../../Tabs/TabList';\nimport { IMenu, ITopBar, INotificationsHistory } from '..';\nimport CloseButton from '../atoms/CloseButton';\nimport MobileNavbarContainer from '../atoms/MobileNavbarContent';\nimport MobileMenu from './MobileMenu';\nimport MobileLogoLink from '../atoms/MobileLogoLink';\nimport MobileUserMenu from '../molecules/MobileUserMenu';\nimport NotificationsHistory from '../molecules/NotificationsHistory';\nimport { MOBILE_NAVBAR_HEIGHT } from '../atoms/Layout';\n\nconst CLOSE_ID = 'closeMenu';\nconst NOTI_TAB = 'notifications';\nconst USER_TAB= 'user';\nconst MENU_TAB = 'menu';\nconst CUSTOM_TAB = 'custom';\n\nconst Container = styled.nav`\n background-color: ${({theme}) => theme.styles.global.mainMenu.background.backgroundColor};\n position: sticky;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 99;\n`;\n\nconst HeaderContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: ${MOBILE_NAVBAR_HEIGHT}px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n\n ${TabListWrapper} {\n flex-basis: 0;\n flex-grow: 3;\n }\n`;\n\ninterface OwnProps {\n closeText?: string\n notificationsHistory?: INotificationsHistory\n}\n\ntype IMobileNavbar = OwnProps & IMenu & ITopBar;\n\nconst MobileNavbar: React.FC<IMobileNavbar> = ({\n content,\n home,\n logoMark,\n supportUrl,\n defaultMenuOpen = true,\n closeText,\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n hasNotifications,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n notificationsHistory,\n customDrawer,\n onLogout,\n onLanguageToggle,\n}) => {\n\n return (\n <Container>\n <Tabs>\n <HeaderContainer>\n <MobileLogoLink {...{ home, logoMark }} closeId={CLOSE_ID} />\n <TabList defaultTabId={CLOSE_ID}>\n {customDrawer && <MobileTab {...customDrawer} tabFor={CUSTOM_TAB} closeId={CLOSE_ID} />}\n {hasNotifications? <MobileTab tabFor={NOTI_TAB} icon='Notifications' closeId={CLOSE_ID} /> : null}\n <MobileTab tabFor={USER_TAB} icon='UserProfile' closeId={CLOSE_ID} />\n <MobileTab tabFor={MENU_TAB} icon='Menu' closeId={CLOSE_ID} />\n </TabList>\n </HeaderContainer>\n <MobileNavbarContainer closeId={CLOSE_ID}>\n <TabContent tabId={CUSTOM_TAB}>\n {customDrawer && customDrawer.customComponent}\n </TabContent>\n <TabContent tabId={NOTI_TAB}>\n {notificationsHistory && hasNotifications ? <NotificationsHistory {...notificationsHistory} /> : null}\n </TabContent>\n <TabContent tabId={USER_TAB}>\n <MobileUserMenu\n {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle\n }}\n closeId={CLOSE_ID}\n />\n\n </TabContent>\n <TabContent tabId={MENU_TAB}>\n <MobileMenu {...{ content, supportUrl, defaultMenuOpen }} closeId={CLOSE_ID} />\n </TabContent>\n <CloseButton {...{ closeText }} closeId={CLOSE_ID} />\n </MobileNavbarContainer>\n </Tabs>\n </Container>\n );\n};\n\nexport default MobileNavbar;","import React from 'react';\nimport { IMenu, ITopBar} from '..';\nimport { Layout, MainContainer, ContentArea, MobileLayout } from '../atoms/Layout';\nimport MainMenu from '../organisms/MainMenu';\nimport TopBar from '../molecules/TopBar';\nimport MobileNavbar from '../organisms/MobileNavbar';\nimport useBreakpoints from '../../hooks/useBreakpoints';\n\n\ninterface OwnProps {\n maxWidth?: string,\n paddingOverride?: string,\n onMenuToggle?: (isMenuOpen: boolean) => void\n}\n\ntype INavigation = OwnProps & IMenu & ITopBar;\n\nconst GlobalUI: React.FC<INavigation> = ({\n content,\n home,\n openWidth,\n logoMark,\n logoText,\n supportUrl,\n defaultMenuOpen,\n canAlwaysPin,\n paddingOverride,\n maxWidth,\n children,\n onMenuToggle,\n ...props\n}) => {\n\n const { isLarge } = useBreakpoints();\n\n return (\n isLarge\n ? (\n <Layout>\n <MainMenu {...{\n content,\n home,\n openWidth,\n logoMark,\n logoText,\n supportUrl,\n defaultMenuOpen,\n canAlwaysPin,\n onMenuToggle,\n }\n }\n />\n <MainContainer>\n <TopBar\n {...{...props}}\n />\n <ContentArea {...{maxWidth, paddingOverride}}>\n {children}\n </ContentArea>\n </MainContainer>\n </Layout>\n )\n : (\n <MobileLayout>\n <MobileNavbar\n {...{\n content,\n home,\n logoMark,\n supportUrl,\n defaultMenuOpen,\n ...props\n }\n }\n />\n <ContentArea>\n {children}\n </ContentArea>\n </MobileLayout>\n )\n );\n};\n\nexport default GlobalUI;","import React from 'react';\nimport styled from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nconst Container = styled.div`\n width: 286px;\n border-right: 1px solid hsla(0, 0%, 84%, 50%);\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n`;\nconst LogoContainer = styled.div`\n height: 84px;\n color: hsl(205, 7%, 35%);\n border-bottom: 1px solid hsla(0, 0%, 84%, 50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding-top: 18px;\n padding-bottom: 15px;\n`;\nconst LogoTopText = styled.div`\n height: 31px;\n font-family: Monorale;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.72;\n letter-spacing: 4.5px;\n text-align: center;\n`;\nconst LogoBottomText = styled.div`\n height: 19px;\n font-family: Monorale;\n font-size: 16px;\n font-weight: 300;\n line-height: normal;\n letter-spacing: 14.11px;\n text-align: center;\n`;\n\nexport const SidebarBox = styled.div`\n position: relative;\n border-bottom: 1px solid hsla(0, 0%, 84%, 50%);\n padding: 22px 20px 21px 20px;\n`;\nexport const SidebarHeading = styled.div`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n margin-bottom: 18px;\n`;\n\nexport const SidebarLinkHeading = styled.div`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n`;\n\nexport const BackLink = styled(Link)`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n`;\n\nconst SLink = styled(Link)`\n position: absolute;\n right: 30px;\n top: 15px;\n /* width: 80px; */\n /* height: 30px; */\n font-size: 14px;\n font-weight: 600;\n text-align: center;\n color: hsl(0, 0%, 55%);\n border-radius: 3px;\n background-color: hsl(206, 70%, 96%);\n text-decoration: none;\n padding: 7px 20px;\n`;\n\nexport const SidebarLink : React.FC<{title: string; to: string}> = ({title,to}) => {\n return (\n <SidebarBox>\n <SidebarLinkHeading>{title}</SidebarLinkHeading>\n <SLink to={to}>Setup</SLink>\n </SidebarBox>\n );\n};\n\ninterface LogoProps{\n logoTextTop: string;\n logoTextBottom: string;\n}\n\nexport const Logo: React.FC<LogoProps> = ({logoTextTop,logoTextBottom}) => (\n <LogoContainer>\n <LogoTopText>{logoTextTop}</LogoTopText>\n <LogoBottomText>•{logoTextBottom}•</LogoBottomText>\n </LogoContainer>\n);\n\n\nconst Sidebar: React.FC = ({children,...props}) => {\n return (\n <Container {...props}>\n {children}\n </Container>\n );\n};\n\nexport default Sidebar;\n"],"names":["fontFamily","ui","data","dimensions","icons","weights","light","regular","heavy","strong","form","button","xsmall","height","padding","iconSize","small","normal","large","input","outer","width","borderRadius","inner","positions","top","off","neutral","locked","on","global","mainMenu","open","closed","animation","easing","primary","inOut","out","speed","faster","fast","slow","slower","slowest","deviceSize","medium","xlarge","xxlarge","deviceMediaQuery","typography","colors","styles","border","menu","active","hover","divider","feedback","error","info","success","warning","custom","label","fill","contrastLine","stroke","highlightLine","grabHandle","point","grabHandleContrast","grabHandleText","handleBase","handleRingLayer","handleReactiveFill","handleReactiveRing","handleContrastLayer","stopStart","stopColor","stopEnd","wrapperCss","css","IconWrapper","styled","div","IconWrapperForSVG","g","Icon","icon","size","weight","color","forSvgUsage","theme","useTheme","iconWeight","IconSVG","IconSVGs","React","RowCss","ColumnCss","resetButtonStyles","removeAutoFillStyle","EllipsisStyles","IconButton","selected","AlertWrapper","type","feedbackBar","message","pureBase","IconNames","MessageBox","AlertBar","hideCloseButton","useState","dismiss","setDismiss","useEffect","onClick","initAnimation","keyframes","closeAnimation","Container","easeInOut","isClosing","TextButton","MainMessage","Notification","id","isPinned","actionTextButton","closeNow","closeCallback","onTextButtonClick","slideUp","setSlideUp","textClicked","setTextClicked","handleDismiss","useCallback","handleTextClick","animationEnded","mounted","setTimeout","ReactDom","createPortal","onAnimationEnd","document","body","StyledButton","design","easeOut","backgroundColor","disabled","Button","children","props","TextContainer","position","IconContainer","InnerContainer","ButtonWithIcon","iconColor","circumference","radius","c","rotate","BaseCircle","circle","styling","indicators","spinner","base","borderColor","RotatingCircle","r","sizeGuide","Spinner","sizeVal","strokeWidth","circleRadius","viewBox","xmlns","cx","cy","LoadingButton","$loading","LoadingContainer","actionArea","ButtonWithLoading","loading","rest","hoverColor","StyledIconButton","alignment","ActionButtons","buttonsConfig","map","btn","key","ActionContainer","InputActionButton","attrs","FeedbackContainer","FeedbackMessage","FeedbackIcon","StyledInput","fieldState","value","placeholder","InputContainer","hasAction","indexOf","focused","Input","defaultValue","feedbackMessage","actionCallback","actionIcon","postfix","isActionButton","undefined","feedbackIcon","StyledLabel","rightAlign","LabelText","span","Label","htmlFor","labelText","compact","p","padRight","UnitKey","SmallInput","unit","name","className","unitElement","useRef","unitElementWidth","setUnitElementWidth","current","clientWidth","ref","SwitchPosition","intentPosition","left","checked","offset","intentLeft","parseInt","toString","RealInput","SwitchOuter","getPositionKey","switchPos","Off","On","Neutral","Locked","SwitchInner","SpinnerWrapper","themeState","activeTheming","useIntent","Switch","state","leftTheme","rightTheme","onChangeCallback","inputRef","setPosition","setActiveTheming","switchState","setSwitchState","positionSwitch","customOnChange","updateThemeChoice","stateCheck","onChange","defaultChecked","SvgLogoMark","x1","x2","y1","y2","fillRule","rx","d","SvgLogoText","SvgAvatarPlaceholder","strokeLinecap","strokeLinejoin","transform","x","y","CheckMark","CheckboxState","CheckboxOuter","CheckboxInner","visualState","checkbox","unchecked","Indeterminate","indeterminate","Checkbox","isChecked","setIsChecked","setVisualState","e","target","readOnly","InnerRadio","OuterRadio","HiddenInput","RadioButton","currentChecked","required","handleChange","checkedValue","StyledTextArea","textarea","TextArea","SelectWrapper","StyledSelect","select","isCompact","isLabelSameRow","activePlaceholder","SelectField","changeCallback","setPlaceholderStatus","handleOnChange","prev","renderSelect","hidden","isSameRow","text","isInsideRange","min","max","clamp","minValue","maxValue","Math","getShortTextTimeUnit","isTimeUnit","getTopLevelPath","pathname","parts","split","filter","String","length","getImageType","img","dataType","src","substr","includes","isValidImage","file","acceptedImageTypes","uniqueID","Date","now","random","replace","ThumbDiameter","SliderWrapper","Rail","Mark","leftValue","MarkLabel","ThumbWrapper","Thumb","bgColor","GhostThumb","thumbLeftPosition","valueToPercent","nearMark","marks","closest","reduce","curr","abs","getValidMin","getValidMax","round","getMarkAlignment","renderMarks","markList","listTag","listOptions","marksElements","index","push","Fragment","ghostThumbValue","SliderInput","thumbColor","onlyMarkSelect","inputCallback","maxValid","minValid","initValue","selectedValue","setSelectedValue","isGhostActive","setIsGhostActive","thumbValueRef","mark","ghostVal","handleInputChange","lastValue","val","numericVal","prevMark","handleSelectStart","handleSelectEnd","currentValue","list","onMouseUp","onMouseDown","onTouchStart","onTouchEnd","InputFileButton","buttonDesign","buttonSize","fileInputRef","handleFile","files","newFiles","forwardClick","click","Headers","ValueLabel","Unit","ValueTitle","DurationSlider","title","timeUnit","controlledValue","handleSelectedValue","labelValue","getThumbColor","getTitleLevel","PercentageSlider","updateThumbColor","updateTitle","PasswordField","showValue","setShowValue","setActionIcon","newValue","TextField","_type","TextAreaField","DragAndDrop","inDropZone","DropArea","dropCallback","setInDropZone","onDragEnter","preventDefault","stopPropagation","onDragLeave","onDragOver","onDrop","dataTransfer","updateCursorStyle","clientX","clientY","cursorStyle","drawImgValues","canvasHeight","canvasWidth","scale","naturalWidth","naturalHeight","floor","imageDraw","initialCropValues","cropWidth","cropHeight","imgWidth","imgHeight","aspectRatio","aspect","minWidth","minHeight","isLeftMouseButton","mouseButton","buttons","which","updateCropValues","oldSelection","newX","newY","cropLeft","cropTop","updatedLeft","updatedTop","updatedWidth","updatedHeight","diffX","mouseStartX","diffY","mouseStartY","cursorStart","imgLeft","imgTop","isUpdateRequired","areDimensionsDiff","updateCropWithAspect","imgBoundLeft","imgBoundTop","imgBoundWidth","imgBoundHeight","oldDimensions","newValues","isDifferent","CropLineStyle","TopLine","RightLine","BottomLine","LeftLine","resizeSquaresCss","PointN","isResizable","PointNW","PointNE","PointE","PointSE","PointS","PointSW","PointW","CropArea","hasAspectRatio","ToolHeader","TextGroup","mono","ButtonsGroup","PreviewArea","HiddenImage","SelectedArea","viewDimensions","isResizing","CropTool","cancelBtnTxt","cropBtnTxt","imgUrl","onCrop","onClose","onError","isLoading","setIsLoading","_loadDimensions","setLoadDimensions","canvasRef","imgRef","cropRef","drawImgOnCanvas","newImage","canvas","ctx","getContext","newImgDraw","drawImage","newCrop","prevState","handleCrop","cropArea","cropImageData","getImageData","canvasCropped","createElement","cropContext","putImageData","imgType","newImgUrl","toDataURL","handleMouseDown","rect","getBoundingClientRect","posX","posY","newCursorStyle","handleMouseUp","updateSelect","style","handleMouseMove","newDimensions","handleOnMouseLeave","onMouseMove","onMouseLeave","onLoad","crossOrigin","CROP_HEIGHT_AREA","CROP_WIDTH_AREA","CANVAS_HEIGHT","CANVAS_WIDTH","ratio","PHOTO_HEIGHT","PHOTO_WIDTH","PreviewImageGroup","PhotoContainerStyle","PreviewImage","PlaceholderText","NoPhoto","StyledInputFileButton","ButtonsWrapper","AvatarUploader","photoText","buttonText","buttonTextReplace","uploaderCropText","deletePhotoText","cropToolTitle","cropToolCancelTxt","cropToolConfirmTxt","currentImg","hasCrop","onAvatarUpdate","onRemove","avatarImg","setAvatarImg","cropImg","setCropImg","isCropOpen","setIsCropOpen","newFileUrl","fileType","fetch","then","blob","blobFile","File","newFile","handleCropClose","URL","revokeObjectURL","handleFileUpload","prevImg","createObjectURL","handleEdit","fileUrl","handleRemove","alt","AvatarPlaceholder","accept","PlusIcon","PlusIconWrapper","BigIconsSummary","StyledDropArea","InputButtonWrapper","FilesUploadGroup","hasFiles","filters","dropdownContainer","background","Title","Description","getUpdateFiles","allowedFileTypes","newFilesTransfer","DataTransfer","rejectedFilesTransfer","isCorrectType","items","add","result","goodFiles","rejectedFiles","updatedFilesTransfer","fileNamesSet","Set","isAlready","has","AreaUploadManager","description","fileIcons","selectFilesText","addMoreFilesText","customComponent","setFiles","handleFiles","console","log","multiple","FormContainer","spacing","Form","hide","datepicker","metaHeader","Item","IconWrap","TimeColon","InputWrap","passive","pureTop","DateTimeBlock","allowAfterMidnight","hasDate","hasTime","date","setDateCallback","format","displayHours","setDisplayHours","displayMinutes","setDisplayMinutes","setDateHours","endOfDay","set","hours","Number","minutes","seconds","milliseconds","setDateMinutes","isEqual","initializeInterval","day","start","end","TODAY","TODAY_INTERVAL","startOfDay","DateTimeArea","TimeZoneOption","TimeZoneLabel","subOption","TimeZoneValue","CalendarArea","CalendarHeader","CurrentMonth","focusedMonth","focusedYear","PaginateMonth","monthLink","CalBody","CalRow","CalHRow","CalCell","calendar","CalHCell","header","CalCellB","thisMonth","otherMonth","isToday","enDayGuide","jpDayGuide","isDateInterval","DatePicker","dateMode","timeMode","dateTimeTextUpper","dateTimeTextLower","timeZoneTitle","timeZoneValueTitle","hasEmptyValue","updateCallback","initialValue","lang","getInitialValue","selectedRange","setSelectedRange","setFocusedMonth","targetedDate","setTargetedDate","weeksOfMonth","setWeeksOfMonth","isInitialMount","dayGuide","eachWeekOfInterval","startOfMonth","endOfMonth","onCellClick","validRange","updateDay","isAfter","updateStartDate","updateEndDate","addMonths","locale","ja","enUS","week","days","eachDayOfInterval","endOfWeek","cellState","isSameMonth","interval","_hoverDate","isInsideInterval","singleDayRange","intervalToDuration","isWithinInterval","isSameDay","newDate","getHours","getMinutes","getSeconds","getMilliseconds","validInitial","topBorder","Inner","FilterDropdownContainer","FlipWrapper","isSortAscending","filterButton","dimmed","isOpen","hasFlipArrow","inverse","ButtonText","FilterButton","FakeCheckbox","FakeCheckboxInner","CheckMarkWrapper","FakeRadioButton","FakeInnerRadio","FilterOption","optionType","hasBorder","noBackground","searchInput","boxShadow","CrossButton","BasicSearchInput","hasCrossButton","onCrossClick","isFilterItem","item","useClickOutside","elRef","elCallback","callbackRef","handleClickOutside","eve","contains","addEventListener","removeEventListener","ButtonWrapper","ContentBox","openState","getDropPosition","buttonRect","openLeft","window","innerWidth","openTop","bottom","innerHeight","spaceTop","FilterDropHandler","buttonIcon","onToggleOpenCallback","onCloseCallback","setOpenState","buttonWrapperRef","mainRef","handleClose","handleToggleOpen","LoadingText","LoadingBox","loadingText","InnerBox","StyledFilterOption","OptionList","ResultsContainer","ResultCounter","SearchWrapper","EmptyResultText","isValueSelected","isItemSelected","Array","isArray","forEach","element","getNewSelected","validSelected","newSelected","selectedOrderList","maxItems","findIndex","newList","unshift","selectedIndexList","foundItem","find","sort","a","b","selectedIndex","getFilteredList","valueString","toLowerCase","getResultText","template","visible","total","newMessage","FilterDropdown","hasOptionsFilter","searchPlaceholder","maxDisplayedItems","searchResultText","emptyResultText","onSelect","visibleList","setVisibleList","searchText","setSearchText","handleSelection","handleInputFilter","isActive","OrderGroup","OrderButton","isSelected","SortDropdown","descendingText","ascendingText","handleSortSelect","handleOrderSelect","isAscending","MIN_WIDTH","MIN_HEIGHT","DropdownDatePicker","onUpdateCallback","onToggleCallback","pickerValue","isMount","mountedPicker","setMountedPicker","handleUpdateCallback","handleOnClose","handleOnToggle","canReset","fadeInAnimation","SearchInputWrapper","CloseSearchInputWrapper","StyledFilterButton","StyledDropdown","StyledDropdownDatePicker","renderDropdowns","dropdownFilters","showMoreDropdowns","hasShowMore","dropdown","canHide","renderSearchInputs","searchFilters","visibleSearchInputs","handleVisibleSearch","renderDatePickers","datePickerFilters","datePicker","renderAddSearchButtons","searchId","showFieldText","initialSearchFilters","currentVisible","FilterInputs","showMoreText","showLessText","setVisibleSearchInputs","setShowMoreDropdowns","toggleShowMore","newVisible","ResultsTextWrapper","FilterLabel","FilterLabelText","hasIcon","ClearTextButton","RemoveButton","FilterLabelsGroup","validateDateFormat","resultsDateFormat","isFormatValid","tryDate","renderResults","renderLabel","filterName","textLabel","isDateFormatValid","toDateString","FiltersResults","labelLists","totalResults","resultTextTemplate","clearText","onRemoveFilter","onClearAll","filterId","StyledFilterResults","getDisableValue","filtersValues","singleFilter","notNullValues","createDropdownFilters","dropdownsConfig","handleDropdownsSelected","newSelection","newDropdown","createSearchers","searchersConfig","handleSearchers","searchersFilters","searcher","currentTarget","newSearcher","createDatePickers","datePickersConfig","handleDatePickers","datePickersFilters","foundPicker","validInitialValue","newPicker","createLabelResults","foundSearcher","newLabel","foundDropdown","dropdownLabelVal","initFilters","newFilters","validatedSelected","initialSearch","initialDropdown","FilterBar","filtersTitle","setFiltersValues","dropdownsConfigRef","isequal","debounceSearcher","debounce","updatedFilters","foundFilter","handleOnClear","filterElement","handleOnRemoveFilter","selectedFiltered","oldItem","selection","updatedDatePickers","mountConfig","dropdownItem","StatusCounter","status","StatusDot","StatusIcon","counter","HandleTouchReactionKeyframes","HandleMouseReactionKeyframes","HandleBase","svg","lines","HandleRingLayer","maskID","HandleReactiveGroup","touchDragging","mouseDragging","HandleReactiveFill","HandleReactiveRing","HandleContrastLayer","HandleShadowLayer","fillID","GrabHandleIndexGroup","showIndex","StopStart","stop","StopEnd","GrabHandleIndexText","IconGroup","HandleUnit","useAngles","angle","lineSetId","moveCallback","moveEndCB","options","readOnlyHandle","handleInstance","createRef","setTouchDragging","setMouseDragging","touchIndex","setTouchIndex","handleTouchStart","i","touches","touch","parentNode","parentElement","handleTouchEnd","handleTouchMove","pageX","pageY","shadowGradientID","showPointHandle","showPointLabel","pointIndexOffset","onTouchMove","fontSize","ContrastLine","line","HighlightLine","GrabHandle","GrabHandleContrast","GrabHandleGroup","originalRadius","DMCircle","LineUnit","lineMoveCallback","lineMoveStartCallback","showSmallDirectionMark","overrideShowMoveHandle","handleFinderActive","revealSetIndex","showMoveHandle","setIndexOffset","showDirectionMark","hideGrabHandle","grabTouchMove","grabTouchStart","midpoint","directionMarkCoordinate","atan2","angleMode","PI","sin","cos","labelRotate","getDirectionMarkLine","dmCoordinate","textAnchor","dominantBaseline","LineSetContext","createContext","Point","AreaLabelText","AreaLabel","lineSetData","pointsLength","points","Textlen","areaName","LineSet","getCTM","boundaries","onLineMoveEnd","useContext","dispatch","handleAngles","setHandleAngles","handleRelation","handleRadius","handleUsesAngles","enforceBoundaries","handleMoveCallback","pointerPosition","screenCTM","pointer","f","newLineSetData","update","$merge","lineDragStart","handle","xDiff","yDiff","offsetX","offsetY","lineDragUpdate","newPoints","_handle","calcAngle","originX","originY","towardsX","towardsY","degrees","updateHandleAngles","inputHandleData","outputData","nextIndex","nextHandle","handles","showPoint","LoadingOverlay","Frame","transculent","Image","LineUI","onSizeChange","showHandleFinder","showSetIndex","showGrabHandle","fixedImgDimensions","boundaryOffset","setBoundaries","handleFinder","setHandleFinder","loaded","setLoaded","h","w","imgSize","setImgSize","setUnit","frame","initScaleAndBounds","clientHeight","debug","calculateCTM","ctm","getScreenCTM","handlePositionTipShow","handlePositionTipHide","bounds","baseVal","version","onPointerDown","onPointerUp","onPointerLeave","lineSet","lineData","Video","video","transcalent","LineUIVideo","onLoaded","videoOptions","loop","autoPlay","controls","muted","videoRef","videoSize","setVideoSize","videoHeight","videoWidth","onLoadedMetadata","_iteratorSymbol","Symbol","iterator","_asyncIteratorSymbol","asyncIterator","_catch","recover","WebRTCPlayer","enabled","peerAddress","maxConnectionAttempts","rtcConfiguration","setStatus","setError","connectionAttempts","setConnectionAttempts","webSocket","peerConnection","handleIncomingError","closeWebSocket","onIncomingSDP","sdp","localDescription","send","JSON","stringify","Error","createAnswer","answer","setLocalDescription","signalingState","Promise","all","setRemoteDescription","RTCSessionDescription","onIncomingICE","ice","candidate","RTCIceCandidate","addIceCandidate","onServerMessage","startsWith","msg","parse","SyntaxError","createCall","onServerClose","event","closePeerConnection","code","connectToPeer","onServerError","peerId","getPeerId","ws","WebSocket","setInterval","clearInterval","onRemoteTrack","srcObject","streams","pc","RTCPeerConnection","close","WebRTCClient","getMidpoint","pointA","pointB","action","$set","$splice","newPoint","newState","useTitle","area","delimiter","baseTitle","slice","trim","makeTitle","part","h1","pageHeader","mainTitle","AreaTitleCss","areaTitle","AreaTitle","AreaLinkTitle","Link","PageTitle","areaHref","updateDocTitle","hideAreaInDocTitle","to","introduction","IntroductionText","PageHeader","introductionText","MultilineContent","contentArray","MediaBoxWrapper","mediaStyle","isLoaded","hasModalLimits","StyledImage","MediaBox","incomingSrc","mediaType","retryLoading","retryLimit","onErrorCallback","onMediaLoad","retryCount","setRetryCount","setSrc","loadFailed","setLoadFailed","videoValues","randomDelay","count","handleLoad","preload","onCanPlayThrough","modal","overlay","CloseIcon","CloseButton","LightBox","container","Modal","isCloseEnable","closeText","onDismiss","dismissCallback","lightBoxRef","onClickOutside","defaultModalProps","defaultContext","modalProps","setModalProps","newProps","ModalContext","ModalProvider","setProps","Provider","useModal","setModalOpen","newStatus","updateProps","createModal","isModalOpen","videoDefaultOptions","useMediaModal","isMediaUrlValid","videoElement","resolve","reject","oncanplaythrough","isValid","onerror","onload","createMediaModal","mediaModal","isMediaModalOpen","setMediaModalOpen","mediaUrl","hoverZoom","showImage","PlayableDrop","TableRowThumbnail","image","retryImageLoad","setShowImage","imgSrc","setImgSrc","timeoutRef","handleModal","complete","clearTimeout","retryTimeout","retryImage","TypeTableDeviceStatus","useCopyToClipboard","copyToClipboard","str","el","setAttribute","appendChild","getSelection","rangeCount","getRangeAt","execCommand","removeChild","removeAllRanges","addRange","CopyToClipboard","CellContainer","cellStyle","table","columnData","hasCopyButton","hideDivider","tables","rows","UnitText","StatusBlip","TypeTableCell","showUnit","showStatus","isLastRow","href","RowContainer","isEmpty","TypeTableRow","selectable","selectCallback","hasStatus","hasThumbnail","hasTypeIcon","rowData","columnConfig","wrappedSelectCallback","columns","_checked","cell","HeaderTitle","ascending","isSortActive","sortable","TableHeaderTitle","columnId","indexKey","toggleSort","handleClick","colId","HeaderRow","HeaderItem","headerStyle","fixedWidth","TitleItems","GroupTitle","groupName","EmptyTitle","MiddleLine","groupLine","isLastOfGroup","renderGroupHeader","groupTitle","TypeTableHeader","allChecked","isEmptyTable","hasHeaderGroups","defaultAscending","toggleAllCallback","sortCallback","sortSpec","setSortSpec","ascendingState","setAscendingState","toggleAllCallbackWrapper","updatedSort","lastActiveKey","col","sortActive","newAscending","column","allColls","TableContainer","loadingOverlay","EmptyTableBox","TypeTable","emptyTableTitle","emptyTableText","setAllChecked","areAllChecked","every","StyledLoadingButton","StyledLink","EditContainer","EditCell","rowKey","toLink","saveCallback","isEditMode","setIsEditMode","updatedValue","setUpdatedValue","setLoading","handleSave","verifyKeyPress","keyCode","editContainerRef","onClickOutsideEdit","autoFocus","onKeyUp","connection","address","errorMessage","moving","zooming","stateID","direction","usePTZ","socketUrl","imageRefresh","useWebSocket","sendJsonMessage","lastMessage","useReducer","reducer","connect","user","username","pass","password","host","port","method","params","move","z","timeout","zoom","disconnect","getImage","intervalHandler","actions","PTZContext","PTZProvider","Active","Hover","Up","setHover","activeStart","activeEnd","hoverStart","hoverEnd","onMouseEnter","fillOpacity","xlinkHref","Arrow","Down","Left","Right","PTZControl","filterUnits","operator","dx","dy","stdDeviation","in2","values","stopOpacity","k2","k3","mask","ZoomBase","Controls","Base","ZoomOut","ZoomIn","EmptyWithIcon","hasPadding","Notice","NoticeMessage","NoticeTitle","NoticeIcon","NoticeTextGroup","StatusLine","MediaStream","isEmptyWithIcon","noticeIcon","hasNotice","noticeMessage","noticeTitle","emptyIcon","LeftData","hasRightData","RightData","DeviceDataGroup","LeftTitle","hasMarginBottom","LeftSubTitle","SubTitle","PanelMetaData","deviceIcon","leftSubTitle","leftTitle","rightTitle","rightSubTitle","hideIcon","useMemo","CameraPanelWrapper","backgroundImage","hasOnClick","NewComponent","streamProps","panelMetaData","customBottom","panelOnClick","CameraGrid","CameraPanels","panels","CameraPanel","TagWrapper","enableHover","Tag","linkTo","renderTag","TagListWrapper","TagList","tagsConfig","tagProps","DebouncedSearcher","onDebouncedChange","typedValue","setTypedValue","debounceChange","updateChange","updateTyped","LeftButtons","RightButtons","SelectedResults","renderSelected","ActionsBar","finishTextButton","actionButtons","selectedTemplate","totalSelected","totalAvailable","finishCallback","useInterval","callback","delay","savedCallback","tick","useTo","history","useHistory","url","sendNotification","clearNotifications","NotificationContext","notificationList","NotificationProvider","activeNotification","setActiveNotification","showNotification","nextNotification","shift","updateOnClose","displayedNotification","newNotification","validNotification","contextValue","useNotification","usePoll","timeoutIDRef","canceled","pollOnce","useMediaQuery","query","matches","setMatches","useLayoutEffect","mediaQuery","matchMedia","handler","useBreakpoints","breakpoints","isSmall","isMedium","isLarge","isXLarge","isXXLarge","activeScreen","matchDark","toggleThemeClass","isDarkEnabled","classList","remove","setInitial","localStorageTheme","localStorage","getItem","startDark","useThemeToggle","isDarkThemeEnabled","setIsDarkThemeEnabled","onThemeToggle","osThemeToggle","isDark","matcher","isLightMode","basicContent","ConfirmationModal","leftButtonText","leftButtonDesign","leftButtonCallback","rightButtonDesign","rightButtonText","rightButtonCallback","handlePrimaryBtn","handleSecondaryBtn","MOBILE_CLOSE_HEIGHT","MOBILE_NAVBAR_HEIGHT","Layout","MobileLayout","Content","padBottom","maxWidth","MainContainer","ContentArea","paddingOverride","ContextTitle","ContextIcon","iconBackground","ContextIndicator","ContextActionBaseCSS","StyledAnchor","ExternalIconWrapper","ContextWrapper","menuItem","$menuOpen","ContextActionA","$isActive","ContextActionButton","menuOpen","ContextItem","hasSubmenu","contextKey","submenuOpen","isExternalLink","onClickCallback","internal","menuReducer","openValueStorage","location","hostname","isMenuOpen","defaultMenuOpen","isMenuPinned","canAlwaysPin","canPin","desktopSize","setItem","menuState","useMenu","setMenu","setMenuOpen","setMenuClose","togglePinned","Submenu","ul","SubmenuHeader","SubmenuItemTitle","subheader","SubmenuItemLink","SubmenuItemAnchor","SubmenuItem","li","subItem","SubmenuContainer","ContextContainer","maxHeight","NavigationItem","topLevelPath","readyCallback","submenu","refSubmenu","submenuHeight","setSubmenuHeight","submenus","generateSubmenus","grouping","output","group","Logo","LogoMark","LogoType","SVGObject","object","SVGObjectText","NavigationContainer","MenuFooter","footerBackground","FooterItemContainer","PushContainer","ContainerInner","MainMenu","content","home","logoMark","logoText","keepOpenText","autoHideText","supportUrl","onMenuToggle","focusedContext","setFocusedContext","useLocation","checkedInItems","autoMenuOpen","pointerType","autoMenuClose","toggleMenuPin","setFocusedContextCb","onPointerEnter","ColumnContainer","DrawerBottomMenu","subTitle","DrawerTop","DrawerBottom","DrawerHeader","h2","CurrentUser","identity","UserOptions","Logout","LinkMenu","LinkMenuItem","LinkMenuItemA","UserMenu","hasLanguage","selectedLanguageText","hasLogout","logoutLink","logoutText","hasCurrentUser","currentUserText","accountOptionText","userSubmenu","userDrawerBespoke","loggedInUser","hasSwitchTheme","switchThemeText","selectedThemeText","onLogout","onLanguageToggle","closeOnClick","logoutHandler","assign","handleCloseWhenClick","ImgWrapper","EmptyImg","InfoContainer","Message","TimeMsg","NotificationItem","time","StatusContainer","NotificationWrapper","renderNotifications","NotificationsHistory","read","unread","noNotificationsText","readNotificationsText","unreadNotificationsText","SearchBar","SearchInput","topBar","search","ButtonArea","DrawerToggle","indicator","DrawerPortalWrapper","Drawer","baseWidth","NotificationsContainer","TopBar","hasNotifications","hasSearch","notificationsHistory","customDrawer","openDrawer","setOpenDrawer","toggleDrawers","drawerKey","prevDrawer","TabContext","setSelected","Tabs","TabListWrapper","TabList","defaultTabId","TabComponent","TabLabel","Tab","tabFor","onChangeTab","TabContent","tabId","LinkTab","MobileTab","closeId","TabWithIcon","subtitle","paddingLeft","TabsWithIconBar","tabList","TextWrapper","ContentWrapper","MobileNavbarContent","ItemWrapper","MobileMenu","handleCloseMenu","MobileLogoLink","MobileUserMenu","CLOSE_ID","NOTI_TAB","USER_TAB","MENU_TAB","CUSTOM_TAB","nav","HeaderContainer","MobileNavbar","MobileNavbarContainer","GlobalUI","openWidth","LogoContainer","LogoTopText","LogoBottomText","SidebarBox","SidebarHeading","SidebarLinkHeading","BackLink","SLink","SidebarLink","logoTextTop","logoTextBottom","Sidebar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/themes/common.tsx","../src/themes/light/typography.ts","../src/themes/light/colors.ts","../src/themes/light/styles.ts","../src/themes/light/custom.ts","../src/themes/light/light.ts","../src/Icons/Icon.tsx","../src/common/index.ts","../src/Alerts/atom/AlertBar.tsx","../src/Alerts/atom/Notification.tsx","../src/Form/atoms/Button.tsx","../src/Form/atoms/ButtonWithIcon.tsx","../src/Indicators/Spinner.tsx","../src/Form/atoms/ButtonWithLoading.tsx","../src/Form/atoms/IconButton.tsx","../src/Form/molecules/ActionButtons.tsx","../src/Form/atoms/Input.tsx","../src/Form/atoms/Label.tsx","../src/Form/atoms/SmallInput.tsx","../src/Form/atoms/Switch.tsx","../src/svg/LogoMark.tsx","../src/svg/LogoText.tsx","../src/svg/AvatarPlaceholder.tsx","../src/svg/checkmark.tsx","../src/Form/atoms/Checkbox.tsx","../src/Form/atoms/RadioButton.tsx","../src/Form/atoms/TextArea.tsx","../src/Form/atoms/SelectField.tsx","../src/helpers/index.tsx","../src/Form/atoms/SliderInput.tsx","../src/Form/atoms/InputFileButton.tsx","../src/Form/molecules/DurationSlider.tsx","../src/Form/molecules/PercentageSlider.tsx","../src/Form/molecules/PasswordField.tsx","../src/Form/molecules/TextField.tsx","../src/Form/molecules/TextAreaField.tsx","../src/Form/atoms/DropArea.tsx","../src/helpers/cropToolHelpers.ts","../src/Form/atoms/CropArea.tsx","../src/Form/molecules/CropTool.tsx","../src/Form/organisms/AvatarUploader.tsx","../src/Misc/atoms/BigIconsSummary.tsx","../src/Form/organisms/AreaUploadManager.tsx","../src/Form/Form.tsx","../src/Filters/atoms/DateTimeBlock.tsx","../src/Filters/molecules/DatePicker.tsx","../src/Filters/atoms/FilterDropdownContainer.tsx","../src/Filters/atoms/FilterButton.tsx","../src/Form/atoms/FilterOption.tsx","../src/Misc/atoms/BasicSearchInput.tsx","../src/Filters/FilterTypes.ts","../src/hooks/useClickOutside.tsx","../src/Filters/atoms/FilterDropHandler.tsx","../src/Filters/atoms/LoadingBox.tsx","../src/Filters/molecules/FilterDropdown.tsx","../src/Filters/molecules/SortDropdown.tsx","../src/Filters/molecules/DropdownDatePicker.tsx","../src/Filters/molecules/FilterInputs.tsx","../src/Filters/molecules/FiltersResults.tsx","../src/Filters/organisms/FilterBar.tsx","../src/Icons/StatusIcon.tsx","../src/LineUI/HandleUnit.tsx","../src/LineUI/LineUnit.tsx","../src/LineUI/Contexts.tsx","../src/LineUI/LineSet.tsx","../src/LineUI/LineUI.tsx","../src/LineUI/LineUIVideo.tsx","../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/WebRTCClient.tsx","../src/LineUI/LineUIRTC.tsx","../src/LineUI/LineReducer.ts","../src/hooks/useTitle.tsx","../src/Pages/atoms/PageTitle.tsx","../src/Pages/atoms/IntroductionText.tsx","../src/Pages/molecules/PageHeader.tsx","../src/Pages/molecules/MultilineContent.tsx","../src/Misc/atoms/MediaBox.tsx","../src/Modals/Modal.tsx","../src/context/ModalContext.tsx","../src/hooks/useModal.tsx","../src/hooks/useMediaModal.tsx","../src/Tables/atoms/TableRowThumbnail.tsx","../src/Tables/atoms/TypeTableDeviceStatus.tsx","../src/hooks/useCopyToClipboard.tsx","../src/Tables/atoms/TypeTableCell.tsx","../src/Tables/atoms/TypeTableRow.tsx","../src/Tables/atoms/TableHeaderTitle.tsx","../src/Tables/molecules/TypeTableHeader.tsx","../src/Tables/organisms/TypeTable.tsx","../src/Tables/molecules/EditCell.tsx","../src/PTZControl/state/PTZReducer.ts","../src/PTZControl/state/usePTZ.tsx","../src/PTZControl/state/PTZProvider.tsx","../src/PTZControl/atoms/Up.tsx","../src/PTZControl/atoms/Down.tsx","../src/PTZControl/atoms/Left.tsx","../src/PTZControl/atoms/Right.tsx","../src/PTZControl/molecules/Base.tsx","../src/PTZControl/molecules/ZoomBase.tsx","../src/PTZControl/atoms/ZoomIn.tsx","../src/PTZControl/atoms/ZoomOut.tsx","../src/PTZControl/organisms/Controls.tsx","../src/CameraPanels/atoms/MediaStream.tsx","../src/CameraPanels/atoms/PanelMetaData.tsx","../src/CameraPanels/molecules/CameraPanel.tsx","../src/CameraPanels/organisms/CameraPanels.tsx","../src/Misc/atoms/Tag.tsx","../src/Misc/molecules/TagList.tsx","../src/Misc/molecules/DebouncedSearcher.tsx","../src/Misc/atoms/ActionsBar.tsx","../src/hooks/useInterval.ts","../src/hooks/useTo.tsx","../src/context/NotificationContext.tsx","../src/hooks/useNotification.tsx","../src/hooks/usePoll.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useBreakpoints.ts","../src/hooks/useThemeToggle.ts","../src/Modals/ConfirmationModal.tsx","../src/Global/atoms/Layout.tsx","../src/Global/atoms/ContextItem.tsx","../src/hooks/useMenu.ts","../src/Global/atoms/NavigationItem.tsx","../src/Global/organisms/MainMenu.tsx","../src/Global/atoms/DrawerBottomMenu.tsx","../src/Global/molecules/UserMenu.tsx","../src/Global/atoms/NotificationItem.tsx","../src/Global/molecules/NotificationsHistory.tsx","../src/Global/molecules/TopBar.tsx","../src/Tabs/Tabs.tsx","../src/Tabs/TabList.tsx","../src/Tabs/atoms/Tab.tsx","../src/Tabs/TabContent.tsx","../src/Tabs/atoms/MobileTab.tsx","../src/Tabs/atoms/TabWithIcon.tsx","../src/Tabs/molecules/TabsWithIconBar.tsx","../src/Global/atoms/CloseButton.tsx","../src/Global/atoms/MobileNavbarContent.tsx","../src/Global/organisms/MobileMenu.tsx","../src/Global/atoms/MobileLogoLink.tsx","../src/Global/molecules/MobileUserMenu.tsx","../src/Global/organisms/MobileNavbar.tsx","../src/Global/templates/GlobalUI.tsx","../src/Global/molecules/Sidebar.tsx"],"sourcesContent":["export const fontFamily = {\n ui: 'Monorale, Hiragino Sans, \"ヒラギノ角ゴシック\", Hiragino Kaku Gothic ProN, \"ヒラギノ角ゴ ProN W3\", Roboto, YuGothic, \"游ゴシック\", Meiryo, \"メイリオ\", sans-serif;',\n data: 'Lato, Hiragino Sans, \"ヒラギノ角ゴシック\", Hiragino Kaku Gothic ProN, \"ヒラギノ角ゴ ProN W3\", Roboto, YuGothic, \"游ゴシック\", Meiryo, \"メイリオ\", sans-serif;'\n};\n\nexport const dimensions = {\n icons: {\n weights: {\n light: 1,\n regular: 1.5,\n heavy: 3,\n strong: 5\n }\n },\n form: {\n button: {\n xsmall: {\n height: '20px',\n padding: '0 10px',\n iconSize: 12,\n },\n small: {\n height: '30px',\n padding: '0 20px',\n iconSize: 14,\n },\n normal: {\n height: '40px',\n padding: '0 20px',\n iconSize: 16,\n },\n large: {\n height: '60px',\n padding: '0 20px',\n iconSize: 20,\n },\n },\n input: {\n height: '40px'\n },\n switch: {\n outer: {\n width: '38px',\n height: '22px',\n borderRadius: '11px'\n },\n inner: {\n width: '16px',\n height: '16px',\n borderRadius: '8px'\n },\n positions: {\n top: '2px',\n off: '2px',\n neutral: '10px',\n locked: '2px',\n on: '18px',\n }\n }\n },\n global: {\n mainMenu: {\n width: {\n open: '280px',\n closed: '80px'\n }\n }\n }\n};\n\nexport const animation = {\n easing: {\n primary: {\n inOut: 'cubic-bezier(0.87, 0, 0.13, 1)',\n out: 'cubic-bezier(0.16, 1, 0.3, 1)',\n in: 'cubic-bezier(0.7, 0, 0.84, 0)',\n }\n },\n speed: {\n faster: '0.085s',\n fast: '0.175s',\n normal: '0.35s',\n slow: '0.7s',\n slower: '1.4s',\n slowest: '2.8s'\n }\n};\n\nexport const deviceSize = {\n small: 0,\n medium: 768,\n large: 1024,\n xlarge: 1280,\n xxlarge: 1400,\n};\n\n\nexport const deviceMediaQuery = {\n small: `(min-width: ${deviceSize.small}px)`,\n medium: `(min-width: ${deviceSize.medium}px)`,\n large: `(min-width: ${deviceSize.large}px)`,\n xlarge: `(min-width: ${deviceSize.xlarge}px)`,\n xxlarge: `(min-width: ${deviceSize.xxlarge}px)`\n};","export const typography = {\n \"pageHeader\": {\n \"introduction\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"areaTitle\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"mainTitle\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"26px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n },\n \"form\": {\n \"label\": {\n \"meta\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"disabled\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"failure\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--error-8)\"\n },\n \"meta(Selected)\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n }\n },\n \"tip\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-7)\"\n },\n \"button\": {\n \"secondary\": {\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"primary\": {\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"danger\": {\n \"large\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"normal\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"small\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"xsmall\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n }\n },\n \"input\": {\n \"label\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"placeholder\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"compact\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"value\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"compact\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n }\n },\n \"labelInformation\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"select\": {\n \"option\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"selectedValue\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--black-11)\"\n },\n \"option(Hover)\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"15px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-11)\"\n }\n },\n \"feedback\": {\n \"message\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"20px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n }\n },\n \"global\": {\n \"mainMenu\": {\n \"menuItem\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"subheader\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.35px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"hidePrompt\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"subItem\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-8)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-8)\"\n }\n },\n \"identity\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"topBar\": {\n \"search\": {\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n }\n },\n \"content\": {\n \"section-H2\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"sectionH3\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"16px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"actionParagraph\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"hyperlink\": {\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n },\n \"base\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-9)\"\n }\n }\n },\n \"feedbackBar\": {\n \"message\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"15px\",\n \"letterSpacing\": \"-0.2px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"searchBar\": {\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n },\n \"meta\": {\n \"tagList\": {\n \"emptyStates\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"small\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"item\": {\n \"normal\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"small\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n }\n },\n \"table\": {\n \"columnData\": {\n \"normalImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"highImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 900,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n },\n \"firstColumn\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n },\n \"lowImportance\": {\n \"right\": {\n \"textAlign\": \"right\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"center\": {\n \"textAlign\": \"center\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"unit\": {\n \"textAlign\": \"right\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"header\": {\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"subHeader\": {\n \"center\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"left\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"right\": {\n \"textAlign\": \"right\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 700,\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n },\n \"filters\": {\n \"datepicker\": {\n \"metaHeader\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 600,\n \"textDecoration\": \"none\",\n \"color\": \"var(--primary-8)\"\n }\n },\n \"calendar\": {\n \"active\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"otherMonth\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a8)\"\n },\n \"default\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"header\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a12)\"\n }\n },\n \"monthLink\": {\n \"default\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-9)\"\n },\n \"hover\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.4px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"focusedMonth\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"20px\",\n \"letterSpacing\": \"0.5px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"focusedYear\": {\n \"textAlign\": \"center\",\n \"fontSize\": \"10px\",\n \"fontWeight\": 700,\n \"lineHeight\": \"20px\",\n \"textTransform\": \"uppercase\",\n \"letterSpacing\": \"0.3333333px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 500,\n \"letterSpacing\": \"0.2px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"subOption\": {\n \"label\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 300,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"13px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a12)\"\n }\n },\n \"presetAction\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"13px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--gray-12)\"\n },\n \"filterButton\": {\n \"default\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"active\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n },\n \"hover\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--white-1)\"\n }\n },\n \"searchInput\": {\n \"placeholder\": {\n \"textAlign\": \"left\",\n \"fontStyle\": \"italic\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 500,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"value\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-12)\"\n }\n }\n },\n \"tables\": {\n \"groupName\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"12px\",\n \"fontWeight\": 400,\n \"letterSpacing\": \"0.3px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-a11)\"\n }\n },\n \"modal\": {\n \"title\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"20px\",\n \"fontWeight\": 400,\n \"textShadow\": \"0px 0px 10px var(--white-a5)\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n },\n \"basicContent\": {\n \"textAlign\": \"left\",\n \"fontSize\": \"14px\",\n \"fontWeight\": 400,\n \"lineHeight\": \"25px\",\n \"textDecoration\": \"none\",\n \"color\": \"var(--grey-11)\"\n }\n }\n};","export const colors = {\n \"pureBase\": \"var(--white-1)\",\n \"pureTop\": \"var(--black-1)\",\n \"divider\": \"var(--grey-6)\",\n \"icons\": {\n \"inverse\": \"var(--grey-1)\",\n \"mono\": \"var(--grey-12)\",\n \"dimmed\": \"var(--grey-11)\",\n \"subtle\": \"var(--grey-10)\",\n \"primary\": \"var(--primary-9)\",\n \"danger\": \"var(--error-9)\",\n \"white\": \"var(--white-1)\"\n },\n \"menu\": {\n \"active\": \"var(--primary-9)\",\n \"hover\": \"var(--primary-8)\",\n \"default\": \"var(--gray-2)\",\n \"indicator\": \"var(--grey-a1)\",\n \"passive\": \"var(--primary-a7)\"\n },\n \"feedback\": {\n \"error\": \"var(--error-8)\",\n \"info\": \"var(--primary-7)\",\n \"neutral\": \"var(--grey-9)\",\n \"success\": \"var(--success-8)\",\n \"warning\": \"var(--warning-8)\"\n },\n \"status\": {\n \"caution\": \"var(--warning-10)\",\n \"danger\": \"var(--error-8)\",\n \"folder\": \"var(--primary-7)\",\n \"highlight\": \"var(--primary-7)\",\n \"good\": \"var(--success-7)\",\n \"neutral\": \"var(--grey-5)\"\n },\n \"transparent\": \"var(--black-a1)\",\n \"input\": {\n \"border\": {\n \"default\": \"var(--grey-7)\"\n }\n }\n};","import { colors } from './colors';\n\nexport const styles = {\n \"generic\": {\n \"transparent\": {}\n },\n \"form\": {\n \"input\": {\n \"default\": {\n \"normal\": {\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": colors.input.border.default,\n \"border\": colors.input.border.default + \" 1px solid\"\n },\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"disabled\": {\n \"normal\": {\n \"backgroundColor\": \"var(--primary-2)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\"\n }\n },\n \"subdivision\": {\n \"backgroundColor\": \"var(--grey-7)\"\n },\n \"required\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\",\n \"backgroundColor\": \"var(--grey-1)\",\n }\n },\n \"valid\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 5px 0px var(--success-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--success-7)\",\n \"border\": \"var(--success-7) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--success-7)\",\n \"border\": \"var(--success-7) 1px solid\",\n \"backgroundColor\": \"var(--grey-1)\",\n }\n },\n \"invalid\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--error-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 2px solid\"\n },\n \"normal\": {\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\",\n \"backgroundColor\": \"var(--grey-1)\",\n }\n },\n \"processing\": {\n \"focused\": {\n \"boxShadow\": \"0px 3px 7px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 2px solid\"\n },\n \"normal\": {\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"seperatedValues\": {\n \"background\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-7) 0%, var(--primary-8) 100%)\"\n },\n \"hoverHighlight\": {\n \"backgroundColor\": \"var(--primary-7)\"\n }\n }\n },\n \"button\": {\n \"primary\": {\n \"default\": {\n \"backgroundColor\": \"var(--primary-9)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-9) 0%, var(--primary-8) 100%)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--primary-10)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--primary-9)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--primary-a8)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--primary-a10)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-9) 0%, var(--primary-8) 100%)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--primary-9)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--primary-9) 0%, var(--primary-8) 100%)\"\n }\n },\n \"secondary\": {\n \"default\": {\n \"backgroundColor\": \"var(--grey-9)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--grey-10)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--grey-9)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--grey-a10)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--grey-a8)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--grey-9)\",\n \"backgroundImage\": \"linear-gradient(135.00deg, var(--grey-9) 0%, var(--grey-8) 100%)\"\n }\n },\n \"danger\": {\n \"default\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\"\n },\n \"hover\": {\n \"backgroundColor\": \"var(--error-10)\"\n },\n \"active\": {\n \"backgroundColor\": \"var(--error-9)\"\n },\n \"disabled\": {\n \"backgroundColor\": \"var(--error-a10)\"\n },\n \"divider\": {\n \"backgroundColor\": \"var(--error-8)\"\n },\n \"actionArea\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\"\n }\n }\n },\n \"switch\": {\n \"off\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-3)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-3) 0%, var(--primary-3) 100%)\",\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-7) 0%, var(--primary-8) 100%)\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-1)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-1)0%, var(--grey-1) 100%)\",\n \"borderColor\": \"var(--grey-a7)\",\n \"border\": \"var(--grey-a7) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--grey-7)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-3)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-3) 0%, var(--primary-3) 100%)\",\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 1px solid\"\n }\n }\n },\n \"on\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-7)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--primary-7) 0%, var(--primary-7) 100%)\",\n \"borderColor\": \"var(--primary-8)\",\n \"border\": \"var(--primary-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-5)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--primary-5) 0%, var(--primary-5) 100%)\",\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--primary-a7)\",\n \"backgroundImage\": \"linear-gradient(315.00deg, var(--primary-a7) 0%, var(--primary-a7) 100%)\",\n \"borderColor\": \"var(--primary-a8)\",\n \"border\": \"var(--primary-a8) 1px solid\"\n }\n }\n },\n \"failure\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-9)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-9) 0%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-9)\",\n \"border\": \"var(--error-9) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-8)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-8) 0.4%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n }\n },\n \"danger\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-11)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-11) 0%, var(--error-8) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n },\n \"loading\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-8)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-8) 0%, var(--error-7) 100%)\",\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 1px solid\"\n }\n },\n \"disabled\": {\n \"outer\": {\n \"backgroundColor\": \"var(--error-7)\",\n \"backgroundImage\": \"linear-gradient(317.51deg, var(--error-7) 0%, var(--warning-6) 100%)\",\n \"borderColor\": \"var(--error-6)\",\n \"border\": \"var(--error-6) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--white-1)\"\n }\n }\n },\n \"locked\": {\n \"default\": {\n \"outer\": {\n \"backgroundColor\": \"var(--grey-1) \",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-1) 0%, var(--grey-1) 100%)\",\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 1px solid\"\n },\n \"inner\": {\n \"backgroundColor\": \"var(--grey-8)\"\n }\n }\n }\n },\n \"checkbox\": {\n \"unchecked\": {\n \"disabled\": {\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 2px solid\"\n },\n \"default\": {\n \"borderColor\": \"var(--grey-9)\",\n \"border\": \"var(--grey-9) 2px solid\"\n },\n \"hover\": {\n \"borderColor\": \"var(--primary-8)\",\n \"border\": \"var(--primary-8) 2px solid\"\n }\n },\n \"checked\": {\n \"disabled\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--grey-6)\"\n },\n \"default\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-8)\"\n },\n \"hover\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-8)\"\n }\n },\n \"indeterminate\": {\n \"hover\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-6)\"\n },\n \"default\": {\n \"boxShadow\": \"inset 0px 1px 5px 0px var(--grey-a1)\",\n \"backgroundColor\": \"var(--primary-6)\"\n }\n }\n }\n },\n \"global\": {\n \"mainMenu\": {\n \"iconBackground\": {\n \"active\": {\n \"backgroundColor\": colors.menu.active\n },\n \"hover\": {\n \"backgroundColor\": colors.menu.hover\n },\n \"default\": {\n \"backgroundColor\": colors.menu.default\n }\n },\n \"background\": {\n \"boxShadow\": \"5px 0px 10px 0px var(--white-a2)\",\n \"backgroundColor\": \"var(--grey-1)\"\n },\n \"lines\": {\n \"backgroundColor\": \"var(--grey-6)\"\n },\n \"footerBackground\": {\n \"backgroundColor\": \"var(--grey-1)\"\n }\n },\n \"background\": {\n \"backgroundColor\": \"var(--grey-2)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-2) 0%, var(--grey-3) 100%)\"\n },\n \"drawer\": {\n \"background\": {\n \"boxShadow\": \"-5px 0px 10px 0px var(--white-a2)\",\n \"backgroundColor\": \"var(--grey-1)\"\n }\n },\n \"topBar\": {\n \"lines\": {\n \"backgroundColor\": \"var(--grey-6)\"\n }\n }\n },\n \"indicators\": {\n \"spinner\": {\n \"danger\": {\n \"base\": {\n \"borderColor\": \"var(--error-8)\",\n \"border\": \"var(--error-8) 3px solid\"\n },\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n }\n },\n \"secondary\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--grey-8)\",\n \"border\": \"var(--grey-8) 3px solid\"\n }\n },\n \"primary\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 3px solid\"\n }\n },\n \"simple\": {\n \"top\": {\n \"borderColor\": \"var(--white-1)\",\n \"border\": \"var(--white-1) 3px solid\"\n },\n \"base\": {\n \"borderColor\": \"var(--grey-a8)\",\n \"border\": \"var(--grey-a8) 3px solid\"\n }\n }\n }\n },\n \"filters\": {\n \"dropdownContainer\": {\n \"background\": {\n \"boxShadow\": \"0px 5px 25px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 1px solid\"\n },\n \"topBorder\": {\n \"backgroundColor\": \"var(--primary-7)\"\n }\n },\n \"filterButton\": {\n \"default\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\",\n \"textColor\": \"var(--grey-11)\"\n },\n \"active\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--primary-7)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\",\n \"textColor\": \"var(--white-1)\"\n },\n \"hover\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--primary-7)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\",\n \"textColor\": \"var(--white-1)\"\n }\n },\n \"searchInput\": {\n \"default\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-7)\",\n \"border\": \"var(--grey-7) 1px solid\"\n },\n \"focused\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a2)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-6)\",\n \"border\": \"var(--primary-6) 1px solid\"\n }\n }\n },\n \"tables\": {\n \"loadingOverlay\": {\n \"backgroundColor\": \"var(--grey-2)\",\n \"backgroundImage\": \"linear-gradient(180.00deg, var(--grey-2) 0%, var(--grey-3) 100%)\"\n },\n \"rows\": {\n \"divider\": {\n \"backgroundColor\": colors.divider\n }\n },\n \"header\": {\n \"groupLine\": {\n \"backgroundColor\": colors.divider\n },\n \"divider\": {\n \"backgroundColor\": colors.divider\n },\n \"sortable\": {\n \"hover\": {\n \"backgroundColor\": \"var(--grey-4)\"\n },\n \"default\": {\n \"backgroundColor\": \"var(--grey-2)\"\n }\n }\n }\n },\n \"general\": {\n \"divider\": {\n \"backgroundColor\": colors.divider\n }\n },\n \"feedbackBar\": {\n \"neutral\": {\n \"backgroundColor\": colors.feedback.neutral\n },\n \"error\": {\n \"backgroundColor\": colors.feedback.error\n },\n \"info\": {\n \"backgroundColor\": colors.feedback.info\n },\n \"success\": {\n \"backgroundColor\": colors.feedback.success\n },\n \"warning\": {\n \"backgroundColor\": colors.feedback.warning\n }\n },\n \"filterButton\": {\n \"active\": {\n \"boxShadow\": \"0px 4px 9px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--primary-7)\",\n \"border\": \"var(--primary-7) 1px solid\"\n }\n },\n \"modal\": {\n \"overlay\": {\n \"backgroundColor\": \"var(--grey-a3)\"\n },\n \"container\": {\n \"boxShadow\": \"0px 10px 15px 0px var(--primary-a1)\",\n \"backgroundColor\": \"var(--grey-1)\",\n \"borderColor\": \"var(--grey-6)\",\n \"border\": \"var(--grey-6) 1px solid\"\n }\n }\n};","export const custom = {\n \"lines\":{\n \"primary\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(205deg, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(205deg, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(205deg, 45%, 90%, 100%)',\n stroke: 'hsla(205deg, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(205deg, 45%, 90%, 100%)',\n },\n grabHandleContrast:{\n stroke: 'hsla(205deg, 80%, 45%, 100%)'\n },\n grabHandleText:{\n fill: 'hsla(205deg, 80%, 25%, 100%);'\n },\n handleBase: {\n fill: 'hsla(235deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(205deg, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(192deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(205deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(205deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(205deg, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(205deg, 100%, 15%, 0%)'\n\n }\n\n },\n \"secondary\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(120deg, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(120deg, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(120deg, 45%, 90%, 100%)',\n stroke: 'hsla(120deg, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(120deg, 45%, 90%, 100%)',\n },\n grabHandleContrast:{\n stroke: 'hsla(120deg, 80%, 45%, 100%)'\n },\n grabHandleText:{\n fill: 'hsla(120deg, 80%, 25%, 100%);'\n },\n handleBase: {\n fill: 'hsla(150deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(120deg, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(108deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(120deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(120deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(120deg, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(120deg, 100%, 15%, 0%)'\n\n }\n },\n \"danger\": {\n label: {\n fill: \"#fff\"//\"hsla(205deg, 80%, 25%, 100%)\"\n },\n contrastLine: {\n stroke: 'hsla(0, 80%, 45%, 100%);'\n },\n highlightLine: {\n stroke: 'hsla(0, 45%, 90%, 90%);'\n },\n grabHandle: {\n fill: 'hsla(0, 45%, 90%, 100%)',\n stroke: 'hsla(0, 45%, 100%, 100%)'\n },\n point:{\n fill: 'hsla(0, 45%, 90%, 100%)',\n },\n grabHandleText:{\n fill: 'hsla(0, 80%, 25%, 100%);'\n },\n grabHandleContrast:{\n stroke: 'hsla(0, 80%, 45%, 100%)'\n },\n handleBase: {\n fill: 'hsla(30deg, 100%, 80%, 100%);'\n },\n handleRingLayer: {\n stroke: 'hsla(0, 100%, 89%, 100%);'\n },\n handleReactiveFill:{\n fill: 'hsla(348deg, 100%, 45%, 100%);'\n },\n handleReactiveRing:{\n stroke: 'hsla(0deg, 100%, 36%, 27%);'\n },\n handleContrastLayer:{\n stroke: 'hsla(0deg, 100%, 36%, 15%);'\n },\n stopStart:{\n stopColor:' hsla(0, 100%, 15%, 35%);'\n },\n stopEnd:{\n stopColor: 'hsla(0, 100%, 15%, 0%);'\n }\n }\n }\n};","import { fontFamily, dimensions, animation, deviceSize, deviceMediaQuery } from '../common';\nimport { typography } from './typography';\nimport { colors } from './colors';\nimport { styles } from './styles';\nimport { custom } from './custom';\nexport default { fontFamily, dimensions, typography, colors, styles, animation, custom, deviceSize, deviceMediaQuery };","import React from 'react';\nimport styled, { css, useTheme } from 'styled-components';\nimport { IconSVGs } from '@future-standard/icons';\n\nimport { dimensions } from '../themes/common';\n\n\nconst wrapperCss = css`\n svg {\n overflow: visible;\n vector-effect: non-scaling-stroke;\n\n line, path, circle, ellipse, foreignObject, polygon, polyline, rect, text, textPath, tspan {\n vector-effect: non-scaling-stroke;\n }\n }\n`;\nconst IconWrapper = styled.div`\n ${wrapperCss};\n`;\n\nconst IconWrapperForSVG = styled.g`\n ${wrapperCss};\n`;\n\nexport { IconWrapper, IconWrapperForSVG, IconSVGs };\n\nexport interface IconProps {\n icon: string;\n size?: number;\n weight?: 'light' | 'regular' | 'heavy' | 'strong'\n color?: ISvgIcons['color']\n forSvgUsage?: boolean\n}\n\nconst Icon: React.FC<IconProps> = ({ icon, size = 24, weight = 'regular', color = 'mono', forSvgUsage = false }) => {\n\n const theme : any = useTheme();\n const iconWeight: number = dimensions.icons.weights[weight];\n //@ts-ignore\n const IconSVG = IconSVGs[icon];\n\n return (\n IconSVG != null ?\n forSvgUsage ?\n <IconWrapperForSVG>\n {IconSVG({ size: size, weight: iconWeight, color: theme.colors.icons[color] })}\n </IconWrapperForSVG>\n :\n <IconWrapper>\n {IconSVG({ size: size, weight: iconWeight, color: theme.colors.icons[color] })}\n </IconWrapper>\n :\n null\n );\n\n};\n\nexport default Icon;","import {css} from 'styled-components';\n\nexport const RowCss = css`\n position:relative;\n display: flex;\n flex-direction: row;\n align-items:center;\n`;\n\nexport const ColumnCss = css`\n display: flex;\n flex-direction: column;\n`;\n\nexport const resetButtonStyles = css`\n -webkit-tap-highlight-color: transparent;\n background-color: transparent;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n padding: 0;\n appearance: none;\n user-select: none;\n`;\n\n// https://stackoverflow.com/questions/2781549/removing-input-background-colour-for-chrome-autocomplete\nexport const removeAutoFillStyle = css`\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active{\n transition: background-color 600000s 0s, color 600000s 0s;\n }\n`;\nexport const EllipsisStyles = css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon, {IconWrapper} from '../../Icons/Icon';\nimport { AlertType } from '..';\nimport { resetButtonStyles } from '../../common/index';\n\nconst IconButton = styled.button<{selected?: boolean}>`\n ${resetButtonStyles};\n ${({selected=false}) => selected && css`\n border-bottom: 5px solid var(--primary-7);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n opacity: .8;\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nexport const AlertWrapper = styled.div<{type: AlertType}>`\n min-height: 50px;\n border-radius: 3px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n padding: 0 14px;\n\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({type, theme}) => theme.styles.feedbackBar[type] };\n ${({theme}) => theme.typography.feedbackBar.message };\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nconst IconNames = {\n error: 'Critical',\n warning: 'BigWarning',\n success: 'Success',\n info: 'Information',\n neutral: 'Information'\n};\n\nconst MessageBox = styled.div`\n margin: 5px 0px 5px 15px;\n flex: 1;\n`;\nexport interface IAlert {\n alertMessage?: string;\n alertType: AlertType;\n}\n\ninterface Props {\n type?: AlertType\n message?: string\n hideCloseButton?: boolean\n}\nconst AlertBar: React.FC<Props> = ({type='info', message, hideCloseButton= false}) => {\n const [dismiss, setDismiss] = useState(false);\n\n useEffect(()=>{\n setDismiss(false);\n },[message]);\n\n\n return ( (message && !dismiss)?\n <AlertWrapper type={type}>\n <Icon icon={IconNames[type]} color='inverse' />\n <MessageBox>{message}</MessageBox>\n\n {!hideCloseButton && <IconButton onClick={() => setDismiss(true)}><Icon icon='CloseCompact' color='inverse' /></IconButton>}\n </AlertWrapper>\n :\n null\n );\n};\n\nexport default AlertBar;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css, keyframes } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport { AlertType } from '..';\nimport { resetButtonStyles } from '../../common/index';\n\nconst initAnimation = keyframes`\n 0% {\n transform: translate(-50%, -100%);\n }\n 100% {\n transform: translate(-50%, 0%);\n }\n`;\n\nconst closeAnimation = keyframes`\n 0% {\n transform: translate(-50%, 0);\n }\n 100% {\n transform: translate(-50%, -100%);\n }\n`;\n\nconst Container = styled.div<{type: AlertType, isClosing: Boolean}>`\n min-height: 50px;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 0 14px;\n width: 900px;\n position: fixed;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n z-index: 999;\n\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({type, theme}) => theme.styles.feedbackBar[type] };\n ${({theme}) => theme.typography.feedbackBar.message };\n\n ${({theme}) => css`\n animation: ${initAnimation} ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `\n };\n\n ${({theme, isClosing}) => isClosing && css`\n animation: ${closeAnimation} ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `\n };\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nexport const IconNames = {\n error: 'Critical',\n warning: 'BigWarning',\n success: 'Success',\n info: 'Information',\n neutral: 'Information'\n};\n\nconst IconButton = styled.div<{selected?: boolean}>`\n ${resetButtonStyles};\n ${({selected=false}) => selected && css`\n border-bottom: 5px solid var(--primary-7);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover {\n opacity: .8;\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst TextButton = styled.button`\n ${resetButtonStyles};\n font-family: ${({ theme }) => theme.fontFamily.ui };\n ${({theme}) => theme.typography.feedbackBar.message };\n font-weight: 700;\n\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n ${({theme}) => theme && css`\n opacity: .8;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n `}\n }\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst MainMessage = styled.div`\n padding: 12px 6px 12px 12px;\n line-height: 20px;\n text-align: left;\n flex-grow: 2;\n`;\n\nexport type INotificationProps = {\n id?: string\n type: AlertType\n message: string\n actionTextButton?: string\n isPinned?: boolean\n closeNow?: boolean\n icon?: string\n onTextButtonClick?: () => void\n closeCallback?: () => void\n}\n\nconst Notification : React.FC<INotificationProps> = ({id, type ='info', message, icon = '', isPinned = false, actionTextButton, closeNow = false, closeCallback, onTextButtonClick}) => {\n const [dismiss, setDismiss] = useState(false);\n const [slideUp, setSlideUp] = useState(false);\n const [textClicked, setTextClicked] = useState(false);\n\n useEffect(()=>{\n setDismiss(false);\n setSlideUp(false);\n setTextClicked(false);\n },[id]);\n\n const handleDismiss = useCallback(() => {\n setSlideUp(true);\n },[]);\n\n const handleTextClick = useCallback(async () => {\n setTextClicked(true);\n handleDismiss();\n },[handleDismiss]);\n\n const animationEnded = useCallback(() => {\n // Will only trigger if the animation triggered was closing one\n if(slideUp){\n setDismiss(true);\n\n if(onTextButtonClick && textClicked) {\n onTextButtonClick();\n }\n\n if(closeCallback) {\n closeCallback();\n }\n }\n }, [slideUp, closeCallback, onTextButtonClick, textClicked]);\n\n useEffect(() => {\n let mounted = true;\n if(!isPinned) {\n setTimeout( () => {\n if(mounted) {\n handleDismiss();\n }\n }, 7000);\n }\n\n return () => {\n mounted = false;\n };\n },[isPinned, message, handleDismiss, id]);\n\n useEffect(() => {\n if(closeNow) {\n handleDismiss();\n }\n },[closeNow, handleDismiss]);\n\n return( (message && !dismiss)\n ? ReactDom.createPortal(\n <Container type={type} isClosing={slideUp} onAnimationEnd={animationEnded}>\n <Icon icon={!icon ? IconNames[type] : icon} color='inverse' />\n <MainMessage>{message}</MainMessage>\n {actionTextButton\n ? <TextButton onClick={() => handleTextClick()}>{actionTextButton} </TextButton>\n :\n <IconButton onClick={() => handleDismiss()}>\n <Icon icon='CloseCompact' color='inverse' />\n </IconButton>}\n </Container>\n , document.body)\n : null\n );\n};\n\nexport default Notification;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TypeButtonSizes, TypeButtonDesigns } from '..';\n\n\ninterface IStyledComponentProps {\n size: TypeButtonSizes\n design: TypeButtonDesigns\n}\n\n\n\nconst StyledButton = styled.button<IStyledComponentProps>`\n ${({theme, design, size}) => css`\n\n ${theme.styles.form.button[design].default};\n height: ${theme.dimensions.form.button[ size ].height};\n padding: ${theme.dimensions.form.button[ size ].padding};\n\n ${theme.typography.form.button[ design ][ size ]};\n font-family: ${theme.fontFamily.ui};\n\n transition:\n background ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut};\n\n &:hover:enabled {\n background: ${theme.styles.form.button[design].hover.backgroundColor};\n }\n\n &:active:enabled {\n background: ${theme.styles.form.button[design].active.backgroundColor};\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n background: ${theme.styles.form.button[design].disabled.backgroundColor};\n }\n\n `};\n\n overflow: hidden;\n border: none;\n cursor: pointer;\n border-radius: 3px;\n outline: none;\n\n button + button {\n margin-left: 20px;\n }\n\n`;\n\n\ninterface OwnProps {\n size?: TypeButtonSizes\n design?: TypeButtonDesigns\n}\n\ntype Props = OwnProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst Button : React.FC<Props> = ({ design='primary', size='normal', children, ...props }) => {\n return <StyledButton type='button' {...{design, size}} {...props}>{children}</StyledButton>;\n};\n\nexport default Button;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Button from './Button';\nimport Icon from '../../Icons/Icon';\nimport { IButtonProps, TypeButtonSizes } from '..';\nimport {dimensions} from '../../themes/common';\n\nconst TextContainer = styled.div<{size: TypeButtonSizes, position?: string}>`\n height: inherit;\n flex: 1;\n order: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n white-space: nowrap;\n\n ${({ position, size }) => position && position === 'left' ? css`\n padding-left: ${( size === 'xsmall' ) ? `10px` : `20px`};\n ` : css`\n padding-right: ${( size === 'xsmall' ) ? `10px` : `20px`};\n `}\n\n ${({theme}) => theme && css`\n transition: padding ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `}\n`;\n\nconst IconContainer = styled.div<{ position?: string }>`\n height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n flex-shrink: 0;\n\n ${({ position }) => css`\n order: ${ position && position === 'left' ? 0 : 2 };\n `}\n\n svg {\n display:block;\n path, rect, circle, d {\n stroke: var(--white-1);\n }\n }\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n height: inherit;\n`;\n\nexport interface IButtonWithIcon extends IButtonProps {\n icon: string\n position?: 'left' | 'right'\n}\n\nconst ButtonWithIcon : React.FC<IButtonWithIcon> = ({design, size='normal', onClick, disabled, position, icon, children, ...props}) => {\n\n const iconSize = dimensions.form.button[size].iconSize;\n const iconColor = design === 'secondary' ? 'dimmed' : 'inverse';\n\n return (\n <Button {...{ design, size, onClick, disabled }} {...props}>\n <InnerContainer>\n <TextContainer {...{size, position}}>{children}</TextContainer>\n <IconContainer {...{ position }}>\n <Icon icon={icon} size={iconSize} color={iconColor} weight='regular' />\n </IconContainer>\n </InnerContainer>\n </Button>\n );};\n\nexport default ButtonWithIcon;","import React from \"react\";\nimport styled, { keyframes } from 'styled-components';\n\nconst circumference = (radius : number) => {\n return 2 * 3.1416 * radius;\n};\n\nconst animation = (radius : number) => {\n const c = circumference(radius);\n\n return keyframes`\n 0% {\n stroke-dashoffset: -${c * 0.85};\n }\n 50% {\n stroke-dashoffset: -${c * 0.5};\n }\n 100% {\n stroke-dashoffset: -${c * 0.85};\n }\n `;\n};\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst BaseCircle = styled.circle<{ styling: string }>`\n stroke: ${({theme, styling}) => theme.styles.indicators.spinner[styling].base.borderColor};\n fill: none;\n`;\n\nconst RotatingCircle = styled.circle<{ r: number, styling: string }>`\n stroke: ${({theme, styling}) => theme.styles.indicators.spinner[styling].top.borderColor};\n fill: none;\n stroke-dasharray: ${({r}) => circumference(r)};\n stroke-dashoffset: ${({r}) => 2 * 3.1416 * r / 2};\n animation:\n ${({r}) => animation(r) } 4s linear infinite,\n ${rotate} 1s linear infinite;\n stroke-linecap: round;\n`;\n\ntype SpinnerSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\nconst sizeGuide = {\n xsmall: 12,\n small: 16,\n medium: 24,\n large: 36,\n xlarge: 48\n};\n\ninterface IProps {\n size: SpinnerSize\n styling: string\n}\n\nconst Spinner : React.FC<IProps> = ({ size = 'medium', styling = 'primary' }) => {\n const sizeVal = sizeGuide[size];\n const strokeWidth = sizeVal / 5.333;\n const circleRadius = (sizeVal / 2) - (strokeWidth / 2);\n\n return (\n <svg viewBox={`-${sizeVal/2} -${sizeVal/2} ${sizeVal} ${sizeVal}`} width={sizeVal} height={sizeVal} xmlns='http://www.w3.org/2000/svg'>\n <BaseCircle cx='0' cy='0' r={circleRadius} strokeWidth={strokeWidth} styling={styling} />\n <RotatingCircle cx='0' cy='0' r={circleRadius} strokeWidth={strokeWidth} styling={styling} />\n </svg>\n );\n\n};\n\nexport default Spinner;","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Button from './Button';\nimport Spinner from '../../Indicators/Spinner';\nimport { TypeButtonDesigns, IButtonProps, TypeButtonSizes } from '..';\n\n\nconst LoadingButton = styled(Button)<{ $loading: boolean }>`\n ${({$loading, theme}) => $loading && css`\n cursor: wait;\n background: ${ theme.styles.form.button['primary'].active };\n padding: 0 20px;\n &:disabled {\n opacity: 1;\n }\n `};\n`;\n\nconst TextContainer = styled.div`\n height: inherit;\n flex: 1;\n order: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n white-space: nowrap;\n ${({theme}) => theme && css`\n transition: padding ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n `}\n\n`;\n\nconst LoadingContainer = styled.div<{ design: TypeButtonDesigns, show?: boolean, position?: string }>`\n height: inherit;\n flex: 0 0 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n opacity: 0;\n\n ${({ theme, position }) => css`\n transition:\n flex ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.slow},\n opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n\n order: ${ position && position === 'left' ? 0 : 2 };\n `}\n\n svg {\n display:block;\n }\n`;\n\nconst InnerContainer = styled.div<{position?: string, $loading: boolean, design: TypeButtonDesigns, size: TypeButtonSizes}>`\n display: flex;\n height: inherit;\n\n\n ${({ position, $loading }) => position && position === 'left' ? css`\n margin-right: ${ $loading ? '-20px' : '0' };\n ` : css`\n margin-left: ${ $loading ? '-20px' : '0' };\n `}\n\n ${({ $loading, theme, design, size }) => $loading ? css`\n\n // TODO: Fix transition animation so the below line doesn't look awful when transitioning - L\n // ${ theme.styles.form.button[design].active };\n\n transition: margin ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut};\n\n ${TextContainer}{\n padding: ${theme.dimensions.form.button[ size ].padding};\n }\n ${LoadingContainer}{\n opacity: 1;\n transition: flex ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut}, opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.slow};\n ${ theme.styles.form.button[design].actionArea };\n }\n ` : css`\n ${LoadingContainer}{\n flex: 0 0 0px;\n }\n `}\n`;\n\ninterface IProps extends IButtonProps {\n position?: 'left' | 'right'\n loading: boolean\n}\n\nconst ButtonWithLoading : React.FC<IProps> = ({design='primary', size='normal', onClick, disabled, position, loading, children,...rest}) => {\n return (\n <LoadingButton disabled={disabled || loading} $loading={loading} {...{ design, size, onClick}} {...rest}>\n <InnerContainer $loading={loading} {...{ design, size}}>\n <TextContainer>{children}</TextContainer>\n <LoadingContainer {...{ design, position }}>\n <Spinner size={size ==='xsmall' ? 'xsmall' : 'small'} styling={design} />\n </LoadingContainer>\n </InnerContainer>\n </LoadingButton>\n );\n};\n\nexport default ButtonWithLoading;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { resetButtonStyles } from '../../common';\nimport Icon, { IconProps, IconWrapper } from '../../Icons/Icon';\n\nconst StyledButton = styled.button<{color:ISvgIcons['color']; hoverColor:ISvgIcons['color']}>`\n ${resetButtonStyles};\n [stroke]{\n stroke: ${({theme, color}) => theme.colors.icons[color]};\n }\n &:hover {\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme, hoverColor}) => theme.colors.icons[hoverColor]};\n }\n }\n }\n`;\n\ninterface OwnProps {\n hoverColor?: ISvgIcons['color']\n}\n\nexport type IconButtonData = OwnProps & IconProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst IconButton : React.FC<IconButtonData> = ({\n icon,\n size = 20,\n weight = 'regular',\n color = 'dimmed',\n hoverColor = 'mono',\n ...props }) => {\n return(\n <StyledButton\n type='button'\n color={color}\n hoverColor={hoverColor}\n {...props}\n >\n <Icon icon={icon} size={size} weight={weight} />\n </StyledButton>\n );\n};\n\nexport default IconButton;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport IconButton, { IconButtonData } from '../atoms/IconButton';\n\nconst StyledIconButton = styled(IconButton)``;\n\nconst Container = styled.div<{alignment?: IAlignmentOptions}>`\n display: flex;\n ${StyledIconButton} {\n margin-left: 15px;\n }\n ${StyledIconButton}:first-child {\n margin-left: 0px;\n }\n\n ${({alignment}) => alignment === 'left' && css`\n justify-content: flex-start;\n `};\n\n ${({alignment}) => alignment === 'center' && css`\n justify-content: center;\n `};\n\n ${({alignment}) => alignment === 'right' && css`\n justify-content: flex-end;\n `};\n`;\n\ntype IAlignmentOptions = 'left' | 'center' | 'right'\n\ntype IGroupButtonsData = {\n buttonsConfig: IconButtonData []\n alignment?: IAlignmentOptions\n}\n\nconst ActionButtons : React.FC<IGroupButtonsData> = ({buttonsConfig, alignment = 'right' }) => {\n\n return(\n <Container {...{alignment}}>\n {\n buttonsConfig.map((btn) => {\n const {icon, size, weight, color, hoverColor, onClick} = btn;\n return (\n <StyledIconButton\n key={`${icon}-${size}`}\n icon={icon}\n size={size}\n weight={weight}\n color={color}\n hoverColor={hoverColor}\n onClick={onClick}\n />\n );\n })\n }\n </Container>\n );\n};\n\nexport default ActionButtons;","import React, { InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport Spinner from '../../Indicators/Spinner';\nimport { TypeFieldState } from '..';\nimport { removeAutoFillStyle } from '../../common';\n\nconst ActionContainer = styled.div`\n position: absolute;\n right: 0;\n top: 0;\n`;\n\nconst InputActionButton = styled.button.attrs({ type: \"button\" })`\n width: 40px;\n height: 40px;\n background: transparent;\n border: none;\n cursor: pointer;\n outline: none;\n`;\n\nconst FeedbackContainer = styled.div`\n flex-shrink: 0;\n\n background-color: transparent;\n ${({theme}) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n `};\n\n border-left: none;\n border-radius: 0 3px 3px 0;\n overflow: hidden;\n\n display:flex;\n justify-content:left;\n align-items:center;\n`;\n\nconst FeedbackMessage = styled.div`\n flex: 0 1 400px;\n padding: 0 10px 0 0;\n\n ${({theme}) => theme.typography.form.feedback.message};\n`;\n\nconst FeedbackIcon = styled.div`\n flex: 0 0 40px;\n width: 40px;\n display: flex;\n justify-content:center;\n align-items:center;\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${({theme}) => theme.colors.pureBase};\n }\n }\n`;\n\nconst StyledInput = styled.input<{ fieldState : TypeFieldState }>`\n ${removeAutoFillStyle};\n\n ${({theme, fieldState}) => css`\n min-height: ${theme.dimensions.form.input.height};\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n `};\n\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n padding: 0 15px 0 15px;\n box-sizing: border-box;\n outline: none;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.normal};\n &::placeholder {\n ${typography.form.input.placeholder.normal};\n }\n `};\n`;\n\nconst InputContainer = styled.div<{hasAction?: boolean}>`\n\n flex: 1;\n position: relative;\n\n ${({ hasAction }) => hasAction && css`\n ${StyledInput}{\n padding-right: 60px;\n\n // Used to control password manager injection.\n background-position: calc(100% - 50px) 50% !important;\n }\n `}\n\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n display: flex;\n position: relative;\n\n ${StyledInput}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {}\n\n &:disabled {\n cursor: not-allowed;\n }\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n ${FeedbackContainer} {\n background: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n border-color: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) !== -1 && css`\n display:none;\n `}\n }\n\n &:focus-within ${StyledInput} {\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].focused};\n }\n`;\n\ninterface OwnProps {\n fieldState?: TypeFieldState;\n feedbackMessage?: string;\n actionCallback?: ()=>void;\n actionIcon?: string\n postfix?: string;\n}\n\nexport type InputProps = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst Input : React.FC<InputProps> = ({\n type = 'text',\n placeholder = '',\n defaultValue,\n fieldState = 'default',\n feedbackMessage,\n actionCallback,\n actionIcon,\n postfix,\n ...props\n}) => {\n\n const isActionButton = actionCallback !== undefined;\n\n const feedbackIcon = (fieldState: TypeFieldState) => {\n switch(fieldState){\n case 'default':\n break;\n case 'disabled':\n break;\n case 'required':\n return <Icon icon='Required' size={20} />;\n case 'valid':\n return <Icon icon='Success' size={20} />;\n case 'invalid':\n return <Icon icon='Invalid' size={20} />;\n case 'processing':\n return <Spinner size='medium' styling='primary' />;\n }\n };\n\n return (\n <Container fieldState={fieldState || 'default'}>\n\n <InputContainer hasAction={isActionButton}>\n <StyledInput fieldState={fieldState || 'default'} disabled={fieldState === 'disabled' || fieldState === 'processing'} type={type} placeholder={placeholder} defaultValue={defaultValue} {...props} />\n {(isActionButton) ? (\n <ActionContainer>\n <InputActionButton onClick={actionCallback}>\n <Icon icon={actionIcon || 'NoIcon'} color='primary' />\n </InputActionButton>\n </ActionContainer>\n ) : null}\n </InputContainer>\n\n {fieldState ? (\n <FeedbackContainer>\n <FeedbackIcon>{feedbackIcon(fieldState)}</FeedbackIcon>\n {feedbackMessage ? (\n <FeedbackMessage>{feedbackMessage}</FeedbackMessage>\n ) : null}\n </FeedbackContainer>\n ) : null}\n\n </Container>\n );\n};\n\n\nexport default Input;\n","import React, { LabelHTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nexport const StyledLabel = styled.label<{ rightAlign: boolean }>`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: var(--grey-10);\n font-size: 14px;\n font-weight: 500;\n ${({ rightAlign }) => rightAlign\n ? `\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n justify-content: left;\n `\n :\n `\n display: block;\n margin-bottom: 20px;\n `\n };\n`;\n\nconst LabelText = styled.span<{ rightAlign: boolean }>`\n display: block;\n ${({ rightAlign }) => rightAlign\n ? `\n margin-left: 12px;\n `\n : `\n margin-bottom: 10px;\n `\n }\n`;\n\ninterface OwnProps {\n htmlFor: string\n labelText: string\n rightAlign?: boolean\n}\ntype Props = OwnProps & LabelHTMLAttributes<HTMLLabelElement>\n\nconst Label: React.FC<Props> = ({\n htmlFor,\n labelText,\n rightAlign = false,\n children,\n ...props }) => {\n\n return (\n <StyledLabel {...{ htmlFor, rightAlign }} {...props}>\n <LabelText {...{ rightAlign }}>{labelText}</LabelText>\n {children}\n </StyledLabel>\n );\n};\n\nexport default Label;","import React, { InputHTMLAttributes, useRef, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\nimport { removeAutoFillStyle } from '../../common';\n\nconst StyledInput = styled.input<{ fieldState : TypeFieldState, padRight?: number }>`\n ${removeAutoFillStyle};\n\n ${({theme, fieldState}) => css`\n min-height: 30px;\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n `};\n\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n padding: 0 22px 0 10px;\n box-sizing: border-box;\n outline: none;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.compact};\n &::placeholder {\n ${typography.form.input.placeholder.compact};\n }\n `};\n\n ${p => p.padRight && css`\n padding-right: ${p.padRight + 17}px;\n `}\n\n &:disabled {\n cursor: not-allowed;\n }\n`;\n\nconst InputContainer = styled.div<{hasAction?: boolean}>`\n\n flex: 1;\n position: relative;\n\n ${({ hasAction }) => hasAction && css`\n ${StyledInput}{\n padding-right: 200px;\n\n // Used to control password manager injection.\n background-position: calc(100% - 50px) 50% !important;\n }\n `}\n\n`;\n\nconst UnitKey = styled.div`\n position: absolute;\n right: 10px;\n bottom: 0;\n top:0;\n font-family: ${({ theme }) => theme.fontFamily.ui };\n font-size: 12px;\n color: var(--grey-10);\n line-height:30px;\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n\n display: flex;\n position: relative;\n\n ${StyledInput}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {}\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n &:focus-within ${InputContainer} {\n ${({theme, fieldState}) => fieldState !== 'disabled' && css`\n border-color:${theme.styles.form.input[fieldState].focused.borderColor};\n `\n }\n\n`;\n\ninterface OwnProps {\n fieldState?: TypeFieldState;\n label: string\n unit?: string\n}\n\ntype Props = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst SmallInput : React.FC<Props> = ({\n unit,\n label,\n name,\n type = 'text',\n placeholder = '',\n defaultValue,\n fieldState = 'default',\n className,\n ...props\n}) => {\n\n const unitElement = useRef<HTMLDivElement>(null);\n const [unitElementWidth, setUnitElementWidth] = useState<number>(0);\n\n useEffect(() => {\n if(unitElement && unitElement.current){\n setUnitElementWidth(unitElement.current.clientWidth || 0);\n }\n }, [unitElement, setUnitElementWidth, unit]);\n\n return (\n <Container className={className} fieldState={fieldState || 'default'}>\n <Label labelText={label} htmlFor={name || ''}>\n <InputContainer>\n <StyledInput padRight={unitElementWidth} fieldState={fieldState || 'default'} type={type} placeholder={placeholder} defaultValue={defaultValue} {...props} />\n {unit ? <UnitKey ref={unitElement}>{unit}</UnitKey> : null}\n </InputContainer>\n </Label>\n\n </Container>\n );\n\n};\n\n\nexport default SmallInput;","import React, { useRef, useEffect, useState, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport Spinner from '../../Indicators/Spinner';\n\nenum SwitchPosition {\n Off = 0,\n On = 1,\n Neutral = 2,\n Locked = 3\n}\n\nconst intentPosition = (left: string, checked?: boolean) : string => {\n const offset = checked ? -2 : 2;\n const intentLeft = (parseInt(left) + offset).toString();\n\n return `${intentLeft}px`;\n};\n\nconst RealInput = styled.input`\n display: none;\n`;\nconst SwitchOuter = styled.div`\n border: 1px solid transparent;\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n`;\nconst getPositionKey = (switchPos : SwitchPosition) => {\n switch (switchPos) {\n case SwitchPosition.Off:\n return 'off';\n case SwitchPosition.On:\n return 'on';\n case SwitchPosition.Neutral:\n return 'neutral';\n case SwitchPosition.Locked:\n return 'locked';\n default:\n return 'off';\n }\n\n};\n\nconst SwitchInner = styled.div`\n position: absolute;\n box-sizing: border-box;\n`;\n\nconst LabelText = styled.span`\n font-family: ${({theme}) => theme.fontFamily.ui };\n\n flex: 1;\n margin-left: 10px;\n display: block;\n\n line-height: ${ p => p.theme.dimensions.form.switch.outer.height };\n\n ${ p => p.theme.typography.form.input.label };\n`;\n\nconst IconWrapper = styled.div`\n position: absolute;\n width: inherit;\n height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n }\n`;\nconst SpinnerWrapper = styled.div`\n margin-top: 1px;\n`;\n\nconst Container = styled.label<{activeTheming: string, $loading: boolean, useIntent: boolean, themeState: string, position: SwitchPosition, checked?: boolean}>`\n user-select: none;\n display: flex;\n\n ${SwitchInner}{\n ${({theme, position, themeState, activeTheming}) => theme && css`\n ${theme.dimensions.form.switch.inner};\n left: ${theme.dimensions.form.switch.positions[getPositionKey(position)]};\n top: ${theme.dimensions.form.switch.positions.top};\n transition:\n left ${theme.animation.speed.normal} ${theme.animation.easing.primary.out},\n border ${theme.animation.speed.normal} ${theme.animation.easing.primary.out},\n width ${theme.animation.speed.normal} ${theme.animation.easing.primary.out};\n\n ${theme.styles.form.switch[activeTheming][themeState].inner}\n `}\n\n ${p => p.activeTheming === 'locked' && css`\n width: calc(100% - ${parseInt(p.theme.dimensions.form.switch.positions.locked) * 2}px);\n `}\n\n ${p => p.$loading && css`\n background: transparent;\n top: 1px;\n `}\n }\n\n ${SwitchOuter}{\n ${({theme, activeTheming, themeState}) => theme && css`\n ${theme.styles.form.switch[activeTheming][themeState].outer};\n ${theme.dimensions.form.switch.outer}};\n flex: 0 0 ${theme.dimensions.form.switch.outer.width}};\n `}\n }\n\n &:hover {\n ${SwitchInner}{\n left: ${p => p.useIntent && intentPosition(p.theme.dimensions.form.switch.positions[getPositionKey(p.position)], p.checked)};\n }\n }\n`;\n\ntype TypeSwitchState = 'default' | 'loading' | 'locked' | 'disabled' | 'failure';\n\nconst isTypeSwitchState = (value: string): value is TypeSwitchState => {\n return (\n value === 'default' ||\n value === 'loading' ||\n value === 'locked' ||\n value === 'disabled' ||\n value === 'failure'\n );\n};\n\ninterface IProps {\n labelText?: string\n leftTheme?: string\n rightTheme?: string\n state?: TypeSwitchState\n checked?: boolean\n onChangeCallback?: (checked: boolean, indeterminate?: boolean) => void;\n}\n\nconst Switch : React.FC<IProps> = ({ state = 'default', leftTheme = 'off', rightTheme = 'on', labelText, onChangeCallback, checked = false}) => {\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [ position, setPosition ] = useState<SwitchPosition>(checked ? SwitchPosition.On : SwitchPosition.Off);\n const [ activeTheming, setActiveTheming ] = useState<string>( leftTheme );\n const [ switchState, setSwitchState ] = useState<TypeSwitchState>('default');\n\n useEffect(() => {\n setPosition(checked ? SwitchPosition.On : SwitchPosition.Off);\n if (inputRef.current) {\n inputRef.current.checked = checked;\n }\n }, [checked]);\n\n const positionSwitch = useCallback(() => {\n if(inputRef.current?.checked){\n setPosition(SwitchPosition.On);\n setActiveTheming(rightTheme);\n } else if(!inputRef.current?.checked){\n setPosition(SwitchPosition.Off);\n setActiveTheming(leftTheme);\n }\n }, [setPosition, setActiveTheming, leftTheme, rightTheme, inputRef]);\n\n const customOnChange = () => {\n positionSwitch();\n if(onChangeCallback){ onChangeCallback(inputRef.current?.checked || false); }\n };\n\n /**\n * updateThemeChoice()\n * If for some reason we need to change the left or right theme in context, this makes sure\n * things get updated. (i.e. in StoryBook)\n */\n const updateThemeChoice = useCallback(() => {\n if(position === SwitchPosition.On){\n setActiveTheming(rightTheme);\n } else if(position === SwitchPosition.Off){\n setActiveTheming(leftTheme);\n }\n }, [position, rightTheme, leftTheme]);\n\n /** Watch for that theme change. */\n useEffect(() => {\n updateThemeChoice();\n }, [leftTheme, rightTheme, updateThemeChoice]);\n\n useEffect(() => {\n if(isTypeSwitchState(state))\n setSwitchState( stateCheck(state) );\n\n }, [state, setSwitchState]);\n\n /** Watch for locking prop. */\n useEffect(() => {\n if(state === 'locked'){\n setPosition(SwitchPosition.Locked);\n setActiveTheming('locked');\n } else if(state === 'failure'){\n setPosition(SwitchPosition.Neutral);\n setActiveTheming('failure');\n } else {\n positionSwitch();\n }\n }, [state, setPosition, positionSwitch]);\n\n return (\n <Container onChange={customOnChange} activeTheming={activeTheming} $loading={state === 'loading'} useIntent={state === 'default' || state === 'failure'} themeState={switchState} position={position} checked={inputRef.current?.checked}>\n <SwitchOuter>\n <SwitchInner>\n {state === 'failure' ? <IconWrapper><Icon icon='Exclamation' color='danger' size={18} weight='regular' /></IconWrapper> : null}\n {state === 'locked' ? <IconWrapper><Icon icon='Locked' color='dimmed' size={10} weight='light' /></IconWrapper> : null}\n {state === 'loading' ? <SpinnerWrapper><Spinner size='small' styling='simple' /></SpinnerWrapper> : null}\n </SwitchInner>\n </SwitchOuter>\n {labelText ? <LabelText>{labelText}</LabelText> : null}\n <RealInput ref={inputRef} type='checkbox' disabled={state !== 'default' && state !== 'failure'} defaultChecked={checked} />\n </Container>\n );\n\n};\n\nconst stateCheck = (state: TypeSwitchState) : TypeSwitchState => {\n switch(state){\n case 'locked':\n return 'default';\n case 'failure':\n return 'default';\n default:\n return state;\n }\n};\n\n\nexport default Switch;\nexport { SwitchPosition };","import * as React from \"react\";\n\nfunction SvgLogoMark(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={35} height={35} {...props}>\n <defs>\n <linearGradient\n id='LogoMark_svg__a'\n x1='36.708%'\n x2='69.959%'\n y1='2.579%'\n y2='98.009%'\n >\n <stop offset='0%' stopColor='#7DB8DB' />\n <stop offset='100%' stopColor='#5CA0D1' />\n </linearGradient>\n </defs>\n <g fill='none' fillRule='evenodd'>\n <rect width={35} height={35} fill='url(#LogoMark_svg__a)' rx={5} />\n <path\n fill='#FFF'\n fillRule='nonzero'\n d='M14.42 25.12c4.4 0 6.42-3.06 6.42-7.02v-7.3h-3.9v7.3c0 1.84-.68 3.56-2.52 3.56-1.8 0-2.5-1.68-2.5-3.56v-7.3h-3.9v7.3c0 3.76 1.86 7.02 6.4 7.02zM26.98 25V10.8h-3.9V25h3.9z'\n />\n </g>\n </svg>\n );\n}\n\nexport default SvgLogoMark;\n","import * as React from \"react\";\n\nfunction SvgLogoText(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={71} height={30} {...props}>\n <path\n d='M6.088 12.112c2.336 0 4.128-.976 4.128-3.168 0-2.048-1.472-2.72-3.84-3.248-2.048-.464-2.992-.784-2.992-2 0-1.152.8-1.856 2.56-1.856 1.36 0 2.56.592 3.088 1.184l.672-1.168C8.744 1.072 7.496.56 5.976.56c-2.352 0-4.08 1.184-4.08 3.36 0 1.808 1.2 2.432 3.504 2.992 2.112.512 3.28.896 3.28 2.176 0 1.136-.944 1.728-2.56 1.728-1.728 0-3.28-.8-3.968-1.52l-.688 1.216c1.28 1.04 2.88 1.6 4.624 1.6zm11.941-.016c1.76 0 3.792-.944 4.512-2.64l-1.2-.656c-.656 1.408-2.064 2-3.248 2-2.256 0-3.936-2.128-3.936-4.496 0-2.144 1.36-4.432 3.888-4.432 1.152 0 2.48.48 3.152 1.92l1.136-.736C21.63 1.6 20.125.576 18.11.576c-3.424 0-5.408 2.912-5.408 5.664 0 2.88 2.208 5.856 5.328 5.856zm12.134-.016c3.072 0 5.36-2.72 5.36-5.744 0-2.848-2.144-5.776-5.328-5.776-3.072 0-5.376 2.736-5.376 5.76 0 2.912 2.16 5.76 5.344 5.76zm.016-1.296c-2.352 0-3.904-2.144-3.904-4.464 0-2.208 1.488-4.448 3.904-4.448 2.304 0 3.888 2.128 3.888 4.448 0 2.192-1.472 4.464-3.888 4.464zM40.296 12V7.92h3.008L45.896 12h1.632l-2.752-4.352c1.44-.368 2.384-1.792 2.384-3.376C47.16 2.48 45.72.64 43.72.64h-4.864V12h1.44zm3.44-5.36h-3.44V1.92h3.344c1.104 0 2.064 1.072 2.064 2.352 0 1.248-.784 2.368-1.968 2.368zM58.413 12v-1.28h-6.272V6.8h5.328V5.6h-5.328V1.92h6.128V.64h-7.568V12h7.712zm4.742 0V7.92h3.008L68.755 12h1.632l-2.752-4.352c1.44-.368 2.384-1.792 2.384-3.376 0-1.792-1.44-3.632-3.44-3.632h-4.864V12h1.44zm3.44-5.36h-3.44V1.92h3.344c1.104 0 2.064 1.072 2.064 2.352 0 1.248-.784 2.368-1.968 2.368zM4.78 27.05c2.18 0 2.99-1.66 2.99-3.57V19.9h-.7v3.58c0 1.45-.5 2.94-2.3 2.94-1.76 0-2.29-1.45-2.29-2.94V19.9h-.69v3.58c0 1.81.74 3.57 2.99 3.57zm6.193-.05v-7.1h-.7V27h.7zm6.697 0v-2.18L19 23.44 21.71 27h.79l-3.05-3.98 2.9-3.12h-.77l-3.91 4.13v-4.12h-.7V27h.7zm7.263 0v-7.1h-.7V27h.7zm5.124 0v-6.48h2.53v-.62h-5.76v.62h2.53V27h.7z'\n fill='#93A5B2'\n />\n </svg>\n );\n}\n\nexport default SvgLogoText;\n","import * as React from 'react';\n\nfunction SvgAvatarPlaceholder(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg width={48} height={48} {...props} viewBox='0 0 48 48'>\n <g fill='none' fillRule='evenodd' strokeLinecap='round' strokeLinejoin='round'>\n <g stroke='#C1C1C1' strokeWidth='1.5'>\n <g>\n <g>\n <g transform='translate(-789 -294) translate(772 277) translate(10.25 10.25) translate(7.688 7.688)'>\n <rect width='37.477' height='43.242' x='4.324' y='1.441' rx='1.5' />\n <circle cx='23.063' cy='17.456' r='7.899' />\n <path d='M36.035 36.568c-2.537-4.814-7.53-7.828-12.972-7.828-5.442 0-10.436 3.014-12.973 7.828' />\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n}\n\nexport default SvgAvatarPlaceholder;","import * as React from \"react\";\n\nfunction CheckMark(props: ISvgIcons) {\n return (\n <svg width={props.size} height={props.size} viewBox='0 0 24 24' {...props}>\n <path\n d='M23.848 5.132l-2.967-2.976a.531.531 0 0 0-.753 0L7.595 14.697a.531.531 0 0 1-.752 0l-2.968-2.975a.531.531 0 0 0-.752 0L.156 14.697a.531.531 0 0 0 0 .752l6.687 6.688a.531.531 0 0 0 .752 0L23.848 5.876a.531.531 0 0 0 0-.744z'\n fill='none'\n fillRule='evenodd'\n stroke='#000'\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={1.5}\n />\n </svg>\n );\n}\n\nexport default CheckMark;\n","import React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckMark } from '../../svg';\nimport { dimensions } from '../../themes/common';\n\nenum CheckboxState {\n Off = \"off\",\n On = \"on\",\n Indeterminate = \"indeterminate\"\n}\n\nconst RealInput = styled.input`\n display: none;\n`;\nconst CheckboxOuter = styled.div`\n cursor: pointer;\n\n box-sizing: border-box;\n position: relative;\n width: 18px;\n height: 18px;\n border-radius: 5px;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst CheckboxInner = styled.div<{}>`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n box-sizing: border-box;\n`;\n\nconst IconWrapper = styled.div<{color: ISvgIcons['color']}>`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n [stroke]{\n stroke: transparent;\n }\n [fill] {\n fill: ${({theme, color}) => theme.colors.icons[color]};\n }\n }\n`;\n\nconst Container = styled.label<{visualState?: CheckboxState, disabled?: boolean}>`\n user-select: none;\n\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.Off && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.unchecked.default};\n }\n\n ${!disabled && css`\n &:hover ${CheckboxOuter} {\n ${styles.form.checkbox.unchecked.hover};\n }`\n };\n\n ${disabled && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.unchecked.disabled};\n cursor: not-allowed;\n }\n `}\n `}\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.On && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.checked.default};\n border: none;\n }\n ${!disabled && css`\n &:hover ${CheckboxOuter}{\n ${styles.form.checkbox.checked.hover};\n border: none;\n }`\n };\n\n ${disabled && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.checked.disabled};\n cursor: not-allowed;\n }\n `}\n `}\n\n ${({visualState, disabled, theme: { styles }}) => visualState === CheckboxState.Indeterminate && css`\n ${CheckboxOuter}{\n ${styles.form.checkbox.indeterminate.default};\n }\n ${!disabled && css`\n &:hover ${CheckboxOuter}{\n ${styles.form.checkbox.indeterminate.hover};\n }\n `};\n\n `}\n\n`;\n\ninterface IProps {\n checked?: boolean\n disabled?: boolean\n indeterminate?: boolean\n onChangeCallback?: (checked: boolean, indeterminate?: boolean) => void;\n}\n\nconst Checkbox : React.FC<IProps> = ({ indeterminate = false, disabled, checked = false, onChangeCallback }) => {\n\n const [ isChecked, setIsChecked ] = useState<boolean>(checked);\n const [ visualState, setVisualState ] = useState<CheckboxState>(checked ? CheckboxState.On : CheckboxState.Off);\n\n const customOnChange = (e: any) => {\n const checked = e.target.checked;\n\n setIsChecked(checked);\n if(onChangeCallback){ onChangeCallback(checked); }\n };\n\n useEffect(() => {\n\n const state = checked ? CheckboxState.On : CheckboxState.Off;\n // state = indeterminate ? CheckboxState.Indeterminate : state;\n\n setVisualState( state );\n\n }, [checked, isChecked, setVisualState]);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked, setIsChecked]);\n\n const iconWeight : number = dimensions.icons.weights['regular'];\n\n return (\n <Container onChange={customOnChange} {...{indeterminate, disabled, visualState}}>\n <CheckboxOuter>\n <CheckboxInner>\n {visualState === CheckboxState.On ? <IconWrapper color='inverse'><CheckMark color='inverse' stroke='inverse' size={12} weight={iconWeight} /></IconWrapper> : null}\n </CheckboxInner>\n </CheckboxOuter>\n <RealInput type='checkbox' checked={isChecked} readOnly {...{disabled}} /> {/* disabled={state !== 'default' && state !== 'failure'} */}\n </Container>\n );\n\n};\n\nexport default Checkbox;\nexport { CheckboxState };","import React, { useCallback, InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\n\nconst InnerRadio = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n user-select: none;\n`;\n\nconst OuterRadio = styled.div<{ isChecked: boolean, disabled: boolean }>`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n border-radius: 50%;\n border-width: 2px;\n border-style: solid;\n user-select: none;\n\n ${({ theme: { styles }, isChecked, disabled }) => styles && css`\n border-color: ${styles.form.checkbox.unchecked.default.borderColor};\n\n ${!disabled && css`\n &:hover {\n cursor: pointer;\n border-color: ${styles.form.checkbox.unchecked.hover.borderColor};\n }\n `};\n\n ${isChecked && !disabled && css`\n border-color: ${styles.form.checkbox.checked.default.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n `};\n\n ${isChecked && !disabled && css`\n &:hover {\n border-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n `};\n\n ${isChecked && disabled && css`\n cursor: not-allowed;\n border-color: ${styles.form.checkbox.checked.disabled.backgroundColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.checked.disabled.backgroundColor};\n }\n `};\n\n ${!isChecked && disabled && css`\n cursor: not-allowed;\n border-color: ${styles.form.checkbox.unchecked.disabled.borderColor};\n ${InnerRadio} {\n background-color: ${styles.form.checkbox.unchecked.disabled.backgroundColor};\n }\n `}\n `};\n`;\n\nconst HiddenInput = styled.input`\n position: absolute;\n height: 100%;\n width: 100%;\n margin: 0;\n padding:0;\n opacity: 0;\n`;\n\nconst Container = styled.div`\n position: relative;\n display: inline-block;\n width: 18px;\n height: 18px;\n user-select: none;\n border-radius: 50%;\n`;\n\ninterface OwnProps {\n currentChecked?: number | string\n onChangeCallback?: (value: number | string) => void\n}\n\ntype IRadioButton = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst RadioButton: React.FC<IRadioButton> = ({\n id,\n value,\n name,\n currentChecked,\n disabled = false,\n required,\n onChangeCallback = () => { },\n}) => {\n\n const handleChange = useCallback((e) => {\n const checkedValue = e.target.value;\n onChangeCallback(checkedValue);\n }, [onChangeCallback]);\n\n const isChecked = (currentChecked !== undefined) ? (currentChecked === value) : false;\n\n return (\n <Container>\n <HiddenInput\n type='radio'\n {...{ id, name, disabled, required, value }}\n checked={isChecked}\n onChange={handleChange}\n />\n <OuterRadio {...{ isChecked, disabled }}>\n <InnerRadio />\n </OuterRadio>\n </Container>\n );\n};\n\nexport default RadioButton;","import React, { TextareaHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport Icon from '../../Icons/Icon';\nimport { TypeFieldState } from '..';\n\nconst FeedbackIcon = styled.div`\n flex: 0 0 40px;\n width: 40px;\n display: flex;\n justify-content:center;\n align-items:center;\n padding-top: 2px;\n`;\n\nconst StyledTextArea = styled.textarea<{ fieldState : TypeFieldState}>`\n\n${({theme, fieldState}) => css`\n font-family: ${theme.fontFamily.data};\n border: 1px solid ${theme.styles.form.input[fieldState].normal.borderColor};\n`};\n\n padding: 8px 15px;\n box-sizing: border-box;\n outline: none;\n height: 100%;\n width: 100%;\n border-radius: 3px;\n\n ${({theme: {typography}}) => css`\n ${typography.form.input.value.normal};\n &::placeholder {\n ${typography.form.input.placeholder.normal};\n }\n`};\n`;\n\nconst FeedbackContainer = styled.div`\n flex-shrink: 0;\n padding: 8px 0;\n background-color: transparent;\n ${({theme}) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n `};\n\n border-left: none;\n border-radius: 0 0 3px 3px;\n overflow: hidden;\n\n display:flex;\n justify-content:left;\n align-items:center;\n`;\n\nconst FeedbackMessage = styled.div`\n flex: 0 1 400px;\n padding: 0 10px 0 0;\n ${({theme}) => theme.typography.form.feedback.message};\n`;\n\nconst Container = styled.div<{ fieldState: string }>`\n display: flex;\n position: relative;\n flex-direction: column;\n ${StyledTextArea}{\n ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal};\n\n &:focus {\n box-shadow: 0px 3px 7px 0px var(--primary-a3);\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) === -1 && css`\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n `}\n }\n\n ${FeedbackContainer} {\n background: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n border-color: ${({theme, fieldState}) => theme.styles.form.input[fieldState].normal.borderColor};\n\n ${({ fieldState }) => ['default', 'disabled'].indexOf(fieldState) !== -1 && css`\n display:none;\n `}\n }\n\n &:focus-within ${FeedbackContainer} {\n ${({ fieldState }) =>\n\n fieldState === 'required' ? `\n box-shadow: 0px 3px 7px 0px var(--primary-a3);\n ` : null};\n\n ${({ fieldState }) => fieldState === 'valid' ? `\n box-shadow: 0px 3px 5px 0px var(--success-a3);\n ` : null};\n\n ${({ fieldState }) => fieldState === 'invalid' ? `\n box-shadow: 0px 3px 7px 0px var(--error-a3);\n ` : null};\n }\n\n`;\n\ninterface OwnProps {\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & TextareaHTMLAttributes<HTMLTextAreaElement>\n\nconst TextArea : React.FC<Props> = ({\n placeholder = '',\n fieldState = 'default',\n feedbackMessage,\n children,\n ...props\n}) => {\n\n const feedbackIcon = (fieldState: TypeFieldState) => {\n switch(fieldState){\n case 'default':\n break;\n case 'disabled':\n break;\n case 'required':\n return <Icon icon='Required' size={20} color='white' />;\n case 'valid':\n return <Icon icon='Success' size={20} color='white' />;\n case 'invalid':\n return <Icon icon='Invalid' size={20} color='white' />;\n case 'processing':\n return <Spinner size='medium' styling='primary' />;\n }\n };\n\n return (\n <Container fieldState={fieldState || 'default'}>\n <StyledTextArea\n fieldState={fieldState || 'default'}\n placeholder={placeholder}\n disabled={fieldState === 'disabled' || fieldState === 'processing'}\n {...props}\n >{children}\n </StyledTextArea>\n {fieldState && (\n <FeedbackContainer>\n <FeedbackIcon>{feedbackIcon(fieldState)}</FeedbackIcon>\n <FeedbackMessage>{feedbackMessage}</FeedbackMessage>\n </FeedbackContainer>\n )}\n </Container>\n );\n};\n\nexport default TextArea;","import React, { useCallback, useState, SelectHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Label, { StyledLabel } from './Label';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\n\nexport const SelectWrapper = styled.div`\n position: relative;\n display: flex;\n width: 100%;\n\n ${IconWrapper} {\n position: absolute;\n top: calc(50% - 7px);\n right: 10px;\n pointer-events: none;\n }\n`;\n\nconst StyledSelect = styled.select`\n box-sizing: border-box;\n outline: none;\n border-radius: 3px;\n height: 40px;\n padding: 0 25px 0 15px;\n appearance: none;\n line-height: 1.56;\n width: 100%;\n cursor: pointer;\n ${({theme: {styles}}) => css`\n ${styles.form.input.default.normal};\n `}\n\n &:disabled {\n ${({theme: {styles}}) => css`\n ${styles.form.input.disabled.normal};\n `}\n cursor: not-allowed;\n }\n\n &::-ms-expand {\n display: none;\n }\n`;\n\nconst Container = styled.div<{ isCompact?: boolean, activePlaceholder: boolean, isLabelSameRow?: boolean }>`\n\n${({ isCompact }) => isCompact && css`\n ${StyledLabel} {\n span {\n margin-bottom: 6px;\n }\n }\n `}\n\n${({ isLabelSameRow }) => isLabelSameRow && css`\n ${StyledLabel} {\n display: flex;\n align-items: center;\n span {\n margin: 0 10px 0 0;\n }\n }\n`};\n\n ${StyledSelect} {\n ${({ theme }) => css`\n border: 1px solid ${theme.styles.form.input.default.normal.borderColor};\n font-family: ${theme.fontFamily.data};\n ${theme.typography.form.input.value.normal};\n `};\n\n ${({ theme: { typography }, isCompact }) => isCompact && css`\n height: 30px;\n padding: 0 25px 0 10px;\n ${typography.form.input.value.compact};\n `};\n\n ${({ theme, activePlaceholder }) => activePlaceholder && css`\n ${theme.typography.form.input.placeholder.normal};\n `};\n\n ${({ theme, isCompact, activePlaceholder }) => isCompact && activePlaceholder && css`\n ${theme.typography.form.input.placeholder.compact};\n `};\n\n option {\n font-style: normal;\n ${({ theme }) => css`\n ${theme.typography.form.input.value.normal};\n `};\n\n ${({ theme: { typography }, isCompact }) => isCompact && css`\n ${typography.form.input.value.compact};\n `};\n }\n font-weight: 400;\n }\n`;\n\ninterface ILabel {\n htmlFor: string\n text: string\n isSameRow?: boolean\n}\n\ninterface OwnProps {\n label?: ILabel\n isCompact?: boolean\n placeholder?: string\n changeCallback?: (value: string) => void\n}\n\ntype ISelect = OwnProps & SelectHTMLAttributes<HTMLSelectElement>\n\nconst SelectField: React.FC<ISelect> = ({\n placeholder,\n label,\n isCompact,\n defaultValue,\n changeCallback = () => { },\n children,\n ...props\n}) => {\n\n const [activePlaceholder, setPlaceholderStatus] = useState<boolean>(!defaultValue ? true : false);\n\n const handleOnChange = useCallback((e) => {\n\n const { value } = e.target;\n\n setPlaceholderStatus(prev => {\n if (prev) { return false; }\n return prev;\n });\n changeCallback(value);\n }, [changeCallback]);\n\n const renderSelect = useCallback((htmlFor?: string) => (\n <SelectWrapper>\n <StyledSelect\n id={htmlFor}\n {...props}\n defaultValue={defaultValue ? defaultValue : ''}\n onChange={handleOnChange}\n >\n {!defaultValue && <option value='' disabled hidden>{placeholder}</option>}\n {children}\n </StyledSelect>\n <Icon icon='Down' color='dimmed' size={11} />\n </SelectWrapper>\n ), [children, defaultValue, handleOnChange, placeholder, props]);\n\n return (\n <Container {...{ isCompact, activePlaceholder }} isLabelSameRow={label?.isSameRow}>\n {label\n ? (\n <Label htmlFor={label.htmlFor} labelText={label.text}>\n {renderSelect(label.htmlFor)}\n </Label>\n )\n : renderSelect()}\n </Container>\n );\n};\n\nexport default SelectField;","import {ITimeUnit} from '../index';\n\nconst isInsideRange = (value: number, min: number, max: number) : boolean => {\n if( value < min) {return false;}\n if(value > max) { return false;}\n return true;\n};\n\n// verifies if a number is inside a boundary if not updates it's value to the max or min boundary value.\nconst clamp = (value: number, minValue: number, maxValue: number) => {\n return Math.min( Math.max(value, minValue), maxValue);\n};\n\n/**\n * Helper for adding appropriate text to a time number\n * Default is hours\n */\nconst getTextTimeUnit = (value: number, unit : ITimeUnit) => {\n switch (unit) {\n case 'seconds':\n return value < 2 ? `Second` : `Seconds`;\n\n case 'minutes':\n return value < 2 ? `Minute` : `Minutes`;\n\n default:\n return value < 2 ? `Hour` : `Hours`;\n }\n};\n\n/**\n * Helper for adding appropriate text to a time number\n * Default is hours\n */\nconst getShortTextTimeUnit = (value: number, unit : string) => {\n switch (unit) {\n case 'seconds':\n return value < 2 ? `sec` : `secs`;\n\n case 'minutes':\n return value < 2 ? `min` : `mins`;\n\n default:\n return value < 2 ? `hr` : `hrs`;\n }\n};\n\nexport const isTimeUnit = (value: any) => {\n switch(value) {\n case 'seconds':\n case 'minutes':\n case 'hours':\n return true;\n default:\n return false;\n }\n};\n\nconst getTopLevelPath = (pathname: string) => {\n const parts = pathname.split('/').filter(String);\n return parts.length > 0 ? \"/\" + parts[0] : \"/\";\n};\n\nconst getImageType = (img: HTMLImageElement) => {\n const dataType = img.src.substr(0, 20);\n if (dataType.includes('data')) {\n return dataType.split('/')[1].split(';')[0];\n }\n return 'image/jpeg';\n};\n\nconst isValidImage = (file: File) => {\n const acceptedImageTypes = ['image/jpeg', 'image/png'];\n\n return file && acceptedImageTypes.includes(file['type']);\n};\n\nconst uniqueID = () =>\n String(\n Date.now().toString(32) +\n Math.random().toString(16)\n ).replace(/\\./g, '');\n\nexport {\n clamp,\n isValidImage,\n getImageType,\n getTextTimeUnit,\n isInsideRange,\n getShortTextTimeUnit,\n getTopLevelPath,\n uniqueID\n};","import React, {\n InputHTMLAttributes,\n useState,\n useCallback,\n ChangeEvent,\n Fragment,\n useRef,\n useEffect,\n} from 'react';\nimport styled, {css} from 'styled-components';\nimport {IFeedbackColor} from '../../index';\nimport {\n isInsideRange,\n} from '../../helpers';\n\n/**\n * TODO to support all input range features\n * Currently you can pass this values but to be visually correct the needs to work around the current implementation.\n * Step\n * Vertical usage\n */\n\nconst ThumbDiameter = 16;\n\nconst SliderWrapper = styled.div<{disabled: boolean}>`\n font-family: ${({ theme }) => theme.fontFamily.data};\n position: relative;\n height: 30px;\n margin-top: 20px;\n ${({disabled}) => disabled && css`\n opacity: .5;\n `};\n`;\n\nconst HiddenInput = styled.input<{disabled:boolean}>`\n width: 100%;\n margin: 0;\n padding:0;\n opacity: .001;\n z-index: 99;\n cursor: ${({disabled}) => disabled ? `not-allowed` : `pointer`};\n`;\n\nconst Rail = styled.div`\n position: absolute;\n left: ${ThumbDiameter/2}px;\n top: 10px;\n width: calc(100% - ${ThumbDiameter}px);\n height: 2px;\n border-radius: 11px;\n background-image: linear-gradient(to bottom, var(--grey-10), var(--primary-10) 98%);\n`;\n\nconst Mark = styled.span<{leftValue: number}>`\n position: absolute;\n top: -3px;\n left: ${({leftValue}) => `calc(${leftValue}% + 7px)`};\n width: 1px;\n height: 9px;\n opacity: 0.25;\n background-color: var(--primary-11);\n`;\n\nconst MarkLabel = styled.span<{leftValue: number, alignment?: IMartAlignment,}>`\n position: absolute;\n top: -24px;\n left: ${({leftValue}) => `calc(${leftValue}% + 7px)`};\n\n font-size: 10px;\n font-style: italic;\n line-height: normal;\n text-align: center;\n color: var(--grey-a11);\n\n ${({alignment}) => (alignment === 'center') && css`transform: translateX(-50%);;`}\n ${({alignment}) => (alignment === 'right') && css`transform: translateX(5%);`}\n ${({alignment}) => (alignment === 'left') && css`transform: translateX(-95%);`}\n`;\n\nconst ThumbWrapper = styled.div`\n position: relative;\n margin-right: 16px;\n left: 0;\n top: 10px;\n width: calc(100% - ${ThumbDiameter}px);\n height: 2px;\n`;\n\nconst Thumb = styled.span<{leftValue: number, bgColor: IFeedbackColor }>`\n width: ${ThumbDiameter}px;\n height: ${ThumbDiameter}px;\n border-radius: 8px;\n background-color: ${({theme, bgColor}) => theme.colors.feedback[bgColor]};\n position: absolute;\n top: -7.5px;\n left: ${({leftValue}) => `${leftValue}%`};\n`;\n\nconst GhostThumb = styled(Thumb)`\n opacity: .5;\n`;\n\nconst thumbLeftPosition = (value: number, min: number, max: number ) => {\n return valueToPercent(value, min, max);\n};\n\nconst nearMark = (value: number, marks: ISliderMark[]) : number => {\n\n const closest = marks.reduce((prev, curr) => {\n return (Math.abs(curr.value - value) < Math.abs(prev.value - value) ? curr : prev);\n });\n\n return closest.value;\n};\n\n/**\n * Rules for a getValidMin\n * Max needs to be bigger than Min\n * if Min is not available and Max is positive default is 0\n * if Min is not available Max is negative min will be reduce by 1\n */\nconst getValidMin = (max: number, min?: number) : number => {\n\n if((!max) && (!min)) {\n return 0;\n }\n\n if(!min) {\n if(max > 0) {\n return 0;\n }else {\n return max - 1 ;\n }\n }\n return min;\n};\n\n/**\n *\n * Max is required but null because it cans o.O\n * if Max is less value than min fix to one more than min\n */\nconst getValidMax = (max: number, min?: number) : number => {\n if((max === null) && (!min)) {\n return 100;\n }\n\n if(min && (min > max) ) {\n return min + 1;\n }\n\n return max;\n};\n\nconst valueToPercent = (value: number, min: number, max: number) : number => {\n return Math.round(((value - min) * 100) / (max - min));\n};\n\n// const percentToValue = (percent: number, min: number, max: number) : number => {\n// return (max - min) * percent + min;\n// };\n\n\nconst getMarkAlignment = (value: number, min: number, max: number) : IMartAlignment => {\n if(value === min) {\n return 'right';\n }\n\n if(value === max) {\n return 'left';\n }\n\n return 'center';\n};\n\nconst renderMarks = (markList: ISliderMark[], min: number, max: number, listTag: string) => {\n\n const listOptions : JSX.Element[] = [];\n const marksElements = markList.map(({value, label}, index) => {\n // * first and last should be 0% and 100%\n const left = index === (markList.length - 1) ? 100 : valueToPercent(value, min, max);\n listOptions.push(<option key={`option-${value}`}>{value}</option>);\n\n return (\n <Fragment key={`mark-${index}`}>\n <Mark\n data-leftvalue={`${left}%`}\n leftValue={left}\n />\n <MarkLabel\n leftValue={left}\n alignment={getMarkAlignment(value, min, max)}\n >\n {label}\n </MarkLabel>\n </Fragment>\n );\n });\n\n return (\n <Fragment>\n {marksElements}\n <datalist id={listTag}>\n {listOptions}\n </datalist>\n </Fragment>\n );\n\n};\n\nexport type IMartAlignment = 'left' | 'center' | 'right';\n\nexport interface ISliderMark {\n value: number\n label?: string\n}\n\ninterface ISliderOwnProps {\n min?: number\n max: number\n step?: number\n marks?: ISliderMark[]\n defaultValue?: number\n value?: number\n thumbColor?: IFeedbackColor\n onlyMarkSelect?: boolean\n inputCallback?: (value: number) => void\n onChangeCallback?: (value: number) => void\n}\n\nexport type ISlider = ISliderOwnProps & InputHTMLAttributes<HTMLInputElement>;\n\nlet ghostThumbValue = 0;\n\nconst SliderInput : React.FC<ISlider> = ({\n min,\n max,\n marks,\n defaultValue,\n thumbColor = 'info',\n disabled = false,\n onlyMarkSelect = false,\n inputCallback = () => {},\n onChangeCallback = () => {},\n ...props\n}) => {\n\n const maxValid = getValidMax(max, min);\n const minValid = getValidMin(max, min);\n const initValue = (defaultValue && isInsideRange(defaultValue, minValid, maxValid)) ? defaultValue : minValid;\n\n const [selectedValue, setSelectedValue] = useState(initValue);\n const [isGhostActive, setIsGhostActive ] = useState(false);\n\n const thumbValueRef = useRef(thumbLeftPosition(selectedValue, minValid, maxValid));\n\n if(marks && onlyMarkSelect) {\n const mark = nearMark(selectedValue, marks);\n const ghostVal = thumbLeftPosition(mark, minValid, maxValid);\n ghostThumbValue = ghostVal;\n }\n\n\n const handleInputChange = useCallback((e: ChangeEvent<HTMLInputElement>, lastValue: number) => {\n const val = e.target.value;\n if(val === null) { return; }\n const numericVal = parseInt(val,10);\n\n thumbValueRef.current = thumbLeftPosition(numericVal, minValid, maxValid);\n const mark = marks ? nearMark(numericVal, marks) : numericVal;\n const prevMark = marks ? nearMark(lastValue, marks) : numericVal;\n\n if(onlyMarkSelect && (prevMark !== mark)) {\n onChangeCallback(mark);\n }\n\n if(!onlyMarkSelect) {\n onChangeCallback(numericVal);\n }\n\n setSelectedValue(prev => {\n if(numericVal === prev) { return prev; }\n return numericVal;\n });\n\n },[marks, maxValid, minValid, onChangeCallback, onlyMarkSelect]);\n\n\n const handleSelectStart = useCallback(() => {\n setIsGhostActive(true);\n }, []);\n\n const handleSelectEnd = useCallback((currentValue: number) => {\n if(onlyMarkSelect) {\n inputCallback(ghostThumbValue);\n } else {\n inputCallback(currentValue);\n }\n\n if(onlyMarkSelect) {\n thumbValueRef.current = ghostThumbValue;\n }\n\n setIsGhostActive(false);\n },[inputCallback, onlyMarkSelect]);\n\n useEffect(() => {\n const initValue = (defaultValue && isInsideRange(defaultValue, minValid, maxValid)) ? defaultValue : minValid;\n thumbValueRef.current = thumbLeftPosition(initValue, minValid, maxValid);\n setSelectedValue(initValue);\n\n }, [defaultValue, maxValid, minValid]);\n\n return(\n <SliderWrapper disabled={disabled}>\n <Rail />\n <ThumbWrapper>\n {marks && renderMarks(marks, minValid, maxValid, `sliderList-${minValid}-${maxValid}`)}\n {isGhostActive && onlyMarkSelect\n ? (\n <GhostThumb\n data-value={selectedValue}\n leftValue={ghostThumbValue}\n data-percentage={ghostThumbValue}\n bgColor={thumbColor}\n />\n )\n : null}\n <Thumb\n data-value={selectedValue}\n leftValue={thumbValueRef.current}\n data-percentage={thumbValueRef.current}\n bgColor={thumbColor}\n />\n </ThumbWrapper>\n <HiddenInput\n {...props}\n type='range'\n disabled={disabled}\n list={`sliderList-${minValid}-${maxValid}`}\n min={minValid}\n max={maxValid}\n value={selectedValue}\n onMouseUp={() => handleSelectEnd(selectedValue)}\n onMouseDown={handleSelectStart}\n onTouchStart={() => handleSelectEnd(selectedValue)}\n onTouchEnd={handleSelectStart}\n onChange={(e) => handleInputChange(e, selectedValue)}\n />\n </SliderWrapper>\n );\n};\n\nexport default SliderInput;","import React, {useRef, useCallback, ChangeEvent, InputHTMLAttributes} from 'react';\nimport styled from 'styled-components';\nimport Button from './Button';\nimport { TypeButtonSizes, TypeButtonDesigns } from '..';\n\nconst Container = styled.div``;\nconst HiddenInput = styled.input`\n display: none;\n`;\nconst StyledButton = styled(Button)`\n text-align: center;\n`;\n\ninterface OwnProps {\n text: string\n buttonSize?: TypeButtonSizes\n buttonDesign?: TypeButtonDesigns\n inputCallback: (newFiles: FileList) => void\n}\n\ntype IFileInput = OwnProps & InputHTMLAttributes<HTMLInputElement>\nconst InputFileButton : React.FC<IFileInput> = ({text, buttonDesign, buttonSize, inputCallback, ...props}) => {\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleFile = useCallback(async(e: ChangeEvent<HTMLInputElement>) => {\n if (!(e.target.files && e.target.files.length > 0)) { return;}\n const newFiles : FileList = e.target.files;\n if(inputCallback) {\n inputCallback(newFiles);\n }\n e.target.value = '';\n },[inputCallback]);\n\n const forwardClick = useCallback(() => {\n if(fileInputRef.current) {\n fileInputRef.current.click();\n }\n },[]);\n\n return(\n <Container>\n <HiddenInput\n {...props}\n ref={fileInputRef}\n type='file'\n onChange={handleFile}\n />\n <StyledButton\n onClick={forwardClick}\n design={buttonDesign}\n size={buttonSize}\n >{text}\n </StyledButton>\n </Container>\n );\n};\n\nexport default InputFileButton;","import React, {useState, useCallback} from 'react';\nimport styled from 'styled-components';\nimport {ITimeUnit} from '../../index';\nimport SliderInput, {ISlider} from '../atoms/SliderInput';\nimport {getShortTextTimeUnit, isTimeUnit} from '../../helpers';\nimport Label from '../atoms/Label';\n\n\n/**\n * This component relies in the slider for validations\n * Since the theme of this component is time unit values\n * Marks could also be handle by it.\n * Providing quantity of marks and generating the marks array based with unit\n */\n\nconst Container = styled.div``;\nconst Headers = styled.div`\n font-size: 14px;\n color: var(--grey-10);\n display: flex;\n justify-content: space-between;\n margin-bottom: 30px;\n padding: 0 6px;\n`;\n\nconst ValueLabel = styled(Label)`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n margin-bottom: 0;\n`;\n\nconst Unit = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: var(--grey-a11);\n font-style: italic;\n font-size: 12px;\n line-height: 1.5;\n`;\n\nconst ValueTitle = styled.div`\n display: flex;\n`;\n\ninterface IDurationSliderProps {\n title: string\n timeUnit: ITimeUnit | string\n controlledValue?: number\n}\n\ntype IDurationSlider = IDurationSliderProps & ISlider;\n\nconst DurationSlider: React.FC<IDurationSlider> = (\n {\n max,\n min,\n defaultValue=0,\n title='',\n timeUnit,\n controlledValue,\n inputCallback,\n ...props\n }\n ) => {\n\n const [selectedValue, setSelectedValue] = useState(defaultValue);\n\n const handleSelectedValue = useCallback((value: number) => {\n if(inputCallback) {\n inputCallback(value);\n }\n setSelectedValue(value);\n },[inputCallback]);\n\n const labelValue = controlledValue ? controlledValue : selectedValue;\n const unit = isTimeUnit(timeUnit) ? getShortTextTimeUnit(labelValue, timeUnit) : timeUnit;\n\n return(\n <Container>\n <Headers>\n <Label htmlFor='duration-slider' labelText={title} />\n <ValueTitle>\n <ValueLabel htmlFor='duration-slider' labelText={`${labelValue}`} />\n <Unit>{unit}</Unit>\n </ValueTitle>\n </Headers>\n <SliderInput\n {\n ...props}\n id='duration-slider'\n max={max}\n min={min}\n defaultValue={defaultValue}\n onChangeCallback={handleSelectedValue}\n />\n </Container>\n );\n};\n\nexport default DurationSlider;","import React, {InputHTMLAttributes, useState, useCallback} from 'react';\nimport styled from 'styled-components';\nimport SliderInput, {ISliderMark} from '../atoms/SliderInput';\nimport {IFeedbackColor} from '../../index';\nimport Label from '../atoms/Label';\n\n\nconst Container = styled.div``;\nconst Headers = styled.div`\n font-size: 14px;\n color: var(--grey-10);\n display: flex;\n justify-content: space-between;\n margin-bottom: 20px;\n padding: 0 6px;\n`;\n\nconst ValueTitle = styled(Label)`\n font-family: ${({ theme }) => theme.fontFamily.data};\n`;\n\nconst getThumbColor = (value: number) : IFeedbackColor => {\n if(value <= 10) {\n return 'error';\n }\n\n if((value > 10) && (value <= 30)) {\n return 'warning';\n }\n\n return 'success';\n};\n\nconst getTitleLevel = (value: number) : string => {\n if(value <= 10) {\n return 'Critical Level';\n }\n\n if((value > 10) && (value <= 30)) {\n return 'Warning Level';\n }\n\n return 'Safe Level';\n};\n\n\ninterface IPercentageSliderProps {\n step?: number\n marks?: ISliderMark[]\n defaultValue?: number\n value?: number\n inputCallback?: (value: number) => void\n updateThumbColor?: (value: number) => IFeedbackColor\n updateTitle?: (value: number) => string\n}\n\ntype IPercentageSlider = IPercentageSliderProps & InputHTMLAttributes<HTMLInputElement>;\n\nconst PercentageSlider: React.FC<IPercentageSlider> = (\n {\n defaultValue=0,\n // title='',\n inputCallback,\n updateThumbColor,\n updateTitle,\n ...props\n }\n ) => {\n const [selectedValue, setSelectedValue] = useState(defaultValue);\n\n const handleSelectedValue = useCallback((value: number) => {\n if(inputCallback) {\n inputCallback(value);\n }\n setSelectedValue(value);\n },[inputCallback]);\n\n return(\n <Container>\n <Headers>\n <Label\n htmlFor='percentage-slider'\n labelText={updateTitle ? updateTitle(selectedValue) : getTitleLevel(selectedValue)}\n />\n <ValueTitle htmlFor='percentage-slider' labelText={`${selectedValue}%`} />\n </Headers>\n <SliderInput\n {...props}\n id='percentage-slider'\n max={100}\n min={0}\n defaultValue={defaultValue}\n onChangeCallback={handleSelectedValue}\n thumbColor={\n updateThumbColor\n ? updateThumbColor(selectedValue)\n : getThumbColor(selectedValue)\n }\n />\n </Container>\n );\n};\n\nexport default PercentageSlider;","import React, { useState, InputHTMLAttributes } from 'react';\nimport Input from '../atoms/Input';\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\n\ninterface OwnProps {\n name: string;\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\ntype Props = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\n\nconst PasswordField : React.FC<Props> = ({ name, label, fieldState, feedbackMessage, ...props}) => {\n\n const [ showValue, setShowValue ] = useState<boolean>(false);\n const [ actionIcon, setActionIcon ] = useState<string>('PasswordHide');\n\n const actionCallback = () => {\n // Toggle show / hide and replace icon.\n const newValue : boolean = !showValue;\n\n setShowValue(newValue);\n setActionIcon(newValue ? 'PasswordShow' : 'PasswordHide');\n };\n\n return (\n <Label htmlFor={name} labelText={label}>\n <Input type={showValue ? 'text' : 'password'} actionCallback={actionCallback} actionIcon={actionIcon} {...{ name, fieldState, feedbackMessage, ...props}} />\n </Label>)\n ;\n\n};\n\nexport default PasswordField;\n","import React from 'react';\nimport Input, { InputProps } from '../atoms/Input';\nimport Label from '../atoms/Label';\nimport { TypeFieldState } from '..';\n\ninterface OwnProps {\n name: string\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & InputProps\n\n\nconst TextField : React.FC<Props> = ({ name, label, fieldState='default', feedbackMessage, type:_type , ...props }) => {\n return (\n <Label htmlFor={name} labelText={label}>\n <Input type='text' {...{fieldState, feedbackMessage, name, ...props }} />\n </Label>\n );\n};\n\n\nexport default TextField;","import React, { TextareaHTMLAttributes } from 'react';\nimport { TypeFieldState } from '..';\nimport Label from '../atoms/Label';\nimport TextArea from '../atoms/TextArea';\n\ninterface OwnProps {\n name: string\n label: string\n fieldState: TypeFieldState\n feedbackMessage?: string\n}\n\ntype Props = OwnProps & TextareaHTMLAttributes<HTMLTextAreaElement>\n\nconst TextAreaField : React.FC<Props> = ({\n name,\n label,\n fieldState='default',\n feedbackMessage,\n children,\n ...props\n}) => {\n return(\n <Label htmlFor={name} labelText={label}>\n <TextArea {...{ fieldState, feedbackMessage, name, ...props }} />\n </Label>\n );\n};\n\nexport default TextAreaField;","import React, { useState, useCallback} from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div<{height?: string}>`\n ${({height}) => height ? `height: ${height}` : null};\n position: relative;\n`;\n\nconst DragAndDrop = styled.div<{inDropZone: boolean}>`\n border-radius: 5px;\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: ${({inDropZone}) => inDropZone ? `dashed var(--grey-8) 2px` : null};\n`;\n\ninterface IDropArea {\n height?: string\n text?: string\n dropCallback?: (newFiles: FileList) => void\n}\n\nconst DropArea : React.FC<IDropArea> = ({height, text, dropCallback, ...props}) => {\n const [inDropZone, setInDropZone] = useState(false);\n\nconst onDragEnter = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n setInDropZone(true);\n},[]);\n\nconst onDragLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n setInDropZone(false);\n},[]);\n\nconst onDragOver = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n\n},[]);\n\nconst onDrop = useCallback((e ) => {\n e.preventDefault();\n e.stopPropagation();\n if(e.dataTransfer?.files && dropCallback) {\n dropCallback(e.dataTransfer.files);\n }\n setInDropZone(false);\n},[dropCallback]);\n\n return(\n <Container {...{height}} {...props}>\n <DragAndDrop\n {...{\n inDropZone,\n onDragEnter,\n onDragLeave,\n onDrop,\n onDragOver\n }}\n >\n {text}\n </DragAndDrop>\n </Container>\n );\n};\n\nexport default DropArea;","import { clamp } from './index';\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/cursor //\ntype ICursorStyles = (\n 'ne-resize'\n | 'nw-resize'\n | 'n-resize'\n | 'se-resize'\n | 'sw-resize'\n | 's-resize'\n | 'e-resize'\n | 'w-resize'\n | 'move'\n | 'default'\n);\n\nconst updateCursorStyle = (\n left: number,\n top: number,\n width: number,\n height: number,\n clientX: number,\n clientY: number\n): ICursorStyles => {\n let cursorStyle: ICursorStyles = 'default';\n\n if (clientY - top < 5) {\n if (width - (clientX - left) < 5) {\n cursorStyle = 'ne-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'nw-resize';\n } else {\n cursorStyle = 'n-resize';\n }\n } else if (height - (clientY - top) < 5) {\n if (width - (clientX - left) < 5) {\n cursorStyle = 'se-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'sw-resize';\n } else {\n cursorStyle = 's-resize';\n }\n } else if (width - (clientX - left) < 5) {\n cursorStyle = 'e-resize';\n } else if (clientX - left < 5) {\n cursorStyle = 'w-resize';\n } else {\n cursorStyle = 'move';\n }\n\n return cursorStyle;\n};\n\nconst drawImgValues = (img: HTMLImageElement, canvasHeight: number, canvasWidth: number): IDrawArea => {\n\n const scale = Math.min(\n canvasWidth / img.naturalWidth,\n canvasHeight / img.naturalHeight\n );\n\n const width = Math.floor(img.naturalWidth * scale);\n const height = Math.floor(img.naturalHeight * scale);\n const top = 0 + Math.floor((canvasHeight - height) / 2);\n const left = 0 + Math.floor((canvasWidth - width) / 2);\n\n const imageDraw: IDrawArea = {\n left,\n top,\n width,\n height,\n };\n\n return imageDraw;\n};\n\n\nconst calculateAspectSizes = (baseHeight: number, baseWidth: number, aspectRatio: number) => {\n const aspect = aspectRatio ? aspectRatio : 1;\n let height, width;\n\n if (baseWidth > (baseHeight * aspect)) {\n width = Math.floor(baseHeight * aspect);\n height = baseHeight;\n } else {\n width = baseWidth;\n height = Math.floor(baseWidth / aspect);\n }\n\n return {\n height,\n width\n };\n};\n\nconst initialCropValues = (\n cropWidth: number,\n cropHeight: number,\n canvasWidth: number,\n canvasHeight: number,\n imgWidth: number,\n imgHeight: number,\n aspectRatio?: number,\n) => {\n\n let height, width;\n const aspect = aspectRatio ? aspectRatio : 1;\n const minWidth = Math.min(cropWidth, canvasWidth, imgWidth);\n const minHeight = Math.min(cropHeight, canvasHeight, imgHeight);\n\n if (minWidth > (minHeight * aspect)) {\n width = Math.floor(minHeight * aspect);\n height = minHeight;\n } else {\n width = minWidth;\n height = Math.floor(minWidth / aspect);\n }\n\n const top = 0 + Math.floor((canvasHeight / 2) - (height / 2));\n const left = 0 + Math.floor((canvasWidth / 2) - (width / 2));\n\n return {\n left,\n top,\n width,\n height,\n };\n};\n\nconst isLeftMouseButton = (e: MouseEvent) => {\n\n let mouseButton;\n if (typeof (e.buttons) !== undefined) {\n mouseButton = e.buttons;\n } else if (typeof (e.button) !== undefined) {\n mouseButton = e.button;\n } else {\n mouseButton = e.which;\n }\n\n if (mouseButton === 1) {\n return true;\n }\n\n return false;\n};\n\ninterface ISelectedArea {\n cropLeft: number\n cropTop: number\n cropWidth: number\n cropHeight: number\n mouseStartX: number\n mouseStartY: number\n imgLeft: number\n imgTop: number\n imgWidth: number\n imgHeight: number\n cursorStart: ICursorStyles\n isResizing: boolean\n}\n\nconst updateCropValues = (\n oldSelection: ISelectedArea,\n newX: number,\n newY: number,\n) => {\n\n let [updatedLeft, updatedTop, updatedWidth, updatedHeight] =\n [oldSelection.cropLeft, oldSelection.cropTop, oldSelection.cropWidth, oldSelection.cropHeight];\n\n const diffX = newX - oldSelection.mouseStartX;\n const diffY = newY - oldSelection.mouseStartY;\n\n switch (oldSelection.cursorStart) {\n case 'ne-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = oldSelection.cropWidth + diffX;\n\n break;\n\n case 'nw-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 'n-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n break;\n\n case 'se-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = oldSelection.cropWidth + diffX;\n break;\n\n case 'sw-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 's-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n break;\n\n case 'e-resize':\n updatedWidth = oldSelection.cropWidth + diffX;\n break;\n\n case 'w-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedWidth = oldSelection.cropWidth - diffX;\n break;\n\n case 'move':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n break;\n\n default:\n break;\n }\n\n const width = clamp(updatedWidth, 0, oldSelection.imgWidth);\n const height = clamp(updatedHeight, 0, oldSelection.imgHeight);\n const left = clamp(updatedLeft, oldSelection.imgLeft, (oldSelection.imgWidth - oldSelection.cropWidth + oldSelection.imgLeft));\n const top = clamp(updatedTop, oldSelection.imgTop, (oldSelection.imgHeight - oldSelection.cropHeight + oldSelection.imgTop));\n\n const isUpdateRequired = areDimensionsDiff(oldSelection, {left, top, height, width});\n\n return {\n left,\n top,\n width,\n height,\n isUpdateRequired,\n };\n};\n\nconst updateCropWithAspect = (\n oldSelection: ISelectedArea,\n newX: number,\n newY: number,\n aspectRatio?: number,\n) => {\n\n const aspect = aspectRatio ? aspectRatio : 1;\n let [updatedLeft, updatedTop, updatedWidth, updatedHeight] =\n [oldSelection.cropLeft, oldSelection.cropTop, oldSelection.cropWidth, oldSelection.cropHeight];\n\n const diffX = newX - oldSelection.mouseStartX;\n const diffY = newY - oldSelection.mouseStartY;\n\n switch (oldSelection.cursorStart) {\n case 'ne-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n\n break;\n\n case 'nw-resize':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + (diffY * aspect);\n updatedHeight = oldSelection.cropHeight - diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n break;\n\n case 'se-resize':\n updatedHeight = oldSelection.cropHeight + diffY;\n updatedWidth = Math.floor(updatedHeight * aspect);\n break;\n\n case 'sw-resize':\n updatedLeft = oldSelection.cropLeft + diffX;\n updatedWidth = oldSelection.cropWidth - diffX;\n updatedHeight = Math.floor(updatedWidth / aspect);\n break;\n\n case 'move':\n updatedTop = oldSelection.cropTop + diffY;\n updatedLeft = oldSelection.cropLeft + diffX;\n break;\n\n default:\n break;\n }\n\n /**img values only change if the image is updated */\n\n const imgBoundLeft = clamp(updatedLeft, oldSelection.imgLeft, (oldSelection.imgWidth - oldSelection.cropWidth + oldSelection.imgLeft));\n const imgBoundTop = clamp(updatedTop, oldSelection.imgTop, (oldSelection.imgHeight - oldSelection.cropHeight + oldSelection.imgTop));\n const imgBoundWidth = clamp(updatedWidth, 0, oldSelection.imgWidth);\n const imgBoundHeight = clamp(updatedHeight, 0, oldSelection.imgHeight);\n\n\n let left = imgBoundLeft;\n let top = imgBoundTop;\n let width = imgBoundWidth;\n let height = imgBoundHeight;\n\n if ((oldSelection.cursorStart !== 'move') && (imgBoundWidth === oldSelection.imgWidth)) {\n height = oldSelection.cropHeight;\n top = oldSelection.cropTop;\n }\n\n if ((oldSelection.cursorStart !== 'move') && (imgBoundHeight === oldSelection.imgHeight)) {\n width = oldSelection.cropWidth;\n left = oldSelection.cropLeft;\n }\n\n const isUpdateRequired = areDimensionsDiff(oldSelection, {left, top, height, width});\n\n return {\n left,\n top,\n width,\n height,\n isUpdateRequired,\n };\n};\n\ninterface IDrawArea {\n left: number\n top: number\n width: number\n height: number\n}\n\nconst areDimensionsDiff = (oldDimensions: ISelectedArea, newValues: IDrawArea) => {\n let isDifferent = false;\n\n if(oldDimensions.cropLeft !== newValues.left) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropTop !== newValues.top) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropHeight !== newValues.height) {\n isDifferent = true;\n }\n\n if(oldDimensions.cropWidth !== newValues.width) {\n isDifferent = true;\n }\n\n return isDifferent;\n};\n\nexport type {\n ICursorStyles,\n IDrawArea,\n ISelectedArea,\n};\n\nexport {\n initialCropValues,\n drawImgValues,\n updateCursorStyle,\n isLeftMouseButton,\n updateCropValues,\n updateCropWithAspect,\n calculateAspectSizes,\n};","import React, { Fragment } from 'react';\nimport styled, { css } from 'styled-components';\n\nconst CropLineStyle = css`\n position: absolute;\n display: block;\n opacity: 0.1;\n`;\nconst TopLine = styled.div`\n ${CropLineStyle};\n cursor: n-resize;\n width: 100%;\n height: 5px;\n left: 0;\n top: -3px;\n`;\n\nconst RightLine = styled.div`\n ${CropLineStyle};\n cursor: e-resize;\n right: -3px;\n top: 0;\n width: 5px;\n height: 100%;\n`;\n\nconst BottomLine = styled.div`\n ${CropLineStyle}\n cursor: s-resize;\n bottom: -3px;\n height: 5px;\n width: 100%;\n left: 0;\n`;\n\nconst LeftLine = styled.div`\n ${CropLineStyle};\n cursor: w-resize;\n left: -3px;\n top: 0;\n width: 5px;\n height: 100%;\n`;\n\nconst resizeSquaresCss = css`\n position: absolute;\n width: 10px;\n height: 10px;\n border: solid 1px var(--black-a12);\n background-color: var(--white-1);\n`;\n\nconst PointN = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n margin-left: -5px;\n left: 50%;\n ${({ isResizable }) => isResizable && css`\n cursor: n-resize;\n `};\n`;\nconst PointNW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: nw-resize;\n `};\n`;\n\nconst PointNE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n top: -5px;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: ne-resize;\n `};\n`;\nconst PointE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n margin-top: -5px;\n top: 50%;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: e-resize;\n `};\n`;\nconst PointSE = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n right: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: se-resize;\n `};\n`;\nconst PointS = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: s-resize;\n `};\n`;\nconst PointSW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n bottom: -5px;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: sw-resize;\n `};\n`;\nconst PointW = styled.div<{ isResizable: boolean }>`\n ${resizeSquaresCss};\n margin-top: -5px;\n top: 50%;\n left: -5px;\n ${({ isResizable }) => isResizable && css`\n cursor: w-resize;\n `};\n`;\n\ninterface ICropArea {\n isResizable: boolean\n hasAspectRatio: boolean\n}\n\nconst CropArea: React.FC<ICropArea> = ({\n isResizable,\n hasAspectRatio\n}) => {\n\n return (\n <Fragment>\n {(isResizable && (!hasAspectRatio)) ? (\n <Fragment>\n {/* This lines are just for cursor css */}\n <TopLine />\n <RightLine />\n <BottomLine />\n <LeftLine />\n </Fragment>)\n : null}\n\n {hasAspectRatio ? null\n : (\n <Fragment>\n <PointN data-point='cursor-n' {...{ isResizable }} />\n <PointE data-point='cursor-e' {...{ isResizable }} />\n <PointS data-point='cursor-s' {...{ isResizable }} />\n <PointW data-point='cursor-w' {...{ isResizable }} />\n </Fragment>\n )}\n\n\n <PointNW data-point='cursor-nw' {...{ isResizable }} />\n <PointNE data-point='cursor-ne' {...{ isResizable }} />\n <PointSE data-point='cursor-se' {...{ isResizable }} />\n <PointSW data-point='cursor-sw' {...{ isResizable }} />\n </Fragment>\n );\n};\n\nexport default CropArea;","import React, { useState, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport ReactDom from 'react-dom';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport Button from '../atoms/Button';\nimport ButtonWithLoading from '../atoms/ButtonWithLoading';\nimport {\n ICursorStyles,\n IDrawArea,\n ISelectedArea,\n updateCursorStyle,\n isLeftMouseButton,\n updateCropValues,\n drawImgValues,\n initialCropValues,\n updateCropWithAspect,\n} from '../../helpers/cropToolHelpers';\nimport { getImageType } from '../../helpers';\nimport CropArea from '../atoms/CropArea';\n\n// TODO: Add throttle or window.requestAnimationFrame()//\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--grey-3);\n -webkit-backdrop-filter: blur(5px);\n backdrop-filter: blur(5px);\n font-family: ${({ theme }) => theme.fontFamily.ui};\n z-index: 999;\n`;\n\nconst InnerContainer = styled.div`\n position: relative;\n z-index: 99;\n`;\n\nconst ToolHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 17px;\n`;\n\nconst TextGroup = styled.div`\n display: flex;\n align-items: center;\n font-size: 20px;\n font-weight: 500;\n color: ${({theme}) => theme.colors.icons.mono};\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n margin-right: 14px;\n }\n`;\n\nconst ButtonsGroup = styled.div`\n button + button {\n margin-left: 10px;\n }\n`;\n\nconst PreviewArea = styled.div<{ canvasHeight?: number, canvasWidth?: number }>`\n position: relative;\n overflow: hidden;\n height: ${({ canvasHeight }) => canvasHeight ? `${canvasHeight}px` : `462px`};\n width: ${({ canvasWidth }) => canvasWidth ? `${canvasWidth}px` : `485px`};\n border-radius: 5px;\n background-color: var(--grey-3);\n background-image: repeating-linear-gradient(45deg, transparent, transparent 35px, var(--white-a10) 35px, var(--white-a10) 70px);\n`;\n\nconst HiddenImage = styled.img`\n display: none;\n`;\n\nconst SelectedArea = styled.div<{ cropLeft: number, cropTop: number, cropWidth: number, cropHeight: number }>`\n position: absolute;\n border: dashed 1px var(--black-a12);\n box-shadow: 0 0 0 9999em var(--black-a11);\n ${({ cropLeft, cropTop, cropWidth, cropHeight }) => css`\n top: ${cropTop}px;\n left: ${cropLeft}px;\n width: ${cropWidth}px;\n height: ${cropHeight}px;\n `};\n cursor: move;\n`;\n\nconst viewDimensions: ISelectedArea = {\n cropLeft: 0,\n cropTop: 0,\n cropWidth: 350,\n cropHeight: 300,\n mouseStartX: 0,\n mouseStartY: 0,\n imgLeft: 0,\n imgTop: 0,\n imgWidth: 400,\n imgHeight: 400,\n cursorStart: 'default',\n isResizing: false,\n};\n\ninterface ICrop {\n title?: string\n cancelBtnTxt?: string\n cropBtnTxt?: string\n imgUrl: string\n isResizable?: boolean\n cropHeight?: number\n cropWidth?: number\n canvasHeight: number\n canvasWidth: number\n aspectRatio?: number\n onCrop?: (newFileUrl: string, fileType: string) => void\n onClose?: () => void\n onError?: (msg: string) => void\n}\n\nconst CropTool: React.FC<ICrop> = ({\n title = 'Crop Image',\n cancelBtnTxt = 'Cancel',\n cropBtnTxt = 'Crop & Save',\n isResizable = true,\n cropHeight = 300,\n cropWidth = 350,\n canvasHeight = 400,\n canvasWidth = 450,\n aspectRatio,\n imgUrl,\n onCrop,\n onClose = () => { },\n onError = () => { }\n}) => {\n\n const [isLoading, setIsLoading] = useState(false);\n const [_loadDimensions, setLoadDimensions] = useState(viewDimensions);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const cropRef = useRef<HTMLDivElement | null>(null);\n\n const drawImgOnCanvas = useCallback(() => {\n if (!canvasRef || !imgRef) { return; }\n const newImage = imgRef.current;\n if (!newImage) {\n onError('error loading image');\n return;\n }\n const canvas = canvasRef.current;\n if (!canvas) {\n onError('error loading canvas');\n return;\n }\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n onError('error drawing image');\n return;\n }\n\n const newImgDraw = drawImgValues(newImage, canvasHeight, canvasWidth);\n ctx?.drawImage(newImage, newImgDraw.left, newImgDraw.top, newImgDraw.width, newImgDraw.height);\n const newCrop: IDrawArea = initialCropValues(\n cropWidth,\n cropHeight,\n canvasWidth,\n canvasHeight,\n newImgDraw.width,\n newImgDraw.height,\n aspectRatio\n );\n // triggers a render to repaint canvas\n setLoadDimensions((prevState) =>\n ({\n ...prevState,\n cropLeft: newCrop.left,\n cropTop: newCrop.top,\n cropWidth: newCrop.width,\n cropHeight: newCrop.height,\n imgLeft: newImgDraw.left,\n imgTop: newImgDraw.top,\n imgWidth: newImgDraw.width,\n imgHeight: newImgDraw.height,\n })\n );\n\n viewDimensions.cropLeft = newCrop.left;\n viewDimensions.cropTop = newCrop.top;\n viewDimensions.cropWidth = newCrop.width;\n viewDimensions.cropHeight = newCrop.height;\n viewDimensions.imgLeft = newImgDraw.left;\n viewDimensions.imgTop = newImgDraw.top;\n viewDimensions.imgWidth = newImgDraw.width;\n viewDimensions.imgHeight = newImgDraw.height;\n viewDimensions.cursorStart = 'default';\n viewDimensions.isResizing = false;\n setIsLoading(false);\n }, [aspectRatio, canvasHeight, canvasWidth, cropHeight, cropWidth, onError]);\n\n // Mouse handlers //\n const handleCrop = useCallback(async (cropArea: IDrawArea) => {\n setIsLoading(true);\n if (!canvasRef || !canvasRef.current || !imgRef) { return; }\n\n const newImage = imgRef.current;\n if (!newImage) { return; }\n\n const canvas = canvasRef.current;\n if (!canvas) { return; }\n\n const ctx = canvas.getContext(\"2d\");\n // ctx.imageSmoothingEnabled = false; </// not sure required\n const cropImageData = ctx?.getImageData(cropArea.left, cropArea.top, cropArea.width, cropArea.height);\n if (!cropImageData) { return; }\n\n const canvasCropped = document.createElement('canvas');\n const cropContext = canvasCropped.getContext('2d');\n canvasCropped.width = cropArea.width;\n canvasCropped.height = cropArea.height;\n\n cropContext?.putImageData(cropImageData, 0, 0);\n const imgType = getImageType(newImage);\n const newImgUrl = canvasCropped.toDataURL(imgType);\n if (onCrop) {\n onCrop(newImgUrl, imgType);\n }\n }, [onCrop]);\n\n const handleMouseDown = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!cropRef) { return; }\n if (!isLeftMouseButton(e)) { return; }\n\n const rect = cropRef.current?.getBoundingClientRect();\n if (!rect) { return; }\n const { left, top, width, height } = rect;\n const [posX, posY] = [e.clientX, e.clientY];\n let newCursorStyle: ICursorStyles;\n if (!isResizable) {\n newCursorStyle = 'move';\n } else {\n newCursorStyle = updateCursorStyle(left, top, width, height, posX, posY);\n }\n\n viewDimensions.mouseStartX = posX;\n viewDimensions.mouseStartY = posY;\n viewDimensions.cursorStart = newCursorStyle;\n viewDimensions.isResizing = true;\n }, [isResizable]);\n\n const handleMouseUp = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!viewDimensions.isResizing) { return; }\n viewDimensions.isResizing = false;\n }, []);\n\n const updateSelect = useCallback((left, top, width, height) => {\n if (!cropRef.current) { return; }\n cropRef.current.style.left = `${left}px`;\n cropRef.current.style.top = `${top}px`;\n cropRef.current.style.width = `${width}px`;\n cropRef.current.style.height = `${height}px`;\n\n }, []);\n\n const handleMouseMove = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!cropRef) { return; }\n if (!viewDimensions.isResizing) { return; }\n\n const rect = cropRef.current?.getBoundingClientRect();\n if (!rect) { return; }\n\n const [posX, posY] = [e.clientX, e.clientY];\n const newDimensions = aspectRatio\n ? updateCropWithAspect(viewDimensions, posX, posY, aspectRatio)\n : updateCropValues(viewDimensions, posX, posY);\n\n if (!newDimensions.isUpdateRequired) { return; }\n\n viewDimensions.cropTop = newDimensions.top;\n viewDimensions.cropLeft = newDimensions.left;\n viewDimensions.cropWidth = newDimensions.width;\n viewDimensions.cropHeight = newDimensions.height;\n viewDimensions.mouseStartX = posX;\n viewDimensions.mouseStartY = posY;\n\n updateSelect(viewDimensions.cropLeft,\n viewDimensions.cropTop,\n viewDimensions.cropWidth,\n viewDimensions.cropHeight);\n\n }, [aspectRatio, updateSelect]);\n\n const handleOnMouseLeave = useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!viewDimensions.isResizing) { return; }\n viewDimensions.isResizing = false;\n }, []);\n //End of Mouse handlers//\n\n return (\n ReactDom.createPortal(\n <Container>\n <InnerContainer>\n <ToolHeader>\n <TextGroup>\n <Icon icon='Crop' size={20} color='mono' />\n {title}\n </TextGroup>\n <ButtonsGroup>\n <Button\n design='secondary'\n size='small'\n onClick={onClose}\n >\n {cancelBtnTxt}\n </Button>\n <ButtonWithLoading\n loading={isLoading}\n size='small'\n onClick={() => handleCrop({\n left: viewDimensions.cropLeft,\n top: viewDimensions.cropTop,\n width: viewDimensions.cropWidth,\n height: viewDimensions.cropHeight\n })}\n > {cropBtnTxt}\n </ButtonWithLoading>\n </ButtonsGroup>\n </ToolHeader>\n <PreviewArea\n canvasHeight={canvasHeight}\n canvasWidth={canvasWidth}\n onMouseUp={handleMouseUp}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleOnMouseLeave}\n >\n <HiddenImage ref={imgRef} src={imgUrl} onLoad={drawImgOnCanvas} crossOrigin='anonymous' />\n <canvas\n ref={canvasRef}\n width={`${canvasWidth}px`}\n height={`${canvasHeight}px`}\n />\n <SelectedArea\n ref={cropRef}\n onMouseDown={handleMouseDown}\n {...{\n cropLeft: viewDimensions.cropLeft,\n cropTop: viewDimensions.cropTop,\n cropWidth: viewDimensions.cropWidth,\n cropHeight: viewDimensions.cropHeight,\n isResizing: viewDimensions.isResizing,\n }}\n >\n <CropArea\n {...{ isResizable }}\n hasAspectRatio={aspectRatio ? true : false}\n />\n </SelectedArea>\n </PreviewArea>\n </InnerContainer>\n </Container>, document.body)\n );\n};\n\nexport default CropTool;","import React, { useState, useCallback, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport InputFileButton from '../atoms/InputFileButton';\nimport ButtonWithIcon from '../atoms/ButtonWithIcon';\nimport DropArea from '../atoms/DropArea';\nimport CropTool from '../molecules/CropTool';\nimport { AvatarPlaceholder } from '../../svg';\nimport Label from '../atoms/Label';\nimport { isValidImage } from '../../helpers';\n\n/** TODO update to useReduce for better state management*/\n\nconst CROP_HEIGHT_AREA = 500;\nconst CROP_WIDTH_AREA = 475;\nconst CANVAS_HEIGHT = 490;\nconst CANVAS_WIDTH = 460;\n\n// 0.95\nconst ratio = Math.round((CROP_WIDTH_AREA / CROP_HEIGHT_AREA) * 100) / 100;\n\nconst PHOTO_HEIGHT = `150px`;\nconst PHOTO_WIDTH = `142px`;\n\nconst Container = styled.div`\n position: relative;\n width: ${PHOTO_WIDTH};\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n button {\n width: 100%;\n }\n`;\n\nconst PreviewImageGroup = styled.div`\n position: relative;\n margin-bottom: 17px;\n height: ${PHOTO_HEIGHT};\n width: ${PHOTO_WIDTH};\n`;\n\nconst PhotoContainerStyle = css`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n background-color: var(--grey-5);\n`;\nconst PreviewImage = styled.img`\n ${PhotoContainerStyle}\n object-fit: cover;\n`;\n\nconst PlaceholderText = styled.div`\n color: var(--grey-10);\n font-size: 14px;\n`;\n\nconst NoPhoto = styled.div`\n ${PhotoContainerStyle}\n padding-top: 15px;\n ${PlaceholderText} {\n margin-top: 18px;\n }\n`;\n\nconst StyledInputFileButton = styled(InputFileButton)`\n width: 100%;\n`;\n\nconst ButtonsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n button {\n margin-bottom: 10px;\n }\n\n`;\n\ninterface IAvatar {\n title?: string\n photoText?: string\n buttonText?: string\n buttonTextReplace?: string\n cropToolTitle?: string\n cropToolCancelTxt?: string\n cropToolConfirmTxt?: string\n uploaderCropText?: string\n deletePhotoText?: string\n currentImg?: string\n hasCrop?: boolean\n onAvatarUpdate?: (imgFile: File) => void\n onError?: (msg: string) => void\n onRemove?: () => void\n}\n\nconst AvatarUploader: React.FC<IAvatar> = ({\n title = 'Photograph',\n photoText = 'Drop Photo',\n buttonText = 'Select File',\n buttonTextReplace = 'Replace Photo',\n uploaderCropText = 'Crop Image',\n deletePhotoText = 'Remove',\n cropToolTitle,\n cropToolCancelTxt,\n cropToolConfirmTxt,\n currentImg,\n hasCrop = true,\n onAvatarUpdate = () => { },\n onError = () => { },\n onRemove = () => { }\n}) => {\n\n const [avatarImg, setAvatarImg] = useState(currentImg);\n const [cropImg, setCropImg] = useState('');\n const [isCropOpen, setIsCropOpen] = useState(false);\n\n const handleCrop = useCallback(async (newFileUrl: string, fileType: string) => {\n setAvatarImg(newFileUrl);\n const newFile = await fetch(\n newFileUrl).then(r => r.blob()).then(blobFile => new File([blobFile], \"newAvatar\", { type: fileType })\n );\n\n onAvatarUpdate(newFile);\n\n setIsCropOpen(false);\n }, [onAvatarUpdate]);\n\n const handleCropClose = useCallback(() => {\n setIsCropOpen(false);\n setCropImg('');\n URL.revokeObjectURL(cropImg);\n }, [cropImg]);\n\n const handleFileUpload = useCallback((newFiles: FileList) => {\n if (newFiles.length === 1) {\n if (!isValidImage(newFiles[0])) {\n onError('Please upload only jpeg and png file');\n return;\n }\n const prevImg = URL.createObjectURL(newFiles[0]);\n\n if (hasCrop) {\n setCropImg(prevImg);\n setIsCropOpen(true);\n } else {\n onAvatarUpdate(newFiles[0]);\n setAvatarImg(prevImg);\n }\n\n } else {\n onError('Drop only one file');\n }\n }, [hasCrop, onError, onAvatarUpdate]);\n\n const handleEdit = useCallback((fileUrl: string) => {\n setCropImg(fileUrl);\n setIsCropOpen(true);\n }, []);\n\n useEffect(() => {\n setAvatarImg(currentImg);\n return () => {\n setAvatarImg('');\n };\n }, [currentImg]);\n\n const handleRemove = useCallback(() => {\n setAvatarImg('');\n onRemove();\n }, [onRemove]);\n\n return (\n <Container>\n <Label labelText={title} htmlFor='avatar-upload' />\n <PreviewImageGroup>\n {avatarImg\n ? <PreviewImage src={avatarImg} alt='avatar image' crossOrigin='anonymous' />\n : (\n <NoPhoto>\n <AvatarPlaceholder />\n <PlaceholderText>{photoText}</PlaceholderText>\n </NoPhoto>\n )}\n {((currentImg && (!hasCrop)) || !currentImg) && <DropArea height={PHOTO_HEIGHT} dropCallback={handleFileUpload} />}\n </PreviewImageGroup>\n {avatarImg\n ? (\n <ButtonsWrapper>\n {hasCrop\n ? <ButtonWithIcon icon='Crop' design='secondary' position='left' size='small' onClick={() => handleEdit(avatarImg)}>{uploaderCropText}</ButtonWithIcon>\n : <StyledInputFileButton\n id='avatar-upload'\n text={buttonTextReplace}\n buttonSize='small'\n buttonDesign='secondary'\n accept='image/*'\n inputCallback={handleFileUpload}\n />}\n <ButtonWithIcon icon='Delete' design='secondary' position='left' size='small' onClick={handleRemove}>{deletePhotoText}</ButtonWithIcon>\n </ButtonsWrapper>\n )\n : <StyledInputFileButton\n id='avatar-upload'\n text={buttonText}\n buttonSize='small'\n accept='image/*'\n inputCallback={handleFileUpload}\n />}\n {isCropOpen && hasCrop\n ? <CropTool\n imgUrl={cropImg}\n onCrop={handleCrop}\n onClose={handleCropClose}\n onError={onError}\n canvasHeight={CANVAS_HEIGHT}\n canvasWidth={CANVAS_WIDTH}\n cropHeight={CROP_WIDTH_AREA}\n cropWidth={CROP_HEIGHT_AREA}\n aspectRatio={ratio}\n title={cropToolTitle}\n cancelBtnTxt={cropToolCancelTxt}\n cropBtnTxt={cropToolConfirmTxt}\n isResizable\n />\n : null}\n </Container>\n );\n};\n\nexport default AvatarUploader;","import React, {Fragment} from 'react';\nimport styled from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 27px;\n ${IconWrapper} {\n display: flex;\n align-items: center;\n }\n`;\n\nconst PlusIcon = styled(Icon)``;\n\nconst PlusIconWrapper = styled.div`\n margin: 0 30px;\n ${IconWrapper}{\n transform: rotate(45deg);\n [stroke]{\n stroke: var(--primary-7);\n }\n }\n`;\n\ninterface IBigIconsSummary {\n icons: string[]\n color?: ISvgIcons['color']\n size?: number,\n weight?: 'light' | 'regular' | 'heavy' | 'strong'\n}\n\nconst BigIconsSummary: React.FC<IBigIconsSummary> = ({\n icons,\n color = 'dimmed',\n size = 72,\n weight='light',\n ...props\n}) => {\n return (\n <Container {...props}>\n {icons.map((icon, index) => {\n return (\n <Fragment key={`type-upload-${icon}}`}>\n {(index !== 0) && <PlusIconWrapper><PlusIcon icon='CloseCompact' size={22} /></PlusIconWrapper>}\n <Icon icon={icon} {...{color, size, weight}} />\n </Fragment>\n );\n })}\n </Container>\n );\n};\n\nexport default BigIconsSummary;","import React, { Fragment, ReactElement, useCallback, useState } from 'react';\nimport styled from 'styled-components';\nimport BigIconsSummary from '../../Misc/atoms/BigIconsSummary';\nimport DropArea from '../atoms/DropArea';\nimport InputFileButton from '../atoms/InputFileButton';\n\nconst Container = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n`;\n\nconst StyledDropArea = styled(DropArea)`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n`;\n\nconst InputButtonWrapper = styled.div`\n z-index: 99;\n margin-top: 20px;\n`;\n\nconst FilesUploadGroup = styled.div<{ height?: string, hasFiles: boolean }>`\n padding: ${({ hasFiles }) => hasFiles ? '26px 0 20px 0' : '65px 0 42px 0'};\n display: flex;\n flex-direction: column;\n align-items: center;\n border-radius: 5px;\n position: relative;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst Title = styled.div`\n color: var(--grey-11);\n font-size: 20px;\n`;\n\nconst Description = styled.div`\n font-size: 14px;\n line-height: 2.14;\n text-align: center;\n color: var(--grey-10);\n margin-top: 10px;\n max-width: 386px;\n`;\n\nconst getUpdateFiles = (newFiles: FileList, files: FileList | null, allowedFileTypes?: string[]): IUploadedFiles => {\n\n // creates a newFiles variable to prevent errors with input\n const newFilesTransfer = new DataTransfer();\n const rejectedFilesTransfer = new DataTransfer();\n\n for (let index = 0; index < newFiles.length; index++) {\n\n const isCorrectType = (allowedFileTypes === undefined) || (allowedFileTypes.length === 0) ? true : allowedFileTypes.includes(newFiles[index].type);\n if (isCorrectType) {\n newFilesTransfer.items.add(newFiles[index]);\n } else {\n rejectedFilesTransfer.items.add(newFiles[index]);\n }\n }\n\n if (files === null) {\n const result: IUploadedFiles = { goodFiles: newFilesTransfer.files, rejectedFiles: rejectedFilesTransfer.files };\n return result;\n }\n\n const updatedFilesTransfer = new DataTransfer();\n const fileNamesSet = new Set();\n\n for (let index = 0; index < files.length; index++) {\n updatedFilesTransfer.items.add(files[index]);\n const name = files[index].name;\n fileNamesSet.add(name);\n }\n\n for (let index = 0; index < newFilesTransfer.files.length; index++) {\n\n const isAlready = fileNamesSet.has(newFilesTransfer.files[index].name);\n const isCorrectType = (allowedFileTypes === undefined) || (allowedFileTypes.length === 0) ? true : allowedFileTypes.includes(newFiles[index].type);\n\n if (isAlready || !isCorrectType) {\n rejectedFilesTransfer.items.add(newFiles[index]);\n } else {\n updatedFilesTransfer.items.add(newFilesTransfer.files[index]);\n }\n }\n const result: IUploadedFiles = { goodFiles: updatedFilesTransfer.files, rejectedFiles: rejectedFilesTransfer.files };\n\n return result;\n};\n\ninterface IUploadedFiles {\n goodFiles: FileList\n rejectedFiles: FileList\n}\n\ninterface IAreaUploaderManager {\n title?: string\n description?: string\n fileIcons?: string[]\n selectFilesText?: string\n addMoreFilesText?: string\n allowedFileTypes?: string[]\n customComponent?: ReactElement\n onChangeCallback?: (goodFiles: FileList, rejectedFiles: FileList) => void\n}\n\nconst AreaUploadManager: React.FC<IAreaUploaderManager> = ({\n title = 'Select Files',\n description,\n fileIcons,\n selectFilesText = 'Select Files',\n addMoreFilesText = 'Add More Files',\n allowedFileTypes,\n customComponent,\n onChangeCallback = () => { },\n}) => {\n\n const [files, setFiles] = useState<FileList | null>(null);\n\n const handleFiles = useCallback((newFiles: FileList) => {\n console.log('files received', newFiles);\n\n if (newFiles === null) {\n return;\n }\n const { goodFiles, rejectedFiles } = getUpdateFiles(newFiles, files, allowedFileTypes);\n setFiles(goodFiles);\n onChangeCallback(goodFiles, rejectedFiles);\n\n }, [files, allowedFileTypes, onChangeCallback]);\n\n return (\n <Container>\n <FilesUploadGroup hasFiles={files !== null}>\n <StyledDropArea dropCallback={handleFiles} />\n {\n customComponent\n ? customComponent\n : (\n <Fragment>\n {fileIcons && <BigIconsSummary icons={fileIcons} />}\n <Title>{title}</Title>\n {files === null && <Description>{description}</Description>}\n </Fragment>\n )\n }\n\n <InputButtonWrapper>\n <InputFileButton\n buttonSize='small'\n text={files !== null ? addMoreFilesText : selectFilesText}\n inputCallback={handleFiles}\n multiple\n buttonDesign={files !== null ? 'secondary' : 'primary'}\n />\n </InputButtonWrapper>\n </FilesUploadGroup>\n </Container>\n );\n};\n\nexport default AreaUploadManager;","import React, { FormHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { StyledLabel } from './atoms/Label';\n\nconst FormContainer = styled.form<{spacing: string}>`\n ${({spacing})=> spacing && css`\n & > ${StyledLabel} {\n margin-bottom: ${spacing};\n }\n `}\n`;\n\ninterface OwnProps {\n spacing?: string;\n}\n\ntype Props = OwnProps & FormHTMLAttributes<HTMLFormElement>\n\nconst Form : React.FC<Props> = ({ children, spacing = '45px;' ,...props }) => {\n return (\n <FormContainer spacing={spacing} {...props}>\n {children}\n </FormContainer>\n );\n};\n\nexport default Form;","import React, { useCallback, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {endOfDay, format,isEqual,min,set } from 'date-fns';\n\nimport Icon from '../../Icons/Icon';\n\nconst Container = styled.div<{hide:boolean}>`\n display: flex;\n flex-direction: column;\n\n ${({hide}) => hide && css`\n display: none;\n `}\n`;\n\nconst Label = styled.label`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${({theme})=> theme.typography.filters.datepicker.metaHeader.default};\n `}\n padding: 12px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n\n // ${({theme})=> theme.typography.filters.datepicker.metaHeader.active};\n\n`;\n\nconst Item = styled.div`\n padding: 12px;\n display: flex;\n justify-content: left;\n`;\n\nconst IconWrap = styled.div`\n flex: 0 0 40px;\n padding-top: 2px;\n`;\n\nconst Input = styled.input<{ readOnly? : boolean }>`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.data};\n background-color: ${theme.styles.form.input.default.normal.backgroundColor};\n `}\n\n ${({theme})=> theme.typography.filters.value};\n\n width: 100%;\n border: none;\n border: transparent 1px solid;\n outline: none;\n flex: 1;\n justify-content: space-between;\n border-radius: 3px;\n\n &:focus, &:hover {\n border-color: blue;\n }\n\n ${({readOnly}) => readOnly && css`\n border-color: transparent;\n `}\n`;\n\nconst TimeColon = styled.div`\n flex: 0 0 20px;\n`;\n\nconst InputWrap = styled.div`\n display: flex;\n flex: 1;\n box-sizing: border-box;\n border-radius: 3px;\n\n &:focus-within {\n\n background: ${({theme}) => theme.colors.menu.passive};\n box-shadow: 0px 0px 0px 5px ${({theme}) => theme.colors.menu.passive};\n\n ${Input} {\n border-color: ${({theme}) => theme.colors.divider};\n }\n\n ${TimeColon}{\n color: ${({theme}) => theme.colors.pureTop};\n text-align: center;\n }\n }\n`;\n\n\n\ninterface IProps {\n title: string\n hasDate: boolean\n hasTime: boolean\n date?: Date\n setDateCallback?: (date: Date) => void\n setTimeCallback?: (date: Date) => void\n allowAfterMidnight?: boolean,\n}\n\nconst DateTimeBlock : React.FC<IProps> = ({\n allowAfterMidnight = false,\n title,\n hasDate,\n hasTime,\n date = new Date(),\n setDateCallback = ()=>{},\n}) => {\n\n\n const [displayHours, setDisplayHours] = useState<string>(format(date, \"mm\"));\n const [displayMinutes, setDisplayMinutes] = useState<string>(format(date,'HH'));\n\n const setDateHours = useCallback(({target: {value}}: React.ChangeEvent<HTMLInputElement>) => {\n setDateCallback(\n min([\n endOfDay(date),\n set(date, {\n hours: Number(value),\n minutes: Number(displayMinutes),\n seconds: 0,\n milliseconds: 0\n })\n ])\n );\n }, [date, displayMinutes, setDateCallback]);\n\n const setDateMinutes = useCallback(({target: {value}}: React.ChangeEvent<HTMLInputElement>) => {\n setDateCallback(\n min([\n endOfDay(date),\n set(date, {\n hours: displayHours === '24' ? 23 : Number(displayHours),\n minutes: Number(value) % 60,\n seconds: 0,\n milliseconds: 0\n })\n ])\n );\n }, [date, displayHours, setDateCallback]);\n\n useEffect(()=>{\n if(allowAfterMidnight && isEqual(date, endOfDay(date))){\n setDisplayHours('24');\n setDisplayMinutes('00');\n } else {\n setDisplayMinutes(format(date, 'mm'));\n setDisplayHours(format(date,'HH'));\n }\n },[date, allowAfterMidnight]);\n\n return (\n <Container hide={!hasDate && !hasTime}>\n <Label>{title}</Label>\n\n {hasDate && (\n <Item>\n <IconWrap>\n <Icon icon='Date' color='dimmed' size={14} weight='light' />\n </IconWrap>\n <InputWrap>\n <Input type='text' readOnly value={format(date, \"yyyy/MM/dd\")} />\n </InputWrap>\n </Item>\n )}\n\n {hasTime && (\n <Item>\n <IconWrap>\n <Icon icon='Time' color='dimmed' size={14} weight='light' />\n </IconWrap>\n <InputWrap>\n <Input name='hours' type='number' min='0' max={allowAfterMidnight ? 24: 23} value={displayHours} onChange={setDateHours} />\n <TimeColon>:</TimeColon>\n <Input name='minutes' type='number' min='0' max='59' value={displayMinutes} onChange={setDateMinutes} />\n </InputWrap>\n </Item>\n )}\n\n </Container>\n );\n};\n\n\n\nexport default DateTimeBlock;\n\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon from '../../Icons/Icon';\nimport DateTimeBlock from '../atoms/DateTimeBlock';\n\nimport { format, startOfMonth, endOfMonth, eachDayOfInterval, isAfter, eachWeekOfInterval, addMonths, endOfWeek, intervalToDuration, isSameMonth, isSameDay, isToday, startOfDay, endOfDay, isWithinInterval, add, set } from 'date-fns';\nimport { ja, enUS } from 'date-fns/locale';\n\n/**\n * Convert a single days duration to an interval.\n * @param day The day to convert to an interval\n */\n\nconst initializeInterval = (day: Date): DateInterval => {\n return {\n start: set(day, { seconds: 0, milliseconds: 0 }),\n end: endOfDay(day)\n };\n};\n\nconst TODAY = new Date();\nconst TODAY_INTERVAL: DateInterval = initializeInterval(startOfDay(new Date()));\n\ntype CellStates = \"off\" | \"single\" | \"start\" | \"end\" | \"inside\" | \"hover\" | \"insideHover\";\ntype DateMode = \"single\" | \"interval\";\ntype TimeMode = \"off\" | \"single\" | \"interval\";\n\n// interface TimeProperties {\n// hours: number\n// minutes: number\n// seconds: number\n// milliseconds: number\n// }\n\n// interface TimeRange {\n// start: TimeProperties\n// end: TimeProperties\n// }\n\nconst Container = styled.div`\n display: flex;\n`;\n\nconst DateTimeArea = styled.div`\n border-right: ${({ theme }) => theme.colors.divider} 1px solid;\n width: 170px;\n display: flex;\n flex-direction: column;\n`;\n\nconst TimeZoneOption = styled.div`\n border-top: ${({ theme }) => theme.colors.divider} 1px solid;\n margin-top: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px;\n box-sizing: border-box;\n`;\n\nconst TimeZoneLabel = styled.div`\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.filters.subOption.label};\n `}\n\n`;\nconst TimeZoneValue = styled.div`\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.data};\n ${theme.typography.filters.subOption.value};\n `}\n`;\n\nconst CalendarArea = styled.div`\n user-select: none;\n`;\n\nconst CalendarHeader = styled.div`\n display: flex;\n height: 70px;\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n text-align: center;\n`;\n\nconst CurrentMonth = styled.div`\n flex: 1;\n flex-direction: column;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ theme }) => theme.typography.filters.datepicker.focusedMonth};\n span {\n display: block;\n flex: 0;\n ${({ theme }) => theme.typography.filters.datepicker.focusedYear};\n }\n`;\n\nconst IconWrap = styled.div``;\n\nconst PaginateMonth = styled.button`\n cursor: pointer;\n flex: 0 0 90px;\n\n border: none;\n background: transparent;\n outline: none;\n\n ${({ theme }) => theme.typography.filters.datepicker.monthLink.default};\n\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n &:hover {\n background: transparent;\n ${({ theme }) => css`\n background: ${theme.colors.menu.active};\n ${theme.typography.filters.datepicker.monthLink.hover}\n `};\n\n ${IconWrap}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.pureBase};\n }\n }\n }\n\n`;\n\nconst CalBody = styled.div`\n padding: 5px 0;\n`;\n\nconst CalRow = styled.div`\n display: grid;\n grid-template-columns: repeat(7, 40px);\n height: 40px;\n box-sizing: border-box;\n\n padding: 0 10px;\n`;\n\nconst CalHRow = styled(CalRow)`\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n`;\n\nconst CalCell = styled.div`\n\n display: flex;\n text-align: center;\n justify-content: center;\n align-items: center;\n\n border-radius: 5px;\n ${({ theme }) => theme.typography.filters.datepicker.calendar.default};\n\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.data};\n `}\n\n`;\n\nconst CalHCell = styled(CalCell)`\n ${({ theme }) => theme.typography.filters.datepicker.calendar.header};\n`;\n\nconst CalCellB = styled(CalCell) <{ thisMonth?: boolean, isToday?: boolean, state?: CellStates }>`\n cursor: pointer;\n position: relative;\n\n ${({ thisMonth }) => !thisMonth && css`\n ${({ theme }) => theme.typography.filters.datepicker.calendar.otherMonth};\n `}\n\n ${({ isToday }) => isToday && css`\n border: 2px solid ${({ theme }) => theme.colors.menu.passive};\n `}\n\n ${({ state, theme }) => (state === 'single' || state === 'start' || state === 'end') && css`\n background: ${theme.colors.menu.active};\n ${theme.typography.filters.datepicker.calendar.active};\n `}\n\n ${({ state }) => (state === 'start') && css`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n `}\n\n ${({ state }) => (state === 'end') && css`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n `}\n\n ${({ state }) => (state === 'insideHover') && css`\n background: ${({ theme }) => theme.colors.divider} !important;\n `}\n\n ${({ state }) => (state === 'inside') && css`\n background: ${({ theme }) => theme.colors.menu.passive};\n border-radius: 0;\n opacity: 1;\n\n &:nth-child(7n+1), &:nth-child(7n){\n &::after {\n background: ${({ theme }) => theme.colors.menu.passive};\n display: block;\n content: '';\n position: absolute;\n left: -10px;\n width: 10px;\n top: 0;\n height: 40px;\n }\n }\n\n &:nth-child(7n)::after {\n left: auto;\n right: -10px;\n }\n `}\n\n`;\n\nconst enDayGuide: string[] = [\n \"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"\n];\n\nconst jpDayGuide: string[] = ['日', '月', '火', '水', '木', '金', '土'];\n\nexport const isDateInterval = (value: any): value is DateInterval => {\n if (value === null || value === undefined) {\n return false;\n }\n\n if (value.start === null || value.start === undefined) {\n return false;\n }\n\n if (value.end === null || value.end === undefined) {\n return false;\n }\n\n return (value.start instanceof Date) && (value.end instanceof Date);\n};\n\nexport interface DateInterval {\n start: Date;\n end: Date;\n}\nexport interface IDatePicker {\n initialValue?: Date | DateInterval\n dateMode?: DateMode\n timeMode?: TimeMode\n hasEmptyValue?: boolean\n dateTimeTextUpper?: string\n dateTimeTextLower?: string\n timeZoneTitle?: string\n timeZoneValueTitle?: string\n updateCallback?: (data: DateInterval | Date) => void\n lang?: 'en' | 'ja'\n}\n\nconst DatePicker: React.FC<IDatePicker> = ({\n dateMode = 'interval',\n timeMode = 'interval',\n dateTimeTextUpper = 'From',\n dateTimeTextLower = 'To',\n timeZoneTitle = 'Timezone',\n timeZoneValueTitle = 'JST',\n hasEmptyValue = false,\n updateCallback = () => { },\n initialValue,\n lang = 'en'\n}) => {\n\n // TODO: Have a function to output tidied up data for the configuration.\n\n const [selectedRange, setSelectedRange] = useState<DateInterval | null>(getInitialValue(hasEmptyValue, initialValue));\n const [focusedMonth, setFocusedMonth] = useState(selectedRange === null ? TODAY : selectedRange.start);\n const [targetedDate, setTargetedDate] = useState<'start' | 'end' | 'done'>('start');\n const [weeksOfMonth, setWeeksOfMonth] = useState<Date[]>([]);\n const isInitialMount = useRef(true);\n\n const dayGuide = lang === 'ja' ? jpDayGuide : enDayGuide;\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else {\n const now = new Date();\n setSelectedRange(initializeInterval(startOfDay(now)));\n setFocusedMonth(now);\n }\n\n }, [dateMode, timeMode]);\n\n useEffect(() => {\n setWeeksOfMonth(eachWeekOfInterval({\n start: startOfMonth(focusedMonth),\n end: endOfMonth(focusedMonth)\n }));\n }, [focusedMonth]);\n\n useEffect(() => {\n if (selectedRange !== null) {\n updateCallback((dateMode === 'interval' || timeMode === 'interval') ? selectedRange : selectedRange.start);\n }\n }, [dateMode, selectedRange, timeMode, updateCallback]);\n\n /**\n * Handler for updating picked dates when a calendar day has been selected.\n * @param day The day of the cell that has been clicked / actioned.\n */\n const onCellClick = useCallback((day: Date) => {\n\n // The first click will initialize the range when empty is valid\n const validRange = selectedRange ? selectedRange : TODAY_INTERVAL;\n\n if (dateMode === 'single') {\n\n // === Single Mode ===\n const start = updateDay(validRange.start, day);\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n start,\n end\n });\n } else {\n\n // === Interval Mode ===\n // Setting the interval end (assuming it's later than the start).\n if (targetedDate === 'end' && isAfter(day, validRange.start)) {\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n ...validRange,\n end\n });\n\n setTargetedDate('done');\n\n // For first interaction || setting the end date correctly || if completed and restarting.\n } else if (targetedDate === 'start' || targetedDate === 'end' || targetedDate === 'done') {\n\n const start = updateDay(validRange.start, day);\n const end = updateDay(validRange.end, day);\n setSelectedRange({\n start,\n end\n });\n setTargetedDate('end');\n\n }\n }\n }, [dateMode, selectedRange, targetedDate]);\n\n\n const updateStartDate = useCallback((start: Date) => {\n const { end } = selectedRange ? selectedRange : TODAY_INTERVAL;\n if (isAfter(add(start, { minutes: 1 }), end)) return;\n setSelectedRange({ start, end });\n }, [selectedRange]);\n\n const updateEndDate = useCallback((end: Date) => {\n const { start } = selectedRange ? selectedRange : TODAY_INTERVAL;\n if (isAfter(add(start, { minutes: 1 }), end)) return;\n setSelectedRange({ start, end });\n }, [selectedRange]);\n\n return (\n <Container>\n\n <DateTimeArea>\n <DateTimeBlock title={dateTimeTextUpper} hasDate hasTime={timeMode !== 'off'} date={selectedRange ? selectedRange.start : TODAY_INTERVAL.start} setDateCallback={updateStartDate} />\n <DateTimeBlock title={dateTimeTextLower} hasDate={dateMode === 'interval'} hasTime={timeMode === 'interval'} date={selectedRange ? selectedRange.end : TODAY_INTERVAL.end} allowAfterMidnight setDateCallback={updateEndDate} />\n\n <TimeZoneOption>\n <TimeZoneLabel>{timeZoneTitle}</TimeZoneLabel>\n <TimeZoneValue>{timeZoneValueTitle}</TimeZoneValue>\n </TimeZoneOption>\n\n </DateTimeArea>\n\n <CalendarArea>\n <CalendarHeader>\n\n <PaginateMonth type='button' onClick={() => setFocusedMonth(addMonths(focusedMonth, -1))}>\n <IconWrap><Icon icon='Left' color='dimmed' size={10} /></IconWrap>\n {format(addMonths(focusedMonth, -1), \"MMM\", { locale: lang === 'ja' ? ja : enUS })}\n </PaginateMonth>\n\n <CurrentMonth>\n <span>{format(focusedMonth, \"yyyy\")}</span>\n {format(focusedMonth, \"MMMM\", { locale: lang === 'ja' ? ja : enUS })}\n </CurrentMonth>\n\n <PaginateMonth type='button' onClick={() => setFocusedMonth(addMonths(focusedMonth, 1))}>\n {format(addMonths(focusedMonth, 1), \"MMM\", { locale: lang === 'ja' ? ja : enUS })}\n <IconWrap><Icon icon='Right' color='dimmed' size={10} /></IconWrap>\n </PaginateMonth>\n\n </CalendarHeader>\n\n <CalHRow>\n {dayGuide.map((day, index) => {\n return <CalHCell key={index}>{day}</CalHCell>;\n })}\n </CalHRow>\n\n <CalBody>\n {weeksOfMonth.map((week, index) => {\n const days = eachDayOfInterval({\n start: week,\n end: endOfWeek(week)\n });\n\n return (\n <CalRow key={index}>\n {days.map((day, index) => {\n return <CalCellB key={index} onClick={() => onCellClick(day)} state={cellState(day, selectedRange)} thisMonth={isSameMonth(day, focusedMonth)} isToday={isToday(day)}>{format(day, \"d\")}</CalCellB>;\n })}\n </CalRow>\n );\n })}\n </CalBody>\n\n </CalendarArea>\n\n\n </Container>\n );\n\n};\n\nexport default DatePicker;\n\n/**\n * Used to work out the state of the calendar cell in regards to selection or position in\n * the date range.\n * @param day Date - The date of the cell in the calendar.\n * @param interval Interval - The date range that is active in the calendar.\n */\nconst cellState = (day: Date, interval: Interval | null, _hoverDate?: Date): CellStates => {\n\n let state: CellStates = \"off\";\n let isInsideInterval = false;\n\n if (interval === null) {\n return state;\n }\n\n const singleDayRange: boolean = intervalToDuration(interval).days === 0;\n\n try {\n isInsideInterval = isWithinInterval(day, interval);\n } catch (error) {\n isInsideInterval = false;\n console.log('wrong interval in datepicker', error);\n }\n\n if (isInsideInterval || isSameDay(interval.start, day)) {\n\n if (singleDayRange) {\n state = \"single\";\n } else if (isSameDay(interval.start, day)) {\n state = \"start\";\n } else if (isSameDay(interval.end, day)) {\n state = \"end\";\n } else {\n state = \"inside\";\n }\n }\n\n return state;\n};\n\nconst updateDay = (date: Date, target: Date) => {\n\n const newDate = set(target, {\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n });\n\n return newDate;\n};\n\nconst getInitialValue = (hasEmptyValue: boolean, initialValue?: Date | DateInterval): DateInterval | null => {\n if (hasEmptyValue && initialValue === undefined) {\n return null;\n }\n\n const validInitial = initialValue ? initialValue : initializeInterval(startOfDay(new Date()));\n\n return (validInitial instanceof Date) ? initializeInterval(validInitial) : validInitial;\n};","import React, { HTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div<{ height?: string }>`\n\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n\n border-radius: 3px;\n position: relative;\n display: inline-flex;\n overflow: hidden;\n padding-top: 5px;\n\n &::before {\n ${({theme}) => theme.styles.filters.dropdownContainer.topBorder};\n content: '';\n\n display: block;\n height: 5px;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n }\n\n`;\n\nconst Inner = styled.div`\n display: inline-flex;\n flex-direction: row;\n`;\n\ninterface IProps {\n height?: string\n}\n\ntype Props = IProps & HTMLAttributes<HTMLDivElement>\n\nconst FilterDropdownContainer : React.FC<Props> = ({children,...props}) => {\n return (\n <Container {...props}>\n <Inner>\n {children}\n </Inner>\n </Container>\n );\n};\n\nexport default FilterDropdownContainer;","import React, { ButtonHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { resetButtonStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst FlipWrapper = styled.div<{ isSortAscending: boolean }>`\n ${({ isSortAscending }) => isSortAscending && css`\n transform: scaleY(-1);\n `};\n`;\n\nconst StyledButton = styled.button<{ isOpen?: boolean, hasFlipArrow?: boolean }>`\n ${resetButtonStyles};\n border-radius: 3px;\n height: 30px;\n\n ${({ theme: {styles, typography, animation}, theme }) => theme && css`\n\n ${styles.filters.filterButton.default};\n ${typography.filters.filterButton.default};\n\n font-family: ${theme.fontFamily.ui};\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n\n ${IconWrapper} {\n padding: 0 9px;\n display: flex;\n align-items: center;\n [stroke]{\n stroke: ${theme.colors.icons.dimmed};\n }\n }\n\n &:hover:enabled {\n ${styles.filters.filterButton.hover};\n ${typography.filters.filterButton.hover};\n transition:\n background ${animation.speed.fast} ${animation.easing.primary.inOut},\n border ${animation.speed.fast} ${animation.easing.primary.inOut};\n }\n\n &:active:enabled {\n ${styles.filters.filterButton.active};\n ${typography.filters.filterButton.active};\n }\n\n &:hover:enabled, &:active:enabled {\n ${IconWrapper} {\n [stroke]{\n transition: stroke ${animation.speed.faster} ${animation.easing.primary.inOut};\n stroke: ${theme.colors.pureBase};\n }\n }\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 50%;\n }\n`};\n\n ${({isOpen, hasFlipArrow }) => isOpen && hasFlipArrow && css`\n background-color: var(--primary-7);\n border: solid 1px var(--primary-7);\n color: var(--white-1);\n\n ${IconWrapper} {\n [stroke]{\n stroke: var(--white-1);\n }\n }\n `};\n`;\n\nconst InnerContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ButtonText = styled.div<{ hasFlipArrow: boolean }>`\n padding-right: ${({ hasFlipArrow }) => hasFlipArrow ? '3px' : '20px'};\n`;\n\ninterface OwnProps {\n icon: string\n hasFlipArrow?: boolean\n isSortAscending?: boolean\n isOpen?: boolean\n}\n\ntype IFilterButton = OwnProps & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst FilterButton: React.FC<IFilterButton> = ({\n icon,\n hasFlipArrow = false,\n isSortAscending = false,\n isOpen,\n children,\n ...props\n}) => {\n\n return (\n <StyledButton type='button' {...props} {...{ isOpen, hasFlipArrow }}>\n <InnerContainer>\n <FlipWrapper {...{ isSortAscending }}>\n <Icon\n icon={icon}\n size={12}\n weight='light'\n />\n </FlipWrapper>\n <ButtonText {...{ hasFlipArrow }}>{children}</ButtonText>\n {hasFlipArrow && <Icon icon={isOpen ? 'Up' : 'Down'} size={8} />}\n </InnerContainer>\n </StyledButton>\n );\n};\n\nexport default FilterButton;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { CheckMark } from '../../svg';\nimport { IInputOptionsType } from '..';\nimport { dimensions } from '../../themes/common';\n\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.data};\n display: block;\n color: var(--grey-9);\n font-size: 14px;\n font-weight: 500;\n margin-left: 12px;\n user-select: none;\n pointer-events: none;\n`;\n\nconst FakeCheckbox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: 18px;\n height: 18px;\n border-radius: 5px;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst FakeCheckboxInner = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n box-sizing: border-box;\n`;\n\nconst CheckMarkWrapper = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n display: block;\n [stroke]{\n stroke: transparent;\n }\n [fill] {\n fill: ${({ theme }) => theme.colors.icons.inverse};\n }\n }\n`;\n\nconst FakeRadioButton = styled.div`\n position: relative;\n display: inline-block;\n width: 18px;\n height: 18px;\n user-select: none;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-width: 2px;\n border-style: solid;\n`;\n\nconst FakeInnerRadio = styled.div`\n width: 10px;\n height: 10px;\n border-radius: 50%;\n user-select: none;\n`;\n\nconst Container = styled.div<{ disabled: boolean, selected: boolean }>`\n display: flex;\n align-items: center;\n height: 100%;\n width: 100%;\n\n ${({ theme: { styles }, selected, disabled }) => styles && css`\n ${FakeCheckbox}, ${FakeRadioButton} {\n ${styles.form.checkbox.unchecked.default};\n }\n\n &:hover {\n cursor: pointer;\n ${Title} {\n color: ${styles.form.checkbox.unchecked.hover.borderColor};\n }\n\n ${FakeCheckbox} {\n ${styles.form.checkbox.unchecked.hover};\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.unchecked.hover.borderColor};\n }\n }\n\n ${selected && css`\n ${Title} {\n color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n ${FakeCheckbox} {\n ${styles.form.checkbox.checked.default};\n border: none;\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.checked.default.backgroundColor};\n ${FakeInnerRadio} {\n background-color: ${styles.form.checkbox.checked.default.backgroundColor};\n }\n }\n\n &:hover {\n ${FakeCheckbox}{\n ${styles.form.checkbox.checked.hover};\n }\n\n ${FakeRadioButton} {\n border-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n ${FakeInnerRadio} {\n background-color: ${styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n }\n `};\n\n ${disabled && css`\n cursor: not-allowed;\n `};\n `};\n`;\n\ninterface IFilterOption {\n title: string\n value?: string | number\n optionType?: IInputOptionsType\n selected?: boolean\n disabled?: boolean\n onClick?: () => void\n}\n\nconst FilterOption: React.FC<IFilterOption> = ({\n title,\n value,\n optionType = \"text\",\n selected = false,\n disabled = false,\n onClick = () => { },\n ...props\n}) => {\n\n const iconWeight: number = dimensions.icons.weights['regular'];\n\n return (\n\n <Container\n {...{ onClick, disabled, selected}}\n {...props}\n >\n {(optionType === 'checkbox') && (\n <FakeCheckbox>\n <FakeCheckboxInner>\n {selected && <CheckMarkWrapper><CheckMark color='inverse' stroke='inverse' size={12} weight={iconWeight} /></CheckMarkWrapper>}\n </FakeCheckboxInner>\n </FakeCheckbox>\n )}\n {(optionType === 'radio') && <FakeRadioButton><FakeInnerRadio /></FakeRadioButton>}\n <Title>{title}</Title>\n </Container>\n );\n};\n\nexport default FilterOption;","import React, { InputHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport { removeAutoFillStyle, resetButtonStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div<{ hasBorder: boolean, disabled: boolean, noBackground: boolean, width?: string }>`\n ${({ theme: { styles }, theme, hasBorder, disabled, noBackground, width }) => css`\n ${hasBorder && css`\n border: ${styles.filters.searchInput.default.border};\n box-shadow: ${styles.filters.searchInput.default.boxShadow};\n `};\n\n ${disabled && css`\n opacity: 50%;\n cursor: not-allowed;\n `\n };\n\n ${width && css`\n width: ${width};\n `};\n\n background-color: ${noBackground ? 'transparent' : theme.styles.filters.searchInput.default.backgroundColor};\n\n &:focus-within {\n background-color: ${noBackground ? 'transparent' : styles.filters.searchInput.focused.backgroundColor};\n border: ${noBackground ? 'transparent' : styles.filters.searchInput.focused.border};\n }\n\n `};\n\n ${IconWrapper} {\n flex-shrink: 0;\n display: flex;\n }\n\n height: 30px;\n padding: 0 0 0 8px;\n align-items: center;\n display: flex;\n border-radius: 3px;\n`;\n\nconst CrossButton = styled.button`\n ${resetButtonStyles};\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\n width: 26px;\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst StyledInput = styled.input<{ color: string }>`\n ${removeAutoFillStyle};\n\n ${({ theme: {typography, colors}, theme, color }) => css`\n font-family: ${theme.fontFamily.ui};\n ${typography.filters.searchInput.value};\n\n &::placeholder {\n ${typography.filters.searchInput.placeholder};\n color: ${colors.icons[color]};\n font-size: 12px;\n }\n `};\n\n &:disabled {\n cursor: not-allowed;\n }\n\n font-size: 12px;\n border: none;\n height: 100%;\n width: 100%;\n background-color: transparent;\n box-sizing: border-box;\n border-radius: 3px;\n outline: none;\n margin-left: 7px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n`;\n\ninterface OwnProps {\n color?: 'mono' | 'dimmed' | 'subtle';\n hasBorder?: boolean\n iconSize?: number\n noBackground?: boolean\n width?: string\n hasCrossButton?: boolean\n onCrossClick?: () => void\n}\n\nexport type IBasicSearchInput = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst BasicSearchInput: React.FC<IBasicSearchInput> = ({\n color = 'subtle',\n hasBorder = true,\n iconSize = 12,\n disabled = false,\n noBackground = false,\n hasCrossButton = false,\n onCrossClick = () => {},\n width,\n ...props\n}) => {\n return (\n <Container {...{ hasBorder, disabled, noBackground, width }}>\n <Icon {...{ color }} icon='Search' weight='regular' size={iconSize} />\n <StyledInput\n {...{ color, disabled }}\n {...props}\n />\n {hasCrossButton && <CrossButton onClick={onCrossClick}> <Icon icon='CloseCompact' color='dimmed' size={12} /></CrossButton>}\n </Container>\n );\n};\n\nexport default BasicSearchInput;","import { IInputOptionsType } from '../Form';\nimport { IBasicSearchInput } from '../Misc/atoms/BasicSearchInput';\nimport { DateInterval } from './molecules/DatePicker';\nimport { IDropdownDatePicker } from './molecules/DropdownDatePicker';\nimport { IFilterDropdown } from './molecules/FilterDropdown';\n\ntype IFilterItem = { text: string; value: string | number; }\ntype IFilterValue = IFilterItem | IFilterItem[] | null;\ntype IFilterType = 'search' | 'dropdown' | 'datepicker';\n\n// Type checking for IFilterItem\n// https://stackoverflow.com/questions/14425568/interface-type-check-with-typescript\nconst isFilterItem = (item: any): item is IFilterItem => {\n if (item === null || item === undefined) { return false; }\n\n if (item.value === undefined || item.value === null) {\n return false;\n }\n\n if (item.text === null) {\n return false;\n }\n\n return ((typeof item.value === 'number') || (typeof item.value === 'string')) && (typeof item.text === 'string');\n};\n\ninterface IFilterResult {\n id: string\n type: IFilterType\n selected: IFilterItem | IFilterItem[] | DateInterval | Date | null;\n}\n\ninterface ISearchFilter extends IBasicSearchInput {\n id: string\n canHide?: boolean\n showFieldText?: string\n selected?: IFilterItem\n}\n\ninterface IFilterDropdownExt extends IFilterDropdown {\n id: string\n canHide?: boolean\n}\n\ninterface IFilterDatePicker extends IDropdownDatePicker {\n id: string\n canHide?: boolean\n name?: string\n}\n\ninterface IFilterDropdownConfig {\n id: string\n canHide?: boolean\n buttonIcon: string\n buttonText: string\n list: IFilterItem[];\n selected?: IFilterValue;\n disabled?: boolean\n optionType?: IInputOptionsType\n isLoading?: boolean\n loadingText?: string\n hasOptionsFilter?: boolean\n searchPlaceholder?: string\n maxDisplayedItems?: number\n searchResultText?: string\n name?: string\n}\n\nexport {\n isFilterItem\n};\n\nexport type {\n IFilterType,\n IFilterItem,\n IFilterResult,\n IFilterValue,\n ISearchFilter,\n IFilterDropdownExt,\n IFilterDatePicker,\n IFilterDropdownConfig\n};","import { useEffect, useRef } from 'react';\n\nexport type outClickType = (eve: MouseEvent) => void;\nexport function useClickOutside(elRef: any, elCallback: outClickType) {\n\n const callbackRef = useRef<outClickType>(elCallback);\n callbackRef.current = elCallback;\n\n useEffect(() => {\n const handleClickOutside = (eve: MouseEvent) => {\n if (!(elRef?.current?.contains(eve.target))) {\n callbackRef.current(eve);\n }\n };\n\n document.addEventListener('click', handleClickOutside, true);\n return () => {\n document.removeEventListener('click', handleClickOutside, true);\n };\n }, [elCallback, elRef]);\n}","import React, { useState, useRef, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport FilterButton from '../atoms/FilterButton';\nimport { useClickOutside } from '../../hooks/useClickOutside';\n\nconst Container = styled.div`\n position: relative;\n`;\n\nconst ButtonWrapper = styled.div`\n display: inline-block;\n`;\n\nconst ContentBox = styled.div<{ openState: IDropOpen, disabled: boolean, minWidth: number }>`\n z-index: 100;\n min-width: ${({ minWidth }) => minWidth}px;\n position: absolute;\n\n ${({ openState, disabled }) => openState && css`\n display: ${openState.isOpen ? 'inline-block' : 'none'};\n display: ${disabled && 'none'};\n\n ${openState.position === 'bottom-right' && `\n bottom: 0;\n left: 0;\n transform: translateY(calc(100% + 5px ));\n `};\n\n ${openState.position === 'bottom-left' && `\n bottom: 0;\n right: 0;\n transform: translateY(calc(100% + 5px ));\n `};\n\n ${openState.position === 'top-left' && `\n top: 0;\n right: 0;\n transform: translateY(calc( -100% - 5px ));\n `};\n\n ${openState.position === 'top-right' && `\n top: 0;\n left: 0;\n transform: translateY(calc( -100% - 5px ));\n `};\n\n `};\n`;\n\nconst getDropPosition = (buttonRect: DOMRect, minWidth: number, minHeight: number): IOpenPos => {\n let position: IOpenPos = 'bottom-right';\n const openLeft = (buttonRect.left + minWidth) > window.innerWidth;\n const openTop = (buttonRect.bottom + minHeight) > window.innerHeight;\n const spaceTop = buttonRect.bottom > minHeight;\n\n if (openLeft && openTop && spaceTop) {\n position = 'top-left';\n }\n\n if (openTop && !openLeft && spaceTop) {\n position = 'top-right';\n }\n\n if (!openTop && openLeft) {\n position = 'bottom-left';\n }\n\n return position;\n};\n\ntype IOpenPos = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n\ninterface IDropOpen {\n isOpen: boolean,\n position: IOpenPos,\n}\n\ninterface IFilterDropHandler {\n buttonIcon: string\n buttonText: string\n disabled?: boolean\n minWidth?: number\n minHeight?: number\n isSortAscending?: boolean\n onToggleOpenCallback?: (isOpen: boolean) => void\n onCloseCallback?: () => void\n}\n\nconst FilterDropHandler: React.FC<IFilterDropHandler> = ({\n buttonIcon,\n buttonText,\n disabled = false,\n minWidth = 270,\n minHeight = 190,\n isSortAscending,\n children,\n onToggleOpenCallback = () => { },\n onCloseCallback = () => { },\n ...props\n}) => {\n\n const [openState, setOpenState] = useState<IDropOpen>({\n isOpen: false,\n position: 'bottom-right',\n });\n\n const buttonWrapperRef = useRef<HTMLDivElement>(null);\n const mainRef = useRef<HTMLDivElement>(null);\n\n const handleClose = useCallback(() => {\n if (openState.isOpen) {\n onCloseCallback();\n }\n\n setOpenState((prev) => {\n const isOpen = false;\n return { ...prev, isOpen };\n });\n\n }, [onCloseCallback, openState.isOpen]);\n\n useClickOutside(mainRef, handleClose);\n\n const handleToggleOpen = useCallback((minWidth: number, minHeight: number) => {\n if (!buttonWrapperRef.current) { return; }\n\n const buttonRect = buttonWrapperRef.current.getBoundingClientRect();\n if (!buttonRect) { return; }\n const position: IOpenPos = getDropPosition(buttonRect, minWidth, minHeight);\n\n onToggleOpenCallback(openState.isOpen);\n setOpenState((prev) => {\n const isOpen = !prev.isOpen;\n return { ...prev, isOpen, position };\n });\n }, [onToggleOpenCallback, openState.isOpen]);\n\n return (\n <Container ref={mainRef} {...props}>\n <ButtonWrapper ref={buttonWrapperRef}>\n <FilterButton\n icon={buttonIcon}\n isOpen={openState.isOpen}\n onClick={() => handleToggleOpen(minWidth, minHeight)}\n {...{ disabled, isSortAscending }}\n hasFlipArrow\n >{buttonText}\n </FilterButton>\n </ButtonWrapper>\n <ContentBox {...{ openState, disabled, minWidth }}>\n {children}\n </ContentBox>\n </Container>\n );\n};\n\nexport default FilterDropHandler;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 146px;\n border-top: 1px solid var(--grey-5);\n`;\n\nconst LoadingText = styled.div`\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.data};\n `}\n color: var(--grey-11);\n font-size: 12px;\n font-style: italic;\n padding: 15px 0;\n`;\n\ninterface ILoadingBox {\n loadingText?: string\n}\n\nconst LoadingBox: React.FC<ILoadingBox> = ({ loadingText }) => {\n return (\n <Container>\n <Spinner size='large' styling='primary' />\n <LoadingText>{loadingText}</LoadingText>\n </Container>\n );\n};\n\nexport default LoadingBox;","import React, { useState, useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { IInputOptionsType } from '../../Form';\nimport FilterOption from '../../Form/atoms/FilterOption';\nimport BasicSearchInput from '../../Misc/atoms/BasicSearchInput';\n\nimport { IFilterItem, IFilterValue, isFilterItem } from '../FilterTypes';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\nimport LoadingBox from '../atoms/LoadingBox';\n\nconst Container = styled.div`\n display: inline-block;\n position: relative;\n`;\n\nconst TopLine = styled.div`\n ${({ theme }) => theme.styles.filters.dropdownContainer.topBorder};\n height: 4px;\n border-radius: 3px 3px 0 0;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n`;\n\nconst InnerBox = styled.div`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n padding-top: 5px;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst StyledFilterOption = styled(FilterOption)`\n letter-spacing: 0.2px;\n`;\n\nconst OptionList = styled.div`\n max-height: 162px;\n min-height: 40px;\n overflow-y: scroll;\n ::-webkit-scrollbar { /* Hide scrollbar for Chrome, Safari and Opera */\n display: none;\n }\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n ${StyledFilterOption} {\n height: 35px;\n padding-left: 10px;\n }\n`;\n\nconst ResultsContainer = styled.div`\n border-top: ${({theme}) => theme.colors.divider} 1px solid;\n padding-bottom: 8px;\n`;\n\nconst ResultCounter = styled.div`\n opacity: 0.75;\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: var(--grey-10);\n font-size: 12px;\n font-style: italic;\n font-weight: 300;\n display: flex;\n align-items: center;\n justify-content: left;\n padding-left: 9px;\n height: 30px;\n margin-bottom: 6px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n`;\n\nconst SearchWrapper = styled.div`\n height: 41px;\n display: flex;\n align-items: center;\n`;\n\nconst EmptyResultText = styled.div`\n display: block;\n color: var(--grey-10);\n margin-left: 12px;\n user-select: none;\n pointer-events: none;\n height: 35px;\n display: flex;\n align-items: center;\n font-size: 12px;\n`;\n\nconst isValueSelected = (item: IFilterItem, selected: IFilterValue) => {\n let isItemSelected = false;\n\n if (Array.isArray(selected)) {\n selected.forEach((element: IFilterItem) => {\n if (element.value === item.value) {\n isItemSelected = true;\n }\n });\n\n } else {\n if (isFilterItem(selected)) {\n isItemSelected = item.value === selected.value;\n }\n }\n\n return isItemSelected;\n};\n\nconst getNewSelected = (item: IFilterItem, selected: IFilterValue, optionType: IInputOptionsType): IFilterValue => {\n let isItemSelected = false;\n\n if (optionType === 'checkbox') {\n const validSelected = Array.isArray(selected)\n ? selected\n : isFilterItem(selected) ? [selected] : [];\n\n const newSelected: IFilterItem[] = [];\n validSelected.forEach((element: IFilterItem) => {\n if (item.value === element.value) {\n isItemSelected = true;\n } else {\n newSelected.push(element);\n }\n });\n if (!isItemSelected) {\n newSelected.push(item);\n }\n\n if (newSelected.length === 0) {\n return null;\n }\n\n return newSelected;\n }\n\n return item;\n};\n\nconst selectedOrderList = (list: IFilterItem[], maxItems: number, selected: IFilterValue): IFilterItem[] => {\n\n if (list.length <= maxItems) {\n return list;\n }\n\n if(selected === null) {\n return list;\n }\n\n if (isFilterItem(selected)) {\n const index = list.findIndex(item => item.value === selected.value);\n\n // if it doesn't exists return the list based in maxItems\n if ((index === -1)) {\n return list;\n }\n\n // if exists and is inside the visibleRange just return slice\n if ((index !== -1) && (index < maxItems)) {\n return list;\n }\n\n const newList = list.filter(item => item.value !== selected.value);\n newList.unshift(list[index]);\n\n return newList;\n\n }\n\n if (Array.isArray(selected)) {\n const selectedIndexList: number[] = [];\n const newList: IFilterItem[] = [];\n\n selected.forEach((element: IFilterItem) => {\n const index = list.findIndex(item => item.value === element.value);\n const foundItem = list.find(item => item.value === element.value);\n\n\n if (index !== -1) {\n selectedIndexList.push(index);\n }\n if(foundItem) {\n newList.push(foundItem);\n }\n\n });\n\n selectedIndexList.sort(function (a, b) {\n return a - b;\n });\n\n let selectedIndex = 0;\n\n list.forEach((item, index) => {\n if(index === selectedIndexList[selectedIndex]){\n selectedIndex++;\n return;\n }\n newList.push(item);\n });\n\n return newList;\n }\n\n return list;\n};\n\nconst getFilteredList = (list: IFilterItem[], newValue: string): IFilterItem[] => {\n return list.filter(element => {\n const valueString = element.text.toLowerCase();\n return valueString.includes(newValue.toLowerCase());\n });\n};\n\nconst getResultText = (template: string, visible: number, total: number) => {\n const newMessage = template.replace('[TOTAL]', `${total}`);\n return newMessage.replace('[VISIBLE]', `${visible}`);\n};\n\nexport interface IFilterDropdown {\n buttonIcon: string\n buttonText: string\n list: IFilterItem[];\n selected: IFilterValue;\n disabled?: boolean\n optionType?: IInputOptionsType\n isLoading?: boolean\n loadingText?: string\n hasOptionsFilter?: boolean\n searchPlaceholder?: string\n maxDisplayedItems?: number\n searchResultText?: string\n emptyResultText?: string\n onSelect: (newSelection: IFilterValue) => void;\n}\n\nconst FilterDropdown: React.FC<IFilterDropdown> = ({\n buttonIcon,\n buttonText,\n list,\n selected = null,\n disabled = false,\n isLoading = false,\n loadingText,\n optionType = 'text',\n hasOptionsFilter,\n searchPlaceholder,\n maxDisplayedItems = 5,\n searchResultText = 'Showing [VISIBLE] of [TOTAL]',\n emptyResultText,\n onSelect = () => { },\n ...props\n}) => {\n\n const [visibleList, setVisibleList] = useState(selectedOrderList(list, maxDisplayedItems, selected));\n const [searchText, setSearchText] = useState<string>('');\n\n const handleClose = useCallback(() => {\n setSearchText('');\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }, [list, maxDisplayedItems, selected]);\n\n const handleToggleOpen = useCallback(() => {\n setSearchText('');\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }, [list, maxDisplayedItems, selected]);\n\n const handleSelection = useCallback((item: IFilterItem) => {\n const newSelected = getNewSelected(item, selected, optionType);\n onSelect(newSelected);\n }, [selected, optionType, onSelect]);\n\n const handleInputFilter = useCallback((e) => {\n const { value } = e.target;\n setSearchText(value);\n\n if (value === '') {\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n return;\n }\n\n const newValue = typeof value === 'number' ? value.toString(10) : value;\n const newList = getFilteredList(list, newValue);\n\n // sending null so the filtered list doesn't force the selected values to appear.\n setVisibleList(selectedOrderList(newList, maxDisplayedItems, null));\n }, [list, maxDisplayedItems, selected]);\n\n useEffect(() => {\n let isActive = true;\n if (isActive) {\n setSearchText(''); // clears searchText if something was selected and the dropdown is still open\n setVisibleList(selectedOrderList(list, maxDisplayedItems, selected));\n }\n\n return () => {\n isActive = false;\n };\n\n }, [list, maxDisplayedItems, selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonIcon, buttonText, disabled }}\n onCloseCallback={handleClose}\n onToggleOpenCallback={handleToggleOpen}\n >\n <TopLine />\n <InnerBox>\n {hasOptionsFilter && (\n <SearchWrapper>\n <BasicSearchInput\n type='text'\n hasBorder={false}\n placeholder={searchPlaceholder}\n color='dimmed'\n iconSize={12}\n value={searchText}\n onChange={handleInputFilter}\n noBackground\n />\n </SearchWrapper>\n )}\n {isLoading || !list\n ? (\n <LoadingBox {...{ loadingText }} />)\n : (\n <ResultsContainer>\n {hasOptionsFilter && <ResultCounter>{getResultText(searchResultText, visibleList.length, list.length)}</ResultCounter>}\n <OptionList>\n {(visibleList.length > 0)\n\n ? visibleList.map((item: IFilterItem, index) => {\n const value = item.value;\n const text = item.text;\n return (\n <StyledFilterOption\n key={index}\n title={text}\n onClick={() => handleSelection(item)}\n selected={isValueSelected(item, selected)}\n {...{ optionType, value }}\n />\n );\n })\n\n : <EmptyResultText>{emptyResultText}</EmptyResultText>}\n </OptionList>\n </ResultsContainer>)}\n </InnerBox>\n </FilterDropHandler>\n </Container>\n );\n};\n\nexport default FilterDropdown;","import React, { useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport FilterOption from '../../Form/atoms/FilterOption';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\nimport LoadingBox from '../atoms/LoadingBox';\nimport { IFilterItem } from '../FilterTypes';\nimport { resetButtonStyles } from '../../common';\n\nconst Container = styled.div`\n display: inline-block;\n position: relative;\n`;\n\nconst TopLine = styled.div`\n ${({ theme }) => theme.styles.filters.dropdownContainer.topBorder};\n height: 3px;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n`;\n\nconst InnerBox = styled.div`\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n border: solid 1px var(--grey-7);\n border-top: unset;\n ${({theme}) => theme.styles.filters.dropdownContainer.background};\n`;\n\nconst StyledFilterOption = styled(FilterOption)`\n letter-spacing: 0.2px;\n`;\n\nconst OptionList = styled.div`\n ${StyledFilterOption} {\n height: 35px;\n padding-left: 10px;\n }\n`;\n\nconst OrderGroup = styled.div`\n display: flex;\n border-top: ${({ theme: { colors } }) => colors.divider} 1px solid;\n margin-top: 5px;\n button:first-child {\n border-right: ${({ theme: { colors } }) => colors.divider} 1px solid;\n }\n`;\n\nconst OrderButton = styled.button<{ isSelected: boolean }>`\n ${resetButtonStyles};\n width: 100%;\n display: flex;\n align-items: center;\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: var(--grey-12);\n font-size: 14px;\n height: 35px;\n ${({ theme, isSelected }) => theme && css`\n\n ${IconWrapper} {\n margin-left: 10px;\n display: flex;\n align-items: center;\n [stroke]{\n stroke: ${theme.colors.icons.dimmed};\n }\n }\n\n &:hover {\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.styles.form.checkbox.checked.hover.backgroundColor};\n }\n }\n }\n\n ${isSelected && css`\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.styles.form.checkbox.checked.default.backgroundColor};\n }\n }\n `}\n `}\n`;\n\nexport interface ISortDropdown {\n buttonText: string\n list: IFilterItem[]\n disabled?: boolean\n isLoading?: boolean\n loadingText?: string\n ascendingText?: string\n descendingText?: string\n isSortAscending?: boolean\n selected: IFilterItem\n onSelect: (newSort: IFilterItem, isSortAscending: boolean) => void\n}\n\nconst SortDropdown: React.FC<ISortDropdown> = ({\n buttonText,\n disabled,\n list,\n isLoading,\n loadingText,\n isSortAscending = true,\n selected,\n descendingText = 'Descending',\n ascendingText = 'Ascending',\n onSelect,\n ...props }) => {\n\n\n const handleSortSelect = useCallback((newValue: IFilterItem) => {\n if (newValue.value === selected.value) {\n return;\n }\n\n onSelect(newValue, isSortAscending);\n\n }, [isSortAscending, onSelect, selected.value]);\n\n const handleOrderSelect = useCallback((isAscending: boolean) => {\n if (isSortAscending === isAscending) {\n return;\n }\n\n onSelect(selected, isAscending);\n\n }, [isSortAscending, onSelect, selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonText, disabled, isSortAscending }}\n buttonIcon='FilterSorting'\n >\n <TopLine />\n <InnerBox>\n {(isLoading || list.length === 0)\n ? (\n <LoadingBox {...{ loadingText }} />\n )\n : (\n <OptionList>\n {list.map((item, index) => {\n return (\n <StyledFilterOption\n key={index}\n title={item.text}\n optionType='radio'\n selected={selected.value === item.value}\n onClick={() => handleSortSelect(item)}\n />\n );\n })}\n </OptionList>\n )}\n <OrderGroup>\n <OrderButton isSelected={isSortAscending} onClick={() => handleOrderSelect(true)}>\n <Icon\n icon='FilterAscending'\n size={16}\n weight='light'\n />\n <FilterOption selected={isSortAscending} title={ascendingText} />\n </OrderButton>\n <OrderButton isSelected={!isSortAscending} onClick={() => handleOrderSelect(false)}>\n <Icon\n icon='FilterDescending'\n size={16}\n weight='light'\n />\n <FilterOption selected={!isSortAscending} title={descendingText} />\n </OrderButton>\n </OrderGroup>\n </InnerBox>\n </FilterDropHandler>\n\n </Container>\n );\n};\n\nexport default SortDropdown;","import React, { useRef, useCallback, useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport FilterDropdownContainer from '../atoms/FilterDropdownContainer';\nimport DatePicker, { DateInterval, IDatePicker } from './DatePicker';\nimport FilterDropHandler from '../atoms/FilterDropHandler';\n\nconst MIN_WIDTH = 470;\nconst MIN_HEIGHT = 360;\n\nconst Container = styled.div``;\n\ninterface IMountPicker {\n initialValue: DateInterval | Date | undefined\n isMount: boolean\n}\n\nexport interface IDropdownDatePicker extends IDatePicker {\n buttonIcon: string\n buttonText: string\n disabled?: boolean\n selected?: DateInterval | Date | null;\n onCloseCallback?: (value: DateInterval | Date | null) => void\n onUpdateCallback?: (value: DateInterval | Date | null) => void\n onToggleCallback?: (value: DateInterval | Date | null, isOpen: boolean) => void\n}\n\nconst DropdownDatePicker: React.FC<IDropdownDatePicker> = ({\n buttonIcon,\n buttonText,\n disabled,\n initialValue,\n dateMode,\n timeMode,\n selected,\n dateTimeTextUpper,\n dateTimeTextLower,\n timeZoneTitle,\n timeZoneValueTitle,\n lang,\n onCloseCallback = () => { },\n onUpdateCallback = () => { },\n onToggleCallback = () => { },\n ...props }) => {\n\n /**\n * This will keep the value of the picker when it updates so on close will send the most fresh value\n * without re-renders.\n */\n const pickerValue = useRef<DateInterval | Date | null>(null);\n const [mountedPicker, setMountedPicker] = useState<IMountPicker>({ initialValue: initialValue, isMount: true });\n\n const handleUpdateCallback = useCallback((data: DateInterval | Date) => {\n pickerValue.current = data;\n onUpdateCallback(data);\n }, [onUpdateCallback]);\n\n const handleOnClose = useCallback(() => {\n if (pickerValue.current && (pickerValue.current !== selected)) {\n onCloseCallback(pickerValue.current);\n }\n }, [onCloseCallback, selected]);\n\n const handleOnToggle = useCallback((isOpen: boolean) => {\n\n if (pickerValue.current && (pickerValue.current !== selected)) {\n onToggleCallback(pickerValue.current, isOpen);\n }\n\n /** mounting again and clearing the last value sent from picker */\n if (!isOpen && (pickerValue.current !== null) && (!mountedPicker.isMount)) {\n pickerValue.current = null;\n setMountedPicker({ initialValue: undefined, isMount: true });\n }\n }, [mountedPicker, onToggleCallback, selected]);\n\n /**\n * Caching the selected null /clear flag for this picker from parent component\n */\n useEffect(() => {\n let canReset = true;\n\n if (canReset && selected === null && pickerValue.current !== null) {\n setMountedPicker({ initialValue: undefined, isMount: false });\n }\n return () => {\n canReset = false;\n };\n }, [selected]);\n\n return (\n <Container {...props}>\n <FilterDropHandler\n {...{ buttonIcon, buttonText, disabled }}\n minWidth={MIN_WIDTH}\n minHeight={MIN_HEIGHT}\n onCloseCallback={handleOnClose}\n onToggleOpenCallback={handleOnToggle}\n >\n <FilterDropdownContainer>\n {mountedPicker.isMount && (\n <DatePicker\n {...{\n dateMode,\n timeMode,\n dateTimeTextUpper,\n dateTimeTextLower,\n timeZoneTitle,\n timeZoneValueTitle,\n lang\n }}\n updateCallback={handleUpdateCallback}\n hasEmptyValue\n initialValue={mountedPicker.initialValue}\n />)}\n </FilterDropdownContainer>\n </FilterDropHandler>\n </Container>\n );\n};\n\nexport default DropdownDatePicker;","import React, { useState, useCallback } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport BasicSearchInput from '../../Misc/atoms/BasicSearchInput';\nimport FilterDropdown from '../../Filters/molecules/FilterDropdown';\nimport FilterButton from '../../Filters/atoms/FilterButton';\nimport DropdownDatePicker from './DropdownDatePicker';\nimport { IFilterDatePicker, IFilterDropdownExt, ISearchFilter } from '../FilterTypes';\n\nconst fadeInAnimation = keyframes`\n 0% {\n width: 50%;\n opacity: .5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n width: 100%;\n }\n`;\n\nconst SearchInputWrapper = styled.div`\n flex: 1 1 200px;\n max-width: 320px;\n`;\n\nconst CloseSearchInputWrapper = styled.div`\n ${({ theme }) => theme && css`\n animation: ${fadeInAnimation} ${theme.animation.speed.slow} ${theme.animation.easing.primary.inOut};\n `};\n`;\n\nconst StyledFilterButton = styled(FilterButton)``;\nconst StyledDropdown = styled(FilterDropdown)``;\nconst StyledDropdownDatePicker = styled(DropdownDatePicker)``;\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: wrap;\n ${SearchInputWrapper}, ${StyledDropdown}, ${StyledFilterButton}, ${StyledDropdownDatePicker} {\n margin: 0 3px 10px 3px;\n }\n`;\n\nconst renderDropdowns = (dropdownFilters: IFilterDropdownExt[], showMoreDropdowns: boolean, hasShowMore: boolean) => {\n return dropdownFilters.map((dropdown: IFilterDropdownExt) => {\n if (!dropdown.canHide || !showMoreDropdowns || (dropdown.canHide && !hasShowMore)) {\n return <StyledDropdown key={`dropdownFilter-id-${dropdown.id}`} {...dropdown} />;\n }\n return null;\n });\n};\n\nconst renderSearchInputs = (\n searchFilters: ISearchFilter[],\n visibleSearchInputs: String[],\n handleVisibleSearch: (searchId: string) => void\n) => {\n return searchFilters.map((searchInput: ISearchFilter) => {\n\n if (visibleSearchInputs.includes(searchInput.id)) {\n return (\n <SearchInputWrapper key={`searchFilter-id-${searchInput.id}`}>\n {searchInput.canHide\n ? (\n <CloseSearchInputWrapper>\n <BasicSearchInput {...searchInput} hasCrossButton onCrossClick={() => handleVisibleSearch(searchInput.id)} />\n </CloseSearchInputWrapper>\n )\n : <BasicSearchInput {...searchInput} />}\n </SearchInputWrapper>\n );\n }\n return null;\n });\n};\n\nconst renderDatePickers = (datePickerFilters: IFilterDatePicker[]) => {\n return datePickerFilters.map((datePicker: IFilterDatePicker) => {\n return (\n <StyledDropdownDatePicker\n key={`datePicker-filter-${datePicker.id}`}\n {...{ ...datePicker }}\n />\n );\n });\n};\n\nconst renderAddSearchButtons = (\n searchFilters: ISearchFilter[],\n visibleSearchInputs: String[],\n handleVisibleSearch: (searchId: string) => void\n) => {\n return searchFilters.map((element) => {\n if (element.canHide && !visibleSearchInputs.includes(element.id)) {\n const searchId = element.id;\n return (\n <StyledFilterButton\n key={`search-button-id-${element.id}`}\n icon='Add'\n onClick={() => handleVisibleSearch(searchId)}\n >\n {element.showFieldText}\n </StyledFilterButton>\n );\n }\n return null;\n });\n};\n\n// initially visible are only the ones that can't hide\nconst initialSearchFilters = (searchFilters: ISearchFilter[]): String[] => {\n const currentVisible: String[] = [];\n\n searchFilters.forEach(element => {\n if (!element.canHide) {\n currentVisible.push(element.id);\n }\n });\n\n return currentVisible;\n};\n\nexport interface IFilterInputs {\n searchFilters?: ISearchFilter[]\n dropdownFilters?: IFilterDropdownExt[]\n datePickerFilters?: IFilterDatePicker[]\n hasShowMore?: boolean\n showMoreText?: string\n showLessText?: string\n}\n\nconst FilterInputs: React.FC<IFilterInputs> = ({\n hasShowMore = false,\n searchFilters = [],\n datePickerFilters = [],\n dropdownFilters = [],\n showMoreText = 'Show More',\n showLessText = 'Show Less',\n ...props\n}) => {\n\n const [visibleSearchInputs, setVisibleSearchInputs] = useState<String[]>(initialSearchFilters(searchFilters));\n const [showMoreDropdowns, setShowMoreDropdowns] = useState(hasShowMore ? true : false);\n\n const toggleShowMore = useCallback(() => {\n setShowMoreDropdowns((prev) => !prev);\n }, []);\n\n const handleVisibleSearch = useCallback((searchId: string) => {\n\n if (visibleSearchInputs.includes(searchId)) {\n const newVisible = visibleSearchInputs.filter((id) => searchId !== id);\n setVisibleSearchInputs(newVisible);\n } else {\n const newVisible = [...visibleSearchInputs, searchId];\n setVisibleSearchInputs(newVisible);\n }\n\n }, [visibleSearchInputs]);\n\n return (\n <Container {...{ props }}>\n {renderSearchInputs(searchFilters, visibleSearchInputs, handleVisibleSearch)}\n {renderDatePickers(datePickerFilters)}\n {renderDropdowns(dropdownFilters, showMoreDropdowns, hasShowMore)}\n\n {/* {When the Dev does not initialize hasShowMore as true but has hidden inputs, it will show the add Searcher of the canHide} */}\n {(!hasShowMore || !showMoreDropdowns) && renderAddSearchButtons(searchFilters, visibleSearchInputs, handleVisibleSearch)}\n {hasShowMore && (\n <FilterButton\n icon='FilterEllipsis'\n onClick={toggleShowMore}\n >\n {showMoreDropdowns ? showMoreText : showLessText}\n </FilterButton>)}\n </Container>\n );\n};\n\nexport default FilterInputs;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { IFilterItem, IFilterType } from '../FilterTypes';\nimport { resetButtonStyles } from '../../common/index';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport { isFilterItem } from '../FilterTypes';\nimport { DateInterval, isDateInterval } from './DatePicker';\nimport { format } from 'date-fns';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n font-size: 12px;\n min-height: 22px;\n`;\n\nconst ResultsTextWrapper = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: var(--grey-9);\n`;\n\nconst FilterLabel = styled.div`\n height: 18px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n padding: 0 11px 0 8px;\n margin-left: 3px;\n color: var(--grey-9);\n\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.data};\n `};\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n }\n border-right: 1px solid var(--grey-8);\n`;\nconst FilterLabelText = styled.div<{ hasIcon?: boolean }>`\n padding: ${({ hasIcon }) => hasIcon ? '0 15px 0 9px' : '0 15px 0 0'};\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n max-width: 300px;\n`;\n\nconst ClearTextButton = styled.button`\n ${resetButtonStyles};\n font-family: ${({ theme }) => theme.fontFamily.data};\n color: var(--grey-10);\n margin-left: 11px;\n font-size: 12px;\n`;\n\nconst RemoveButton = styled.button`\n ${resetButtonStyles};\n`;\n\nconst FilterLabelsGroup = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n margin-left: 10px;\n`;\n\nconst validateDateFormat = (resultsDateFormat: string): boolean => {\n let isFormatValid = false;\n\n if (resultsDateFormat !== '') {\n try {\n const tryDate = new Date();\n format(tryDate, resultsDateFormat);\n isFormatValid = true;\n } catch (error) {\n isFormatValid = false;\n }\n }\n\n return isFormatValid;\n};\n\nconst renderResults = (template: string, total: number) => {\n return template.replace('[TOTAL_RESULTS]', `${total}`);\n};\n\n\nconst renderLabel = (item: IFilterItem | DateInterval | Date, resultsDateFormat: string, icon?: string, filterName?: string) => {\n\n let textLabel: string = \"\";\n const isDateFormatValid = validateDateFormat(resultsDateFormat);\n\n if (filterName && isFilterItem(item)) {\n textLabel = `${filterName}: ${item.text}`;\n } else if (filterName && item instanceof Date) {\n textLabel = isDateFormatValid\n ? `${filterName}: ${format(item, resultsDateFormat)}`\n : `${filterName}: ${item.toDateString()}`;\n } else if (filterName && isDateInterval(item)) {\n textLabel = isDateFormatValid\n ? `${filterName}: ${format(item.start, resultsDateFormat)} - ${format(item.end, resultsDateFormat)}`\n : `${filterName}: ${item.start.toDateString()} - ${item.end.toDateString()}`;\n } else if (!filterName && isFilterItem(item)) {\n textLabel = item.text;\n } else if (!filterName && item instanceof Date) {\n textLabel = isDateFormatValid\n ? format(item, resultsDateFormat)\n : item.toDateString();\n } else if (!filterName && isDateInterval(item)) {\n textLabel = isDateFormatValid\n ? `${format(item.start, resultsDateFormat)} - ${format(item.end, resultsDateFormat)}`\n : `${item.start.toDateString()} - ${item.end.toDateString()}`;\n }\n\n return <FilterLabelText hasIcon={!!icon}>{textLabel}</FilterLabelText>;\n};\n\nexport interface IFilterLabel {\n filterId: string\n item: IFilterItem | Date | DateInterval\n type: IFilterType\n icon?: string\n filterName?: string\n}\n\ninterface IFilterResults {\n labelLists: IFilterLabel[]\n totalResults: number\n resultTextTemplate?: string\n clearText?: string\n resultsDateFormat?: string\n onRemoveFilter?: (filterId: string, type: IFilterType, item: IFilterItem | Date | DateInterval) => void\n onClearAll?: () => void\n}\n\nconst FiltersResults: React.FC<IFilterResults> = ({\n labelLists,\n totalResults,\n resultTextTemplate = 'Showing Results ([TOTAL_RESULTS]):',\n clearText = 'CLEAR ALL',\n resultsDateFormat = '',\n onRemoveFilter = () => { },\n onClearAll = () => { },\n ...props\n}) => {\n return (\n <Container {...props}>\n <ResultsTextWrapper>{renderResults(resultTextTemplate, totalResults)}</ResultsTextWrapper>\n <FilterLabelsGroup>\n {labelLists.map(({ icon, item, filterName, filterId, type }, index) => {\n return (\n <FilterLabel key={`Filter-Label-id-${index}`}>\n {icon && <Icon icon={icon} color='dimmed' size={10} weight='light' />}\n {renderLabel(item, resultsDateFormat, icon, filterName)}\n <RemoveButton\n onClick={() => onRemoveFilter(filterId, type, item)}\n >\n <Icon icon='CloseCompact' color='dimmed' size={10} weight='light' />\n </RemoveButton>\n </FilterLabel>\n );\n })}\n {(labelLists.length > 0) && <ClearTextButton onClick={onClearAll}>{clearText}</ClearTextButton>}\n </FilterLabelsGroup>\n\n </Container>\n );\n};\n\nexport default FiltersResults;","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\nimport {\n IFilterItem,\n IFilterResult,\n IFilterType,\n IFilterValue,\n isFilterItem,\n IFilterDropdownConfig\n} from '../FilterTypes';\nimport FilterInputs from '../molecules/FilterInputs';\nimport { IFilterDropdownExt, ISearchFilter, IFilterDatePicker } from '../FilterTypes';\nimport FiltersResults, { IFilterLabel } from '../../Filters/molecules/FiltersResults';\nimport { DateInterval, isDateInterval } from '../molecules/DatePicker';\nimport isequal from 'lodash.isequal';\nimport debounce from 'lodash.debounce';\n\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: var(--grey-10);\n font-size: 12px;\n font-weight: 700;\n margin-bottom: 17px;\n`;\n\nconst StyledFilterResults = styled(FiltersResults)``;\n\nconst Container = styled.div`\n ${StyledFilterResults} {\n margin-top: 29px;\n min-height: 19px;\n }\n`;\n\nconst getDisableValue = (\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n filter: ISearchFilter | IFilterDropdownConfig | IFilterDatePicker,\n) => {\n let disabled = false;\n\n if (filter.disabled) {\n disabled = filter.disabled;\n } else if (singleFilter) {\n const notNullValues = filtersValues.filter((filter) => filter.selected !== null);\n if (notNullValues) {\n disabled = (notNullValues.length > 1 || (notNullValues[0] && notNullValues[0].id !== filter.id));\n }\n }\n return disabled;\n};\n\nconst createDropdownFilters = (\n dropdownsConfig: IFilterDropdownConfig[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleDropdownsSelected: (newValue: IFilterValue, filterId: string) => void\n): IFilterDropdownExt[] => {\n\n const dropdownFilters: IFilterDropdownExt[] = [];\n dropdownsConfig.forEach(dropdown => {\n const filter = filtersValues.find(filter => filter.id === dropdown.id);\n if (filter) {\n const selected = (Array.isArray(filter.selected) || isFilterItem(filter.selected))\n ? filter.selected\n : null;\n const onSelect = (newSelection: IFilterValue) => { handleDropdownsSelected(newSelection, filter.id); };\n const disabled = getDisableValue(filtersValues, singleFilter, dropdown);\n const newDropdown: IFilterDropdownExt = { ...dropdown, selected, disabled, onSelect };\n dropdownFilters.push(newDropdown);\n }\n });\n return dropdownFilters;\n};\n\nconst createSearchers = (\n searchersConfig: ISearchFilter[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleSearchers: (newValue: string, filterId: string) => void,\n): ISearchFilter[] => {\n const searchersFilters: ISearchFilter[] = [];\n\n searchersConfig.forEach(searcher => {\n const filter = filtersValues.find(filter => filter.id === searcher.id);\n if (filter && !Array.isArray(filter.selected)) {\n const value: string = (filter.selected === null) || (!isFilterItem(filter.selected)) ? '' : filter.selected.text;\n\n const onChange = (e: React.FormEvent<HTMLInputElement>) => {\n const newValue = e.currentTarget.value;\n handleSearchers(newValue, filter.id);\n };\n\n const disabled = getDisableValue(filtersValues, singleFilter, searcher);\n\n const newSearcher: ISearchFilter = { ...searcher, value, disabled, onChange };\n searchersFilters.push(newSearcher);\n }\n });\n\n return searchersFilters;\n};\n\nconst createDatePickers = (\n datePickersConfig: IFilterDatePicker[],\n filtersValues: IFilterResult[],\n singleFilter: boolean,\n handleDatePickers: (selection: DateInterval | Date | null, filterId: string) => void,\n): IFilterDatePicker[] => {\n const datePickersFilters: IFilterDatePicker[] = [];\n\n datePickersConfig.forEach((datePicker) => {\n const onCloseCallback = (value: DateInterval | Date | null) => {\n handleDatePickers(value, datePicker.id);\n };\n\n const onToggleCallback = (value: DateInterval | Date | null, isOpen: boolean) => {\n // if it was open before toggle means the user closed it and value should be updated.\n if (isOpen) {\n handleDatePickers(value, datePicker.id);\n }\n };\n const disabled = getDisableValue(filtersValues, singleFilter, datePicker);\n const foundPicker = filtersValues.find(filter => filter.id === datePicker.id);\n let validInitialValue: Date | DateInterval | undefined = undefined;\n\n if (datePicker.selected) {\n validInitialValue = datePicker.selected;\n } else if (datePicker.initialValue) {\n validInitialValue = datePicker.initialValue;\n }\n\n const newPicker: IFilterDatePicker = {\n ...datePicker,\n onCloseCallback,\n onToggleCallback,\n disabled,\n selected: foundPicker && (foundPicker.selected instanceof Date || isDateInterval(foundPicker.selected)) ? foundPicker.selected : null,\n initialValue: validInitialValue,\n };\n datePickersFilters.push(newPicker);\n });\n\n return datePickersFilters;\n};\n\nconst createLabelResults = (\n searchersConfig: ISearchFilter[],\n dropdownsConfig: IFilterDropdownConfig[],\n datePickersConfig: IFilterDatePicker[],\n filtersValues: IFilterResult[],\n): IFilterLabel[] => {\n\n const labelLists: IFilterLabel[] = [];\n\n searchersConfig.forEach((searcher) => {\n const foundSearcher = filtersValues.find(element => element.id === searcher.id);\n if (!foundSearcher) {\n return;\n\n // searchers are never arrays or date but Typescript requires this type check\n } else if (isFilterItem(foundSearcher.selected)) {\n const newLabel: IFilterLabel = {\n filterId: foundSearcher.id,\n item: foundSearcher.selected,\n filterName: searcher.name,\n type: foundSearcher.type,\n };\n labelLists.push(newLabel);\n }\n });\n\n dropdownsConfig.forEach((dropdown) => {\n\n const foundDropdown = filtersValues.find(element => element.id === dropdown.id);\n if (!foundDropdown || foundDropdown.selected === null) {\n return;\n } else if (Array.isArray(foundDropdown.selected)) {\n foundDropdown.selected.forEach((dropdownLabelVal) => {\n const newLabel: IFilterLabel = {\n filterId: foundDropdown.id,\n item: dropdownLabelVal,\n icon: dropdown.buttonIcon,\n filterName: dropdown.name,\n type: foundDropdown.type\n };\n labelLists.push(newLabel);\n });\n } else if (isFilterItem(foundDropdown.selected)) {\n const newLabel: IFilterLabel = {\n filterId: foundDropdown.id,\n item: foundDropdown.selected,\n icon: dropdown.buttonIcon,\n filterName: dropdown.name,\n type: foundDropdown.type\n };\n\n labelLists.push(newLabel);\n }\n });\n\n datePickersConfig.forEach((datePicker) => {\n const foundPicker = filtersValues.find(element => element.id === datePicker.id);\n if (!foundPicker || foundPicker.selected === null || Array.isArray(foundPicker.selected) || isFilterItem(foundPicker.selected)) {\n return;\n } else {\n const newLabel: IFilterLabel = {\n filterId: foundPicker.id,\n item: foundPicker.selected,\n icon: 'Date',\n filterName: datePicker.name,\n type: foundPicker.type\n };\n labelLists.push(newLabel);\n }\n });\n\n return labelLists;\n};\n\nconst initFilters = (\n searchersConfig: ISearchFilter[],\n dropdownsConfig: IFilterDropdownConfig[],\n datePickersConfig: IFilterDatePicker[],\n): IFilterResult[] => {\n\n const newFilters: IFilterResult[] = [];\n\n searchersConfig.forEach(({ id, value, selected }) => {\n\n let validatedSelected: IFilterItem | null = null;\n if (typeof value === 'number') {\n validatedSelected = { text: value.toString(), value: value };\n } else if (value === 'string') {\n validatedSelected = { text: value, value: value };\n } else if (isFilterItem(selected)) {\n validatedSelected = selected;\n }\n\n const initialSearch: IFilterResult = { id, type: 'search', selected: validatedSelected };\n\n newFilters.push(initialSearch);\n });\n\n dropdownsConfig.forEach(({ id, selected }) => {\n\n const initialDropdown: IFilterResult = {\n id,\n type: 'dropdown',\n selected: (isFilterItem(selected) || Array.isArray(selected)) ? selected : null,\n };\n\n newFilters.push(initialDropdown);\n });\n\n datePickersConfig.forEach(({ id, initialValue, selected }) => {\n\n let validSelected: Date | DateInterval | null = null;\n\n if (initialValue) {\n validSelected = initialValue;\n } else if (selected) {\n validSelected = selected;\n }\n\n newFilters.push({ id, type: 'datepicker', selected: validSelected });\n });\n\n return newFilters;\n};\n\ninterface IFilterBar {\n filtersTitle?: string\n searchersConfig?: ISearchFilter[]\n dropdownsConfig?: IFilterDropdownConfig[]\n datePickersConfig?: IFilterDatePicker[]\n hasShowMore?: boolean\n showMoreText?: string\n showLessText?: string\n resultTextTemplate?: string\n totalResults: number\n clearText?: string\n isLoading?: boolean\n singleFilter?: boolean\n resultsDateFormat?: string\n onChangeCallback?: (currentSelected: IFilterResult[]) => void\n}\n\nconst FilterBar: React.FC<IFilterBar> = ({\n filtersTitle = 'Filters:',\n hasShowMore,\n searchersConfig = [],\n dropdownsConfig = [],\n datePickersConfig = [],\n showMoreText,\n showLessText,\n resultTextTemplate,\n clearText,\n totalResults,\n singleFilter = false,\n resultsDateFormat,\n onChangeCallback = () => { },\n ...props\n}) => {\n\n const [filtersValues, setFiltersValues] = useState<IFilterResult[]>(initFilters(searchersConfig, dropdownsConfig, datePickersConfig));\n const dropdownsConfigRef = useRef<IFilterDropdownConfig[]>(dropdownsConfig);\n\n // Prevents extra-renders only updating if the dropdowns config actually changed\n if (dropdownsConfigRef.current && !isequal(dropdownsConfigRef.current, dropdownsConfig)) {\n dropdownsConfigRef.current = dropdownsConfig;\n }\n\n // saves a reference of the debounce for searchers\n const debounceSearcher = useRef(debounce(updatedFilters => handleChange(updatedFilters), 600)).current;\n\n const handleChange = useCallback((newValues: IFilterResult[]) => {\n const notNullValues = newValues.filter((filter) => filter.selected !== null);\n\n onChangeCallback(notNullValues);\n\n }, [onChangeCallback]);\n\n const handleDropdownsSelected = useCallback((newValue: IFilterValue, filterId: string) => {\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n const foundFilter = updatedFilters.find((filter) => filter.id === filterId);\n if (foundFilter && foundFilter.selected !== newValue) {\n foundFilter.selected = newValue;\n handleChange(updatedFilters);\n return updatedFilters;\n }\n return prev;\n });\n }, [handleChange]);\n\n const handleSearchers = useCallback((newValue: string, filterId: string) => {\n\n const updatedFilters = [...filtersValues];\n const foundFilter = updatedFilters.find((filter) => filter.id === filterId);\n if (foundFilter) {\n foundFilter.selected = newValue === '' ? null : { text: newValue, value: newValue };\n }\n\n debounceSearcher(updatedFilters);\n setFiltersValues(updatedFilters);\n\n }, [debounceSearcher, filtersValues]);\n\n const handleOnClear = useCallback(() => {\n\n const updatedFilters = [...filtersValues];\n updatedFilters.forEach((filterElement) => {\n if (filterElement.selected === null) {\n return;\n }\n filterElement.selected = null;\n });\n\n handleChange(updatedFilters);\n setFiltersValues(updatedFilters);\n }, [filtersValues, handleChange]);\n\n const handleOnRemoveFilter = useCallback((filterId: string, type: IFilterType, item: IFilterItem | Date | DateInterval) => {\n\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n\n const foundFilter = updatedFilters.find((filterElement) => filterElement.id === filterId);\n\n if (!foundFilter) {\n return prev;\n } else if (Array.isArray(foundFilter.selected) && type === 'dropdown') {\n const selectedFiltered = foundFilter.selected.filter((oldItem) => {\n if (isFilterItem(oldItem) && isFilterItem(item)) {\n return oldItem.value !== item.value;\n }\n // it's required to have return a value usually will always receive filterItems and all will enter the if\n // but just in case if it's not a Filter item it will filter the value.\n return true;\n });\n foundFilter.selected = selectedFiltered.length === 0 ? null : selectedFiltered;\n } else {\n foundFilter.selected = null;\n }\n\n handleChange(updatedFilters);\n return updatedFilters;\n });\n\n }, [handleChange]);\n\n const handleDatePickers = useCallback((selection: DateInterval | Date | null, filterId: string) => {\n\n const updatedDatePickers = [...filtersValues];\n const foundFilter = updatedDatePickers.find((datePicker) => datePicker.id === filterId);\n\n if (foundFilter) {\n foundFilter.selected = selection;\n handleChange(filtersValues);\n setFiltersValues(updatedDatePickers);\n }\n\n }, [filtersValues, handleChange]);\n\n /**\n * This use Effect will update filters text selections in case the language is changed.\n * Dropdowns are the only ones that required this because Inputs text are the user type data.\n * DatePickers do not change text for now\n */\n useEffect(() => {\n let mountConfig = true;\n\n if (mountConfig && dropdownsConfigRef.current) {\n setFiltersValues((prev) => {\n const updatedFilters = [...prev];\n updatedFilters.forEach((filter: IFilterResult) => {\n\n const foundDropdown = dropdownsConfigRef.current.find((dropdown) => dropdown.id === filter.id);\n\n if (foundDropdown) {\n\n if (Array.isArray(filter.selected)) {\n filter.selected.forEach(item => {\n const foundItem = foundDropdown.list.find((dropdownItem) => dropdownItem.value === item.value);\n\n if (foundItem) {\n item.text = foundItem.text;\n }\n });\n } else if (isFilterItem(filter.selected)) {\n const foundItem = foundDropdown.list.find((item: IFilterItem) => {\n return filter.selected === null\n ? false\n : isFilterItem(filter.selected) ? item.value === filter.selected.value : false;\n });\n\n if (foundItem) {\n filter.selected.text = foundItem.text;\n }\n }\n }\n });\n\n return updatedFilters;\n });\n }\n\n return () => {\n mountConfig = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropdownsConfigRef.current]);\n\n return (\n <Container {...props}>\n <Title>{filtersTitle}</Title>\n <FilterInputs\n {...{\n hasShowMore,\n showMoreText,\n showLessText,\n }}\n searchFilters={createSearchers(searchersConfig, filtersValues, singleFilter, handleSearchers)}\n dropdownFilters={createDropdownFilters(dropdownsConfigRef.current, filtersValues, singleFilter, handleDropdownsSelected)}\n datePickerFilters={datePickersConfig ? createDatePickers(datePickersConfig, filtersValues, singleFilter, handleDatePickers) : undefined}\n />\n <StyledFilterResults\n {...{ resultTextTemplate, clearText, totalResults, resultsDateFormat }}\n labelLists={createLabelResults(searchersConfig, dropdownsConfigRef.current, datePickersConfig, filtersValues)}\n onClearAll={handleOnClear}\n onRemoveFilter={handleOnRemoveFilter}\n />\n </Container>\n );\n};\n\nexport default FilterBar;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport Icon from './Icon';\nimport { IStatusDot } from '..';\n\nconst Container = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst StatusCounter = styled.div<{ color?: IStatusDot }>`\n position: absolute;\n left: 14px;;\n top: -12px;\n border-radius: 50%;\n height: 14px;\n min-width: 14px;\n padding: 2px;\n font-size: 10px;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n ${({theme:{animation}}) => css`\n transition: background-color ${animation.speed.slow} ${animation.easing.primary.easeInOut};\n `}\n background-color: ${({ theme, color }) => color ? theme.colors.status[color] : 'var(--grey-5)'};\n`;\n\nconst StatusDot = styled.div<{ color?: IStatusDot }>`\n width: 6px;\n height: 6px;\n border-radius: 50%;\n position: absolute;\n top: -4px;\n right: -7px;\n ${({theme:{animation}}) => css`\n transition: background-color ${animation.speed.slow} ${animation.easing.primary.easeInOut};\n `}\n background-color: ${({ theme, color }) => color ? theme.colors.status[color] : 'var(--grey-5)'};\n`;\n\ninterface IStatusIcon {\n icon: string\n status?: IStatusDot\n counter?: number\n}\n\nconst StatusIcon: React.FC<IStatusIcon> = ({icon, status, counter}) => {\n return (\n <Container>\n {status && (counter === undefined)\n ? <StatusDot color={status} />\n : (counter === undefined) ? null : <StatusCounter color={status}>{counter}</StatusCounter>}\n <Icon icon={icon} size={18} color='dimmed' />\n </Container>\n );\n};\n\nexport default StatusIcon;","import React, { useState, useCallback } from 'react';\nimport styled, { css, keyframes } from 'styled-components';\nimport { IDragLineUISharedOptions } from '.';\n\n\nconst HandleTouchReactionKeyframes = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 75% {\n transform: scale(3);\n }\n\n 100% {\n transform: scale(1.75);\n }\n`;\n\nconst HandleMouseReactionKeyframes = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 75% {\n transform: scale(0);\n }\n\n 100% {\n transform: scale(0.5);\n }\n`;\n\n\nconst HandleBase = styled.svg<{ mouseDragging: boolean, styling: string}>`\n touch-action: none;\n user-select: none;\n overflow: visible;\n cursor: pointer;\n fill: ${({theme, styling}) => theme.custom.lines[styling].handleBase.fill};\n appearance: none;\n`;\n\nconst HandleRingLayer = styled.circle<{maskID: string, styling: string}>`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleRingLayer.stroke};\n mask: url(#${props => (props.maskID)});\n`;\nconst HandleReactiveGroup = styled.g<{touchDragging: boolean, mouseDragging: boolean}>`\n opacity: 0.65;\n cursor: pointer;\n transform: scale(1);\n\n ${props => props.touchDragging && css`\n animation: ${HandleTouchReactionKeyframes} 0.5s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275) 1;\n `}\n\n ${props => props.mouseDragging && css`\n animation: ${HandleMouseReactionKeyframes} 0.25s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275) 1;\n `}\n\n`;\nconst HandleReactiveFill = styled.circle<{styling: string}>`\n mix-blend-mode: multiply;\n fill: ${({theme, styling}) => theme.custom.lines[styling].handleReactiveFill.fill};\n stroke: none;\n`;\nconst HandleReactiveRing = styled.circle<{styling: string}>`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleReactiveRing.stroke};\n`;\n\nconst HandleContrastLayer = styled.circle<{styling: string}>`\n overflow: visible;\n mix-blend-mode: multiply;\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].handleContrastLayer.stroke};\n`;\nconst HandleShadowLayer = styled.circle<{fillID: string}>`\n mix-blend-mode: multiply;\n fill: url(#${props => (props.fillID)});\n`;\n\nconst GrabHandleIndexGroup = styled.g<{showIndex: boolean}>`\n opacity: 0;\n pointer-events: none;\n ${props => props.showIndex && css`\n opacity: 1;\n `};\n\n`;\n\nconst StopStart = styled.stop<{styling: string}>`\n stop-color: ${({theme, styling}) => theme.custom.lines[styling].stopStart.stopColor };\n`;\nconst StopEnd = styled.stop<{styling: string}>`\n stop-color: ${({theme, styling}) => theme.custom.lines[styling].stopEnd.stopColor };\n`;\n\n\nconst GrabHandleIndexText = styled.text<{showIndex: boolean, styling: string}>`\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandleText.stroke};\n text-align: center;\n\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n\n\n`;\n\nconst IconGroup = styled.g`\n\n`;\n\ninterface IHandleUnitProps {\n lineSetId: number\n index: number\n angle: number | null\n useAngles: boolean\n unit: number\n size: number\n x: number;\n y: number;\n Icon?: React.FunctionComponent<React.SVGProps<SVGSVGElement>> & {rotate?: number};\n rotate?: number;\n moveCallback: any;\n moveEndCB?: ()=>void;\n options: IDragLineUISharedOptions;\n readOnlyHandle?: boolean;\n styling?: string;\n}\n\nconst HandleUnit : React.FC<IHandleUnitProps> = (props) => {\n // console.log(props.lineSetId, typeof props.lineSetId)\n const { index, useAngles, angle, unit, size, lineSetId, x, y, moveCallback, moveEndCB=()=>{}, Icon, rotate=0, options, readOnlyHandle = false, styling='primary'} = props;\n // console.log(\"Handle \"+ index +\" from set \"+ lineSetId + \" :: \" + x, \", \" + y)\n const handleInstance = React.createRef<SVGSVGElement>();\n\n const [ touchDragging, setTouchDragging ] = useState(false);\n const [ mouseDragging, setMouseDragging ] = useState(false);\n const [ touchIndex, setTouchIndex ] = useState<number | null>(null);\n\n\n /** --- Toucher Events Section --- */\n const handleTouchStart = useCallback((e: any) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n // Remember what touch event index is for this handle.\n for (let i = 0; i < e.touches.length; i++) {\n const touch = e.touches[i];\n if(touch.target.parentNode.parentElement === handleInstance || touch.target.parentNode.parentElement.parentElement){\n setTouchDragging(true);\n setTouchIndex(i);\n }\n }\n },[handleInstance, readOnlyHandle]);\n\n\n const handleTouchEnd = useCallback(() => {\n if (readOnlyHandle) { return; }\n setTouchDragging(false);\n setTouchIndex(null);\n moveEndCB();\n },[moveEndCB, readOnlyHandle]);\n\n const handleTouchMove = useCallback((e: React.TouchEvent<SVGSVGElement>) => {\n if (readOnlyHandle) { return; }\n for (let i = 0; i < e.touches.length; i++) {\n if(i === touchIndex){\n moveCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY}, index);\n }\n }\n },[index, moveCallback, readOnlyHandle, touchIndex]);\n\n /** --- Mouse Events Section --- */\n\n const handleMouseMove = useCallback((e: MouseEvent) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n moveCallback({ x: e.pageX, y: e.pageY}, index);\n },[index, moveCallback, readOnlyHandle]);\n\n const handleMouseUp = useCallback((e: MouseEvent) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n setMouseDragging(false);\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n moveCallback({ x: e.pageX, y: e.pageY}, index);\n setTimeout(moveEndCB);\n },[handleMouseMove, index, moveCallback, moveEndCB, readOnlyHandle]);\n\n const handleMouseDown = useCallback((e: React.MouseEvent<SVGSVGElement, MouseEvent>) => {\n e.preventDefault();\n if (readOnlyHandle) { return; }\n setMouseDragging(true);\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n },[handleMouseMove, handleMouseUp, readOnlyHandle]);\n\n const maskID = useAngles ? \"mask-\" + lineSetId + '-' + index : '';\n const shadowGradientID = \"shadowGradient-\" + lineSetId + '-' + index;\n const {showPointHandle = true, showPointLabel= false, pointIndexOffset} = options as IDragLineUISharedOptions;\n\n return (\n\n <HandleBase ref={handleInstance} styling={styling} x={x} y={y} mouseDragging={mouseDragging} onTouchStart={handleTouchStart} onTouchEnd={handleTouchEnd} onTouchMove={handleTouchMove} onMouseDown={handleMouseDown}>\n <defs>\n <mask id={maskID}>\n <rect width='100%' height='100%' x='-50%' y='-50%' fill='white' />\n <rect width={size / 3} height={size / 0.9} x={-((size / 3) /2)} y={-((size / 0.9) + 5)} fill='black' transform={`rotate(${angle || 0} 0 0)`} />\n </mask>\n <radialGradient id={shadowGradientID}>\n <StopStart styling={styling} offset='0%' />\n <StopEnd styling={styling} offset='80%' />\n </radialGradient>\n </defs>\n\n {\n Icon ?\n <IconGroup transform={`scale(${unit * 1.5 }) translate(-21 -21) rotate(${rotate}, 21, 21 )`}>\n <Icon height='42' width='42' />\n </IconGroup>\n :\n showPointHandle &&\n <g transform={`scale(${ unit })`}>\n\n <HandleShadowLayer r={size * 1} fillID={shadowGradientID} />\n <HandleContrastLayer styling={styling} r={size / 2.4} strokeWidth={size / 3} />\n\n <HandleReactiveGroup touchDragging={touchDragging} mouseDragging={mouseDragging}>\n <HandleReactiveFill styling={styling} r={size / 1.8} />\n <HandleReactiveRing styling={styling} r={size / 2.25} strokeWidth={size / 3} />\n </HandleReactiveGroup>\n\n <HandleRingLayer styling={styling} r={size / 2} strokeWidth={size / 6} maskID={maskID} />\n\n {showPointLabel &&\n <GrabHandleIndexGroup showIndex>\n <GrabHandleIndexText styling={styling} transform='translate(-5,6)' fontSize='20px' showIndex>\n {index + pointIndexOffset}\n </GrabHandleIndexText>\n </GrabHandleIndexGroup>}\n\n </g>\n }\n\n\n\n </HandleBase>\n );\n};\n\nexport default HandleUnit;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { IDragLineUISharedOptions } from '.';\nimport Icon from '../Icons/Icon';\n\n\nconst ContrastLine = styled.line<{styling: string}>`\n pointer-events: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].contrastLine.stroke};\n mix-blend-mode: multiply;\n`;\n\nconst HighlightLine = styled.line<{styling: string}>`\n pointer-events: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].highlightLine.stroke};\n`;\n\n\n\nconst GrabHandle = styled.circle<{hide: boolean, styling: string}>`\n fill: ${({theme, styling}) => theme.custom.lines[styling].grabHandle.fill};\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandle.stroke};\n opacity: 1;\n transition: opacity 250ms ease;\n cursor: grab;\n\n ${props => props.hide && css`\n pointer-events: none;\n opacity: 0;\n `};\n`;\n\n\nconst GrabHandleIndexGroup = styled.g<{showIndex: boolean}>`\n opacity: 0;\n pointer-events: none;\n ${props => props.showIndex && css`\n opacity: 1;\n `};\n\n`;\n\nconst GrabHandleIndexText = styled.text<{showIndex: boolean, styling: string}>`\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].grabHandleText.stroke};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\nconst LabelText = styled.text<{showIndex: boolean, styling: string}>`\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].label.fill};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\nconst GrabHandleContrast = styled(GrabHandle)`\n fill: none;\n stroke: ${({theme, styling}) => theme.custom.lines[styling].grabHandleContrast.stroke};\n`;\n\nconst GrabHandleGroup = styled.g<{ showIndex: boolean, originalRadius: number, styling: string}>`\n\n ${GrabHandle}, ${GrabHandleContrast} {\n transition: r 250ms ease;\n }\n\n ${props => props.showIndex && css`\n ${GrabHandle}, ${GrabHandleContrast} {\n pointer-events: none;\n r: ${props.originalRadius * 1.75};\n }\n `};\n`;\n\nconst DMCircle = styled.circle`\n fill: hsla(203, 100%, 35%, 0.49);\n`;\n\ninterface ILineUnitProps {\n lineSetId: number,\n options: IDragLineUISharedOptions,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n unit: number,\n lineMoveCallback: any,\n lineMoveStartCallback: any,\n moveEndCB?: () => void;\n label?: string;\n styling?: string;\n showSmallDirectionMark?: boolean;\n overrideShowMoveHandle?: boolean;\n}\n\n\n\nconst LineUnit : React.FC<ILineUnitProps> = (props) => {\n const { x1, y1, x2, y2, unit, lineMoveCallback, lineMoveStartCallback, options, lineSetId, label, styling = 'primary', moveEndCB = () => { }, showSmallDirectionMark = false, overrideShowMoveHandle = true } = props;\n const { handleFinderActive, revealSetIndex, showMoveHandle, setIndexOffset, showDirectionMark} = options;\n\n // const a = x1 - x2;\n // const b = y1 - y2;\n // const distance = Math.sqrt( a*a + b*b );\n //this distance 60 doesn't work now...\n // const hideGrabHandle = showMoveHandle === false || (showMoveHandle !== true && distance < 60);\n\n const hideGrabHandle = !showMoveHandle || !overrideShowMoveHandle;\n\n\n /** --- Toucher Events Section --- */\n const grabTouchMove = (e: any) => {\n for (let i = 0; i < e.touches.length; i++) {\n // if(i === touchIndex){\n lineMoveCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY});\n // }\n }\n moveEndCB();\n };\n\n const grabTouchStart = (e: any) => {\n for (let i = 0; i < e.touches.length; i++) {\n // if(i === touchIndex){\n lineMoveStartCallback({ x: e.touches[i].pageX, y: e.touches[i].pageY});\n // }\n }\n };\n\n\n /** --- Mouse Events Section --- */\n const handleMouseDown = (e: any) => {\n lineMoveStartCallback({ x: e.pageX, y: e.pageY });\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n e.preventDefault();\n };\n\n const handleMouseUp = (e: any) => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n lineMoveCallback({ x: e.pageX, y: e.pageY });\n moveEndCB();\n e.preventDefault();\n };\n\n const handleMouseMove = (e: any) => {\n lineMoveCallback({ x: e.pageX, y: e.pageY });\n e.preventDefault();\n };\n const midpoint = {\n x: (x2 + x1) / 2,\n y: (y2 + y1) / 2\n };\n\n const directionMarkCoordinate = () => {\n const angle = Math.atan2((y2 - y1), (x2 - x1));\n const angleMode = (Math.PI / 2) - angle;\n const x = midpoint.x + Math.sin(angleMode) -5;\n const y = midpoint.y + Math.cos(angleMode);\n const rotate = (180 / Math.PI) * Math.atan2(y2 - y1, x2 - x1);\n const labelRotate = -rotate;\n return {x, y, rotate, labelRotate};\n };\n\n const getDirectionMarkLine = () => {\n const dmCoordinate = directionMarkCoordinate();\n return (\n <g transform={`translate(${dmCoordinate.x},${dmCoordinate.y}) rotate(${dmCoordinate.rotate}) scale(${unit * 1})`}>\n <g transform='translate(-3,-30) scale(0.8)'>\n <DMCircle r={12} cx={6} cy={7} />\n <Icon color='inverse' icon='Up' size={12} weight='heavy' forSvgUsage />\n </g>\n {showSmallDirectionMark &&\n <g transform='translate(5,25) rotate(-180) scale(0.8)'>\n <DMCircle r={8} cx={3.5} cy={4.5} />\n <Icon color='inverse' icon='Up' size={7} weight='heavy' forSvgUsage />\n </g>}\n {label &&\n <g transform={`translate(0,${showSmallDirectionMark ? 45 : 30}) rotate(${dmCoordinate.labelRotate})`}>\n <LabelText textAnchor='middle' dominantBaseline='middle' styling={styling} fontSize={`${14}px`} x={0} y={0} showIndex={revealSetIndex || handleFinderActive}>\n {label}\n </LabelText>\n </g>}\n </g>\n );\n };\n\n return (\n <g>\n <ContrastLine styling={styling} strokeLinecap='round' x1={x1} y1={y1} x2={x2} y2={y2} strokeWidth={4 * unit} />\n <HighlightLine styling={styling} x1={x1} y1={y1} x2={x2} y2={y2} strokeWidth={2 * unit} />\n\n <GrabHandleGroup styling={styling} showIndex={handleFinderActive && revealSetIndex} originalRadius={8 * unit}>\n <GrabHandleContrast styling={styling} r={8 * unit} strokeWidth={4 * unit} cx={midpoint.x} cy={midpoint.y} hide={hideGrabHandle} />\n <GrabHandle styling={styling} textAnchor='middle' r={8 * unit} strokeWidth={1 * unit} cx={midpoint.x} cy={midpoint.y} hide={hideGrabHandle} onTouchMove={grabTouchMove} onTouchStart={grabTouchStart} onMouseDown={handleMouseDown} />\n </GrabHandleGroup>\n\n <GrabHandleIndexGroup showIndex={!hideGrabHandle && (handleFinderActive || revealSetIndex)}>\n <GrabHandleIndexText styling={styling} fontSize={`${unit * 10}px`} x={midpoint.x - (3 * unit)} y={midpoint.y + (4 * unit)} showIndex={revealSetIndex || handleFinderActive}>\n {lineSetId + setIndexOffset}\n </GrabHandleIndexText>\n </GrabHandleIndexGroup>\n\n {/* <circle r={1* unit} cx={x1} cy={y1} fill='white' /> */}\n {/* <circle r={1* unit} cx={x2} cy={y2} fill='white' /> */}\n\n {showDirectionMark ?\n getDirectionMarkLine()\n :\n label &&\n <LabelText styling={styling} fontSize={`${unit * 14}px`} x={midpoint.x - (16 * unit)} y={midpoint.y - (15 * unit)} showIndex={revealSetIndex || handleFinderActive}>\n {label}\n </LabelText>}\n </g>\n );\n\n};\n\nexport default LineUnit;\n","import { createContext } from 'react';\nimport { IPointSet } from '.';\n\ninterface IContextProps {\n state: IPointSet[]// IState;\n dispatch: any// ({type}:{type:any}) => void;\n }\n\nexport const LineSetContext = createContext({} as IContextProps);\n","import React, { useState, useEffect, useCallback, useContext, useRef } from 'react';\nimport HandleUnit from './HandleUnit';\nimport LineUnit from './LineUnit';\nimport update from 'immutability-helper';\nimport { LineSetContext } from './Contexts';\nimport { IPointSet, IDragLineUISharedOptions, IVector2 } from '.';\nimport styled from 'styled-components';\n\nconst Point = styled.circle<{styling: string}>`\n fill: ${({theme, styling}) => theme.custom.lines[styling].point.fill};\n`;\n\nconst AreaLabelText = styled.text<{styling: string}>`\n text-align: center;\n fill: ${({theme, styling}) => theme.custom.lines[styling].label.fill};\n font-weight: bold;\n transition: opacity 250ms ease;\n pointer-events: none;\n`;\n\ninterface ILineSetProps {\n lineSetId: number,\n boundaries: any,\n size: number,\n unit: number,\n lineData: IPointSet,\n options: IDragLineUISharedOptions,\n onLineMoveEnd: () => void;\n getCTM: () => DOMMatrix | null;\n}\n\ninterface AreaLabelProps {\n lineSetData: IPointSet,\n unit: number\n}\n\nconst AreaLabel : React.FC<AreaLabelProps> = ( { lineSetData, unit } ) => {\n const pointsLength = lineSetData.points.length;\n if (pointsLength < 3) return null;\n let midpoint = { x: 0, y: 0 };\n\n lineSetData.points.map(({ x, y }) => {\n midpoint.x += x;\n midpoint.y += y;\n return null;\n });\n\n midpoint = { x: midpoint.x / pointsLength, y: midpoint.y / pointsLength };\n const Textlen = lineSetData.areaName?.length || 1;\n return <AreaLabelText fontSize={`${unit * 14}px`} styling={lineSetData.styling || 'primary'} x={midpoint.x - (4 * Textlen * unit)} y={midpoint.y + (6 * unit)}>{lineSetData.areaName}</AreaLabelText>;\n};\n\nconst LineSet : React.FC<ILineSetProps> = ({ getCTM, boundaries, unit, size, lineSetId, options , onLineMoveEnd}) => {\n // console.log(\"Unit \" + lineSetId + \", reporting in...\")\n\n const {state, dispatch} = useContext(LineSetContext);\n const lineSetData = state[lineSetId];\n\n const [handleAngles, setHandleAngles] = useState<number[]>([]);\n\n const handleRelation = useRef<{offsetX: number, offsetY: number}[]>([]);\n const handleRadius : number = size / 2;\n const handleUsesAngles : boolean = lineSetData.points.length === 2;\n\n /**\n * Ensure provided position vector is within the boundaries (of the container)\n * @param {IVector2} position Vector to be enforced.\n * @returns {IVector2} The position updated clamped to range.\n */\n const enforceBoundaries = useCallback((position: IVector2) => {\n\n if(position.x < boundaries.x.min){\n position.x = boundaries.x.min;\n } else if (position.x > boundaries.x.max){\n position.x = boundaries.x.max;\n }\n\n if(position.y < boundaries.y.min){\n position.y = boundaries.y.min;\n } else if (position.y > boundaries.y.max){\n position.y = boundaries.y.max;\n }\n\n return position;\n\n }, [boundaries]);\n\n\n const handleMoveCallback = useCallback((pointerPosition: IVector2, index: number) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const pointer = enforceBoundaries({\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a),\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d)\n });\n const point ={\n x: Math.round(pointer.x),\n y: Math.round(pointer.y)\n };\n const newLineSetData = update(lineSetData, {points:{[index]: {$merge: point}}});\n\n dispatch({type: \"UPDATE\", index: lineSetId, data: newLineSetData });\n\n }, [getCTM, enforceBoundaries, lineSetData, dispatch, lineSetId]);\n\n const lineDragStart = useCallback((pointerPosition: IVector2) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const pointer = {\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a) - handleRadius,\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d) - handleRadius\n };\n\n handleRelation.current = lineSetData.points.map((handle) => {\n const xDiff = pointer.x - handle.x;\n const yDiff = pointer.y - handle.y;\n return {\n offsetX: xDiff,\n offsetY: yDiff\n };\n });\n\n },[handleRadius, lineSetData.points, getCTM]);\n\n const lineDragUpdate = useCallback((pointerPosition: IVector2) => {\n const screenCTM = getCTM();\n if(!screenCTM){ return; }\n\n const { points } = lineSetData;\n\n const pointer = {\n x: ((pointerPosition.x - screenCTM.e ) / screenCTM.a) - handleRadius,\n y: ((pointerPosition.y - screenCTM.f ) / screenCTM.d) - handleRadius\n };\n\n const newPoints = points.map((_handle, index) => {\n const {offsetX=0, offsetY=0} = handleRelation.current[index]||{};\n\n return enforceBoundaries({\n x: Math.round(pointer.x - offsetX),\n y: Math.round(pointer.y - offsetY)\n });\n\n });\n\n dispatch({type: \"UPDATE\", index: lineSetId, data: { ...lineSetData, points: [...newPoints] } });\n\n }, [getCTM, lineSetData, handleRadius, dispatch, lineSetId, enforceBoundaries]);\n\n\n\n const calcAngle = (originX: number, originY: number, towardsX: number, towardsY: number) => {\n const angle = Math.atan2(towardsY-originY,towardsX-originX);\n const degrees = angle*180/Math.PI + 90;\n return degrees;\n };\n\n // useCallback maybe to reduce unchanged deals?\n const updateHandleAngles = useCallback((inputHandleData: IPointSet) => {\n const { points } = inputHandleData;\n const outputData : number[] = [];\n\n // Update all handle angles in data set.\n inputHandleData.points.forEach((handle, index) => {\n const nextIndex = ( index + 2 > points.length ) ? 0 : index + 1 ;\n const nextHandle = points[nextIndex];\n const angle = calcAngle(handle.x, handle.y, nextHandle.x, nextHandle.y);\n outputData.push(angle);\n });\n\n setHandleAngles(outputData);\n }, []);\n\n\n useEffect(() => {\n // Update angles when the line's data set has changed.\n if(handleUsesAngles){\n updateHandleAngles(lineSetData);\n }\n }, [lineSetData, updateHandleAngles, handleUsesAngles]);\n\n const handles = (lineSetData?.showPointHandle === undefined || lineSetData?.showPointHandle) &&\n lineSetData.points.map(({ x, y }, index) =>\n <HandleUnit\n key={index+lineSetId}\n lineSetId={lineSetId}\n rotate={lineSetData.rotate}\n Icon={lineSetData.icon}\n index={index}\n unit={unit}\n size={size}\n useAngles={handleUsesAngles}\n angle={handleAngles[index]}\n x={x}\n y={y}\n moveEndCB={onLineMoveEnd}\n moveCallback={handleMoveCallback}\n options={options}\n styling={lineSetData.styling}\n readOnlyHandle={lineSetData.readOnly}\n />\n );\n\n const points = options.showPoint && (lineSetData.points.map(({x,y}, index) => <Point styling={lineSetData.styling||'primary'} key={index} r={unit} cx={x} cy={y} />));\n\n const lines = lineSetData.points.map(({x:x1,y:y1}, index) => {\n const {points, name, styling = 'primary'} = lineSetData;\n //nextIndex index is next Point's index\n const nextIndex = ( index + 1 >= points.length ) ? 0 : index + 1 ;\n //in the case of a line don't draw line back from second point\n if(index === 1 && nextIndex === 0){\n return null;\n }\n const {x:x2,y:y2} = points[nextIndex];\n\n return (\n <LineUnit\n key={index}\n moveEndCB={onLineMoveEnd}\n lineSetId={lineSetId}\n options={options}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n unit={unit}\n label={name}\n styling={styling}\n lineMoveCallback={lineDragUpdate}\n lineMoveStartCallback={lineDragStart}\n showSmallDirectionMark={lineSetData.showSmallDirectionMark}\n overrideShowMoveHandle={lineSetData.showMoveHandle}\n />\n );});\n\n return (\n <g>\n {lines}\n {handles}\n {points}\n <AreaLabel lineSetData={lineSetData} unit={unit} />\n </g>\n );\n};\n\nexport default LineSet;","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport { LineUIOptions, IBoundary } from '.';\nimport Spinner from '../Indicators/Spinner';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n\n`;\n\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{ transculent?: boolean }>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transculent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\nconst Image = styled.img`\n object-fit: contain;\n width: 100%;\n height: 100%;\n`;\n\n\ninterface LineUIProps {\n src: string;\n onSizeChange?: (size: { h: number; w: number }) => void;\n onLineMoveEnd?: () => void;\n options?: LineUIOptions;\n showDirectionMark?: boolean;\n}\nconst LineUI: React.FC<LineUIProps> = ({\n src,\n onSizeChange = () => { },\n onLineMoveEnd = () => { },\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n fixedImgDimensions,\n boundaryOffset = 0,\n showDirectionMark = false\n } = {}\n}) => {\n\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const { state } = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n const [loaded, setLoaded] = useState(false);\n\n\n // Scale Code\n const [imgSize, setImgSize] = useState({ h: 1, w: 1 });\n const [unit, setUnit] = useState(1);\n const imgRef = useRef<HTMLImageElement>(null);\n const frame = useRef<SVGSVGElement>(null);\n\n\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if (!imgRef.current) {\n return;\n }\n\n const { naturalHeight, naturalWidth, clientHeight } = imgRef.current;\n const h = (fixedImgDimensions && fixedImgDimensions.y) || naturalHeight;\n const w = (fixedImgDimensions && fixedImgDimensions.x) || naturalWidth;\n if (h !== imgSize.h || w !== imgSize.w) {\n setImgSize({ h, w });\n onSizeChange({ h, w });\n console.debug('image size:', { naturalHeight, naturalWidth, clientHeight, unit: naturalHeight / clientHeight });\n }\n\n if (h / clientHeight !== unit) {\n setUnit(h / clientHeight);\n }\n setLoaded(true);\n }, [fixedImgDimensions, imgSize.h, imgSize.w, onSizeChange, unit]);\n\n const calculateCTM = useCallback(() => {\n if (!frame.current) { return null; }\n //On size change make sure to refresh CTM\n const ctm = frame.current.getScreenCTM();\n console.debug('calculateCTM', ctm);\n return ctm;\n }, []);\n\n const handlePositionTipShow = (e: any) => {\n if (e.target === frame.current) {\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder || false);\n };\n\n useEffect(() => {\n if (!frame.current) { return; }\n\n // Redefine boundaries loaded image changes our svg viewbox.\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n console.debug('setBoundaries', bounds);\n setBoundaries(bounds);\n }, [imgSize, boundaryOffset]);\n\n useEffect(() => {\n\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Image ref={imgRef} onLoad={initScaleAndBounds} src={src} alt='' />\n {\n (loaded && boundaries) ?\n <Frame ref={frame} viewBox={`0 0 ${imgSize.w} ${imgSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transculent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n :\n <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>\n }\n </Container>\n );\n\n};\n\nexport default LineUI;\n","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport Spinner from '../Indicators/Spinner';\nimport { LineUIOptions, IBoundary, LineUIVideoOptions } from '.';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n`;\nconst Video = styled.video`\n width: 100%;\n height: 100%;\n border-radius: 3px;\n background-color: hsla(0deg, 0%, 0%, 35%);\n`;\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{transcalent?: boolean}>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transcalent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\n\n\n\ninterface LineUIProps {\n src: string;\n onSizeChange?: (size: {h: number; w: number}) => void;\n onLineMoveEnd?: ()=> void;\n onLoaded?: (metadata: {height: number; width: number; }) => void;\n options?: LineUIOptions;\n videoOptions: LineUIVideoOptions;\n}\nconst LineUIVideo : React.FC<LineUIProps> = ({\n src,\n onSizeChange = ()=>{},\n onLineMoveEnd = ()=>{},\n onLoaded = ()=>{},\n videoOptions: {\n loop = false,\n autoPlay = false,\n controls = false,\n muted = true,\n ...videoOptions\n },\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n boundaryOffset = 0,\n showDirectionMark = false\n }={}\n}) => {\n\n const frame = useRef<SVGSVGElement>(null);\n const videoRef = useRef<HTMLVideoElement>(null);\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const {state} = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n\n // Scale Code\n const [videoSize, setVideoSize] = useState({ h: 768, w: 1024 });\n const [unit, setUnit] = useState(1);\n const [loaded, setLoaded] = useState(false);\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if(!videoRef.current) {return;}\n const { videoHeight, videoWidth, clientHeight } = videoRef.current;\n\n if(videoHeight !== videoSize.h || videoWidth !== videoSize.w) {\n setVideoSize({ h: videoHeight, w: videoWidth });\n onSizeChange({ h: videoHeight, w: videoWidth });\n }\n\n if(videoHeight / clientHeight !== unit) {\n setUnit(videoHeight / clientHeight);\n }\n }, [videoSize.h, videoSize.w, unit, onSizeChange]);\n\n const handlePositionTipShow = (e: any) => {\n if(e.target === frame.current){\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder ||false);\n };\n\n const calculateCTM = useCallback(()=>{\n if(!frame.current) {return null;}\n //On size change make sure to refresh CTM\n return frame.current.getScreenCTM();\n },[]);\n\n useEffect(() => {\n // Redefine boundaries and screen matrix when the loaded video changes our svg viewbox.\n if(!frame.current || !loaded) {return;}\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n setBoundaries(bounds);\n }, [videoSize, loaded, boundaryOffset]);\n\n const onLoadedMetadata = useCallback(({target}) =>{\n if(target){\n setLoaded(true);\n initScaleAndBounds();\n const {videoHeight=1, videoWidth=1} = target;\n onLoaded({height: videoHeight, width: videoWidth});\n }\n },[initScaleAndBounds, onLoaded]);\n\n useEffect(() => {\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Video ref={videoRef} controls={controls} muted={muted} autoPlay={autoPlay} loop={loop} {...videoOptions} onLoadedMetadata={onLoadedMetadata} src={src} id='1'> </Video>\n {!loaded && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {\n loaded &&\n <Frame ref={frame} viewBox={`0 0 ${videoSize.w} ${videoSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transcalent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n }\n </Container>\n );\n\n};\n\nexport default LineUIVideo;\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React, { useState, useEffect, useRef, VideoHTMLAttributes } from 'react';\nimport styled from 'styled-components';\n\nconst Video = styled.video`\n /* width: 800px; */\n`;\ninterface WebRTCMessage {\n sdp?: RTCSessionDescriptionInit;\n ice?: RTCIceCandidate;\n}\ninterface OwnProps {\n enabled: boolean;\n peerAddress: string;\n maxConnectionAttempts?: number;\n rtcConfiguration?: RTCConfiguration\n id?: string;\n setStatus?: (status: string) => void;\n setError?: (error: string | null) => void;\n}\ntype Props = OwnProps & VideoHTMLAttributes<HTMLVideoElement>\n\nconst WebRTCPlayer: React.FC<Props> = ({\n id = \"1\",\n enabled,\n peerAddress,\n maxConnectionAttempts = 30,\n rtcConfiguration = {},\n setStatus = () => {},\n setError = () => {},\n // Video element defaults\n autoPlay = true,\n muted = true,\n ...props\n }) => {\n\n const [connectionAttempts, setConnectionAttempts] = useState(0);\n const videoRef = useRef<HTMLVideoElement>(null);\n const webSocket = useRef<WebSocket|null>(null);\n const peerConnection = useRef<RTCPeerConnection|null>(null);\n\n\n function handleIncomingError(error: string) {\n setError(error);\n closeWebSocket();\n }\n\n // SDP offer received from peer, set remote description and create an answer\n const onIncomingSDP = async (description: RTCSessionDescriptionInit) => {\n if (!peerConnection.current || !webSocket.current) {\n return;\n }\n\n try {\n if (description.type === \"offer\" && peerConnection.current.signalingState !== \"stable\") {\n await Promise.all([\n peerConnection.current.setLocalDescription({type: \"rollback\"}),\n peerConnection.current.setRemoteDescription(description)\n ]);\n\n } else {\n if(description.sdp){\n //HACK: this seems to allow more clients to negotiate.64002a\n // seems to use [codec] H264 (96, level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f)\n description.sdp = description.sdp.replace(/profile-level-id=(640028|64001f|64002a);/,'');\n }\n await peerConnection.current.setRemoteDescription(new RTCSessionDescription(description));\n setStatus('Remote Description set');\n }\n } catch (error){\n console.error('Error:', error);\n setError('Error Setting remote description');\n return;\n }\n\n // what is this case?\n if (description.type !== 'offer') {\n return;\n }\n\n setStatus('Creating Answer');\n try {\n const answer = await peerConnection.current.createAnswer();\n console.debug('Got local description: ' + JSON.stringify(answer));\n await peerConnection.current.setLocalDescription(answer);\n } catch (error){\n console.error(error);\n if(error instanceof Error){\n setError(error.message);\n }\n return;\n }\n\n // TODO: Why was this being set to null and why AFTER setting it??\n // peerConnection.current.localDescription['ice-option'] = null\n const message = {\n sdp: peerConnection.current.localDescription\n };\n setStatus('Sending Local Description');\n // console.debug('Local Description:' + JSON.stringify(message));\n try {\n await webSocket.current.send(JSON.stringify(message));\n setStatus('Connected');\n } catch (error) {\n console.error(error);\n if(error instanceof Error){\n setError(error.message);\n }\n }\n };\n\n // ICE candidate received from peer, add it to the peer connection\n function onIncomingICE(ice:RTCIceCandidateInit) {\n if(!peerConnection.current){\n console.error('peerConnection.current not found onIncomingICE ');\n return;\n }\n const candidate = new RTCIceCandidate(ice);\n peerConnection.current.addIceCandidate(candidate).catch(setError);\n }\n\n const onServerMessage = ({data = ''}: MessageEvent) => {\n if(data ==='HELLO') {\n console.debug('Received HELLO');\n setStatus('Registered with server, waiting for offer.');\n } else if (data.startsWith('ERROR')) {\n console.error('Received ' + data);\n handleIncomingError(data);\n } else {\n // Handle incoming JSON SDP and ICE messages\n let msg: WebRTCMessage;\n try {\n msg = JSON.parse(data);\n } catch (e) {\n if (e instanceof SyntaxError) {\n handleIncomingError('Error parsing incoming JSON: ' + data);\n } else {\n handleIncomingError('Unknown error parsing response: ' + data);\n }\n return;\n }\n // Incoming JSON signals the beginning of a call\n if (!peerConnection.current) {\n createCall(msg);\n }\n\n if (msg.sdp != null) {\n console.debug('Received Remote SDP:' + JSON.stringify(msg.sdp));\n onIncomingSDP(msg.sdp);\n } else if (msg.ice != null) {\n console.debug('Received Remote ICE:' + JSON.stringify(msg.ice));\n onIncomingICE(msg.ice);\n } else {\n handleIncomingError('Unknown incoming JSON: ' + msg);\n }\n }\n };\n\n function onServerClose(event: any) {\n console.debug('serverClose');\n if(webSocket.current){\n setStatus('Disconnected from server');\n closePeerConnection();\n //TODO: todo Fix this to clear on close\n if (event !== null && event.code !== 1000 && enabled) {\n window.setTimeout(connectToPeer, 3000);\n }\n }\n }\n\n function onServerError(event: any) {\n console.debug(event);\n setError('Unable to connect to server');\n closeWebSocket();\n }\n\n function connectToPeer() {\n console.debug('connectToPeer', connectionAttempts);\n if (connectionAttempts >= maxConnectionAttempts) {\n setError('Too many connection attempts, aborting. Refresh page to try again');\n return;\n }\n setError(null);\n\n const peerId = getPeerId(id);\n setStatus('Connecting to server ' + peerAddress);\n const ws = new WebSocket(peerAddress);\n webSocket.current = ws;\n /* When connected, immediately register with the server */\n ws.addEventListener('open', () => {\n const interval = setInterval(() => {\n try {\n ws.send('HELLO ' + peerId);\n clearInterval(interval);\n setStatus('Registering with server (sent HELLO) for peer id: ' + peerId);\n } catch (error) {\n console.debug(error);\n }\n }, 3000);\n });\n ws.addEventListener('error', onServerError);\n ws.addEventListener('message', onServerMessage);\n ws.addEventListener('close', onServerClose);\n setConnectionAttempts(connectionAttempts + 1);\n }\n\n function onRemoteTrack(event: RTCTrackEvent) {\n if (videoRef.current && videoRef.current.srcObject !== event.streams[0]) {\n console.debug('Incoming stream');\n videoRef.current.srcObject = event.streams[0];\n setStatus('Adding Track');\n }\n }\n\n function createCall(msg: WebRTCMessage) {\n // Reset connection attempts because we connected successfully\n setConnectionAttempts(0);\n console.debug('Creating RTCPeerConnection');\n\n if (!msg.sdp) {\n console.debug('WARNING: First message wasn\\'t an SDP message!?');\n return;\n }\n\n const pc = new RTCPeerConnection(rtcConfiguration);\n peerConnection.current = pc;\n pc.addEventListener('track', onRemoteTrack);\n\n pc.addEventListener('icecandidate', ({candidate = null}) => {\n\n if (!candidate) {\n console.debug('All local ICE Candidates sent.');\n return;\n }\n // We have a local ICE candidate, send it to the remote party with the same uuid\n if(webSocket.current){\n webSocket.current.send(JSON.stringify({ 'ice': candidate }));\n //TODO: try catch here?\n } else {\n console.debug('no WS found on peer connection \\'icecandidate\\' event... how?');\n }\n });\n // pc.addEventListener('negotiationneeded', ()=>{console.debug('negotiationneeded')})\n\n setStatus('RTCPeerConnection created, waiting for SDP');\n }\n\n const closeWebSocket = async () => {\n console.debug('closeWebSocket');\n await closePeerConnection();\n if(webSocket.current){\n await webSocket.current.close();\n webSocket.current = null;\n }\n };\n\n const closePeerConnection = async() => {\n console.debug('closePeerConnection');\n if (peerConnection.current) {\n await peerConnection.current.close();\n peerConnection.current = null;\n }\n };\n\n useEffect(() => {\n if (enabled === true) {\n connectToPeer();\n } else {\n if (webSocket.current) {\n webSocket.current.close(1000, 'WebRTC Disabled');\n }\n }\n return ()=>{\n console.debug('cleanup');\n closeWebSocket();\n };\n }, [enabled]);// eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <Video {...props} autoPlay={autoPlay} muted={muted} ref={videoRef} />\n );\n};\n\nexport default WebRTCPlayer;\n\n\n\nfunction getPeerId(id: string) {\n return 'WRP_' + id + '_' + Math.floor(Math.random() * (9000 - 10) + 10).toString();\n}","import React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport LineSet from './LineSet';\nimport { LineSetContext } from './Contexts';\nimport WebRTCClient from '../WebRTCClient';\nimport Spinner from '../Indicators/Spinner';\nimport { LineUIOptions, IBoundary, LineUIVideoOptions } from '.';\n\n\nconst Container = styled.div`\n position: relative;\n line-height: 0;\n user-select: none;\n touch-action: none;\n /* box-shadow: 0 10px 20px hsla(195deg, 65%, 5%, 35%); */\n /* border: 10px solid hsla(195deg, 45%, 35%, 45%); */\n /* border-radius:3px; */\n\n width: auto;\n /* transform: translateY(-70%); */\n`;\nconst Video = styled(WebRTCClient)`\n width: 100%;\n height: 100%;\n border-radius: 3px;\n background-color: hsla(0deg, 0%, 0%, 35%);\n`;\nconst LoadingOverlay =styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Frame = styled.svg<{transcalent?: boolean}>`\n touch-action: none;\n user-select: none;\n margin: 0;\n\n overflow: visible;\n\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n transition: background 250ms ease;\n background: hsla(0deg, 0%, 0%, 0%);\n\n ${props => props.transcalent && css`\n background: hsla(0deg, 0%, 0%, 35%);\n `}\n\n`;\n\n\n\ninterface LineUIProps {\n ws: string;\n onSizeChange?: (size: {h: number; w: number}) => void;\n onLineMoveEnd?: ()=> void;\n onLoaded?: (metadata: {height: number; width: number; }) => void;\n options?: LineUIOptions;\n videoOptions?: LineUIVideoOptions;\n}\nconst LineUI : React.FC<LineUIProps> = ({\n ws,\n onSizeChange = ()=>{},\n onLineMoveEnd = ()=>{},\n onLoaded = ()=>{},\n videoOptions,\n options: {\n showHandleFinder,\n showSetIndex,\n showPointLabel = false,\n showPointHandle,\n showMoveHandle,\n showGrabHandle,\n setIndexOffset = 0,\n pointIndexOffset = 0,\n showPoint = false,\n boundaryOffset = 0,\n showDirectionMark = false\n }={}\n}) => {\n\n const frame = useRef<SVGSVGElement>(null);\n const videoRef = useRef<HTMLVideoElement>();\n\n const [boundaries, setBoundaries] = useState<IBoundary>({ x: { min: 0, max: 0 }, y: { min: 0, max: 0 } });\n const {state} = useContext(LineSetContext);\n\n const [handleFinder, setHandleFinder] = useState<boolean>(false);\n\n\n // Scale Code\n const [videoSize, setVideoSize] = useState({ h: 768, w: 1024 });\n const [unit, setUnit] = useState(1);\n const [loaded, setLoaded] = useState(false);\n\n // Initialization functions.\n const initScaleAndBounds = useCallback(() => {\n if(!videoRef.current) {return;}\n const { videoHeight, videoWidth, clientHeight } = videoRef.current;\n\n if(videoHeight !== videoSize.h || videoWidth !== videoSize.w) {\n setVideoSize({ h: videoHeight, w: videoWidth });\n onSizeChange({ h: videoHeight, w: videoWidth });\n }\n\n if(videoHeight / clientHeight !== unit) {\n setUnit(videoHeight / clientHeight);\n }\n }, [videoSize.h, videoSize.w, unit, onSizeChange]);\n\n const handlePositionTipShow = (e: any) => {\n if(e.target === frame.current){\n setHandleFinder((!handleFinder === false) && true);\n }\n };\n\n const handlePositionTipHide = () => {\n setHandleFinder(showHandleFinder ||false);\n };\n\n const calculateCTM = useCallback(()=>{\n if(!frame.current) {return null;}\n //On size change make sure to refresh CTM\n return frame.current.getScreenCTM();\n },[]);\n\n useEffect(() => {\n // Redefine boundaries and screen matrix when the loaded video changes our svg viewbox.\n if(!frame.current || !loaded) {return;}\n const { viewBox } = frame.current;\n const bounds = {\n x: {\n min: viewBox.baseVal.x + boundaryOffset,\n max: viewBox.baseVal.x + viewBox.baseVal.width - boundaryOffset\n },\n y: {\n min: viewBox.baseVal.y + boundaryOffset,\n max: viewBox.baseVal.y + viewBox.baseVal.height - boundaryOffset\n },\n };\n setBoundaries(bounds);\n }, [videoSize, loaded, boundaryOffset]);\n\n const onLoadedMetadata = useCallback(({target}) =>{\n if(target){\n setLoaded(true);\n videoRef.current = target;\n initScaleAndBounds();\n const {videoHeight=1, videoWidth=1} = target;\n onLoaded({height: videoHeight, width: videoWidth});\n }\n },[initScaleAndBounds, onLoaded]);\n\n useEffect(() => {\n // Make sure we always keep scale up to date on resize.\n window.addEventListener('resize', initScaleAndBounds);\n return () => {\n window.removeEventListener('resize', initScaleAndBounds);\n };\n }, [initScaleAndBounds]);\n\n const options = {\n handleFinderActive: handleFinder,\n revealSetIndex: showSetIndex !== false && (showSetIndex || state.length > 1),\n showPointLabel,\n showPointHandle: showPointHandle || (showPointHandle !== false && showGrabHandle !== false),\n showMoveHandle: showMoveHandle || (showMoveHandle !== false && showGrabHandle !== false),\n setIndexOffset,\n pointIndexOffset,\n showPoint,\n showDirectionMark\n };\n\n return (\n <Container>\n <Video onLoadedMetadata={onLoadedMetadata} peerAddress={ws} id='1' {...videoOptions} enabled> </Video>\n {!loaded && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {\n loaded &&\n <Frame ref={frame} viewBox={`0 0 ${videoSize.w} ${videoSize.h} `} version='1.1' xmlns='http://www.w3.org/2000/svg' onPointerDown={handlePositionTipShow} onPointerUp={handlePositionTipHide} onPointerLeave={handlePositionTipHide} transcalent={handleFinder}>\n {state.map((lineSet, index) => (\n <LineSet key={index} onLineMoveEnd={onLineMoveEnd} lineSetId={index} lineData={lineSet} getCTM={calculateCTM} boundaries={boundaries} unit={unit} size={30} options={options} />\n ))}\n </Frame>\n }\n </Container>\n );\n\n};\n\nexport default LineUI;\n","import { IPointSet, IVector2 } from './';\nimport update from 'immutability-helper';\n\nexport type IReducerActions =\n | UpdateAction\n | LoadAction\n | AddSetAction\n | RemoveAction\n | AddPointAction\n | RemovePointAction\n | UpdateSetOptions\n | RenameSetAction\n ;\n\ninterface AddSetAction{\n type: 'ADD_SET';\n data: IPointSet;\n}\ninterface UpdateAction {\n type: 'UPDATE'|'UPDATE_SET_POINTS';\n index: number;\n data: IPointSet;\n}\n\ninterface RenameSetAction {\n type: 'RENAME_SET';\n index: number;\n data: {\n name: string;\n };\n}\ninterface UpdateSetOptions {\n type: 'UPDATE_SET_OPTIONS';\n index: number;\n data: Partial<IPointSet>;\n}\ninterface RemoveAction {\n type: 'REMOVE_SET';\n index: number;\n}\ninterface LoadAction {\n type: 'LOAD';\n state: IPointSet[];\n}\ninterface AddPointAction {\n type: 'ADD_POINT';\n index: number;\n}\ninterface RemovePointAction {\n type: 'REMOVE_POINT';\n index: number;\n}\n\nconst getMidpoint = (pointA : IVector2, pointB : IVector2) => {\n return({\n x: pointA.x + (pointB.x - pointA.x) * 0.5,\n y: pointA.y + (pointB.y - pointA.y) * 0.5\n });\n};\n\nexport default (state : IPointSet[], action: IReducerActions) => {\n\n switch(action.type){\n //This UPDATE is better named 'UPDATE_SET_POINTS'\n case \"UPDATE_SET_POINTS\":\n case \"UPDATE\": {\n const points = action.data.points.map((point) => ({...point}));\n return update(state, {[action.index]: { points: {$set: points}}});\n }\n\n case \"RENAME_SET\": {\n const set = { ...state[action.index], name: action.data.name};\n return update(state, {[action.index]: {$set: set}});\n }\n\n case \"UPDATE_SET_OPTIONS\": {\n const set = { ...state[action.index], ...action.data};\n return update(state, {[action.index]: {$set: set}});\n }\n\n case \"ADD_SET\":\n return [...state, action.data];\n\n case \"REMOVE_SET\":\n return update(state, { $splice: [[action.index,1]]});\n\n case \"ADD_POINT\": {\n const newPoint: IVector2 = getMidpoint(state[action.index].points[0], state[action.index].points[1]);\n return update(state, {[action.index]: {points: {$splice: [[1, 0, newPoint]]}}});\n }\n\n case \"REMOVE_POINT\":\n if(state[action.index].points.length <= 2){ return state; }\n return update(state, {[action.index]: {points: {$splice: [[state[action.index].points.length - 1, 1]]}}});\n\n case 'LOAD': {\n const newState = action.state.map(\n ({name, points, ...rest}) => ({\n name,\n points: points.map( ({x,y}) => ({x,y}) ),\n ...rest\n })\n );\n return newState;\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n","import { useEffect } from 'react';\n\nexport const useTitle = (title : string, area? : string, delimiter?: string, update= true) => {\n\n// Index Title\nconst baseTitle = document.title.split('|').slice(-1)[0].trim();\n\n// on unmount will return the baseTitle to Index Title for pages not using this hook.\nuseEffect(() => {\n return () => {\n document.title = baseTitle;\n };\n}, [baseTitle]);\n\n useEffect(() => {\n if(!update) return;\n document.title = makeTitle([\n ...(title ? [title] : []),\n ...(area ? [area] : []),\n ...(baseTitle? [baseTitle] : [])\n ], delimiter);\n\n },[title, area, delimiter, update, baseTitle]);\n};\n\n/**\n * Put the parts together for title use.\n * @param parts Each part to make up the title.\n * @param delimiter Character used for delimiting\n */\nconst makeTitle = (parts: string[], delimiter : string = '|') : string => {\n\n let title = '';\n delimiter = ' ' + delimiter + ' ';\n\n parts.forEach((part, key) => {\n title += part;\n if(parts.length - 1 !== key){\n title += delimiter;\n }\n });\n\n return title;\n\n};","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport { Link } from 'react-router-dom';\nimport { useTitle } from '../../hooks/useTitle';\n\n\nconst Container = styled.div`\n position: relative;\n`;\n\nconst IconContainer = styled.div`\n position: absolute;\n left: -45px;\n bottom: 0;\n height: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n display: block;\n }\n`;\n\nconst Title = styled.h1`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.mainTitle};\n `}\n margin: 0 0 20px;\n`;\n\n\nconst AreaTitleCss = css`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.areaTitle};\n `}\n margin: 0;\n position: absolute;\n top: -18px;\n`;\n\nconst AreaTitle = styled.div`\n ${AreaTitleCss}\n`;\n\nconst AreaLinkTitle = styled(Link)`\n ${AreaTitleCss}\n &:hover {\n text-decoration: underline;\n }\n`;\n\ninterface IProps {\n title: string\n icon?: string\n areaTitle?: string\n areaHref?: string\n updateDocTitle?: boolean\n hideAreaInDocTitle? : boolean\n}\n\nconst PageTitle : React.FC<IProps> = ({title, icon, areaTitle, areaHref, updateDocTitle = true, hideAreaInDocTitle=false }) => {\n // Set <title> attribute automagically.\n\n useTitle(title, hideAreaInDocTitle ? undefined : areaTitle || '', undefined, updateDocTitle);\n\n return (\n <Container>\n {areaTitle && areaHref\n ? <AreaLinkTitle to={areaHref}>{areaTitle}</AreaLinkTitle>\n : areaTitle && <AreaTitle>{areaTitle}</AreaTitle>}\n <Title>{title}</Title>\n {icon ?\n <IconContainer><Icon size={24} color='dimmed' {...{icon}} /></IconContainer>\n : null}\n </Container>\n );\n};\n\nexport default PageTitle;","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nconst Container = styled.p`\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.pageHeader.introduction};\n `}\n`;\n\ninterface IProps {}\n\nconst IntroductionText : React.FC<IProps> = ({children}) => {\n return (\n <Container>\n {children}\n </Container>\n );\n};\n\nexport default IntroductionText;","import React from 'react';\nimport styled from 'styled-components';\n\nimport PageTitle from '../atoms/PageTitle';\nimport IntroductionText from '../atoms/IntroductionText';\n\nconst Container = styled.div``;\n\ninterface IProps {\n title: string\n areaHref?: string\n areaTitle?: string\n icon?: string\n introductionText?: string\n updateDocTitle?: boolean\n hideAreaInDocTitle? : boolean\n}\n\nconst PageHeader : React.FC<IProps> = ({title, icon, introductionText, areaHref, areaTitle, updateDocTitle = true, hideAreaInDocTitle}) => {\n return (\n <Container>\n <PageTitle {...{title, icon, areaHref, areaTitle, updateDocTitle, hideAreaInDocTitle}} />\n {introductionText ?\n <IntroductionText>{introductionText}</IntroductionText>\n : null}\n </Container>\n );\n};\n\nexport default PageHeader;","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\n/**\n * This component creates a column of ReactElements\n */\nexport interface IMultiContent {\n contentArray: ReactElement[];\n}\n\nconst MultilineContent : React.FC<IMultiContent> = ({contentArray}) => {\n return(\n <Container>\n {contentArray.map((element, index) => {\n return <div key={`element-${index}`}>{element}</div>;\n })}\n </Container>\n );\n};\n\nexport default MultilineContent;","import React, { useState, useCallback, VideoHTMLAttributes } from 'react';\nimport styled, { css } from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport { IMediaType } from '../../index';\nimport Icon from '../../Icons/Icon';\n\nexport const MediaBoxWrapper = styled.div<{minWidth?: string, minHeight?: string}>`\n position: relative;\n line-height: 0;\n ${({minHeight}) => minHeight && `min-height: ${minHeight}`};\n ${({minWidth}) => minWidth && `min-width: ${minWidth}`};\n`;\n\nconst mediaStyle = `\n max-width: 100%;\n max-height: 100%;\n border-radius: 3px;\n background-color: var(--grey-11);\n`;\n\nconst LoadingOverlay = styled.div`\n position: absolute;\n top:0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Video = styled.video<{ isLoaded?: boolean, hasModalLimits?: boolean }>`\n ${mediaStyle};\n outline: none;\n\n ${({ theme, isLoaded, hasModalLimits }) => css`\n transition: opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeOut};\n opacity: ${isLoaded ? `1` : `0`};\n\n ${hasModalLimits && css`\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 100px);\n `};\n `};\n`;\n\nconst StyledImage = styled.img<{ isLoaded?: boolean, hasModalLimits?: boolean }>`\n ${mediaStyle};\n\n ${({ theme, isLoaded, hasModalLimits }) => css`\n transition: opacity ${theme.animation.speed.slow} ${theme.animation.easing.primary.easeOut};\n opacity: ${isLoaded ? `1` : `0`};\n\n ${hasModalLimits && css`\n max-height: calc(100vh - 100px);\n max-width: calc(100vw - 100px);\n `};\n `};\n`;\n\nexport interface IMediaModal {\n src: string\n mediaType: IMediaType\n alt?: string\n videoOptions?: VideoHTMLAttributes<HTMLVideoElement>\n hasModalLimits?: boolean\n retryLoading?: boolean\n retryLimit?: number\n minWidth?: string\n minHeight?: string\n onError?: (e: Event) => void\n onMediaLoad?: () => void\n}\n\nconst MediaBox: React.FC<IMediaModal> = ({\n src: incomingSrc,\n alt,\n videoOptions = {},\n mediaType,\n hasModalLimits,\n retryLoading= false,\n retryLimit=5,\n minWidth,\n minHeight,\n onError: onErrorCallback = () => { },\n onMediaLoad = () => { },\n}) => {\n const [retryCount, setRetryCount] = useState(0);\n const [src, setSrc] = useState(incomingSrc);\n const [loadFailed, setLoadFailed] = useState(false);\n const [loaded, setLoaded] = useState(false);\n\n const {\n loop = false,\n autoPlay = true,\n controls = false,\n muted = true,\n ...videoValues\n } = videoOptions;\n\n const onError = useCallback((e)=>{\n if(!retryLoading || retryCount >= retryLimit) {\n onErrorCallback(e);\n setLoaded(true);\n setLoadFailed(true);\n } else {\n const randomDelay = (1000 * (retryCount ** 2 + Math.random())); // exponential back off retry\n setRetryCount(count => count+1);\n setTimeout(()=>{\n setSrc(`${incomingSrc}?v=${Date.now()}`);\n }, randomDelay);\n }\n\n },[incomingSrc, onErrorCallback, retryCount, retryLoading, retryLimit]);\n\n const handleLoad = useCallback(() => {\n onMediaLoad();\n setLoaded(true);\n }, [onMediaLoad, setLoaded]);\n\n return (\n <MediaBoxWrapper {...{minWidth, minHeight}}>\n {mediaType === 'video'\n ? <Video\n {...{ src, loop, autoPlay, controls, muted, onError, hasModalLimits }}\n {...videoValues}\n isLoaded={loaded && !loadFailed}\n preload='metadata'\n onCanPlayThrough={handleLoad}\n />\n : <StyledImage\n {...{ src, alt, onError, hasModalLimits }}\n onLoad={handleLoad}\n isLoaded={loaded && !loadFailed}\n />}\n {(!loaded) && <LoadingOverlay><Spinner size='large' styling='primary' /></LoadingOverlay>}\n {loadFailed && <LoadingOverlay><Icon icon='MissingImage' size={48} /></LoadingOverlay>}\n </MediaBoxWrapper>\n );\n};\n\nexport default MediaBox;","import React, { ReactElement, useCallback, useRef } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\nimport { resetButtonStyles } from '../common';\nimport Icon, {IconWrapper} from '../Icons/Icon';\nimport { useClickOutside } from '../hooks/useClickOutside';\n\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--grey-3);\n -webkit-backdrop-filter: blur(5px);\n backdrop-filter: blur(5px);\n z-index: 999;\n ${({theme}) => theme && css``}\n\n font-family: ${({ theme }) => theme.fontFamily.ui};\n ${({ theme }) => theme.styles.modal.overlay};\n`;\n\nconst CloseIcon = styled(Icon)``;\n\nconst CloseButton = styled.button<{ selected?: boolean }>`\n ${resetButtonStyles};\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n right: 0;\n top: -30px;\n color: ${({theme}) => theme.colors.icons.mono};\n font-size: 14px;\n font-weight: 500;\n\n ${IconWrapper} {\n display: flex;\n margin-left: 12px;\n }\n ${({ selected = false }) => selected && css`\n border-bottom: 5px solid var(--primary-7);\n `}\n &:focus {\n outline: none;\n }\n\n &:hover:enabled {\n ${({ theme }) => theme && css`\n opacity: .8;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.inOut};\n `}\n }\n\n &:active:enabled {\n opacity: .9;\n }\n &:disabled {\n opacity: 0.1;\n }\n`;\n\nconst LightBox = styled.div<{ padding?: boolean, width?: string}>`\n position: relative;\n margin: 27px 0 0;\n z-index: 9999;\n width: ${({ width }) => width ? width : `580px`};\n padding: ${({ padding }) => padding ? `30px 40px` : `0`};\n border-radius: 5px;\n ${({ theme }) => theme.styles.modal.container};\n`;\n\nexport interface IModalProps {\n isOpen: boolean;\n isCloseEnable?: boolean;\n closeText?: string;\n width?: string;\n padding?: boolean;\n customComponent?: ReactElement;\n onDismiss: () => void;\n dismissCallback?: () => void;\n}\n\nconst Modal: React.FC<IModalProps> = ({\n isOpen = false,\n isCloseEnable = true,\n closeText = '',\n width = '',\n padding = true,\n customComponent,\n onDismiss,\n dismissCallback,\n}) => {\n\n const lightBoxRef = useRef<HTMLDivElement>(null);\n const onClickOutside = () => {\n if (isCloseEnable) {\n if(dismissCallback) {\n dismissCallback();\n }\n dismiss();\n }\n };\n\n useClickOutside(lightBoxRef, onClickOutside);\n\n const dismiss = useCallback(() => {\n if(dismissCallback) {\n dismissCallback();\n }\n onDismiss();\n }, [onDismiss, dismissCallback]);\n\n return (isOpen\n ? ReactDom.createPortal(\n <Container>\n <LightBox ref={lightBoxRef} width={width} padding={padding}>\n {isCloseEnable\n ?\n <CloseButton onClick={() => dismiss()}>\n {closeText ? closeText : 'CLOSE'}\n <CloseIcon icon='CloseCompact' size={15} color='mono' weight='regular' />\n </CloseButton>\n : null}\n {customComponent}\n </LightBox>\n </Container>, document.body)\n : null\n );\n};\n\nexport default Modal;","import React, { useState } from 'react';\nimport Modal, { IModalProps } from '../Modals/Modal';\n\nconst defaultModalProps: IModalProps = {\n isOpen: false,\n onDismiss: () => null,\n};\n\ninterface ModalContextType {\n modalProps: IModalProps;\n setModalProps: (newProps: IModalProps) => void;\n}\n\nconst defaultContext: ModalContextType = {\n modalProps: defaultModalProps,\n setModalProps: (newProps: IModalProps) => { console.log(newProps); },\n};\n\nconst ModalContext = React.createContext<ModalContextType>(defaultContext);\n\nconst ModalProvider: React.FC = ({ children }) => {\n\n const [modalProps, setProps] = useState<IModalProps>(defaultContext.modalProps);\n\n const setModalProps = (newProps: IModalProps) => {\n setProps(newProps);\n };\n\n return (\n <ModalContext.Provider value={{ modalProps, setModalProps }}>\n <Modal {...modalProps} />\n {children}\n </ModalContext.Provider>\n );\n};\n\nexport { ModalContext };\nexport default ModalProvider;","import { ReactElement, useCallback, useContext} from 'react';\nimport { ModalContext } from '../context/ModalContext';\nimport { IModalProps } from '../Modals/Modal';\n\n/**\n * This type is a reduced version of the modalProps\n * but with the possibilities to grow beyond the basic modal\n * features\n */\nexport type IModal = {\n closeText?: string,\n isCloseEnable?: boolean,\n width?: string,\n padding?: boolean,\n dismissCallback?: () => void,\n customComponent?: ReactElement\n}\nexport const useModal = () => {\n const { modalProps, setModalProps } = useContext(ModalContext);\n\n const setModalOpen = useCallback((newStatus: boolean) => {\n if (newStatus === undefined) { return;}\n\n const updateProps: IModalProps = {\n ...modalProps,\n isOpen: newStatus,\n };\n setModalProps(updateProps);\n }, [modalProps, setModalProps]);\n\n const onDismiss = useCallback(() => {\n setModalOpen(false);\n }, [setModalOpen]);\n\n const createModal = useCallback((modal?: IModal) => {\n\n if(!modal) {\n setModalProps({isOpen: true, onDismiss});\n }\n\n const updateProps = {\n isOpen: true,\n closeText: modal?.closeText,\n isCloseEnable: modal?.isCloseEnable,\n width: modal?.width,\n padding: modal?.padding,\n dismissCallback: modal?.dismissCallback,\n customComponent: modal?.customComponent,\n onDismiss,\n };\n\n setModalProps(updateProps);\n }, [onDismiss, setModalProps]);\n\n return {\n createModal,\n isModalOpen: modalProps.isOpen,\n setModalOpen,\n };\n};","import React, {useCallback, VideoHTMLAttributes } from 'react';\nimport { IMediaType } from '..';\nimport MediaBox, { IMediaModal } from \"../Misc/atoms/MediaBox\";\nimport { useModal, IModal } from \"./useModal\";\n\n\nexport type ICreateMediaModal = IMediaModal & IModal;\n\nconst videoDefaultOptions: VideoHTMLAttributes<HTMLVideoElement> = { controls: true };\n\nexport const useMediaModal = () => {\n\n // default options for media box\n const { createModal, isModalOpen, setModalOpen } = useModal();\n\n async function isMediaUrlValid(src: string, mediaType: IMediaType): Promise<boolean> {\n let isValid = false;\n\n if (mediaType === 'img') {\n const img = new Image();\n img.src = src;\n try {\n await new Promise((resolve, reject) => {\n img.onload = () => resolve(isValid = true);\n img.onerror = reject;\n });\n } catch (error) {\n isValid = false;\n console.log(`[useMediaModal - isMediaUrlValid] Invalid preview url ${src} - image load failed, modal will not be open`, error);\n }\n }\n\n if (mediaType === 'video') {\n const videoElement = document.createElement('video');\n videoElement.src = src;\n\n try {\n await new Promise((resolve, reject) => {\n videoElement.oncanplaythrough = () => resolve(isValid = true);\n videoElement.onerror = reject;\n });\n\n } catch (error) {\n isValid = false;\n console.log(`[useMediaModal - isMediaUrlValid] Invalid preview url ${src} - video load failed, modal will not be open`, error);\n }\n }\n\n return isValid;\n }\n\n\n const createMediaModal = useCallback(async (mediaModal: ICreateMediaModal) => {\n const {\n src,\n mediaType,\n alt,\n videoOptions = videoDefaultOptions,\n onError,\n onMediaLoad,\n closeText,\n dismissCallback,\n retryLoading = false,\n retryLimit=5,\n minHeight='300px',\n minWidth='300px',\n } = mediaModal;\n\n createModal({\n padding: false,\n width: 'auto',\n closeText,\n dismissCallback,\n customComponent: (\n <MediaBox\n {...{\n src,\n mediaType,\n alt,\n videoOptions,\n onError,\n onMediaLoad,\n retryLoading,\n retryLimit,\n minHeight,\n minWidth,\n }}\n hasModalLimits\n />\n )\n });\n\n }, [createModal]);\n\n return {\n createMediaModal,\n isMediaUrlValid,\n isMediaModalOpen: isModalOpen,\n setMediaModalOpen: setModalOpen,\n };\n};","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport { useMediaModal } from '../../hooks/useMediaModal';\nimport { IMediaType } from '../..';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\ntype VideoAspects = '4:3' | '16:9';\n\nconst Container = styled.div<{ hoverZoom?: boolean, aspect?: VideoAspects, mediaUrl?: string}>`\n position: relative;\n height: inherit;\n background: grey;\n border-radius: 3px;\n overflow: hidden;\n width: 55px;\n height: auto;\n opacity: 0.65;\n margin-right: 10px;\n\n &::after {\n content: '';\n display: block;\n padding-bottom: 75%;\n ${({ aspect }) => aspect === '16:9' && css`\n padding-left: 56.25%;\n `}\n }\n\n ${({ theme }) => theme && css`\n transition:\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n transform ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n `}\n\n &:hover {\n ${({ mediaUrl }) => mediaUrl && css`\n cursor: pointer;\n `};\n\n ${({ theme, hoverZoom }) => theme && hoverZoom && css`\n transform: scale(1.5);\n opacity: 1;\n transition: transform ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut};\n `}\n }\n\n`;\nconst Image = styled.img<{ showImage: boolean }>`\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n display: ${({showImage}) => showImage===true ? 'block': 'none'};\n`;\n\nconst PlayableDrop = styled.div`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--black-a1);\n height: 24px;\n width: 24px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n ${IconWrapper} {\n display: flex;\n svg {\n padding-left: 2px;\n path {\n stroke: var(--white-1);\n }\n }\n };\n`;\n\ninterface IProps {\n image?: string\n hoverZoom?: boolean,\n aspect?: VideoAspects\n mediaUrl?: string\n mediaType?: IMediaType\n retryImageLoad?: boolean\n retryLimit?: number;\n}\n\n// Image\n// No Image Placeholder\n\nconst TableRowThumbnail: React.FC<IProps> = ({ hoverZoom = true, image='', mediaUrl, mediaType, retryImageLoad= false, retryLimit=5}) => {\n const [showImage, setShowImage] = useState(true);\n const [imgSrc, setImgSrc] = useState(image);\n const { createMediaModal } = useMediaModal();\n const [retryCount, setRetryCount] = useState(0);\n const imgRef = useRef<HTMLImageElement>(null);\n const timeoutRef = useRef<(ReturnType<typeof setTimeout>)|null>(null);\n\n const handleModal = useCallback(async () => {\n\n if ( mediaUrl && mediaType ) {\n createMediaModal({ src: mediaUrl, mediaType });\n }\n }, [createMediaModal, mediaType, mediaUrl]);\n\n useEffect(()=>{\n setShowImage(false);\n setRetryCount(0);\n setImgSrc(image);\n },[image]);\n\n useEffect(()=>{\n if(imgRef.current && imgRef.current.complete && imgSrc !== ''){\n timeoutRef.current && clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n setShowImage(true);\n }\n },[imgSrc]);\n\n const retryTimeout = useCallback(()=>{\n timeoutRef.current = null;\n setImgSrc(`${image}?v=${Date.now()}`);\n },[image]);\n\n const retryImage = useCallback(()=>{\n setShowImage(false);\n if(!retryImageLoad || retryCount >= retryLimit ||timeoutRef.current) return;\n const randomDelay = (1000 * (retryCount ** 2 + Math.random())); // exponential back off retry\n setRetryCount(count => count+1);\n timeoutRef.current = setTimeout(retryTimeout, randomDelay);\n },[retryCount, retryImageLoad, retryLimit, retryTimeout]);\n\n\n\n const onLoad = useCallback(()=>{\n timeoutRef.current && clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n setShowImage(true);\n },[]);\n\n return (\n <Container {...{ hoverZoom, mediaUrl }} aspect='16:9' onClick={handleModal}>\n <Image ref={imgRef} src={imgSrc} onError={retryImage} onLoad={onLoad} showImage={showImage} />\n {mediaUrl && (mediaType === 'video') &&\n <PlayableDrop>\n <Icon size={12} icon='Play' color='inverse' />\n </PlayableDrop>}\n </Container>\n );\n};\n\nexport default TableRowThumbnail;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport {IDeviceStatus} from '..';\n\ntype TypeDeviceStatus = IDeviceStatus;\n\nconst Container = styled.div<{ status: TypeDeviceStatus }>`\n height: 42px;\n width: 4px;\n border-radius: 3px;\n display: block;\n\n ${({status, theme: {colors}}) => css`\n background: ${colors.status[status]};\n content:'${status}';\n `}\n\n`;\n\ninterface IProps {\n status: TypeDeviceStatus\n}\n\nconst TypeTableDeviceStatus : React.FC<IProps> = ({status = 'neutral'}) => {\n return <Container status={status} />;\n};\n\nexport default TypeTableDeviceStatus;","import { useCallback } from 'react';\n\nexport const useCopyToClipboard = () => {\n const copyToClipboard = useCallback((str : string) : boolean => {\n\n // Make an area to allow for copying.\n const el = document.createElement('textarea');\n el.value = str;\n el.setAttribute('readonly', '');\n el.style.position = 'absolute';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n\n const selection = document.getSelection();\n\n if(selection){\n const selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false;\n el.select();\n\n const success = document.execCommand('copy');\n document.body.removeChild(el);\n if(selected) {\n selection.removeAllRanges();\n selection.addRange(selected);\n }\n return success;\n }\n\n return false;\n\n },[]);\n\n return {copyToClipboard};\n};","import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport { useCopyToClipboard } from '../../hooks/useCopyToClipboard';\nimport {TypeCellStyle, TypeCellAlignment} from '..';\n\nconst CopyToClipboard = styled.button`\n\n cursor: pointer;\n opacity: 0;\n\n position: absolute;\n right: 0;\n top: 14px;\n width: 20px;\n height: 20px;\n background: transparent;\n border: none;\n outline: none;\n\n ${({theme}) => theme && css`\n transition: ${theme.animation.speed.normal} ${theme.animation.easing.easeOut};\n `}\n\n svg {\n display: block;\n }\n\n &:hover {\n opacity: 1 !important;\n }\n\n`;\n\nconst CellContainer = styled.div<{ cellStyle: TypeCellStyle, alignment: TypeCellAlignment, hideDivider?: boolean, hasCopyButton?:boolean }>`\n display: table-cell;\n height: 50px;\n vertical-align: middle;\n position: relative;\n line-height: 30px;\n font-family: ${p => p.theme.fontFamily.data};\n\n &:hover ${CopyToClipboard}{\n opacity: 0.5;\n }\n\n &, a {\n ${({theme, cellStyle, alignment}) => cellStyle === 'firstColumn' ? css`\n ${theme.typography.table.columnData[cellStyle]};\n ` : css`\n ${theme.typography.table.columnData[cellStyle][alignment]};\n `}\n }\n\n a:hover {\n text-decoration: underline;\n }\n\n ${({hasCopyButton}) => hasCopyButton && css`\n padding-right: 20px;\n `};\n\n ${({theme: {styles}, hideDivider}) => !hideDivider && css`\n &::after {\n ${styles.tables.rows.divider};\n content: '';\n display: block;\n height: 1px;\n left: 0;\n right: 0;\n width: 100%;\n bottom: 0px;\n position: absolute;\n }\n `}\n`;\n\nconst UnitText = styled.span`\n ${({theme}) => css`\n ${theme.typography.table.columnData['unit']};\n `}\n`;\n\nconst StatusBlip = styled.div<{status?:string}>`\n display: inline-block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 8px;\n ${({status = 'neutral', theme: {colors}}) => css`\n background: ${colors.status[status]};\n `}\n`;\ninterface IProps {\n isLastRow?: boolean\n hideDivider?: boolean\n cellStyle?: TypeCellStyle\n alignment?: TypeCellAlignment\n href?: string\n showUnit?: boolean\n showStatus?: boolean\n unit?: string\n status?: string\n hasCopyButton?: boolean\n}\n\nconst TypeTableCell : React.FC<IProps> = ({ showUnit = false, showStatus = false, status, unit = '', cellStyle = 'normalImportance', alignment = 'left', hideDivider, isLastRow, hasCopyButton, href, children }) => {\n\n // No divider on the last row.\n hideDivider = isLastRow ? true : hideDivider;\n\n const {copyToClipboard} = useCopyToClipboard();\n\n\n return (\n <CellContainer {...{cellStyle, alignment, hideDivider, hasCopyButton}}>\n {showStatus ? <StatusBlip {...{status}} /> : null}\n {href ? <a href={href}>{children}</a> : children}\n {showUnit ? <UnitText>{unit}</UnitText> : null}\n {hasCopyButton ? <CopyToClipboard onClick={() => typeof children === 'string' && copyToClipboard(children)}><Icon icon='Copy' size={16} /></CopyToClipboard> : null}\n </CellContainer>\n );\n};\n\nexport default TypeTableCell;\n","import React, { useCallback } from 'react';\nimport styled, {css} from 'styled-components';\n\nimport Checkbox from '../../Form/atoms/Checkbox';\nimport TableRowThumbnail from './TableRowThumbnail';\nimport TypeTableDeviceStatus from './TypeTableDeviceStatus';\nimport TypeTableCell from './TypeTableCell';\nimport Icon from '../../Icons/Icon';\nimport { ITableColumnConfig, IRowData } from '..';\n\n\nconst RowContainer = styled.div<{isEmpty: boolean}>`\n display: table-row;\n ${({isEmpty}) => isEmpty && css`\n visibility: hidden;\n `};\n`;\n\ninterface IProps {\n isLastRow?: boolean\n selectable?: boolean\n hasStatus?: boolean\n hasThumbnail?: boolean\n hasTypeIcon?: boolean\n columnConfig: ITableColumnConfig[]\n rowData: IRowData\n selectCallback? : (event: any, id?: string | number) => void\n}\n\nconst TypeTableRow : React.FC<IProps> = ({selectable = false, selectCallback, hasStatus, hasThumbnail, hasTypeIcon, rowData, isLastRow, columnConfig }) => {\n\n const wrappedSelectCallback = useCallback((checked) => {\n if(selectCallback){ selectCallback(checked, rowData.id); }\n }, [rowData.id, selectCallback]);\n\n const isEmpty = rowData.columns.length === 0;\n\n return (\n <RowContainer isEmpty={isEmpty}>\n {selectable ? <TypeTableCell hideDivider><Checkbox checked={rowData._checked} onChangeCallback={wrappedSelectCallback} /></TypeTableCell> : null}\n {hasStatus ? <TypeTableCell hideDivider><TypeTableDeviceStatus status={rowData.header?.status} /></TypeTableCell> : null}\n {hasThumbnail ? <TypeTableCell hideDivider><TableRowThumbnail image={rowData.header?.image} mediaUrl={rowData.header?.mediaUrl} mediaType={rowData.header?.mediaType} retryImageLoad={rowData.header?.retryImageLoad} /></TypeTableCell> : null}\n {hasTypeIcon ? <TypeTableCell hideDivider><Icon icon={rowData.header?.icon || ''} color='dimmed' weight='regular' size={16} /></TypeTableCell> : null}\n\n {rowData.columns.map((cell, key) => {\n const {cellStyle, alignment, showUnit, showStatus, hasCopyButton} = columnConfig[key];\n const {unit, status, text, customComponent} = cell;\n return <TypeTableCell key={key} href={cell.href} {...{cellStyle, alignment, showUnit, showStatus, hasCopyButton, unit, status, isLastRow}}>{customComponent ? customComponent : text}</TypeTableCell>;\n })}\n\n </RowContainer>\n );\n};\n\n\nexport default TypeTableRow;","import React from 'react';\nimport styled, {css}from 'styled-components';\nimport Icon, {IconWrapper} from '../../Icons/Icon';\n\nconst HeaderTitle = styled.div<{sortable?: boolean, isSortActive?: boolean, ascending?:boolean}>`\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n display: inline-flex;\n justify-content: center;\n align-content: center;\n position: relative;\n padding: 0 2px;\n user-select: none;\n z-index: 99;\n\n ${IconWrapper} {\n position: absolute;\n top: 0px;\n left: -15px;\n display: none;\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n padding: 3px 1px;\n\n ${({ascending}) => ascending && css`\n transform: rotate(180deg);\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n top: 0;\n `}\n }\n\n ${({isSortActive}) => isSortActive && css`\n &:not(hover) {\n ${IconWrapper} {\n display: inline-flex;\n }\n }\n `}\n\n ${({theme: { styles }, sortable}) => sortable && css`\n\n ${styles.tables.header.sortable.default};\n\n &:hover {\n cursor: pointer;\n ${styles.tables.header.sortable.hover};\n\n ${IconWrapper} {\n ${styles.tables.header.sortable.hover};\n display: inline-flex;\n }\n }\n `}\n`;\n\ninterface IHeaderProps {\n isSortActive?: boolean\n header: string\n sortable?: boolean\n ascending?: boolean\n columnId?: string\n indexKey: number\n toggleSort: (dataKey: number, columnId?: string) => void\n}\n\nconst TableHeaderTitle : React.FC<IHeaderProps> = ({\n header,\n sortable,\n isSortActive,\n ascending,\n columnId,\n indexKey,\n toggleSort\n}) => {\n\n const handleClick = (key: number, colId?: string) => {\n toggleSort(key, colId);\n };\n\n return(\n <HeaderTitle\n sortable={sortable}\n isSortActive={isSortActive}\n ascending={ascending}\n onClick={() => {handleClick(indexKey, columnId);}}\n >\n {sortable && <Icon icon='FilterSorting' size={14} color='dimmed' />}\n {header}\n </HeaderTitle>\n );\n};\n\nexport default TableHeaderTitle;","import React, { useState, useCallback, Fragment } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TypeCellAlignment, ITableColumnConfig } from '..';\nimport Checkbox from '../../Form/atoms/Checkbox';\nimport TableHeaderTitle from '../atoms/TableHeaderTitle';\n\nconst HeaderRow = styled.div`\n display: table-row;\n height: 50px;\n`;\n\nconst HeaderItem = styled.div<{ fixedWidth?: number, alignment?: TypeCellAlignment, hasCopyButton?: boolean, minWidth?: number, headerStyle: string, isSortActive?: boolean }>`\n display: table-cell;\n height: inherit;\n vertical-align:top;\n line-height: 20px;\n position: relative;\n font-family: ${p => p.theme.fontFamily.ui};\n\n ${({ hasCopyButton }) => hasCopyButton && css`\n padding-right: 20px;\n `};\n\n ${({ theme, alignment, headerStyle }) => alignment ? css`\n ${theme.typography.table[headerStyle][alignment]};\n ` : css`\n ${theme.typography.table[headerStyle]['left']};\n `};\n\n ${p => p.fixedWidth && css`\n width: ${p.fixedWidth}px;\n `};\n\n ${({ minWidth }) => minWidth && css`\n min-width:${minWidth}px;\n `};\n\n ${({ theme: {styles}, headerStyle, isSortActive }) => headerStyle === 'subHeader' && css`\n padding-bottom: 15px;\n\n &::after {\n ${styles.tables.header.divider};\n content: '';\n display: block;\n height: 1px;\n left: ${isSortActive ? '-15px' : '0'};\n right: 0;\n width: ${isSortActive ? 'calc(100% + 15px)' : '100%'};\n bottom: 0px;\n position: absolute;\n }\n`};\n`;\n\n// Default alignment is left//\nconst TitleItems = styled.div<{ alignment?: TypeCellAlignment }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n ${({ alignment }) => alignment && css`\n ${alignment === 'right' ? 'align-items: flex-end' : null};\n ${alignment === 'center' ? 'align-items: center' : null};\n `};\n`;\n\nconst GroupTitle = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n margin-bottom: 4px;\n`;\n\nconst Title = styled.div`\n ${({ theme: {typography} }) => css`\n ${typography.tables.groupName};\n `};\n padding-left: 2px;\n padding-right: 8px;\n white-space: nowrap;\n`;\n\n// Keeps the height consistent with other rows\nconst EmptyTitle = styled.div`\n height: 20px;\n`;\n\nconst MiddleLine = styled.div<{ isLastOfGroup?: boolean }>`\n ${({ theme: {styles} }) => css`\n ${styles.tables.header.groupLine};\n `};\n\n height: 1px;\n flex: 1;\n ${({ isLastOfGroup }) => isLastOfGroup && css`\n margin-right: 15px;\n `};\n`;\n\nconst renderGroupHeader = (columnConfig: ITableColumnConfig[], index: number) => {\n if (index < 0) { return null; }\n\n let isLastOfGroup: boolean = true;\n\n // Is Last of the group if the next is different\n if (index < (columnConfig.length - 1)) {\n isLastOfGroup = (columnConfig[index].groupTitle !== columnConfig[index + 1].groupTitle);\n }\n\n // if the column doesn't belong to any group\n if (!columnConfig[index].groupTitle) {\n return (\n <EmptyTitle />\n );\n }\n\n // has group, previous was equal\n if ((index !== 0) && (columnConfig[index - 1].groupTitle === columnConfig[index].groupTitle)) {\n return (\n <Fragment>\n <EmptyTitle />\n <MiddleLine {...{ isLastOfGroup }} />\n </Fragment>\n );\n }\n\n // New GroupTitle\n return (\n <Fragment>\n <Title>{columnConfig[index].groupTitle}</Title>\n <MiddleLine {...{ isLastOfGroup }} />\n </Fragment>\n );\n};\n\ninterface ITableHeader {\n selectable?: boolean\n hasStatus: boolean\n hasThumbnail: boolean\n hasTypeIcon: boolean\n allChecked: boolean\n isEmptyTable: boolean\n isLoading: boolean\n hasHeaderGroups: boolean\n columnConfig: ITableColumnConfig[]\n defaultAscending: boolean\n toggleAllCallback?: (checked: boolean) => void\n sortCallback?: (ascending: boolean, columnId: string) => void\n}\n\nconst TypeTableHeader: React.FC<ITableHeader> = ({\n selectable,\n hasStatus,\n hasThumbnail,\n hasTypeIcon,\n allChecked,\n isEmptyTable,\n isLoading,\n hasHeaderGroups,\n columnConfig,\n defaultAscending,\n toggleAllCallback = () => { },\n sortCallback = () => { },\n}) => {\n\n const [sortSpec, setSortSpec] = useState(columnConfig);\n const [ascendingState, setAscendingState] = useState(defaultAscending);\n\n const toggleAllCallbackWrapper = useCallback((checked: boolean) => {\n toggleAllCallback(checked);\n }, [toggleAllCallback]);\n\n\n /**\n * Rules for toggling ascending value\n * - Clicked column was active, toggle value of ascending.\n * - No column was sorted before, keep the sorting ascending.\n * - Clicked column was not active persist the last ascending option\n */\n const toggleSort = useCallback((indexKey: number, columnId?: string) => {\n\n if (sortSpec[indexKey] === undefined) { return; }\n if (!sortSpec[indexKey].sortable) { return; }\n\n const updatedSort = [...sortSpec];\n\n let lastActiveKey: number | null = null;\n updatedSort.forEach((col, key) => {\n if (col.sortActive) {\n lastActiveKey = key;\n }\n if (key === indexKey) {\n col.sortActive = true;\n } else {\n col.sortActive = false;\n }\n });\n\n const newAscending: boolean = (lastActiveKey === indexKey) ? !ascendingState : ascendingState;\n const colId: string = (columnId === undefined) ? `column_${indexKey}` : columnId;\n sortCallback(newAscending, colId);\n setSortSpec(updatedSort);\n setAscendingState(newAscending);\n }, [ascendingState, sortCallback, sortSpec]);\n\n return (\n <HeaderRow>\n {selectable ? (\n <HeaderItem headerStyle='header' fixedWidth={30}>\n <Checkbox checked={allChecked} disabled={isEmptyTable || isLoading} onChangeCallback={toggleAllCallbackWrapper} />\n </HeaderItem>)\n : null}\n {hasStatus ? <HeaderItem headerStyle='header' fixedWidth={10} /> : null}\n {hasThumbnail ? <HeaderItem headerStyle='header' fixedWidth={70} /> : null}\n {hasTypeIcon ? <HeaderItem headerStyle='header' fixedWidth={35} /> : null}\n\n {columnConfig.map((column, key, allColls) => {\n const { header, alignment, hasCopyButton, sortActive, columnId, sortable, minWidth }: ITableColumnConfig = column;\n return (\n <HeaderItem\n key={key}\n {...{ alignment, hasCopyButton, minWidth }}\n headerStyle={hasHeaderGroups ? 'subHeader' : 'header'}\n isSortActive={sortActive}\n >\n <TitleItems {...{ alignment }}>\n {hasHeaderGroups &&\n <GroupTitle>\n {hasHeaderGroups && renderGroupHeader(allColls, key)}\n </GroupTitle>}\n <TableHeaderTitle\n header={header}\n sortable={sortable}\n indexKey={key}\n columnId={columnId}\n isSortActive={sortActive}\n ascending={ascendingState}\n toggleSort={toggleSort}\n />\n </TitleItems>\n </HeaderItem>);\n })}\n </HeaderRow>\n );\n};\n\nexport default TypeTableHeader;","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport Spinner from '../../Indicators/Spinner';\nimport TypeTableRow from '../atoms/TypeTableRow';\nimport { ITableColumnConfig, ITypeTableData, IRowData } from '..';\nimport TypeTableHeader from '../molecules/TypeTableHeader';\n\nconst Container = styled.div``;\n\nconst TableContainer = styled.div`\n display: table;\n width: 100%;\n position: relative;\n`;\n\nconst LoadingText = styled.div`\n color: var(--grey-a11);\n`;\n\nconst LoadingBox = styled.div`\n position: absolute;\n left: 0;\n z-index: 99;\n background-color: ${({ theme }) => theme.styles.tables.loadingOverlay};\n height: calc(100% - 50px);\n width: 100%;\n min-height: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 20px;\n\n ${LoadingText} {\n margin-top: 10px;\n }\n`;\n\nconst EmptyTableBox = styled.div`\n position: absolute;\n left: 0;\n z-index: 99;\n padding: 20px;\n width: 100%;\n min-height: 100px;\n text-align: center;\n h3 {\n font-weight: 500;\n color: var(--grey-11);\n }\n color: var(--grey-10);\n`;\n\nconst isChecked = ({ _checked = false }: IRowData) => {\n return _checked === true;\n};\n\ninterface IProps {\n columnConfig: ITableColumnConfig[]\n rows: ITypeTableData\n selectable?: boolean\n hasStatus?: boolean\n hasThumbnail?: boolean\n hasTypeIcon?: boolean\n defaultAscending?: boolean\n isLoading?: boolean\n loadingText?: string\n emptyTableTitle?: string\n emptyTableText?: string\n hasHeaderGroups?: boolean\n selectCallback?: (checked: boolean, id?: string | number) => void\n toggleAllCallback?: (checked: boolean) => void\n sortCallback?: (ascending: boolean, columnId: string) => void\n}\n\nconst TypeTable: React.FC<IProps> = ({\n columnConfig,\n selectable,\n rows = [],\n hasStatus = false,\n hasThumbnail = false,\n hasTypeIcon = false,\n defaultAscending = false,\n isLoading = false,\n loadingText = 'Loading Data...',\n emptyTableTitle = '',\n emptyTableText = '',\n hasHeaderGroups = false,\n sortCallback = () => { },\n selectCallback = () => { },\n toggleAllCallback = () => { },\n}) => {\n\n /* Note about Empty table\n Currently IRowData Type enforces user to send columns\n so rows length will always be at least 1\n I wasn't sure if I should edit IRowData to have columns optional\n If we allow columns to be optional, previous implementations\n wont be able to have \"No data\" Message\n*/\n\n const [allChecked, setAllChecked] = useState(false);\n const isEmptyTable = (rows.length === 1) && (rows[0].columns.length === 0) && (!isLoading);\n\n useEffect(() => {\n let areAllChecked = false;\n if (rows.every(isChecked) && (rows.length > 0) && !isEmptyTable) {\n areAllChecked = true;\n }\n setAllChecked(areAllChecked);\n }, [isEmptyTable, rows]);\n\n return (\n <Container>\n <TableContainer>\n <TypeTableHeader\n {...{\n selectable,\n hasStatus,\n hasThumbnail,\n hasTypeIcon,\n defaultAscending,\n allChecked,\n isEmptyTable,\n isLoading,\n hasHeaderGroups,\n columnConfig,\n toggleAllCallback,\n sortCallback,\n }}\n />\n {isLoading ? (\n <LoadingBox>\n <Spinner size='large' styling='primary' />\n <LoadingText>{loadingText}</LoadingText>\n </LoadingBox>\n ) : null}\n {isEmptyTable\n ? (\n <EmptyTableBox>\n <h3>{emptyTableTitle}</h3>\n <p>{emptyTableText}</p>\n </EmptyTableBox>\n )\n : null}\n {rows.map((rowData, key) => {\n const isLastRow = (rows.length - 1 === key) ? true : false;\n return (\n <TypeTableRow\n key={key} {...{\n rowData,\n isLastRow,\n selectable,\n selectCallback,\n columnConfig,\n hasStatus,\n hasThumbnail,\n hasTypeIcon\n }}\n />\n );\n })}\n </TableContainer>\n </Container>\n );\n};\n\nexport default TypeTable;","import React, { InputHTMLAttributes, useState, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport SmallInput from '../../Form/atoms/SmallInput';\nimport Button from '../../Form/atoms/Button';\nimport ButtonWithLoading from '../../Form/atoms/ButtonWithLoading';\nimport { StyledLabel } from '../../Form/atoms/Label';\nimport IconButton from '../../Form/atoms/IconButton';\nimport { TypeCellAlignment } from '../';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { Link } from 'react-router-dom';\n\nconst Container = styled.div`\n position: relative;\n ${({ theme }) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n`;\nconst StyledButton = styled(Button)`\n flex-shrink: 0;\n`;\n\nconst StyledLoadingButton = styled(ButtonWithLoading)`\n flex-shrink: 0;\n`;\n\nconst StyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst EditContainer = styled.div`\n min-width: 320px;\n background-color: var(--gray-2);\n z-index: 99;\n position: absolute;\n bottom: -15px;\n left: -11px;\n display: flex;\n align-items: center;\n justify-content: center;\n ${StyledLabel} {\n margin:0;\n span {\n margin: 0;\n }\n }\n ${StyledButton} {\n margin-left: 5px;\n }\n ${StyledLoadingButton} {\n margin-left: 5px;\n }\n`;\n\nconst StyledIconButton = styled(IconButton)``;\n\nconst TextContainer = styled.div<{ alignment: TypeCellAlignment }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-right: 18px;\n\n ${({ alignment }) => alignment === 'center' && css`\n justify-content: center;\n `}\n\n ${({ alignment }) => alignment === 'right' && css`\n justify-content: flex-end;\n`}\n\n ${StyledIconButton} {\n opacity: 0;\n position: absolute;\n top: 7px;\n right: 0;\n };\n\n &:hover {\n ${StyledIconButton} {\n opacity: 1;\n };\n }\n`;\n\nexport interface OwnProps {\n defaultValue: string\n rowKey: string\n alignment?: TypeCellAlignment\n toLink?: string\n saveCallback?: (inputValue: string, rowKey: string) => void\n}\n\ntype IEditableCell = OwnProps & InputHTMLAttributes<HTMLInputElement>\n\nconst EditCell: React.FC<IEditableCell> = ({\n type = 'text',\n placeholder = '',\n defaultValue,\n rowKey,\n alignment = 'left',\n toLink = '',\n saveCallback,\n ...props\n}) => {\n const [isEditMode, setIsEditMode] = useState(false);\n const [updatedValue, setUpdatedValue] = useState(defaultValue);\n const [loading, setLoading] = useState(false);\n\n const handleSave = useCallback(async (value: string) => {\n setLoading(true);\n if (saveCallback) {\n await saveCallback(value, rowKey);\n }\n setIsEditMode(false);\n setLoading(false);\n }, [rowKey, saveCallback]);\n\n const verifyKeyPress = useCallback(async (eve: React.KeyboardEvent<HTMLInputElement>) => {\n\n // var code = parseInt(eve.key, 10);\n const code = eve.keyCode | eve.which | parseInt(eve.key, 10);\n\n if (code === 13 && handleSave) {\n await handleSave(updatedValue);\n setIsEditMode(false);\n }\n\n if (code === 27) {\n setUpdatedValue(defaultValue);\n setIsEditMode(false);\n }\n\n }, [handleSave, updatedValue, defaultValue]);\n\n const editContainerRef = useRef<HTMLDivElement>(null);\n\n const onClickOutsideEdit = () => {\n setUpdatedValue(defaultValue);\n setIsEditMode(false);\n };\n\n useClickOutside(editContainerRef, onClickOutsideEdit);\n\n return (\n <Container>\n {isEditMode\n ? (\n <EditContainer ref={editContainerRef}>\n <SmallInput\n {...props}\n autoFocus\n label=''\n disabled={loading}\n type={type}\n placeholder={placeholder}\n defaultValue={defaultValue}\n onKeyUp={(eve: React.KeyboardEvent<HTMLInputElement>) => verifyKeyPress(eve)}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setUpdatedValue(e.target.value); }}\n />\n <StyledLoadingButton\n onClick={() => {\n handleSave(updatedValue);\n }}\n size='small'\n loading={loading}\n >\n {loading ? 'Saving' : 'Save'}\n </StyledLoadingButton>\n {!loading && (\n <StyledButton\n onClick={() => setIsEditMode(false)}\n design='secondary'\n size='small'\n >Cancel\n </StyledButton>)}\n </EditContainer>)\n : (\n <TextContainer alignment={alignment}>\n {toLink ? <StyledLink to={toLink}>{updatedValue}</StyledLink> : updatedValue}\n <StyledIconButton icon='Edit' weight='light' size={16} onClick={() => setIsEditMode(true)} />\n </TextContainer>)}\n </Container>\n );\n};\n\nexport default EditCell;","export type PTZReducerActions =\n | ConnectStartAction\n | ConnectFailAction\n | ConnectSuccessAction\n // | DisconnectStartAction\n // | DisconnectFailAction\n | DisconnectSuccessAction\n | MoveStart\n | Stop\n | ZoomStart\n | Home\n | SetImage\n | PTZError\n;\n\ninterface ConnectStartAction {\n type: 'CONNECTING';\n address: string;\n}\ninterface ConnectFailAction {\n type: 'CONNECTION_FAIL';\n errorMessage: string;\n}\ninterface PTZError {\n type: 'PTZ_ERROR';\n errorMessage: string;\n}\ninterface ConnectSuccessAction {\n type: 'CONNECTED';\n}\n// interface DisconnectStartAction {\n// type: 'DISCONNECTING';\n// }\n// interface DisconnectFailAction {\n// type: 'DISCONNECT_FAIL';\n// }\ninterface DisconnectSuccessAction {\n type: 'DISCONNECTED';\n}\ninterface MoveStart {\n type: 'MOVE_START';\n direction: MoveDirections;\n}\n// interface MoveStop {\n// type: 'MOVE_STOP';\n// }\ninterface ZoomStart {\n type: 'ZOOM_START';\n zooming: ZoomStates\n}\ninterface SetImage {\n type: 'SET_IMAGE';\n image: string;\n}\ninterface Stop {\n type: 'STOP';\n}\ninterface Home {\n type: 'HOME';\n}\n\n\nexport interface PTZCredentials {\n host: string;\n username: string;\n password: string;\n}\ntype MoveDirections = 'left'|'right'|'up'|'down'|'home'|null;\ntype ZoomStates = 'in'|'out'|null;\nexport interface PTZState {\n connection: 'connected'|'connecting'|'error'|'disconnecting'|'disconnected';\n moving: MoveDirections;\n zooming: ZoomStates;\n loading: boolean;\n image: string;\n address?: string;\n errorMessage?: string;\n stateID: number;\n}\n\n\nexport default (state : PTZState, action: PTZReducerActions): PTZState => {\n\n switch(action.type){\n case 'CONNECTING': {\n return {\n ...state,\n connection: 'connecting',\n address: action.address,\n loading: true,\n errorMessage: ''\n };\n }\n case 'CONNECTED': {\n return {\n ...state,\n connection: 'connected',\n loading: false\n };\n }\n case 'CONNECTION_FAIL': {\n return {\n ...state,\n loading: false,\n connection: 'error',\n errorMessage: action.errorMessage\n };\n }\n case 'PTZ_ERROR': {\n //UNHANDLED ERROR\n return {\n ...state,\n loading: false,\n errorMessage: action.errorMessage\n };\n }\n // case 'DISCONNECTING': {\n // return {\n // ...state,\n // connection: 'disconnecting',\n // };\n // }\n case 'DISCONNECTED': {\n return {\n image: '',\n connection: 'disconnected',\n moving: null,\n zooming: null,\n loading: false,\n stateID: state.stateID\n };\n }\n // case 'DISCONNECT_FAIL': {\n // return {...state, connection: 'error'};\n // }\n case 'SET_IMAGE': {\n return {\n ...state,\n image: action.image\n };\n }\n case 'MOVE_START': {\n return {\n ...state,\n moving: action.direction,\n };\n }\n case 'STOP': {\n return {\n ...state,\n moving: null,\n zooming: null,\n };\n }\n case 'ZOOM_START': {\n return {\n ...state,\n zooming: action.zooming,\n };\n }\n case 'HOME': {\n return state;\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n\n\n\n\n\n","import { useCallback, useEffect, useReducer } from 'react';\nimport useWebSocket from 'react-use-websocket';\nimport reducer from './PTZReducer';\n\nconst usePTZ = ({socketUrl='', imageRefresh = 1000}) => {\n const {\n sendJsonMessage,\n lastMessage\n } = useWebSocket(socketUrl);\n\n const [state, dispatch ] = useReducer(reducer, {\n connection: 'disconnected',\n moving: null,\n zooming: null,\n image: '',\n loading: false,\n stateID: Math.floor(Math.random() * 1000)\n });\n const {address=null} = state;\n\n const connect = useCallback(async ({username: user, password: pass, host: address, port = 80}: {username: string, password: string, host: string, port?: number})=>{\n dispatch({\n type: 'CONNECTING',\n address\n });\n await sendJsonMessage({\n method: 'connect',\n params: {\n address,\n port,\n user,\n pass\n }\n });\n },[sendJsonMessage]);\n\n const move = useCallback(({direction}: {direction: 'up'|'down'|'left'|'right'}) => {\n console.debug('move', direction);\n const speed = {\n x: 0,\n y: 0,\n z: 0\n };\n\n dispatch({\n type: 'MOVE_START',\n direction\n });\n\n switch (direction){\n case 'up':\n speed.y = 1;\n break;\n case 'down':\n speed.y = -1;\n break;\n case 'left':\n speed.x = -1;\n break;\n case 'right':\n speed.x = 1;\n break;\n }\n\n sendJsonMessage({\n method: 'ptzMove',\n params: {\n address,\n speed,\n timeout: 30\n }\n });\n },[sendJsonMessage, address]);\n\n const zoom = useCallback(({zooming}: {zooming: 'in'|'out'}) => {\n console.debug('zoom', zooming);\n const speed = {\n x: 0,\n y: 0,\n z: 0\n };\n dispatch({\n type: 'ZOOM_START',\n zooming\n });\n switch (zooming) {\n case 'in':\n speed.z = 1;\n break;\n case 'out':\n speed.z = -1;\n break;\n }\n sendJsonMessage({\n method: 'ptzMove',\n params: {\n address,\n speed,\n timeout: 30\n }\n });\n },[sendJsonMessage, address]);\n\n const stop = useCallback(()=>{\n sendJsonMessage({\n method: 'ptzStop',\n params: {\n address\n }\n });\n },[sendJsonMessage, address]);\n\n const disconnect = useCallback(async () => {\n dispatch({\n type: 'DISCONNECTED',\n });\n },[]);\n\n const getImage = useCallback(async ()=>{\n if(!address) { return; }\n sendJsonMessage({\n method: 'fetchSnapshot',\n params: {\n address\n }\n });\n },[address, sendJsonMessage]);\n\n useEffect(()=>{\n const intervalHandler = setInterval(getImage, imageRefresh);\n return () => {\n window.clearInterval(intervalHandler);\n };\n },[getImage, imageRefresh]);\n\n\n useEffect(()=>{\n if(!lastMessage){ return; }\n const {id ='', result=null, error} = JSON.parse(lastMessage.data);\n if(error && id !== 'fetchSnapshot'){\n dispatch({\n type: 'PTZ_ERROR',\n errorMessage: error\n });\n return;\n } else if(id === 'connect') {\n getImage();\n dispatch({\n type: 'CONNECTED',\n });\n } else if(id === 'fetchSnapshot'){\n dispatch({\n type: 'SET_IMAGE',\n image: result||''\n });\n } else if(id === 'ptzMove'){\n console.debug('ptzMove');\n } else if(id === 'ptzStop'){\n console.debug('ptzStop');\n dispatch({\n type: 'STOP'\n });\n }\n },[address, getImage, lastMessage]);\n\n return {state, dispatch, actions: { connect, getImage, disconnect, zoom, stop, move} };\n};\n\nexport default usePTZ;","import React from 'react';\nimport { createContext } from 'react';\nimport { PTZReducerActions, PTZState } from \"./PTZReducer\";\nimport usePTZ from './usePTZ';\n\nexport interface IPTZContext {\n state: PTZState,\n dispatch: React.Dispatch<PTZReducerActions>\n actions: PTZActions\n}\ninterface PTZActions {\n move: ({direction}:{direction: 'up'|'down'|'left'|'right'}) => void;\n zoom: ({zooming}: {zooming: 'in'|'out'}) => void;\n stop: () => void;\n connect: (params: {username: string, password: string, host: string, port?: number}) => void;\n disconnect: () => void;\n}\n\nexport const PTZContext = createContext<IPTZContext>({state: {} as PTZState, dispatch: ()=>{}, actions: {} as PTZActions});\n\ninterface Props {\n socketUrl?: string;\n imageRefresh?: number\n}\n\nconst PTZProvider: React.FC<Props> = ({socketUrl ='ws://localhost/wsapp/', imageRefresh = 1000, children}) => {\n\n const {state, dispatch, actions} = usePTZ({socketUrl, imageRefresh});\n return (\n <PTZContext.Provider value={{state, dispatch, actions}}>\n {children}\n </PTZContext.Provider>\n );\n};\n\nexport default PTZProvider;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'up'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M97.1695375,0.000553838433 L97.5,0.333477759 L97.5,96.5 L1.33347776,96.5 L1.00279053,96.1695538 L1.01292824,94.904196 C1.86331972,42.4545249 44.5585771,0.176923219 97.1695375,0.000553838433 Z' id='PTZ-Hover-Up' />\n </Hover>\n\n <Active active={moving === 'up'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(1.002791, 0.000554)'>\n <path d='M96.1667469,-4.68958206e-13 L96.4972095,0.33292392 L96.4972095,96.4994462 L0.33068723,96.4994462 L2.98427949e-13,96.169 L0.0101377147,94.9036422 C0.860529194,42.4539711 43.5557866,0.176369381 96.1667469,-4.68958206e-13 Z' id='PTZ-Active-Up-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' />\n <path d='M96.1667469,9.08073616e-12 L96.4972095,0.33292392 L96.1682095,0.658446162 L96.1835085,4.9999719 C46.8438228,5.16537489 6.62803783,44.4114895 5.04606009,93.4545769 L5.00997725,94.9436996 L4.99983954,96.2090574 L0.655209472,96.1734462 L0.33068723,96.4994462 L1.20792265e-12,96.169 L0.0101377147,94.9036422 C0.860529194,42.4539711 43.5557866,0.176369381 96.1667469,9.08073616e-12 Z' id='PTZ-Active-Up-Highlight' stroke='url(#linearGradient-18)' fill='url(#linearGradient-17)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-138.146447, -137.146447) translate(68.000000, 68.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-26' />\n <use fill='black' fillOpacity='1' filter='url(#filter-27)' xlinkHref='#path-26' />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\nconst Arrow = styled.g`\n\n`;\n\n\ninterface Props {\n\n}\n\n\n\nconst Down: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n move({direction: 'down'});\n setHover(false);\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M193.146668,96.3343288 L193.47713,96.6672527 L193.47713,192.833775 L97.3106078,192.833775 L96.9799206,192.503329 L96.9900583,191.237971 C97.8404498,138.7883 140.535707,96.5106982 193.146668,96.3343288 Z' id='PTZ-Hover-Down' transform='translate(145.228525, 144.584052) rotate(180.000000) translate(-145.228525, -144.584052) ' />\n </Hover>\n\n <Active active={moving === 'down'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(96.979921, 96.167076)' fill='url(#linearGradient-12)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Down-Slice' fillOpacity='0.56' transform='translate(48.248605, 48.416976) rotate(180.000000) translate(-48.248605, -48.416976) ' />\n <path d='M0.519854724,96.4994462 L0.189392188,96.1665222 L0.518392188,95.841 L0.50309316,91.4994743 C49.8427789,91.3340713 90.0585638,52.0879566 91.6405416,3.0448693 L91.6766244,1.55574655 L91.6867621,0.290388759 L96.0313922,0.326 L96.3559144,-4.8316906e-13 L96.6866017,0.330446162 L96.6764639,1.59580395 C95.8260725,54.0454751 53.1308151,96.3230768 0.519854724,96.4994462 Z' id='PTZ-Active-Down-Highlight' stroke='url(#linearGradient-15)' />\n </Active>\n\n <Arrow id='PTZ-Arrows-Icons' transform='rotate(-45) translate(-138.146447, -137.146447) translate(68.000000, 68.000000) translate(71.000000, 125.000000) rotate(180.000000) translate(-71.000000, -125.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-22' />\n <use fill='black' fillOpacity='1' filter='url(#filter-23)' xlinkHref='#path-22' />\n </Arrow>\n </Container>\n\n );\n};\n\nexport default Down;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\n\nconst Left: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'left'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M96.9801453,96.3343288 L97.3106078,96.6672527 L97.3106078,192.833775 L1.14408557,192.833775 L0.813398341,192.503329 L0.823536055,191.237971 C1.67392753,138.7883 44.3691849,96.5106982 96.9801453,96.3343288 Z' id='PTZ-Hover-Left' transform='translate(49.062003, 144.584052) rotate(-90.000000) translate(-49.062003, -144.584052) ' />\n </Hover>\n\n <Active active={moving === 'left'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(0.813398, 96.167076)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Up-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' transform='translate(48.248605, 48.416976) rotate(-90.000000) translate(-48.248605, -48.416976) ' />\n <path d='M0.188273843,0.331580881 L0.521197763,0.00111834491 L0.846720004,0.330118345 L5.18824575,0.314819318 C5.35364873,49.654505 44.5997634,89.87029 93.6428507,91.4522677 L95.1319735,91.4883506 L96.3973312,91.4984883 L96.36172,95.8431183 L96.68772,96.1676406 L96.3572738,96.4983278 L95.0919161,96.4881901 C42.6422449,95.6377986 0.364643223,52.9425412 0.188273843,0.331580881 Z' id='PTZ-Active-Left-Highlight' stroke='url(#linearGradient-14)' fill='url(#linearGradient-13)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-138.146447, -137.146447) translate(68.000000, 68.000000) translate(12.000000, 69.000000) rotate(-90.000000) translate(-12.000000, -69.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-20' />\n <use fill='black' fillOpacity='1' filter='url(#filter-21)' xlinkHref='#path-20' />\n </g>\n </Container>\n\n );\n};\n\nexport default Left;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Right: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {moving}, actions: {move, stop} } = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n move({direction: 'right'});\n },[move]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(138.146447, 137.146447) rotate(45.000000)'>\n <Hover hover={hover} transform='translate(-138.146447, -137.146447) translate(41.146447, 40.646447)' fill='url(#linearGradient-11)' fillOpacity='0.56'>\n <path d='M193.146668,0.167806588 L193.47713,0.500730508 L193.47713,96.6672527 L97.3106078,96.6672527 L96.9799206,96.3368066 L96.9900583,95.0714488 C97.8404498,42.6217777 140.535707,0.344175968 193.146668,0.167806588 Z' id='PTZ-Hover-Right' transform='translate(145.228525, 48.417530) rotate(90.000000) translate(-145.228525, -48.417530) ' />\n </Hover>\n\n <Active active={moving === 'right'} transform='translate(-137.792893, -137.500000) translate(40.792893, 40.500000) translate(96.979921, 0.000554)'>\n <path d='M96.1667469,0.167252749 L96.4972095,0.50017667 L96.4972095,96.6666989 L0.33068723,96.6666989 L2.98427949e-13,96.3362527 L0.0101377147,95.070895 C0.860529194,42.6212238 43.5557866,0.34362213 96.1667469,0.167252749 Z' id='PTZ-Active-Right-Slice' fillOpacity='0.56' fill='url(#linearGradient-12)' transform='translate(48.248605, 48.416976) rotate(90.000000) translate(-48.248605, -48.416976) ' />\n <path d='M96.68772,96.1678653 L96.3547961,96.4983278 L96.0292738,96.1693278 L91.6877481,96.1846268 C91.5223451,46.8449411 52.2762305,6.62915618 3.23314314,5.04717843 L1.74402039,5.0110956 L0.478662601,5.00095788 L0.514273843,0.656327817 L0.188273843,0.331805575 L0.518720004,0.00111834491 L1.78407779,0.0112560596 C54.2337489,0.861647539 96.5113506,43.5569049 96.68772,96.1678653 Z' id='PTZ-Active-Right-Highlight' stroke='url(#linearGradient-16)' fill='url(#linearGradient-13)' />\n </Active>\n\n <g id='PTZ-Arrows-Icons' transform='rotate(-45.000000) translate(-137.792893, -137.500000) translate(68.000000, 68.000000) translate(127.000000, 69.000000) rotate(90.000000) translate(-127.000000, -69.000000)' fillRule='nonzero'>\n <use fill='url(#linearGradient-19)' xlinkHref='#path-24' />\n <use fill='black' fillOpacity='1' filter='url(#filter-25)' xlinkHref='#path-24' />\n </g>\n </Container>\n\n );\n};\n\nexport default Right;","import React from 'react';\n\ninterface Props {\n\n}\n\nconst PTZControl: React.FC<Props> = ({children}) => {\n return (\n <svg width='237px' height='245px' viewBox='0 0 237 245' version='1.1'>\n <defs>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-1'>\n <stop stopColor='#2E3F4B' offset='0%' />\n <stop stopColor='#273743' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-2'>\n <stop stopColor='#2F4555' offset='0%' />\n <stop stopColor='#1F2F3A' offset='100%' />\n </linearGradient>\n <circle id='path-3' cx='138.5' cy='137.5' r='106.5' />\n <filter x='-9.9%' y='-12.2%' width='119.7%' height='124.4%' filterUnits='objectBoundingBox' id='filter-4'>\n <feMorphology radius='1.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1' />\n <feOffset dx='0' dy='5' in='shadowSpreadOuter1' result='shadowOffsetOuter1' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter1' result='shadowBlurOuter1' />\n <feComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1' />\n <feColorMatrix values='0 0 0 0 0.107227805 0 0 0 0 0.154449538 0 0 0 0 0.188179348 0 0 0 0.242706512 0' type='matrix' in='shadowBlurOuter1' result='shadowMatrixOuter1' />\n <feMorphology radius='0.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter2' />\n <feOffset dx='0' dy='-5' in='shadowSpreadOuter2' result='shadowOffsetOuter2' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter2' result='shadowBlurOuter2' />\n <feComposite in='shadowBlurOuter2' in2='SourceAlpha' operator='out' result='shadowBlurOuter2' />\n <feColorMatrix values='0 0 0 0 0.225481289 0 0 0 0 0.324960407 0 0 0 0 0.399569746 0 0 0 0.400923295 0' type='matrix' in='shadowBlurOuter2' result='shadowMatrixOuter2' />\n <feMerge>\n <feMergeNode in='shadowMatrixOuter1' />\n <feMergeNode in='shadowMatrixOuter2' />\n </feMerge>\n </filter>\n <linearGradient x1='50%' y1='100%' x2='50%' y2='2.48363598%' id='linearGradient-5'>\n <stop stopColor='#262E37' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#262E37' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <path d='M96.5,0 C149.795478,0 193,43.2045216 193,96.5 C193,149.795478 149.795478,193 96.5,193 C43.2045216,193 0,149.795478 0,96.5 C0,43.2045216 43.2045216,0 96.5,0 Z' id='path-6' />\n <filter x='-0.8%' y='-0.8%' width='101.6%' height='101.6%' filterUnits='objectBoundingBox' id='filter-8'>\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 0.168627451 0 0 0 0 0.215686275 0 0 0 0 0.262745098 0 0 0 0.0113090035 0' type='matrix' in='shadowInnerInner1' result='shadowMatrixInner1' />\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner2' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner2' result='shadowOffsetInner2' />\n <feComposite in='shadowOffsetInner2' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner2' />\n <feColorMatrix values='0 0 0 0 0.162705208 0 0 0 0 0.231672463 0 0 0 0 0.300639719 0 0 0 1 0' type='matrix' in='shadowInnerInner2' result='shadowMatrixInner2' />\n <feMerge>\n <feMergeNode in='shadowMatrixInner1' />\n <feMergeNode in='shadowMatrixInner2' />\n </feMerge>\n </filter>\n <linearGradient x1='49.8274193%' y1='13.7528099%' x2='50.1815273%' y2='82.6324827%' id='linearGradient-9'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='50.170103%' y1='15.6407997%' x2='49.8181984%' y2='84.5265853%' id='linearGradient-10'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='99.9976822%' y1='100%' x2='30.4274195%' y2='28.550434%' id='linearGradient-11'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='87.5668564%' y1='87.9295401%' x2='33.2810997%' y2='28.936849%' id='linearGradient-12'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='87.568598%' y1='87.9277819%' x2='33.2803247%' y2='28.9378254%' id='linearGradient-13'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='22.297939%' y1='79.0413218%' x2='39.761035%' y2='60.7027769%' id='linearGradient-14'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='80.348219%' y1='76.4229599%' x2='62.8569051%' y2='60.0361013%' id='linearGradient-15'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='77.520937%' y1='22.5831044%' x2='57.8137717%' y2='41.946341%' id='linearGradient-16'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='43.428843%' x2='25.1751595%' y2='28.0552504%' id='linearGradient-17'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='30.6678499%' y1='23.1406239%' x2='41.9194217%' y2='34.4210798%' id='linearGradient-18'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-19'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n <path d='M25.6553811,77.370593 L14.0428746,58.1532717 C13.6102476,57.4373681 12.8355055,57 12,57 C11.1644945,57 10.3897524,57.4373681 9.95712537,58.1532717 L-1.65538114,77.370593 C-2.10132346,78.1091204 -2.11539958,79.0310048 -1.69221345,79.7828447 C-1.26902733,80.5346846 -0.474230758,81 0.387493489,81 L23.6125065,81 C24.4742308,81 25.2690273,80.5346846 25.6922135,79.7828447 C26.1153996,79.0310048 26.1013235,78.1091204 25.6553811,77.370593 Z' id='path-20' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-21'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M84.6553811,133.370593 L73.0428746,114.153272 C72.6102476,113.437368 71.8355055,113 71,113 C70.1644945,113 69.3897524,113.437368 68.9571254,114.153272 L57.3446189,133.370593 C56.8986765,134.10912 56.8846004,135.031005 57.3077865,135.782845 C57.7309727,136.534685 58.5257692,137 59.3874935,137 L82.6125065,137 C83.4742308,137 84.2690273,136.534685 84.6922135,135.782845 C85.1153996,135.031005 85.1013235,134.10912 84.6553811,133.370593 Z' id='path-22' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-23'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M140.655381,77.370593 L129.042875,58.1532717 C128.610248,57.4373681 127.835505,57 127,57 C126.164495,57 125.389752,57.4373681 124.957125,58.1532717 L113.344619,77.370593 C112.898677,78.1091204 112.8846,79.0310048 113.307787,79.7828447 C113.730973,80.5346846 114.525769,81 115.387493,81 L138.612507,81 C139.474231,81 140.269027,80.5346846 140.692213,79.7828447 C141.1154,79.0310048 141.101323,78.1091204 140.655381,77.370593 Z' id='path-24' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-25'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n <path d='M84.6553811,20.370593 L73.0428746,1.15327173 C72.6102476,0.437368074 71.8355055,0 71,0 C70.1644945,0 69.3897524,0.437368074 68.9571254,1.15327173 L57.3446189,20.370593 C56.8986765,21.1091204 56.8846004,22.0310048 57.3077865,22.7828447 C57.7309727,23.5346846 58.5257692,24 59.3874935,24 L82.6125065,24 C83.4742308,24 84.2690273,23.5346846 84.6922135,22.7828447 C85.1153996,22.0310048 85.1013235,21.1091204 84.6553811,20.370593 Z' id='path-26' />\n <filter x='-3.6%' y='-4.2%' width='107.1%' height='108.3%' filterUnits='objectBoundingBox' id='filter-27'>\n <feGaussianBlur stdDeviation='0.5' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.495629371 0' type='matrix' in='shadowInnerInner1' />\n </filter>\n </defs>\n <g stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' transform='translate(-20, -16)'>\n <g id='PTZ-Base-Outer'>\n <use fill='black' fillOpacity='1' filter='url(#filter-4)' xlinkHref='#path-3' />\n <use stroke='url(#linearGradient-2)' strokeWidth='1' fill='url(#linearGradient-1)' fillRule='evenodd' xlinkHref='#path-3' />\n </g>\n\n <g id='PTZ-Base-Inner' transform='translate(138.500000, 137.500000) rotate(45.000000) translate(-138.500000, -137.500000) translate(42.000000, 41.000000)'>\n <mask id='mask-7' fill='white'>\n <use xlinkHref='#path-6' />\n </mask>\n <g>\n <use fillOpacity='0.56' fill='url(#linearGradient-5)' fillRule='evenodd' xlinkHref='#path-6' />\n <use fill='black' fillOpacity='1' filter='url(#filter-8)' xlinkHref='#path-6' />\n </g>\n <line x1='96.5' y1='0.333477759' x2='96.5' y2='192.666522' id='PTZ-Base-Division-B' stroke='url(#linearGradient-9)' strokeLinecap='square' mask='url(#mask-7)' />\n <line x1='96.5' y1='0.333477759' x2='96.5' y2='192.666522' id='PTZ-Base-Division-A' stroke='url(#linearGradient-10)' strokeLinecap='square' mask='url(#mask-7)' transform='translate(96.500000, 96.500000) rotate(-90.000000) translate(-96.500000, -96.500000) ' />\n </g>\n {children}\n </g>\n </svg>\n );\n};\n\nexport default PTZControl;","import React from 'react';\n\ninterface Props {\n\n}\n\nconst ZoomBase: React.FC<Props> = ({ children }) => {\n return (\n <svg width='239px' height='121px' viewBox='0 0 239 121'>\n <defs>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-zoom1'>\n <stop stopColor='#2E3F4B' offset='0%' />\n <stop stopColor='#273743' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0%' x2='50%' y2='100%' id='linearGradient-zoom2'>\n <stop stopColor='#2F4555' offset='0%' />\n <stop stopColor='#1F2F3A' offset='100%' />\n </linearGradient>\n <path\n d='M42.6,0 L170.4,0 C193.92733,0 213,19.0278981 213,42.5 C213,65.9721019 193.92733,85 170.4,85 L42.6,85 C19.0726697,85 0,65.9721019 0,42.5 C0,19.0278981 19.0726697,0 42.6,0 Z'\n id='path-zoom3'\n />\n <filter x='-9.9%' y='-30.6%' width='119.7%' height='161.2%' filterUnits='objectBoundingBox' id='filter-zoom4'>\n <feMorphology radius='1.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1' />\n <feOffset dx='0' dy='5' in='shadowSpreadOuter1' result='shadowOffsetOuter1' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter1' result='shadowBlurOuter1' />\n <feComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1' />\n <feColorMatrix values='0 0 0 0 0.107227805 0 0 0 0 0.154449538 0 0 0 0 0.188179348 0 0 0 0.242706512 0' type='matrix' in='shadowBlurOuter1' result='shadowMatrixOuter1' />\n <feMorphology radius='0.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter2' />\n <feOffset dx='0' dy='-5' in='shadowSpreadOuter2' result='shadowOffsetOuter2' />\n <feGaussianBlur stdDeviation='5' in='shadowOffsetOuter2' result='shadowBlurOuter2' />\n <feComposite in='shadowBlurOuter2' in2='SourceAlpha' operator='out' result='shadowBlurOuter2' />\n <feColorMatrix values='0 0 0 0 0.225481289 0 0 0 0 0.324960407 0 0 0 0 0.399569746 0 0 0 0.400923295 0' type='matrix' in='shadowBlurOuter2' result='shadowMatrixOuter2' />\n <feMerge>\n <feMergeNode in='shadowMatrixOuter1' />\n <feMergeNode in='shadowMatrixOuter2' />\n </feMerge>\n </filter>\n <linearGradient x1='50%' y1='100%' x2='50%' y2='2.48363598%' id='linearGradient-zoom5'>\n <stop stopColor='#262E37' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#262E37' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <path\n d='M32.1164062,0.625 L160.582031,0.625 C178.319433,0.625 192.698438,14.8959236 192.698438,32.5 C192.698438,50.1040764 178.319433,64.375 160.582031,64.375 L32.1164062,64.375 C14.3790049,64.375 0,50.1040764 0,32.5 C0,14.8959236 14.3790049,0.625 32.1164062,0.625 Z'\n id='path-zoom6'\n />\n <filter x='-0.8%' y='-2.4%' width='101.6%' height='104.7%' filterUnits='objectBoundingBox' id='filter-zoom7'>\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner1' />\n <feOffset dx='0' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1' />\n <feComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1' />\n <feColorMatrix values='0 0 0 0 0.168627451 0 0 0 0 0.215686275 0 0 0 0 0.262745098 0 0 0 0.0113090035 0' type='matrix' in='shadowInnerInner1' result='shadowMatrixInner1' />\n <feGaussianBlur stdDeviation='1' in='SourceAlpha' result='shadowBlurInner2' />\n <feOffset dx='0' dy='-1' in='shadowBlurInner2' result='shadowOffsetInner2' />\n <feComposite in='shadowOffsetInner2' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner2' />\n <feColorMatrix values='0 0 0 0 0.162705208 0 0 0 0 0.231672463 0 0 0 0 0.300639719 0 0 0 1 0' type='matrix' in='shadowInnerInner2' result='shadowMatrixInner2' />\n <feMerge>\n <feMergeNode in='shadowMatrixInner1' />\n <feMergeNode in='shadowMatrixInner2' />\n </feMerge>\n </filter>\n <linearGradient x1='-103.741879%' y1='13.7528099%' x2='211.711869%' y2='82.6324827%' id='linearGradient-zoom8'>\n <stop stopColor='#324659' offset='0%' />\n <stop stopColor='#263647' offset='100%' />\n </linearGradient>\n <linearGradient x1='12.2402545%' y1='50%' x2='57.7520941%' y2='28.4033239%' id='linearGradient-zoom9'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='92.8257893%' y1='51.9201456%' x2='57.7520941%' y2='28.4033239%' id='linearGradient-zoom10'>\n <stop stopColor='#46596D' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#577393' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='65.5323776%' y1='100%' x2='65.5323776%' y2='0%' id='linearGradient-zoom11'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='112.326836%' y1='50%' x2='-13.3174936%' y2='50%' id='linearGradient-zoom12'>\n <stop stopColor='#508ED3' stopOpacity='0.65' offset='0%' />\n <stop stopColor='#79AEEB' stopOpacity='0.66' offset='100%' />\n </linearGradient>\n <linearGradient x1='-15.3833763%' y1='43.598779%' x2='72.9059278%' y2='57.6171557%' id='linearGradient-zoom13'>\n <stop stopColor='#A2B9FF' offset='0%' />\n <stop stopColor='#3393FF' stopOpacity='0' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-zoom14'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n <linearGradient x1='50%' y1='0.918284083%' x2='50%' y2='98.6410535%' id='linearGradient-zoom15'>\n <stop stopColor='#F0F7FF' offset='0%' />\n <stop stopColor='#B2C9D9' offset='100%' />\n </linearGradient>\n </defs>\n <g stroke='none' strokeWidth='1' fill='none' fillRule='evenodd' transform='translate(-200.000000, -490.000000) translate(213.000000, 508.000000)'>\n <g id='PTZ-Zoom-Base-Outer'>\n <use fill='black' fillOpacity='1' filter='url(#filter-zoom4)' xlinkHref='#path-zoom3' />\n <use stroke='url(#linearGradient-zoom2)' strokeWidth='1' fill='url(#linearGradient-zoom1)' fillRule='evenodd' xlinkHref='#path-zoom3' />\n </g>\n\n <g id='PTZ-Zoom-Divider-Section' transform='translate(10.000000, 10.000000)'>\n <g id='PTZ-Zoom-Base-Inner'>\n <use fillOpacity='0.56' fill='url(#linearGradient-zoom5)' fillRule='evenodd' xlinkHref='#path-zoom6' />\n <use fill='black' fillOpacity='1' filter='url(#filter-zoom7)' xlinkHref='#path-zoom6' />\n </g>\n <path d='M105.820053,40.7088832 L99.6638296,34.5975949 C102.060022,31.621888 101.697137,27.3062591 98.8371361,24.766097 C95.9771351,22.2259349 91.6163355,22.346137 88.902734,25.0399314 C86.1891326,27.7337257 86.0680466,32.0626948 88.6268862,34.90182 C91.1857259,37.7409453 95.5330871,38.1011814 98.5306741,35.7224793 L104.686898,41.8337675 C105.002147,42.1387442 105.504804,42.1387442 105.820053,41.8337675 C106.132899,41.5231118 106.132899,41.0195389 105.820053,40.7088832 Z M88.425235,30.1282878 C88.425235,27.0527607 90.9367746,24.5595534 94.0349157,24.5595534 C97.1330568,24.5595534 99.6445964,27.0527607 99.6445964,30.1282878 C99.6445964,33.2038149 97.1330568,35.6970222 94.0349157,35.6970222 C90.9382392,35.693515 88.428768,33.202361 88.425235,30.1282878 Z' id='PTZ-Zoom-Divider-Section-Icon' fill='#6A839E' fillRule='nonzero' />\n <line x1='95.3544271' y1='1.5' x2='95.3544271' y2='13.5' id='PTZ-Zoom-Divider-Section-Top-Line' stroke='url(#linearGradient-zoom8)' strokeLinecap='square' />\n <line x1='95.3544271' y1='50.5' x2='95.3544271' y2='62.5' id='PTZ-Zoom-Divider-Section-Bottom-Line' stroke='url(#linearGradient-zoom8)' strokeLinecap='square' />\n </g>\n {children}\n </g>\n\n </svg>\n );\n};\n\nexport default ZoomBase;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {zooming}, actions: {zoom, stop}} = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n zoom({zooming: 'in'});\n },[zoom]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(10.000000, 10.625000)'>\n <Hover hover={hover} fillOpacity='0.56'>\n <path\n d='M96,0 L96,63.75 L160.883594,63.75 C178.620995,63.75 193,49.4790764 193,31.875 C193,14.2709236 178.620995,0 160.883594,0 L96,0 Z'\n id='PTZ-Zoom-Hover-Plus-Slice'\n fill='url(#linearGradient-zoom9)'\n />\n {/* <path d=\"M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z\" id=\"PTZ-Zoom-Hover-Minus-Slice\" fill=\"url(#linearGradient-zoom10)\"></path> */}\n </Hover>\n <Active active={zooming === 'in'} transform='translate(96.000000, 0.000000)'>\n <path\n d='M0,0 L0,63.75 L64.8835938,63.75 C82.6209951,63.75 97,49.4790764 97,31.875 C97,14.2709236 82.6209951,0 64.8835938,0 L0,0 Z' id='PTZ-Zoom-Active-Plus-Slice'\n fillOpacity='0.61'\n fill='url(#linearGradient-zoom11)'\n />\n <path\n d='M96,0 L96,5 L32.1164062,5 C17.4302083,5 5.48398392,16.5663708 5.01434007,30.9927914 L5.00363033,31.4308221 L5,31.875 C5,46.5608308 16.8905918,58.5089041 31.6677396,58.746397 L32.1164062,58.75 L96,58.75 L96,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L96,0 Z'\n stroke='url(#linearGradient-zoom13)'\n fill='url(#linearGradient-zoom12)'\n transform='translate(48.000000, 31.875000) scale(-1, 1) translate(-48.000000, -31.875000) '\n />\n\n\n </Active>\n <g id='PTZ-Zoom-Icons-Section' transform='translate(-10.000000, -10.625000) translate(35.000000, 30.000000)' fillRule='nonzero'>\n <path d='M117.149921,14.1184213 L124.420095,14.1184213 C124.657568,14.1184213 124.850079,14.3104799 124.850079,14.5473962 L124.850079,21.8005035 C124.850079,22.9850849 125.812631,23.9453779 127,23.9453779 C128.187369,23.9453779 129.149921,22.9850849 129.149921,21.8005035 L129.149921,14.5473962 C129.149921,14.3104799 129.342432,14.1184213 129.579905,14.1184213 L136.850079,14.1184213 C138.037448,14.1184213 139,13.1581283 139,11.9735469 C139,10.7889655 138.037448,9.82867248 136.850079,9.82867248 L129.579905,9.82867248 C129.342432,9.82867248 129.149921,9.63661388 129.149921,9.3996976 L129.149921,2.14487441 C129.149921,0.960292981 128.187369,-3.55271368e-15 127,-3.55271368e-15 C125.812631,-3.55271368e-15 124.850079,0.960292981 124.850079,2.14487441 L124.850079,9.3996976 C124.850079,9.63661388 124.657568,9.82867248 124.420095,9.82867248 L117.149921,9.82867248 C115.962552,9.82867248 115,10.7889655 115,11.9735469 C115,13.1581283 115.962552,14.1184213 117.149921,14.1184213 L117.149921,14.1184213 Z' id='PTZ-Zoom-Icon-Plus' fill='url(#linearGradient-zoom14)' />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useState, useCallback, useContext } from 'react';\nimport styled, {css} from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\nconst Active = styled.g<{active:boolean}>`\n opacity: 0;\n ${({active}) => active && css`opacity: 1;`}\n\n`;\nconst Hover = styled.g<{hover:boolean}>`\n opacity: 0;\n ${({hover}) => hover && css`opacity: 1;`}\n`;\n\nconst Container = styled.g`\n`;\n\n\ninterface Props {\n\n}\n\nconst Up: React.FC<Props> = () => {\n const [hover, setHover] = useState(false);\n const { state: {zooming}, actions: {zoom, stop}} = useContext(PTZContext);\n\n const activeStart = useCallback(()=>{\n setHover(false);\n zoom({zooming: 'out'});\n },[zoom]);\n const activeEnd = useCallback(()=>{\n stop();\n setHover(true);\n },[stop]);\n\n const hoverStart = useCallback(()=>{\n setHover(true);\n },[]);\n const hoverEnd = useCallback(()=>{\n setHover(false);\n },[]);\n return (\n <Container onMouseEnter={hoverStart} onMouseLeave={hoverEnd} onMouseDown={activeStart} onMouseUp={activeEnd} onTouchStart={activeStart} onTouchEnd={activeEnd} transform='translate(10.000000, 10.625000)'>\n <Hover hover={hover} fillOpacity='0.56'>\n <path\n d='M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z'\n id='PTZ-Zoom-Hover-Minus-Slice'\n fill='url(#linearGradient-zoom10)'\n />\n </Hover>\n <Active active={zooming === 'out'}>\n <path\n d='M97,0 L97,63.75 L32.1164062,63.75 C14.3790049,63.75 0,49.4790764 0,31.875 C0,14.2709236 14.3790049,0 32.1164062,0 L97,0 Z'\n fillOpacity='0.61'\n fill='url(#linearGradient-zoom11)'\n />\n\n <path\n d='M97,0 L97,5 L33.1164062,5 C18.4302083,5 6.48398392,16.5663708 6.01434007,30.9927914 L6.00363033,31.4308221 L6,31.875 C6,46.5608308 17.8905918,58.5089041 32.6677396,58.746397 L33.1164062,58.75 L97,58.75 L97,63.75 L33.1164062,63.75 C15.3790049,63.75 1,49.4790764 1,31.875 C1,14.2709236 15.3790049,0 33.1164062,0 L97,0 Z'\n stroke='url(#linearGradient-zoom13)'\n fill='url(#linearGradient-zoom12)'\n />\n </Active>\n <g transform='translate(-10.000000, -10.625000) translate(35.000000, 30.000000)' fillRule='nonzero'>\n <path\n d='M2.14992117,10 C0.962552494,10 0,10.960293 0,12.1448744 C0,13.3294558 0.962552494,14.2897488 2.14992117,14.2897488 L21.8500788,14.2897488 C23.0374475,14.2897488 24,13.3294558 24,12.1448744 C24,10.960293 23.0374475,10 21.8500788,10 L2.14992117,10 Z'\n id='PTZ-Zoom-Icon-Minus'\n fill='url(#linearGradient-zoom15)'\n />\n </g>\n </Container>\n );\n};\n\nexport default Up;","import React, { useContext } from 'react';\n\nimport Up from '../atoms/Up';\nimport Down from '../atoms/Down';\nimport Left from '../atoms/Left';\nimport Right from '../atoms/Right';\nimport Base from '../molecules/Base';\n\nimport ZoomBase from '../molecules/ZoomBase';\nimport ZoomIn from '../atoms/ZoomIn';\nimport ZoomOut from '../atoms/ZoomOut';\nimport styled from 'styled-components';\nimport { PTZContext } from '../state/PTZProvider';\n\ninterface Props {\n debug?: boolean;\n}\n\nconst Container = styled.div`\n user-select: none;\n display: flex;\n flex-direction: column;\n`;\n\nconst Controls: React.FC<Props> = ({debug = false}) => {\n const { state } = useContext(PTZContext);\n\n return (\n <Container>\n <Base>\n <Up />\n <Down />\n <Left />\n <Right />\n </Base>\n <ZoomBase>\n <ZoomOut />\n <ZoomIn />\n </ZoomBase>\n {\n debug &&\n <pre>\n {JSON.stringify(state, null, 2)}\n </pre>\n }\n </Container>\n );\n};\n\nexport default Controls;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { MediaBoxWrapper } from '../../Misc/atoms/MediaBox';\nimport { IFeedbackColor } from '../..';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\nimport MediaBox, { IMediaModal } from '../../Misc/atoms/MediaBox';\nimport { EllipsisStyles } from '../../common';\n\nconst Container = styled.div`\n width: 100%;\n height: 170px;\n border-radius: 3px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n position: relative;\n\n ${MediaBoxWrapper} {\n height: 100%;\n width: 100%;\n text-align: center;\n img, video {\n border-radius: 3px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n height: 100%;\n width: 100%;\n object-fit: cover;\n }\n`;\n\nconst EmptyWithIcon = styled.div<{hasPadding: boolean}>`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n ${({hasPadding})=> hasPadding && `\n padding-bottom: 43px\n `}\n;\n\n ${IconWrapper} {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\nconst Notice = styled.div`\n ${({ theme, color }) => color && css`\n background-color: ${theme.colors.feedback[color]};\n color: ${theme.colors.icons.inverse};\n `};\n opacity: 0.85;\n height: 46px;\n width: 300px;\n position: absolute;\n bottom: 0px;\n left: 0px;\n display: flex;\n align-items: center;\n padding: 10px;\n`;\n\nconst NoticeMessage = styled.div`\n ${EllipsisStyles};\n max-width: 245px;\n font-size: 10px;\n`;\n\nconst NoticeTitle = styled.div`\n ${EllipsisStyles};\n max-width: 245px;\n font-size: 12px;\n`;\n\nconst NoticeIcon = styled.div`\n height: 20px;\n width: 20px;\n margin-left: 2px;\n\n ${IconWrapper} {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst NoticeTextGroup = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 14px;\n`;\n\nconst StatusLine = styled.div<{ color: IFeedbackColor }>`\n background-color: ${({ theme, color }) => color && theme.colors.feedback[color]};\n height: 3px;\n width: 100%;\n`;\n\nexport interface IMediaStream extends IMediaModal {\n isEmptyWithIcon?: boolean\n emptyIcon?: string\n status?: IFeedbackColor\n noticeMessage?: string\n noticeTitle?: string\n noticeIcon?: string\n hasNotice?: boolean\n}\n\nconst MediaStream: React.FC<IMediaStream> = ({\n isEmptyWithIcon = false,\n status = 'neutral',\n noticeIcon,\n hasNotice = false,\n noticeMessage,\n noticeTitle,\n emptyIcon,\n ...props\n}) => {\n return (\n <Container>\n {isEmptyWithIcon\n ? <EmptyWithIcon hasPadding={hasNotice}><Icon icon={emptyIcon ? emptyIcon : 'PasswordHide'} color='dimmed' size={41} /></EmptyWithIcon>\n : <MediaBox {...{ ...props }} />}\n {hasNotice && (\n <Notice color={status}>\n {noticeIcon && <NoticeIcon><Icon icon={noticeIcon} size={20} color='inverse' /></NoticeIcon>}\n <NoticeTextGroup>\n {noticeTitle && <NoticeTitle>{noticeTitle}</NoticeTitle>}\n {noticeMessage && <NoticeMessage>{noticeMessage}</NoticeMessage>}\n </NoticeTextGroup>\n </Notice>\n )}\n <StatusLine color={status} />\n </Container>\n );\n};\n\nexport default MediaStream;","import React, { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport { EllipsisStyles } from '../../common';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div`\n display: flex;\n height: 60px;\n`;\n\nconst LeftData = styled.div<{ hasRightData: boolean }>`\n ${({ theme, hasRightData }) => hasRightData && css`\n border-right: ${theme.colors.divider} 1px solid;\n width: 195px;\n `};\n\n padding: 0 12px 0 12px;\n display: flex;\n\n ${IconWrapper} {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n }\n`;\n\nconst RightData = styled.div`\n padding: 0 12px 0 16px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`;\n\nconst DeviceDataGroup = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 14px;\n justify-content: center;\n`;\n\nconst LeftTitle = styled.div<{ hasMarginBottom: boolean, hasRightData: boolean }>`\n ${EllipsisStyles};\n ${({ hasRightData }) => hasRightData\n ? `max-margin: 140px;`\n : `max-margin: 250px;`\n }};\n ${({ hasMarginBottom }) => hasMarginBottom && `margin-bottom: 1px;`};\n\n color: var(--grey-a10);\n font-size: 10px;\n`;\n\nconst LeftSubTitle = styled.div<{ hasRightData: boolean }>`\n font-family: ${({ theme }) => theme.fontFamily.data};\n ${EllipsisStyles};\n ${({ hasRightData }) => hasRightData\n ? `max-width: 140px;`\n : `max-width: 250px;`\n }\n\n color: var(--grey-11);\n font-size: 16px;\n`;\n\nconst Title = styled.div<{ hasMarginBottom: boolean }>`\n ${EllipsisStyles};\n max-width: 80px;\n color: var(--grey-a10);\n font-size: 10px;\n ${({ hasMarginBottom }) => hasMarginBottom && `margin-bottom: 6px;`};\n`;\n\nconst SubTitle = styled.div`\n ${EllipsisStyles};\n max-width: 80px;\n color: var(--grey-11);\n font-size: 12px;\n`;\n\nexport interface IPanelMetaData {\n deviceIcon?: string\n leftSubTitle?: string\n leftTitle?: string\n rightTitle?: string\n rightSubTitle?: string\n hideIcon?: boolean\n}\n\nconst PanelMetaData: React.FC<IPanelMetaData> = ({\n deviceIcon = 'Camera',\n leftSubTitle,\n leftTitle,\n rightTitle,\n rightSubTitle,\n hideIcon = false\n}) => {\n\n const hasRightData = useMemo(() => (!!rightTitle || !!rightSubTitle) , [rightSubTitle, rightTitle]);\n\n return (\n <Container>\n <LeftData {...{ hasRightData }}>\n {!hideIcon && <Icon icon={deviceIcon} color='dimmed' size={18} />}\n <DeviceDataGroup>\n {leftTitle && <LeftTitle hasMarginBottom={!!leftSubTitle} {...{ hasRightData }}>{leftTitle}</LeftTitle>}\n {leftSubTitle && <LeftSubTitle {...{ hasRightData }}>{leftSubTitle}</LeftSubTitle>}\n </DeviceDataGroup>\n </LeftData>\n {hasRightData && (\n <RightData>\n {rightTitle && <Title hasMarginBottom={!!rightSubTitle}>{rightTitle}</Title>}\n {rightSubTitle && <SubTitle>{rightSubTitle}</SubTitle>}\n </RightData>\n )}\n </Container>\n );\n};\n\nexport default PanelMetaData;","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport MediaStream, { IMediaStream } from '../atoms/MediaStream';\nimport PanelMetaData, { IPanelMetaData } from '../atoms/PanelMetaData';\n\nexport const CameraPanelWrapper = styled.div<{hasOnClick: boolean}>`\n width: 300px;\n height: 230px;\n border-radius: 3px;\n box-shadow: 0 2px 10px 0 var(--grey-a5);\n background-color: ${({theme}) => theme.styles.global.background.backgroundImage};\n }\n\n ${({hasOnClick}) => hasOnClick &&`\n cursor: pointer;\n `};\n`;\n\nexport interface ICameraPanel {\n streamProps: IMediaStream\n panelMetaData?: IPanelMetaData\n customBottom?: ReactElement\n panelOnClick?: () => void\n}\n\nconst NewComponent : React.FC<ICameraPanel> = ({\n streamProps,\n panelMetaData,\n customBottom,\n panelOnClick,\n ...props}) => {\n return(\n <CameraPanelWrapper onClick={panelOnClick} hasOnClick={panelOnClick === undefined? false : true} {...props}>\n <MediaStream {...streamProps} />\n {customBottom\n ? customBottom\n : panelMetaData && <PanelMetaData {... panelMetaData} />}\n </CameraPanelWrapper>\n );\n};\n\nexport default NewComponent;","import React from 'react';\nimport styled from 'styled-components';\nimport CameraPanel, { ICameraPanel } from '../molecules/CameraPanel';\n\nconst CameraGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fill, 300px);\n gap: 20px 20px;\n`;\n\ninterface ICameraPanels {\n panels: ICameraPanel[]\n}\n\nconst CameraPanels: React.FC<ICameraPanels> = ({ panels }) => {\n return (\n <CameraGrid>\n {panels.map((props, index) => {\n return <CameraPanel key={index} {...props} />;\n })}\n </CameraGrid>\n );\n};\n\nexport default CameraPanels;","import React from 'react';\nimport styled, {css} from 'styled-components';\nimport Icon, {IconProps, IconWrapper} from '../../Icons/Icon';\nimport { Link } from 'react-router-dom';\n\nconst TextContainer = styled.div`\n user-select: none;\n`;\n\nconst StyledLink = styled(Link)`\n text-decoration: none;\n`;\n\nexport const TagWrapper = styled.div<{ hoverColor:ISvgIcons['color']; enableHover:boolean; size: number}>`\n font-family: ${({theme}) => theme.fontFamily.ui };\n font-size: ${({size}) => size}px;\n font-weight: 500;\n color: var(--grey-11);\n padding: 4px 10px;\n border: solid 1px var(--grey-8);\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n height: 26px;\n\n ${IconWrapper} {\n [stroke]{\n ${({theme}) => theme.colors.icons['dimmed']};\n }\n margin-right: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n ${({theme, hoverColor, enableHover}) => enableHover && css`\n &:hover {\n cursor: pointer;\n border-color: ${theme.colors.icons[hoverColor]};\n color: ${theme.colors.icons[hoverColor]};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.icons[hoverColor]};\n }\n }\n }\n `};\n`;\n\ninterface OwnProps {\n label?: string\n linkTo?: string\n}\n\nexport type ITag = OwnProps & IconProps;\n\nconst Tag : React.FC<ITag> = ({\n icon = '',\n size = 14,\n weight = 'regular',\n label='',\n linkTo,\n ...props\n}) => {\n\n const renderTag = () => (\n <TagWrapper hoverColor='primary' enableHover={linkTo ? true : false} size={size}>\n {icon && (\n <Icon\n icon={icon}\n size={size}\n weight={weight}\n {...props}\n />\n )}\n <TextContainer>{label}</TextContainer>\n </TagWrapper>\n );\n\n return(\n linkTo\n ? (\n <StyledLink to={linkTo}>\n {renderTag()}\n </StyledLink>)\n : renderTag()\n );\n};\n\nexport default Tag;","import React from 'react';\nimport styled from 'styled-components';\nimport Tag, {ITag, TagWrapper} from '../atoms/Tag';\n\n\nexport const TagListWrapper = styled.div`\n display: flex;\n ${TagWrapper} {\n margin-right: 10px;\n margin-bottom: 6px;\n flex-shrink: 0;\n }\n flex-wrap: wrap;\n`;\n\nexport interface ITagList {\n tagsConfig: ITag[]\n}\n\nconst TagList : React.FC<ITagList> = ({tagsConfig}) => {\n return(\n <TagListWrapper>\n {tagsConfig.map((tagProps, index) => {\n return (\n <Tag key={`tag-${index}`} {...tagProps} />\n );\n })}\n </TagListWrapper>\n );\n};\n\nexport default TagList;","import debounce from 'lodash.debounce';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport BasicSearchInput, { IBasicSearchInput } from '../atoms/BasicSearchInput';\n\n// Adding default value thinking of query params or other outside initialized value\ninterface IDebouncedSearcher extends IBasicSearchInput {\n defaultValue?: string;\n onDebouncedChange?: (newValue: string) => void\n}\n\nconst DebouncedSearcher: React.FC<IDebouncedSearcher> = ({\n onDebouncedChange = () => { },\n defaultValue,\n ...props\n}) => {\n const [typedValue, setTypedValue] = useState<string>(defaultValue || '');\n\n const debounceChange = useRef(debounce(newValue => updateChange(newValue), 600)).current;\n\n const updateChange = useCallback((newValue: string) => {\n onDebouncedChange(newValue);\n }, [onDebouncedChange]);\n\n const updateTyped = useCallback((e: React.FormEvent<HTMLInputElement>) => {\n const newValue = e.currentTarget.value;\n setTypedValue(newValue);\n debounceChange(newValue);\n }, [debounceChange]);\n\n useEffect(() => {\n if (defaultValue) {\n setTypedValue(defaultValue);\n }\n }, [defaultValue]);\n\n return (\n <BasicSearchInput {...props} onChange={updateTyped} value={typedValue} />\n );\n};\n\nexport default DebouncedSearcher;","import React from 'react';\nimport styled from 'styled-components';\nimport Button from '../../Form/atoms/Button';\nimport ButtonWithIcon, { IButtonWithIcon } from '../../Form/atoms/ButtonWithIcon';\n\nconst Container = styled.div``;\nconst Title = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n color: var(--grey-10);\n font-size: 12px;\n font-weight: 700;\n margin-bottom: 17px;\n`;\n\nconst ButtonsWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst LeftButtons = styled.div`\n button {\n margin: 0 10px 10px 0;\n }\n`;\n\nconst RightButtons = styled.div`\n flex-shrink: 0;\n`;\n\nconst SelectedResults = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n margin-top: 29px;\n min-height: 19px;\n color: var(--grey-10);\n font-size: 12px;\n`;\n\n\nconst renderSelected = (template: string, selected: number, total: number) => {\n const newSelected = template.replace('[SELECTED]', `${selected}`);\n return newSelected.replace('[TOTAL]', `${total}`);\n};\n\nexport interface IActionsButton extends IButtonWithIcon {\n text: string\n}\n\nexport interface IActionsBar {\n title?: string\n finishTextButton?: string\n actionButtons?: IActionsButton[]\n selectedTemplate?: string\n totalSelected?: number\n totalAvailable?: number\n finishCallback?: () => void\n}\n\nconst ActionsBar: React.FC<IActionsBar> = ({\n title = 'Actions:',\n finishTextButton = 'Finish',\n actionButtons = [],\n selectedTemplate = 'Selected [SELECTED] of [TOTAL] Results',\n totalSelected = 0,\n totalAvailable = 0,\n finishCallback = () => { }\n}) => {\n return (\n <Container>\n <Title>{title}</Title>\n <ButtonsWrapper>\n <LeftButtons>\n {actionButtons.map(({ design, size, position, text, ...props }, index) => {\n return (\n <ButtonWithIcon\n key={index}\n design={design || 'secondary'}\n size={size || 'small'}\n position={position || 'left'}\n {...props}\n >\n {text}\n </ButtonWithIcon>\n );\n })}\n </LeftButtons>\n <RightButtons>\n <Button size='small' onClick={finishCallback}>{finishTextButton}</Button>\n </RightButtons>\n </ButtonsWrapper>\n <SelectedResults>{renderSelected(selectedTemplate, totalSelected, totalAvailable)}</SelectedResults>\n </Container>\n );\n};\n\nexport default ActionsBar;","import { useEffect, useRef } from 'react';\n\nexport function useInterval(callback: ()=>void, delay: number) {\n const savedCallback = useRef<()=>void>();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current && savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}","import { useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport const useTo = ()=>{\n const history = useHistory();\n const to = useCallback((url: string) => () => history.push(url),[history]);\n return to;\n};","import React, { useState, useCallback, useMemo } from 'react';\nimport Notification, { INotificationProps } from '../Alerts/atom/Notification';\nimport { uniqueID } from '../helpers';\n\ntype NotificationContextType = {\n sendNotification: (newNotification: INotificationProps) => void\n clearNotifications: () => void\n};\n\nconst defaultContext: NotificationContextType = {\n sendNotification: () => console.log(\"This is the context initialization should not appear\"),\n clearNotifications: () => console.log(\"This is the context initialization should not appear\"),\n};\n\nconst NotificationContext = React.createContext<NotificationContextType>(defaultContext);\n\nconst notificationList: INotificationProps[] = [];\n\nconst NotificationProvider: React.FC = ({ children }) => {\n const [activeNotification, setActiveNotification] = useState<INotificationProps | null>(null);\n\n const showNotification = useCallback(() => {\n const nextNotification = notificationList.shift();\n\n if (!nextNotification) { return; }\n\n const updateOnClose = () => {\n if (nextNotification.closeCallback) {\n nextNotification.closeCallback();\n }\n setActiveNotification(null);\n showNotification();\n };\n\n const displayedNotification = { ...nextNotification, closeCallback: updateOnClose };\n\n setActiveNotification(displayedNotification);\n }, []);\n\n const sendNotification = useCallback(async (newNotification: INotificationProps) => {\n\n const validNotification: INotificationProps = {\n message: newNotification.message,\n type: newNotification.type,\n id: uniqueID()\n };\n\n if (newNotification.icon) {\n validNotification.icon = newNotification.icon;\n }\n\n if (newNotification.actionTextButton) {\n validNotification.actionTextButton = newNotification.actionTextButton;\n }\n\n if (newNotification.onTextButtonClick) {\n validNotification.onTextButtonClick = newNotification.onTextButtonClick;\n }\n\n if (newNotification.closeCallback) {\n validNotification.closeCallback = newNotification.closeCallback;\n }\n\n if (newNotification.isPinned) {\n validNotification.isPinned = newNotification.isPinned;\n }\n\n notificationList.push(validNotification);\n\n if (notificationList.length === 1 && activeNotification === null) {\n showNotification();\n }\n },[activeNotification, showNotification]);\n\n const clearNotifications = useCallback(() => {\n notificationList.length = 0;\n setActiveNotification((prev) => {\n\n if(prev !== null) {\n return {...prev, closeNow: true};\n }\n\n return prev;\n });\n },[]);\n\n const contextValue = useMemo(() => ({sendNotification, clearNotifications}),[clearNotifications, sendNotification]);\n\n return (\n <NotificationContext.Provider value={contextValue}>\n {activeNotification\n ? <Notification {...activeNotification} />\n : null}\n {children}\n </NotificationContext.Provider>\n );\n};\n\nexport { NotificationContext };\nexport type { NotificationContextType };\nexport default NotificationProvider;","import React from 'react';\nimport { NotificationContext } from '../context/NotificationContext';\n\nexport const useNotification = () => React.useContext(NotificationContext);","import { useRef, useCallback, useEffect } from 'react';\n\n\nexport const usePoll = (callback = ()=>{}, interval = 1000) => {\n const timeoutIDRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const callbackRef = useRef<()=>void>(callback);\n const canceled = useRef<boolean>(false);\n\n\n const pollOnce = useCallback(async()=>{\n if(timeoutIDRef.current !== null){\n console.debug('Clearing previous');\n clearTimeout(timeoutIDRef.current);\n timeoutIDRef.current = null;\n }\n\n await callbackRef.current();\n //Start next one in the chain\n if(!canceled.current){\n console.debug('Starting next timeout');\n timeoutIDRef.current = setTimeout(pollOnce, interval);\n }\n },[interval]);\n\n useEffect(()=>{\n callbackRef.current = callback;\n },[callback]);\n\n useEffect(()=>{\n\n pollOnce();\n\n return () => {\n console.debug('canceled');\n canceled.current = true;\n if(timeoutIDRef.current !== null){\n console.debug('clearing final', timeoutIDRef.current);\n clearTimeout(timeoutIDRef.current);\n timeoutIDRef.current = null;\n }\n };\n },[pollOnce]);\n};\n","import {useState, useLayoutEffect } from \"react\";\n\n/**\n * Custom hook that tells you whether a given media query is active.\n */\n\nexport default function useMediaQuery(query: string) {\n\n const [matches, setMatches] = useState(false);\n useLayoutEffect(\n () => {\n\n const mediaQuery = window.matchMedia(query);\n setMatches(mediaQuery.matches);\n const handler = (event: MediaQueryListEvent) => setMatches(event.matches);\n\n mediaQuery.addEventListener(\"change\", handler);\n\n return () => mediaQuery.removeEventListener(\"change\", handler);\n\n },\n // eslint-disable-next-line\n [] // Empty array ensures effect is only run on mount and unmount\n );\n return matches;\n}","import useMediaQuery from \"./useMediaQuery\";\nimport {deviceMediaQuery} from '../themes/common';\n\n/**\n * Get a set of boolean representing which breakpoint is activeScreen\n * and which breakpoints are inactiveScreen.\n */\n\nexport type IBreakpoints = 'small'\n| 'medium'\n| 'large'\n| 'xlarge'\n| 'xxlarge';\n\ninterface OwnProps {\n isSmall: boolean\n isMedium: boolean\n isLarge: boolean\n isXLarge: boolean\n isXXLarge: boolean\n activeScreen: IBreakpoints\n}\n\nexport default function useBreakpoints() {\n const breakpoints : OwnProps= {\n isSmall: useMediaQuery(deviceMediaQuery.small),\n isMedium: useMediaQuery(deviceMediaQuery.medium),\n isLarge: useMediaQuery(deviceMediaQuery.large),\n isXLarge: useMediaQuery(deviceMediaQuery.xlarge),\n isXXLarge: useMediaQuery(deviceMediaQuery.xxlarge),\n activeScreen: \"small\"\n };\n\n if (breakpoints.isSmall) breakpoints.activeScreen = 'small';\n if (breakpoints.isMedium) breakpoints.activeScreen = 'medium';\n if (breakpoints.isLarge) breakpoints.activeScreen = 'large';\n if (breakpoints.isXLarge) breakpoints.activeScreen = 'xlarge';\n if (breakpoints.isXXLarge) breakpoints.activeScreen = 'xxlarge';\n\n return breakpoints;\n}","import { useCallback, useEffect, useState } from 'react';\n\nconst matchDark = '(prefers-color-scheme: dark)';\n\n//Current state of Dark changes to the opposite\nconst toggleThemeClass = (isDarkEnabled: boolean) => {\n\n if (isDarkEnabled) {\n document.body.classList.add('light-theme');\n document.body.classList.remove('dark-theme');\n } else {\n document.body.classList.add('dark-theme');\n document.body.classList.remove('light-theme');\n }\n};\n\nconst setInitial = () => {\n\n const localStorageTheme = localStorage.getItem('isDarkThemeEnabled');\n let startDark = true;\n\n if(localStorageTheme === null){\n startDark = window.matchMedia(matchDark) && window.matchMedia(matchDark).matches;\n } else {\n startDark = localStorageTheme !== 'false';\n }\n\n toggleThemeClass(!startDark);\n\n return startDark;\n};\n\nconst useThemeToggle = () => {\n\n const [isDarkThemeEnabled, setIsDarkThemeEnabled] = useState(setInitial);\n\n // toggle with Button\n const onThemeToggle = useCallback(() => {\n setIsDarkThemeEnabled((enabled) => {\n localStorage.isDarkThemeEnabled = !enabled;\n toggleThemeClass(enabled);\n\n return !enabled;\n });\n }, []);\n\n // Toggle when changing with OS and no local Storage variable has been set yet\n const osThemeToggle = useCallback((event: MediaQueryListEvent ) => {\n\n const localStorageTheme = localStorage.getItem('isDarkThemeEnabled');\n if(localStorageTheme !== null) { return; }\n\n const isDark = event.matches;\n\n setIsDarkThemeEnabled(() => {\n toggleThemeClass(!isDark);\n return isDark;\n });\n\n },[]);\n\n useEffect(() => {\n const matcher = window.matchMedia(matchDark);\n matcher.addEventListener('change', osThemeToggle);\n\n return () => {\n matcher.removeEventListener('change', osThemeToggle);\n };\n\n }, [onThemeToggle, osThemeToggle]);\n\n return {\n isDarkThemeEnabled,\n setIsDarkThemeEnabled,\n onThemeToggle,\n isLightMode: !isDarkThemeEnabled\n };\n\n};\n\nexport default useThemeToggle;\n","import React from 'react';\nimport styled from 'styled-components';\nimport Button from '../Form/atoms/Button';\nimport { TypeButtonDesigns } from '../Form';\nimport { useModal } from '../hooks';\n\nconst Container = styled.div``;\n\nconst Title = styled.div`\n ${({theme: { typography }}) => typography.modal.title};\n`;\n\nconst MessageBox = styled.div`\n ${({theme: { typography }}) => typography.modal.basicContent};\n margin: 28px 0;\n`;\n\nconst StyledButton = styled(Button)`\n margin-left: 10px;\n`;\n\nconst ButtonsGroup = styled.div`\n text-align: right;\n`;\n\n\ntype IConfirmationModal = {\n title?: string,\n message: string,\n leftButtonText?: string,\n leftButtonDesign?: TypeButtonDesigns,\n leftButtonCallback?: () => void,\n rightButtonText?: string,\n rightButtonDesign?: TypeButtonDesigns,\n rightButtonCallback?: () => void,\n}\n\nconst ConfirmationModal: React.FC<IConfirmationModal> = ({\n title = '',\n message = '',\n leftButtonText = 'submit',\n leftButtonDesign = 'primary',\n leftButtonCallback = () => { },\n rightButtonDesign = 'secondary',\n rightButtonText = 'cancel',\n rightButtonCallback = () => { },\n}) => {\n\n const { setModalOpen } = useModal();\n\n const handlePrimaryBtn = () => {\n leftButtonCallback();\n setModalOpen(false);\n };\n\n const handleSecondaryBtn = () => {\n rightButtonCallback();\n setModalOpen(false);\n };\n\n return (\n <Container>\n <Title>{title}</Title>\n <MessageBox>{message}</MessageBox>\n <ButtonsGroup>\n <StyledButton\n design={leftButtonDesign}\n onClick={handlePrimaryBtn}\n >\n {leftButtonText}\n </StyledButton>\n <StyledButton\n design={rightButtonDesign}\n onClick={handleSecondaryBtn}\n >\n {rightButtonText}\n </StyledButton>\n </ButtonsGroup>\n </Container>\n );\n};\n\nexport default ConfirmationModal;","import styled, {css} from 'styled-components';\nimport {deviceMediaQuery} from '../../themes/common';\n\nexport const MOBILE_CLOSE_HEIGHT = 50;\nexport const MOBILE_NAVBAR_HEIGHT = 68;\n\nexport const Layout = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n ${({ theme }) => theme.styles.global.background};\n`;\n\nexport const MobileLayout = styled.div``;\n\n\nexport const Content = styled.div<{ maxWidth?: string, padBottom?: boolean }>`\n padding: ${({padBottom = true}) => padBottom ? '70px 90px' : '70px 90px 0'};\n flex: 1;\n overflow: auto;\n\n & > div {\n max-width: 1400px;\n }\n\n ${\n ({ maxWidth }) =>\n maxWidth && css`\n & > div {\n max-width: ${maxWidth};\n }\n `\n }\n`;\nexport const MainContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ContentArea = styled.div<{ maxWidth?: string, paddingOverride?: string}>`\n flex: 1;\n width: 100%;\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '40px 20px'};\n margin-left: auto;\n margin-right: auto;\n\n @media ${deviceMediaQuery.medium} {\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '40px'};\n }\n\n @media ${deviceMediaQuery.large} {\n max-width: ${({maxWidth}) => maxWidth ? maxWidth : `1200px`};\n padding: ${({paddingOverride}) => paddingOverride ? paddingOverride : '70px 90px'};\n }\n`;","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\n\nconst ContextTitle = styled.div<{ compact?: boolean }>`\n opacity: 0;\n\n ${({ theme }) => css`\n transition: opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeInOut};\n `}\n\n ${({ compact }) => compact && css`\n font-size:14px;\n `}\n`;\n\nconst ContextIcon = styled.div<{ compact?: boolean }>`\n ${({ theme }) => css`\n ${theme.styles.global.mainMenu.iconBackground.default};\n transition: background ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeInOut};\n `};\n\n flex: 0 0 40px;\n width: 40px;\n height: 40px;\n margin: 0 20px;\n\n border-radius: 7px;\n display:flex;\n justify-content:center;\n align-items:center;\n\n svg {\n display: block;\n }\n`;\n\nconst ContextIndicator = styled.div`\n width: 12px;\n height: 12px;\n flex: 0 0 14px;\n margin: 0 20px 0 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n display: block;\n height: 12px;\n width: 12px;\n }\n\n opacity: 0;\n\n ${({ theme }) => css`\n transition: opacity 0 ${theme.animation.easing.primary.easeInOut};\n `}\n\n`;\nconst ContextActionBaseCSS = css`\n -webkit-tap-highlight-color: transparent;\n border: none;\n background: none;\n display: flex;\n justify-content:left;\n align-items:center;\n flex-wrap: wrap;\n cursor: pointer;\n width: 100%;\n outline: none;\n padding: 0;\n text-decoration: none;\n`;\n\nconst StyledAnchor = styled.a`\n display: flex;\n text-decoration: none;\n`;\n\nconst ExternalIconWrapper = styled.div`\n margin-left: 15px;\n`;\n\nconst ContextWrapper = styled.div<{$menuOpen?: boolean}>`\n ${ContextActionBaseCSS}\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ $menuOpen }) => $menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n`}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n`;\n\nconst ContextActionA = styled(Link) <{ $menuOpen?: boolean, $isActive: boolean }>`\n ${ContextActionBaseCSS}\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ $menuOpen }) => $menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n `}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n\n ${({ $isActive }) => $isActive && css`\n ${ContextIcon},\n &:hover ${ContextIcon}{\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.active};\n }\n `}\n`;\nconst ContextActionButton = styled.button<{ menuOpen?: boolean, isActive: boolean }>`\n ${ContextActionBaseCSS}\n\n ${({ theme }) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n `}\n\n ${({ menuOpen, theme }) => menuOpen && css`\n ${ContextTitle}{\n opacity: 1;\n }\n\n ${ContextIndicator}{\n opacity: 1;\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut} ${theme.animation.speed.fast};\n }\n `}\n\n &:hover ${ContextIcon}{\n opacity: 1;\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.hover};\n ${IconWrapper}{\n [stroke]{\n stroke: ${({ theme }) => theme.colors.icons['inverse']};\n }\n }\n }\n\n ${({ isActive }) => isActive && css`\n ${ContextIcon},\n &:hover ${ContextIcon}{\n ${({ theme }) => theme.styles.global.mainMenu.iconBackground.active};\n }\n `}\n`;\n\ninterface IProps {\n title: string\n icon: string\n isActive: boolean\n menuOpen?: boolean\n submenuOpen?: boolean\n hasSubmenu?: boolean\n contextKey?: number\n href?: string\n compact?: boolean\n isExternalLink?: boolean\n onClickCallback?: (...args: any[]) => void\n}\n\nconst ContextItem: React.FC<IProps> = ({\n hasSubmenu = false,\n contextKey = -1,\n submenuOpen,\n menuOpen,\n title,\n href,\n icon,\n compact,\n isActive,\n isExternalLink,\n onClickCallback }) => {\n\n const internal = (\n <React.Fragment>\n <ContextIcon {...{ compact }}>\n <Icon icon={icon} color={isActive ? 'inverse' : 'dimmed'} size={20} />\n </ContextIcon>\n <ContextTitle {...{ compact }}>{title}</ContextTitle>\n {hasSubmenu ? <ContextIndicator><Icon icon={submenuOpen ? 'Up' : 'Down'} color='dimmed' /></ContextIndicator> : null}\n </React.Fragment>);\n\n if (hasSubmenu) {\n return (\n <ContextActionButton menuOpen={menuOpen} isActive={isActive} onClick={() => onClickCallback && onClickCallback(contextKey)}>\n {internal}\n </ContextActionButton>\n );\n } else {\n return (\n isExternalLink\n ? (\n <StyledAnchor href={href} target='_blank'>\n <ContextWrapper $menuOpen={menuOpen}>\n {internal}\n <ExternalIconWrapper>\n <Icon icon='ExternalLink' color='dimmed' size={12} />\n </ExternalIconWrapper>\n </ContextWrapper>\n </StyledAnchor>\n )\n : (\n <ContextActionA\n $menuOpen={menuOpen}\n to={href ? href : '#'}\n $isActive={isActive}\n onClick={() => onClickCallback && onClickCallback(contextKey)}\n >\n {internal}\n </ContextActionA>)\n );\n }\n\n};\n\nexport default ContextItem;","import { useReducer, useCallback, useLayoutEffect } from 'react';\n\nimport useBreakpoints, { IBreakpoints } from './useBreakpoints';\n\ninterface IMenuState {\n desktopSize: IBreakpoints\n isMenuPinned: boolean\n isMenuOpen: boolean\n canPin: boolean\n}\n\ninterface SET_MENU {\n type: 'SET_MENU'\n data: {\n desktopSize: IBreakpoints\n defaultMenuOpen: boolean\n canAlwaysPin?: boolean\n }\n}\n\ninterface SET_OPEN {\n type: 'SET_OPEN'\n}\n\ninterface SET_CLOSE {\n type: 'SET_CLOSE'\n}\n\ninterface TOGGLE_PIN {\n type: 'TOGGLE_PIN'\n}\n\ntype IMenuActions = SET_MENU | SET_OPEN | SET_CLOSE | TOGGLE_PIN\n\n\nconst menuReducer = (state: IMenuState, action: IMenuActions) => {\n\n switch (action.type) {\n\n // initial State based in props and desktop size and local storage\n case 'SET_MENU': {\n const openValueStorage = localStorage.getItem(window.location.hostname + '_isMenuOpen');\n\n let isMenuOpen = (openValueStorage === 'true') || (openValueStorage === null && (!!action.data.defaultMenuOpen));\n let isMenuPinned = (openValueStorage === 'true') && !!action.data.canAlwaysPin;\n const canPin = (action.data.desktopSize === 'xlarge') || !!action.data.canAlwaysPin;\n\n if (action.data.desktopSize === 'xxlarge' && action.data.canAlwaysPin === false) {\n isMenuOpen = true;\n isMenuPinned = true;\n }\n\n return {\n ...state,\n desktopSize: action.data.desktopSize,\n isMenuOpen,\n isMenuPinned,\n canPin,\n };\n }\n\n // handle autoOpen based on desktop\n case 'SET_OPEN': {\n if (state.isMenuOpen === true) { return state; }\n if (state.desktopSize === 'xxlarge' && !state.canPin) { return state; }\n\n return {\n ...state,\n isMenuOpen: true\n };\n }\n\n // handle auto close based on desktop\n case 'SET_CLOSE': {\n if (state.isMenuOpen === false) { return state; }\n if (state.desktopSize === 'xxlarge' && !state.canPin) { return state; }\n if (state.isMenuPinned === true) { return state; }\n\n return {\n ...state,\n isMenuOpen: false,\n };\n }\n\n case 'TOGGLE_PIN': {\n if (!state.canPin) { return state; }\n\n let isMenuOpen = true;\n\n if (state.isMenuPinned) {\n localStorage.setItem(window.location.hostname + '_isMenuOpen', 'false');\n isMenuOpen = false;\n } else {\n localStorage.setItem(window.location.hostname + '_isMenuOpen', 'true');\n }\n\n return {\n ...state,\n isMenuOpen,\n isMenuPinned: !state.isMenuPinned,\n };\n }\n\n default:\n console.error(`Action ${action['type']} not registered.`);\n return state;\n }\n};\n\nconst menuState: IMenuState = {\n desktopSize: 'large',\n isMenuPinned: false,\n isMenuOpen: false,\n canPin: false\n};\n\nconst useMenu = (defaultMenuOpen: boolean, canAlwaysPin: boolean) => {\n\n const { activeScreen } = useBreakpoints();\n const [state, dispatch] = useReducer(menuReducer, menuState);\n\n const setMenu = useCallback((defaultMenuOpen: boolean, canAlwaysPin: boolean, desktopSize: IBreakpoints,) => {\n dispatch({ type: 'SET_MENU', data: { defaultMenuOpen, desktopSize, canAlwaysPin } });\n }, []);\n\n const setMenuOpen = useCallback(() => {\n dispatch({ type: 'SET_OPEN' });\n }, []);\n\n const setMenuClose = useCallback(() => {\n dispatch({ type: 'SET_CLOSE' });\n }, []);\n\n const togglePinned = useCallback(() => {\n dispatch({ type: 'TOGGLE_PIN' });\n }, []);\n\n useLayoutEffect(() => {\n setMenu(defaultMenuOpen, canAlwaysPin, activeScreen);\n }, [activeScreen, defaultMenuOpen, canAlwaysPin, setMenu]);\n\n return {\n menuState: state,\n setMenuOpen,\n setMenuClose,\n togglePinned\n };\n};\n\nexport default useMenu;","import React, { useRef, useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {Link} from 'react-router-dom';\nimport ContextItem from './ContextItem';\nimport { IMenuItemTop, IMenuItemSubmenu } from '..';\nimport {resetButtonStyles} from '../../common/index';\nimport Icon from '../../Icons/Icon';\n\nconst Submenu = styled.ul`\n display: block;\n position: relative;\n margin-left: 40px;\n padding: 0;\n\n`;\nconst SubmenuHeader = styled.div`\n display: block;\n height: 40px;\n margin-left: 40px;\n`;\n\nconst SubmenuItemTitle = styled.span`\n display: block;\n ${({theme}) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.subheader}\n `};\n\n`;\n\nconst SubmenuItemLink = styled(Link)`\n ${resetButtonStyles};\n display: block;\n`;\n\nconst ExternalIconWrapper = styled.div`\n margin-left: 15px;\n`;\n\nconst SubmenuItemAnchor = styled.a`\n ${resetButtonStyles};\n display: flex;\n align-items: center;\n`;\n\nconst SubmenuItem = styled.li<{isActive?: boolean}>`\n display: block;\n height: 30px;\n padding-left: 40px;\n position: relative;\n\n &::after {\n display: block;\n content: '';\n height: 1px;\n width: 14px;\n position: absolute;\n left: 0;\n top: 10px;\n background: ${({theme: {colors}}) => colors.divider};\n }\n\n ${SubmenuItemLink}, ${SubmenuItemAnchor}{\n\n ${({theme, isActive}) => theme && css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.subItem.default};\n\n &:hover {\n ${theme.typography.global.mainMenu.subItem.hover};\n }\n\n ${isActive && css`\n &, &:hover {\n ${theme.typography.global.mainMenu.subItem.active};\n }\n `}\n\n `};\n\n\n\n }\n`;\n\nconst SubmenuContainer = styled.div`\n ${({theme}) => theme && css`\n transition:\n max-height ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n `};\n\n position: relative;\n overflow: hidden;\n\n &::after {\n display: block;\n content: '';\n width: 1px;\n position: absolute;\n left: 40px;\n top: 0;\n bottom: 35px;\n background: ${({theme: {colors}}) => colors.divider};\n }\n\n`;\n\nconst ContextContainer = styled.div<{ open: boolean, maxHeight: number, minHeight?: number, loading: 'true'|'false' }>`\n min-height: ${({minHeight}) => minHeight ? `${minHeight}px` : `70px`};\n width: inherit;\n\n ${SubmenuContainer}{\n max-height: 0;\n opacity: 0;\n }\n ${({open, maxHeight, theme}) => open && css`\n ${SubmenuContainer}{\n transition:\n max-height ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut},\n opacity ${theme.animation.speed.fast} ${theme.animation.easing.primary.easeOut};\n max-height: ${maxHeight}px !important;\n opacity: 1;\n }\n `};\n\n ${({loading}) => loading === 'true' && css`\n ${SubmenuContainer}{\n max-height: none !important;\n opacity: 1;\n }\n `};\n\n`;\n\ninterface IProps {\n item: IMenuItemTop\n contextKey: number\n submenuOpen: boolean\n loading: boolean\n menuOpen?: boolean\n topLevelPath: string\n minHeight?: number\n onClickCallback?: (...args: any[]) => void\n readyCallback?: (...args: any[]) => void\n}\n\nconst NavigationItem : React.FC<IProps> = ({item, menuOpen, submenuOpen, contextKey, loading, topLevelPath, minHeight, onClickCallback, readyCallback}) => {\n const { icon, title, href, submenu, isExternalLink } = item;\n const isActive = topLevelPath === href;\n\n const refSubmenu = useRef<any>(null);\n const [submenuHeight, setSubmenuHeight] = useState<number>(0);\n\n const submenus : any[] = generateSubmenus(submenu, onClickCallback ) || [];\n const hasSubmenu : boolean = submenus.length > 0;\n\n useEffect(() => {\n if(refSubmenu && refSubmenu.current && refSubmenu.current.clientHeight !== 0){\n setSubmenuHeight(refSubmenu.current.clientHeight);\n }\n\n if(readyCallback){ readyCallback(contextKey); }\n\n }, [refSubmenu, setSubmenuHeight, readyCallback, contextKey]);\n\n return (\n <ContextContainer open={submenuOpen} loading={loading ? 'true': 'false'} maxHeight={submenuHeight} minHeight={minHeight}>\n <ContextItem {...{title, href, isActive, icon, hasSubmenu, isExternalLink, submenuOpen, menuOpen, onClickCallback, contextKey}} />\n {hasSubmenu ? <SubmenuContainer ref={refSubmenu}>{submenus}</SubmenuContainer> : null}\n </ContextContainer>\n );\n\n};\n\n/**\n * Generate the submenu component structure.\n * @param submenu JSON Object with the menu structure\n */\nconst generateSubmenus = (\n submenu? : IMenuItemSubmenu[],\n onClickCallback?: (...args: any[]) => void,\n ) => {\n\n if(!submenu){ return; }\n\n const grouping : any[] = [];\n const output : any = [];\n\n // First submenu\n grouping.push([]);\n\n submenu.forEach((item, key) => {\n const {title, href, isExternalLink} = item;\n if(href){\n // Treat as menu item/\n if(isExternalLink) {\n grouping[grouping.length - 1].push(\n <SubmenuItem key={key} isActive={false}>\n <SubmenuItemAnchor href={href} target='_blank'>\n {title}\n <ExternalIconWrapper>\n <Icon icon='ExternalLink' color='dimmed' size={10} />\n </ExternalIconWrapper>\n </SubmenuItemAnchor>\n </SubmenuItem>);\n }else {\n grouping[grouping.length - 1].push(<SubmenuItem key={key} isActive={false}><SubmenuItemLink to={href} onClick={() => onClickCallback && onClickCallback(-1)}>{title}</SubmenuItemLink></SubmenuItem>);\n }\n } else {\n // Assume this is a grouping header.\n if(grouping[grouping.length - 1].length > 1){ grouping.push([]); }\n grouping[grouping.length - 1].push(<SubmenuHeader key={key}><SubmenuItemTitle>{title}</SubmenuItemTitle></SubmenuHeader>);\n }\n });\n\n grouping.forEach((group, key) => {\n output.push(<Submenu key={key}>{group}</Submenu>);\n });\n\n return output;\n\n};\n\nexport default NavigationItem;\n\n","import React, { useState, useCallback, useEffect } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\n\nimport { Link, useLocation } from 'react-router-dom';\nimport ContextItem from '../atoms/ContextItem';\nimport useMenu from '../../hooks/useMenu';\n\nimport { IBreakpoints } from '../../hooks/useBreakpoints';\n\nimport SvgLogoMark from '../../svg/LogoMark';\nimport SvgLogoText from '../../svg/LogoText';\nimport NavigationItem from '../atoms/NavigationItem';\nimport { IMenu } from '..';\nimport { getTopLevelPath } from '../../helpers/index';\n\nconst Logo = styled(Link)`\n height: 50px;\n margin: 0 20px 55px 15px;\n display: flex;\n\n object {\n pointer-events: none;\n }\n`;\nconst LogoMark = styled.div`\n height: 50px;\n flex: 0 0 50px;\n margin-right: 15px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n`;\nconst LogoType = styled.div`\n opacity: 0;\n flex: 1;\n height: 50px;\n display: flex;\n justify-content: left;\n align-items: center;\n`;\n\nconst SVGObject = styled.object``;\nconst SVGObjectText = styled.object`\n max-width: 180px;\n`;\n\nconst NavigationContainer = styled.div``;\n\nconst MenuFooter = styled.div`\n ${({ theme }) => theme && css`\n ${theme.styles.global.mainMenu.footerBackground}\n `};\n display: flex;\n flex-direction: column;\n flex: 1;\n justify-content: flex-end;\n`;\n\nconst FooterItemContainer = styled.div`\n min-height: 70px;\n`;\n\nconst PushContainer = styled.div<{ isPinned: boolean; }>`\n position: relative;\n height: 100%;\n ${({ theme, isPinned }) => theme && css`\n width: ${isPinned ? theme.dimensions.global.mainMenu.width.open : theme.dimensions.global.mainMenu.width.closed};\n `};\n`;\n\nconst Container = styled.div<{ open: boolean; desktopSize: IBreakpoints }>`\n z-index: 99;\n position: fixed;\n top: 0;\n left: 0;\n ${({ theme, open, desktopSize }) => theme && css`\n ${theme.styles.global.mainMenu.background}\n ${desktopSize === 'xxlarge' ? `` : css`\n transition: width ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeOut}\n `\n };\n width: ${open ? theme.dimensions.global.mainMenu.width.open : theme.dimensions.global.mainMenu.width.closed};\n border-right: 1px solid ${theme.styles.global.mainMenu.lines.backgroundColor};\n\n ${LogoType}{\n transition: opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n opacity: ${open ? 1 : 0};\n }\n `}\n\n box-sizing: border-box;\n height: 100%;\n padding: 20px 0 0 0;\n overflow: hidden;\n`;\n\nconst ContainerInner = styled.div`\n width: ${({ theme }) => theme.dimensions.global.mainMenu.width.open};\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\n\n\nconst MainMenu: React.FC<IMenu> = ({ content, home = \"/\", logoMark, logoText, keepOpenText = \"Keep Open\", autoHideText = \"Auto-Hide\", supportUrl, defaultMenuOpen = true, canAlwaysPin = false, onMenuToggle= ()=>{}}) => {\n\n const { menuState, setMenuOpen, setMenuClose, togglePinned } = useMenu(defaultMenuOpen, canAlwaysPin);\n\n const [focusedContext, setFocusedContext] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(true);\n const location = useLocation();\n let checkedInItems: number = 0;\n\n /* Handling of menu open, closing and pinning. */\n const autoMenuOpen = useCallback((e: any) => {\n if (e.pointerType === 'touch') { return; }\n setMenuOpen();\n\n }, [setMenuOpen]);\n\n const autoMenuClose = useCallback(() => {\n // TODO: Move the focused back to the active view so it re-opens on current context.\n setMenuClose();\n }, [setMenuClose]);\n\n const toggleMenuPin = useCallback((e: any) => {\n if (e.pointerType === 'touch') { return; }\n togglePinned();\n }, [togglePinned]);\n\n useEffect(() => {\n onMenuToggle(menuState.isMenuOpen);\n },[menuState.isMenuOpen, onMenuToggle]);\n\n /** Manage which context is open. */\n /** Submenu sends -1 because context only is for the parent\n * The -1 value is important in the mobile version of this menu\n */\n const setFocusedContextCb = useCallback(contextKey => {\n if(contextKey === -1) { return; }\n\n setFocusedContext(focusedContext !== contextKey ? contextKey : -1);\n }, [setFocusedContext, focusedContext]);\n\n /** Manage the loading cycle. */\n const readyCallback = useCallback(() => {\n // Basic count of menu items (that need to measure height) that have checked in.\n checkedInItems++;\n if (checkedInItems === content.items.length) {\n setLoading(false);\n }\n }, [checkedInItems, content]);\n\n return (\n <PushContainer isPinned={menuState.isMenuPinned}>\n {ReactDom.createPortal(\n <Container\n open={menuState.isMenuOpen}\n desktopSize={menuState.desktopSize}\n onPointerEnter={menuState.isMenuPinned ? () => {} : autoMenuOpen}\n onTouchStart={() => console.log('touch')}\n onMouseLeave={menuState.isMenuPinned ? () => {} : autoMenuClose}\n >\n <ContainerInner>\n <Logo to={home}>\n <LogoMark>{logoMark ? <SVGObject type='image/svg+xml' data={logoMark} /> : <SvgLogoMark />}</LogoMark>\n <LogoType>{logoText ? <SVGObjectText type='image/svg+xml' data={logoText} /> : <SvgLogoText />}</LogoType>\n </Logo>\n\n <NavigationContainer>\n {content.items.map((item, key) => {\n return (\n <NavigationItem\n topLevelPath={getTopLevelPath(location.pathname)}\n key={key}\n contextKey={key}\n menuOpen={menuState.isMenuOpen}\n submenuOpen={key === focusedContext && menuState.isMenuOpen}\n onClickCallback={setFocusedContextCb}\n {...{ item, loading, focusedContext, readyCallback }}\n />\n );\n })}\n </NavigationContainer>\n\n <MenuFooter>\n\n {supportUrl && (\n <FooterItemContainer>\n <ContextItem compact isActive={false} icon='Question' title='Help & Support' href={supportUrl} menuOpen={menuState.isMenuOpen} />\n </FooterItemContainer>\n )}\n\n {(menuState.canPin)\n ? (\n <FooterItemContainer>\n <ContextItem\n compact\n isActive={false}\n icon={menuState.isMenuOpen && menuState.isMenuPinned ? 'Left' : 'Menu'}\n title={menuState.isMenuPinned ? keepOpenText : autoHideText}\n onClickCallback={toggleMenuPin}\n menuOpen={menuState.isMenuOpen}\n />\n </FooterItemContainer>\n )\n : null}\n </MenuFooter>\n </ContainerInner>\n </Container>,\n document.body)}\n </PushContainer>\n );\n};\n\nexport default MainMenu;\n","import React, { FC } from 'react';\nimport styled from 'styled-components';\nimport Icon from '../../Icons/Icon';\n\nconst Container = styled.div`\n padding: 16px 10px 14px 23px;\n display: flex;\n flex-direction: row;\n border-top: 1px solid ${({ theme }) => theme.colors.divider};\n align-items: center;\n cursor: pointer;\n svg {\n margin-top: 7px;\n }\n`;\n\nconst ColumnContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding-left: 14px;\n align-items: flex-start;\n`;\n\nconst Title = styled.div`\n opacity: 0.76;\n font-family: ${({ theme }) => theme.fontFamily.ui};\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.34px;\n color: ${({ theme }) => theme.typography.global.mainMenu.subheader.color};\n`;\n\nconst SubTitle = styled.div`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 0.29px;\n color: ${({ theme }) => theme.typography.global.mainMenu.subheader.color};\n padding-top: 2px;\n opacity: 0.5;\n`;\n\ninterface IDrawerBottomMenu {\n icon: string,\n title: string,\n subTitle: string,\n onClickCallback?: () => void\n}\n\nconst DrawerBottomMenu: FC<IDrawerBottomMenu> = ({ icon = 'Settings', title, subTitle, onClickCallback = () => {} }) => {\n\n return (\n <Container onClick={onClickCallback}>\n <Icon icon={icon} size={18} color='dimmed' />\n\n <ColumnContainer>\n <Title>{title}</Title>\n <SubTitle>{subTitle}</SubTitle>\n </ColumnContainer>\n\n </Container>\n );\n};\n\nexport default DrawerBottomMenu;\n","import React, { useCallback, Fragment } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport { ITopBar } from '../index';\nimport { resetButtonStyles } from '../../common/index';\nimport DrawerBottomMenu from '../atoms/DrawerBottomMenu';\n\nconst DrawerTop = styled.div``;\nconst DrawerBottom = styled.div`\n ${({ theme }) => css`\n width: 100%;\n position: fixed;\n bottom: 0;\n\n @media ${theme.deviceMediaQuery.large} {\n position: static;\n bottom: 0;\n }\n `};\n`;\n\nconst DrawerHeader = styled.h2`\n ${({ theme }) => theme.typography.global.mainMenu.subheader};\n padding: 0;\n margin: 0 0 5px;\n`;\nconst CurrentUser = styled.div`\n padding: 20px 20px 15px;\n\n ${({ theme }) => css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n ${theme.typography.global.mainMenu.identity};\n `};\n`;\n\nconst UserOptions = styled.div`\n padding: 20px 20px 10px 20px;\n ${({ theme }) => css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n `};\n\n`;\n\nconst Logout = styled.div`\n padding: 0 20px;\n`;\n\nconst LinkMenu = styled.ul`\n padding: 0;\n margin: 12px 0 0 0;\n list-style: none;\n`;\n\nconst LinkMenuItem = styled.li`\n padding: 10px 0;\n`;\n\nconst LinkMenuItemA = styled(Link) <{ isActive?: boolean }>`\n ${resetButtonStyles};\n display: block;\n width: 100%;\n\n ${({ theme }) => css`\n ${theme.typography.global.mainMenu.subItem.default};\n\n &:hover {\n ${theme.typography.global.mainMenu.subItem.hover};\n }\n `};\n\n ${({ theme, isActive }) => isActive && css`\n &, &:hover {\n ${theme.typography.global.mainMenu.subItem.active};\n }\n `};\n`;\n\ninterface IUserMenu extends ITopBar {\n closeOnClick?: () => void\n}\n\nconst UserMenu: React.FC<IUserMenu> = ({\n hasLanguage = false,\n selectedLanguageText = '',\n hasLogout = true,\n logoutLink = '/logout',\n logoutText = 'Logout',\n hasCurrentUser = true,\n currentUserText = 'Current User',\n accountOptionText = \"Account Options\",\n userSubmenu = [],\n userDrawerBespoke,\n loggedInUser,\n hasSwitchTheme = false,\n isLightMode = true,\n switchThemeText = 'SWITCH THEME',\n selectedThemeText = '',\n onLogout = () => { },\n onLanguageToggle = () => { },\n closeOnClick,\n onThemeToggle = () => { }\n}) => {\n\n const logoutHandler = useCallback(async (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n e.preventDefault();\n await onLogout();\n window.location.assign(logoutLink);\n if (closeOnClick) {\n closeOnClick();\n }\n }, [closeOnClick, logoutLink, onLogout]);\n\n const handleCloseWhenClick = useCallback(() => {\n if (closeOnClick) {\n closeOnClick();\n }\n }, [closeOnClick]);\n\n return (\n <Fragment>\n <DrawerTop>\n {hasCurrentUser ?\n <CurrentUser>\n <DrawerHeader>{currentUserText}</DrawerHeader>\n {loggedInUser}\n </CurrentUser>\n : null}\n\n {userSubmenu.length > 0 ?\n <UserOptions>\n <DrawerHeader>{accountOptionText}</DrawerHeader>\n <LinkMenu>\n {userSubmenu.map(({ text, href }, index) => {\n return (\n <LinkMenuItem key={index}>\n <LinkMenuItemA to={href} onClick={handleCloseWhenClick}>{text}</LinkMenuItemA>\n </LinkMenuItem>\n );\n })}\n </LinkMenu>\n </UserOptions>\n : null}\n\n {userDrawerBespoke ? userDrawerBespoke : null}\n\n {hasLogout ?\n <Logout>\n <LinkMenu>\n <LinkMenuItem><LinkMenuItemA onClick={logoutHandler} to={logoutLink}>{logoutText}</LinkMenuItemA></LinkMenuItem>\n </LinkMenu>\n </Logout>\n : null}\n </DrawerTop>\n\n <DrawerBottom>\n {hasSwitchTheme && <DrawerBottomMenu icon={isLightMode ? 'LightMode' : 'DarkMode'} title={switchThemeText} subTitle={selectedThemeText} onClickCallback={onThemeToggle} />}\n {hasLanguage && <DrawerBottomMenu icon='Language' title='LANGUAGE / 言語' subTitle={selectedLanguageText} onClickCallback={onLanguageToggle} />}\n </DrawerBottom>\n </Fragment>\n );\n};\n\nexport default UserMenu;","import React from 'react';\nimport styled from 'styled-components';\nimport { INotificationItem } from '../index';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 18px 20px 12px 20px;\n height: 122px;\n`;\n\nconst ImgWrapper = styled.div`\n border-radius: 5px;\n overflow: hidden;\n height: 40px;\n width: 40px;\n flex-shrink: 0;\n`;\n\nconst EmptyImg = styled.div`\n background-color: var(--grey-5);\n width: 100%;\n height: 100%;\n`;\n\nconst Image = styled.div<{ image?: string }>`\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-image: url(${p => p.image});\n background-position: center center;\n background-size: cover;\n background-repeat: no-repeat;\n display: ${p => p.image ? 'block' : 'none'};\n`;\n\nconst InfoContainer = styled.div`\n margin-left: 20px;\n`;\n\nconst Title = styled.div`\n font-size: 16px;\n font-weight: 500;\n color: var(--grey-11);\n`;\n\nconst Message = styled.div`\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n color: var(--grey-11);\n margin: 4px 0;\n height: 30px;\n text-overflow: ellipsis;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n`;\n\nconst TimeMsg = styled.div`\n font-size: 13px;\n font-weight: 500;\n color: var(--grey-12);\n margin-top: 15px;\n`;\n\n\nconst NotificationItem: React.FC<INotificationItem> = ({ imgUrl, title, message, time }) => {\n return (\n <Container>\n <ImgWrapper>\n {imgUrl\n ? <Image image={imgUrl} />\n : <EmptyImg />}\n </ImgWrapper>\n <InfoContainer>\n <Title>{title}</Title>\n <Message>{message}</Message>\n <TimeMsg>{time}</TimeMsg>\n </InfoContainer>\n </Container>\n );\n};\n\nexport default NotificationItem;","import React, { Fragment } from 'react';\nimport styled from 'styled-components';\nimport { INotificationsHistory, INotificationItem } from '../index';\nimport NotificationItem from '../atoms/NotificationItem';\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst StatusContainer = styled.h2`\n text-transform: uppercase;\n padding: 10px 0 10px 20px;\n font-size: 14px;\n font-weight: 500;\n color: var(--grey-12);\n border-bottom: ${({ theme }) => theme.colors.divider} 1px solid;\n margin: 0;\n`;\n\nconst NotificationWrapper = styled.div`\n border-bottom: ${({ theme: { colors } }) => colors.divider} 1px solid;\n`;\n\nconst renderNotifications = (items: INotificationItem[], type: string) => (\n items.map((item, index) => {\n return (\n <NotificationWrapper key={`alert-${type}-${index}`}>\n <NotificationItem {...item} />\n </NotificationWrapper>);\n })\n);\n\nconst NotificationsHistory: React.FC<INotificationsHistory> = ({\n read,\n unread,\n noNotificationsText = 'No new notifications',\n readNotificationsText = 'New',\n unreadNotificationsText = 'Read',\n\n}) => {\n\n if ((read.length === 0) && (unread.length === 0)) {\n return (\n <Container>\n <StatusContainer>{noNotificationsText}</StatusContainer>\n </Container>\n );\n }\n\n return (\n <Container>\n {unread && (\n <Fragment>\n <StatusContainer>{readNotificationsText}</StatusContainer>\n {renderNotifications(unread, 'unread')}\n </Fragment>\n )}\n {read && (\n <Fragment>\n <StatusContainer>{unreadNotificationsText}</StatusContainer>\n {renderNotifications(read, 'read')}\n </Fragment>\n )}\n </Container>\n );\n};\n\nexport default NotificationsHistory;","import React, { useState } from 'react';\nimport ReactDom from 'react-dom';\nimport styled, { css } from 'styled-components';\n\nimport Icon from '../../Icons/Icon';\nimport StatusIcon from '../../Icons/StatusIcon';\nimport UserMenu from '../molecules/UserMenu';\nimport { ITopBar } from '../index';\nimport NotificationsHistory from './NotificationsHistory';\nimport { removeAutoFillStyle } from '../../common';\n\nconst Container = styled.div`\n z-index: 9;\n position: sticky;\n top: 0;\n align-self: flex-start;\n height: 65px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n\n ${({ theme, theme: { colors } }) => colors && css`\n border-bottom: ${theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n background-color:${theme.styles.global.mainMenu.background.backgroundColor};\n `}\n`;\n\nconst SearchBar = styled.div`\n margin-left: 25px;\n flex: 0 1 500px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst IconWrapper = styled.div`\n flex: 0 40px;\n width: 5px;\n display: flex;\n justify-content: center;\n align-items: center;\n > div {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nconst SearchInput = styled.input`\n ${removeAutoFillStyle};\n font-family: ${({ theme }) => theme.fontFamily.data};\n flex: 1;\n height: 35px;\n line-height: 35px;\n border: none;\n outline: none;\n background: transparent;\n\n ${({ theme: { typography } }) => typography.global.topBar.search.value};\n\n &::placeholder {\n font-style: italic;\n ${({ theme: { typography } }) => typography.global.topBar.search.placeholder};\n }\n`;\n\nconst ButtonArea = styled.div`\n height: inherit;\n padding-right: 10px;\n display: flex;\n`;\n\nconst DrawerToggle = styled.button.attrs({ type: 'button' }) <{ isActive: boolean }>`\n width: 60px;\n margin: 0 5px;\n height: inherit;\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n\n ${({ theme }) => css`\n border-bottom: 5px solid transparent;\n /*${theme.colors.menu.indicator};*/\n\n &:hover {\n border-bottom-color: ${theme.colors.menu.hover};\n }\n\n transition: border ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `};\n\n ${({ isActive, theme }) => isActive && css`\n &, &:hover {\n border-bottom-color: ${theme.colors.menu.active};\n }\n `}\n`;\n\nconst DrawerPortalWrapper = styled.div``;\n\nconst Drawer = styled.div<{ isOpen: boolean, baseWidth?: string }>`\n font-family: ${({ theme }) => theme.fontFamily.ui};\n\n position: fixed;\n right: -10px;\n top: 65px;\n bottom: 0;\n background: ${({ theme }) => theme.styles.global.mainMenu.background};\n border-left: ${({ theme }) => theme.styles.global.mainMenu.lines.backgroundColor} 1px solid;\n width: ${({ baseWidth }) => baseWidth ? baseWidth : `200px`};\n opacity: 0;\n visibility: hidden;\n z-index: 100;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n ${({ theme }) => css`\n transition:\n opacity ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut},\n right ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n `};\n\n ${({ isOpen }) => isOpen && css`\n right: 0;\n opacity: 1;\n visibility: visible;\n `}\n`;\n\n/**\n * Negative margin hides the scroll;\n * Reviewed on Chrome an Firefox\n */\nconst NotificationsContainer = styled.div`\n overflow-y: scroll;\n margin-right: -17px;\n`;\n\ntype IDrawerKeys = 'user' | 'notifications' | 'custom' | null;\n\n\nconst TopBar: React.FC<ITopBar> = ({\n hasNotifications = false,\n hasLanguage = false,\n selectedLanguageText = '',\n hasLogout = true,\n logoutLink = '/logout',\n logoutText = 'Logout',\n hasSearch = false,\n hasCurrentUser = true,\n currentUserText = 'Current User',\n accountOptionText = 'Account Options',\n searchPlaceholder = 'Search for devices, analysis tasks, etc.',\n userSubmenu = [],\n userDrawerBespoke,\n loggedInUser,\n notificationsHistory,\n customDrawer,\n hasSwitchTheme = false,\n isLightMode = true,\n switchThemeText = 'SWITCH THEME',\n selectedThemeText = '',\n onLogout = () => { },\n onLanguageToggle = () => { },\n onThemeToggle = () => { }\n}) => {\n\n const [openDrawer, setOpenDrawer] = useState<IDrawerKeys>(null);\n\n const toggleDrawers = (drawerKey: IDrawerKeys) => {\n setOpenDrawer(\n prevDrawer => {\n // if prevDrawer is open, just update to null to close\n if (prevDrawer === drawerKey) {\n return null;\n }\n\n return drawerKey;\n }\n );\n };\n\n return (\n <Container>\n {hasSearch ?\n <SearchBar>\n <IconWrapper>\n <Icon icon='Search' size={18} color='dimmed' />\n </IconWrapper>\n <SearchInput placeholder={searchPlaceholder} />\n </SearchBar> : <div />}\n\n <ButtonArea>\n {customDrawer && (\n <DrawerToggle isActive={openDrawer === 'custom'} onClick={() => toggleDrawers('custom')}>\n <StatusIcon {...customDrawer} />\n </DrawerToggle>\n )}\n {hasNotifications && (\n <DrawerToggle isActive={openDrawer === 'notifications'} onClick={() => toggleDrawers('notifications')}>\n <Icon icon='Notifications' size={18} color='dimmed' />\n </DrawerToggle>\n )}\n <DrawerToggle isActive={openDrawer === 'user'} onClick={() => toggleDrawers('user')}>\n <Icon icon='UserProfile' size={18} color='dimmed' />\n </DrawerToggle>\n </ButtonArea>\n\n {ReactDom.createPortal(\n <DrawerPortalWrapper>\n {/* User Menu */}\n <Drawer isOpen={openDrawer === 'user'}>\n <UserMenu {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n logoutText,\n hasCurrentUser,\n currentUserText,\n accountOptionText,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle,\n selectedLanguageText,\n hasSwitchTheme,\n isLightMode,\n switchThemeText,\n selectedThemeText,\n onThemeToggle\n }}\n />\n </Drawer>\n\n {/* Notifications */}\n {hasNotifications ?\n <Drawer isOpen={openDrawer === 'notifications'} baseWidth='300px'>\n <NotificationsContainer>\n {notificationsHistory ? <NotificationsHistory {...notificationsHistory} /> : null}\n </NotificationsContainer>\n </Drawer> : null}\n\n {customDrawer && (\n <Drawer isOpen={openDrawer === 'custom'} baseWidth={customDrawer.width ? customDrawer.width : \"200px\"}>\n {customDrawer.customComponent}\n </Drawer>\n )}\n </DrawerPortalWrapper>, document.body)}\n </Container>\n );\n\n};\n\nexport default TopBar;","import React, { useState, HTMLAttributes } from 'react';\n\nexport interface ContextProps {\n selected: string,\n setSelected: (value: string) => void\n}\nexport const TabContext = React.createContext<ContextProps>({\n selected: '',\n setSelected: () => { }\n});\n\ntype Props = HTMLAttributes<HTMLDivElement>\n\nconst Tabs: React.FC<Props> = ({ children }) => {\n const [selected, setSelected] = useState('');\n\n return (\n <TabContext.Provider value={{ selected, setSelected }}>\n {children}\n </TabContext.Provider>\n );\n};\n\nexport { Tabs };","import React, { useContext, useEffect, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from './Tabs';\n\nexport const TabListWrapper = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\ninterface OwnProps {\n defaultTabId: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst TabList: React.FC<Props> = ({ children, defaultTabId}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n useEffect(() => {\n setSelected(defaultTabId);\n }, [defaultTabId, setSelected]);\n\n return (\n <TabListWrapper>\n {children}\n </TabListWrapper>\n );\n};\n\nexport { TabList };","import React, { useContext, HTMLAttributes, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TabContext, ContextProps } from '../Tabs';\n\nconst TabComponent = styled.div`\n margin-right: 39px;\n display: flex;\n align-items: center;\n line-height: 20px;\n`;\n\nconst TabLabel = styled.label<{ active: boolean }>`\n height: 40px;\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n `}\n font-size: 15px;\n font-weight: ${({ active }) => active ? '600' : '500'};\n letter-spacing: 0.09px;\n color: ${({ active }) => active ? 'var(--primary-11)' : 'var(--grey-11)'};\n cursor: pointer;\n border-bottom: ${({ active }) => active ? '2px solid var(--primary-11)' : '2px solid transparent'};\n padding-top: 6px;\n padding-bottom: 14px;\n flex-shrink: 0;\n`;\n\ninterface OwnProps {\n tabFor: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst Tab: React.FC<Props> = ({ children, tabFor, onClick, ...props }) => {\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((event:React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n onClick && onClick(event);\n setSelected(tabFor);\n }, [onClick, setSelected, tabFor]);\n\n return (\n <TabComponent {...props} onClick={onChangeTab}>\n <TabLabel active={selected === tabFor}>\n {children}\n </TabLabel>\n </TabComponent>\n );\n};\n\nexport { Tab };","import React, { useContext, HTMLAttributes } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from './Tabs';\n\nconst Container = styled.div`\n`;\n\ninterface OwnProps {\n tabId: string\n}\n\ntype Props = OwnProps & HTMLAttributes<HTMLDivElement>\n\nconst TabContent: React.FC<Props> = ({ children, tabId, ...props }) => {\n const { selected }: ContextProps = useContext(TabContext);\n\n return (\n selected === tabId ?\n <Container {...props}>\n {children}\n </Container> :\n null\n );\n};\n\nexport { TabContent };","import React, { useContext, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\nimport { TabContext, ContextProps } from '../Tabs';\nimport { IconWrapper } from '../../Icons/Icon';\nimport StatusIcon from '../../Icons/StatusIcon';\nimport { resetButtonStyles } from '../../common/index';\nimport { IStatusDot } from '../..';\n\nconst Container = styled.button`\n ${resetButtonStyles}\n flex-basis: auto;\n flex-grow: 1;\n`;\n\nconst LinkTab = styled.div<{ isActive: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n ${({ theme }) => css`\n transition: border ${theme.animation.speed.normal} ${theme.animation.easing.primary.easeInOut};\n border-bottom: 5px solid ${theme.colors.menu.indicator};\n\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.icons['dimmed']};\n }\n }\n\n &:hover {\n border-bottom-color: ${theme.colors.menu.hover};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.menu.hover};\n }\n }\n }\n `};\n\n ${({ isActive, theme }) => isActive && css`\n &, &:hover {\n border-bottom-color: ${theme.colors.menu.active};\n ${IconWrapper} {\n [stroke]{\n stroke: ${theme.colors.menu.active};\n }\n }\n }\n `}\n`;\n\ninterface IMobileTab {\n tabFor: string\n icon: string\n closeId: string\n counter?: number\n status?: IStatusDot\n}\n\nconst MobileTab: React.FC<IMobileTab> = ({ tabFor, icon, closeId, counter, status, ...props }) => {\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((tabId: string) => {\n const newValue = (selected === tabId) ? closeId : tabId;\n setSelected(newValue);\n }, [closeId, selected, setSelected]);\n\n return (\n <Container {...props} onClick={() => onChangeTab(tabFor)}>\n <LinkTab isActive={selected === tabFor}>\n <StatusIcon {...{icon, status, counter}} />\n </LinkTab>\n </Container>\n );\n};\n\nexport { MobileTab };","import React, { useContext, useCallback } from 'react';\nimport { TabContext, ContextProps } from '../Tabs';\nimport styled, { css } from 'styled-components';\nimport Icon, { IconWrapper } from '../../Icons/Icon';\n\nconst Container = styled.div<{ active: boolean }>`\n display: flex;\n align-items: center;\n margin-right: 22px;\n padding-bottom: 7px;\n height: 60px;\n cursor: pointer;\n\n ${({ active }) => active ? css`\n border-bottom: 3px solid var(--primary-11);\n `\n : css`\n border-bottom: 3px solid transparent;\n `};\n ${IconWrapper} {\n margin-left: 2px;\n flex-shrink: 0;\n }\n`;\n\nconst Title = styled.div<{ active: boolean }>`\n font-size: 14px;\n font-family: ${({ theme }) => theme.fontFamily.ui};\n letter-spacing: 0.09px;\n font-weight: 500;\n color: ${({ active }) => active ? 'var(--primary-11)' : 'var(--grey-11)'};\n margin-bottom: 5px;\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\n\nconst SubTitle = styled.div`\n font-size: 12px;\n font-family: ${({ theme }) => theme.fontFamily.data};\n font-style: italic;\n color: var(--grey-a10);\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nconst TextGroup = styled.div`\n margin-left: 12px;\n margin-right: 20px;\n`;\n\nexport interface ITabWithIcon {\n icon: string\n title: string\n subtitle?: string\n tabFor: string\n}\n\nconst TabWithIcon: React.FC<ITabWithIcon> = ({ icon, title, subtitle, tabFor, ...props }) => {\n\n const { selected, setSelected }: ContextProps = useContext(TabContext);\n\n const onChangeTab = useCallback((tabId: string) => {\n setSelected(tabId);\n }, [setSelected]);\n\n const active = selected === tabFor;\n\n return (\n <Container {...{ active }} {...props} onClick={() => onChangeTab(tabFor)}>\n <Icon {...{ icon }} weight='regular' size={15} color={active ? 'primary' : 'dimmed'} />\n <TextGroup>\n <Title {...{ active }}>{title}</Title>\n {subtitle && <SubTitle>{subtitle}</SubTitle>}\n </TextGroup>\n </Container>\n );\n};\n\nexport { TabWithIcon };","import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport { Tabs } from '../Tabs';\nimport { TabList } from '../TabList';\nimport { TabContent } from '../TabContent';\nimport { TabWithIcon, ITabWithIcon } from '../atoms/TabWithIcon';\n\nconst Container = styled.div``;\n\nconst TabListWrapper = styled.div<{ paddingLeft?: string }>`\n padding-top: 10px;\n padding-left: ${({ paddingLeft }) => paddingLeft ? paddingLeft : '87px'};\n box-shadow: 0 -5px 5px 0 var(--black-a1);\n border-bottom: 1px solid var(--grey-6);\n overflow-y: auto;\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n &::-webkit-scrollbar { /* WebKit */\n width: 0;\n height: 0;\n }\n`;\n\nexport interface ITabIcon extends ITabWithIcon {\n customComponent?: ReactElement\n}\n\nexport interface ITabsWithIconBar {\n defaultTabId: string\n tabList: ITabIcon[]\n paddingLeft?: string\n}\n\nconst TabsWithIconBar: React.FC<ITabsWithIconBar> = ({ defaultTabId, tabList, paddingLeft }) => {\n\n return (\n <Container>\n <Tabs>\n <TabListWrapper {...{ paddingLeft }}>\n <TabList {...{ defaultTabId }}>\n {tabList.map(({ icon, title, subtitle, tabFor }) => {\n return (\n <TabWithIcon key={`tabWithIcon-${tabFor}`} {...{ icon, title, subtitle, tabFor }} />\n );\n })}\n </TabList>\n </TabListWrapper>\n\n {tabList.map(({ tabFor, customComponent }) => {\n return (\n <TabContent key={`TabContent-${tabFor}`} tabId={tabFor}>{customComponent}</TabContent>\n );\n }\n )}\n </Tabs>\n </Container>\n );\n};\n\nexport { TabsWithIconBar };","import React, { ButtonHTMLAttributes, useContext } from 'react';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\nimport styled, {css} from 'styled-components';\nimport { resetButtonStyles } from '../../common/index';\nimport Icon from '../../Icons/Icon';\nimport { MOBILE_CLOSE_HEIGHT } from './Layout';\n\nconst StyledButton = styled.button`\n ${resetButtonStyles}\n\n ${({theme}) => css`\n font-family: ${theme.fontFamily.ui};\n ${theme.typography.global.mainMenu.menuItem.default};\n ${theme.styles.global.mainMenu.background};\n border-top: 1px solid ${theme.colors.divider};\n `};\n \n height: ${MOBILE_CLOSE_HEIGHT}px;\n position: fixed;\n bottom: 0;\n font-size: 14px;\n outline: none;\n\n width: 100%;\n text-align: center;\n white-space: nowrap;\n padding: 0 40px;\n\n`;\n\nconst IconContainer = styled.div`\n height: inherit;\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n margin: 0 20px;\n\n svg {\n display:block;\n }\n`;\n\nconst TextWrapper = styled.div`\n text-transform: uppercase;\n`;\n\ninterface ICloseProps {\n closeId: string\n closeText?: string\n}\n\ntype IClose = ICloseProps & ButtonHTMLAttributes<HTMLButtonElement>\n\nconst CloseButton: React.FC<IClose> = ({\n closeId,\n closeText = 'CLOSE MENU',\n ...props }) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n return (\n <StyledButton\n onClick={() => setSelected(closeId)}\n {...props}\n >\n <IconContainer>\n <Icon icon='CloseCompact' color='dimmed' size={16} />\n </IconContainer>\n <TextWrapper>{closeText}</TextWrapper>\n </StyledButton>\n );\n};\n\nexport default CloseButton;","import React, {useContext} from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport { MOBILE_NAVBAR_HEIGHT, MOBILE_CLOSE_HEIGHT } from '../atoms/Layout';\n\n//\n// Containers height is full height but header and close button\n//\n\nconst Container = styled.div`\n position: relative;\n min-height: calc(100vh - ${MOBILE_NAVBAR_HEIGHT + MOBILE_CLOSE_HEIGHT }px);\n width: 100%;\n overflow-y: scroll;\n`;\n\nconst ContentWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n`;\n\ninterface OwnProps {\n closeId: string\n}\n\nconst MobileNavbarContent: React.FC<OwnProps> = ({ closeId, children }) => {\n const { selected }: ContextProps = useContext(TabContext);\n\n return (\n selected === closeId\n ? null\n : (\n <Container>\n <ContentWrapper>\n {children}\n </ContentWrapper>\n </Container>\n )\n );\n};\n\nexport default MobileNavbarContent;","import React, { useCallback, useState, useContext } from 'react';\nimport styled, { css } from 'styled-components';\nimport { useLocation } from 'react-router-dom';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport { IMenu } from '..';\nimport NavigationItem from '../atoms/NavigationItem';\nimport ContextItem from '../atoms/ContextItem';\nimport { getTopLevelPath } from '../../helpers/index';\n\nconst Container = styled.div``;\n\nconst ItemWrapper = styled.div`\n padding: 14px 0;\n ${({ theme }) => css`\n border-bottom: 1px solid ${theme.colors.divider}\n `};\n`;\n\ninterface IMobileMenu extends IMenu {\n closeId: string\n}\n\nconst MobileMenu: React.FC<IMobileMenu> = ({\n content,\n supportUrl,\n closeId\n}) => {\n\n const [loading, setLoading] = useState<boolean>(true);\n const [focusedContext, setFocusedContext] = useState<number>(0);\n const location = useLocation();\n let checkedInItems: number = 0;\n const { setSelected }: ContextProps = useContext(TabContext);\n\n\n /** Manage which context is open. \n * -1 is the value of a sub menu\n * In this mobile version of the menu will close after selecting an option\n * It will not close if the menu has a submenu to allow it to display the options\n */\n const setFocusedContextCb = useCallback(contextKey => {\n if((contextKey === -1) || (!content.items[contextKey].submenu) ){\n setSelected(closeId);\n }\n\n if(contextKey === -1) { return; }\n\n setFocusedContext(focusedContext !== contextKey ? contextKey : -1);\n\n }, [closeId, content.items, focusedContext, setSelected]);\n\n /** Manage the loading cycle. */\n const readyCallback = useCallback(() => {\n // Basic count of menu items (that need to measure height) that have checked in.\n checkedInItems++;\n if (checkedInItems === content.items.length) {\n setLoading(false);\n }\n }, [checkedInItems, content.items.length]);\n\n const handleCloseMenu = useCallback(() => {\n setSelected(closeId);\n },[closeId, setSelected]);\n\n return (\n <Container>\n {content.items.map((item, key) => {\n return (\n <ItemWrapper key={key} data-key={key}>\n <NavigationItem\n minHeight={30}\n topLevelPath={getTopLevelPath(location.pathname)}\n contextKey={key}\n menuOpen\n submenuOpen={key === focusedContext}\n onClickCallback={setFocusedContextCb}\n {...{ item, loading, focusedContext, readyCallback }}\n />\n </ItemWrapper>\n\n );\n })}\n {supportUrl && (\n <ItemWrapper>\n <ContextItem\n compact\n isActive={false}\n icon='Question'\n title='Help & Support'\n href={supportUrl}\n menuOpen\n onClickCallback={handleCloseMenu}\n />\n </ItemWrapper>)}\n </Container>\n );\n};\n\nexport default MobileMenu;","import React, { useContext } from 'react';\nimport styled from 'styled-components';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nimport SvgLogoMark from '../../svg/LogoMark';\nimport {resetButtonStyles} from '../../common/index';\nimport { Link } from 'react-router-dom';\n\nconst Logo = styled(Link)`\n ${resetButtonStyles};\n display: flex;\n flex-basis: 0;\n flex-grow: 1;\n justify-content: center;\n align-items: center;\n object {\n pointer-events: none;\n height: 25px;\n }\n`;\nconst LogoMark = styled.div`\n margin-right: 15px;\n`;\n\nconst SVGObject = styled.object``;\n\ninterface ILogoLink {\n closeId: string\n logoMark?: string,\n home?: string,\n}\n\nconst MobileLogoLink: React.FC<ILogoLink> = ({\n home = \"/\",\n logoMark,\n closeId,\n}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n return(\n <Logo to={home} onClick={() => setSelected(closeId)}>\n <LogoMark>{logoMark ? <SVGObject type='image/svg+xml' data={logoMark} /> : <SvgLogoMark />}</LogoMark>\n </Logo>\n );\n};\n\nexport default MobileLogoLink;","import React, { useCallback, useContext } from 'react';\nimport styled from 'styled-components';\nimport UserMenu from '../molecules/UserMenu';\nimport { ITopBar } from '../index';\nimport { TabContext, ContextProps } from '../../Tabs/Tabs';\n\nconst Container = styled.div`\n background: ${({ theme }) => theme.styles.global.mainMenu.background};\n z-index: 100;\n display: flex;\n flex-direction: column;\n`;\n\ninterface IMobileUserMenu extends ITopBar {\n closeId: string\n}\n\nconst MobileUserMenu: React.FC<IMobileUserMenu> = ({\n closeId,\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle\n}) => {\n const { setSelected }: ContextProps = useContext(TabContext);\n\n const handleCloseMenu = useCallback(() => {\n setSelected(closeId);\n },[closeId, setSelected]);\n\n return (\n <Container>\n <UserMenu\n {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle,\n }}\n closeOnClick={handleCloseMenu}\n />\n </Container>\n );\n};\n\nexport default MobileUserMenu;","import React from 'react';\nimport styled from 'styled-components';\nimport { Tabs, TabContent, MobileTab } from '../../Tabs/index';\nimport { TabListWrapper, TabList } from '../../Tabs/TabList';\nimport { IMenu, ITopBar, INotificationsHistory } from '..';\nimport CloseButton from '../atoms/CloseButton';\nimport MobileNavbarContainer from '../atoms/MobileNavbarContent';\nimport MobileMenu from './MobileMenu';\nimport MobileLogoLink from '../atoms/MobileLogoLink';\nimport MobileUserMenu from '../molecules/MobileUserMenu';\nimport NotificationsHistory from '../molecules/NotificationsHistory';\nimport { MOBILE_NAVBAR_HEIGHT } from '../atoms/Layout';\n\nconst CLOSE_ID = 'closeMenu';\nconst NOTI_TAB = 'notifications';\nconst USER_TAB= 'user';\nconst MENU_TAB = 'menu';\nconst CUSTOM_TAB = 'custom';\n\nconst Container = styled.nav`\n background-color: ${({theme}) => theme.styles.global.mainMenu.background.backgroundColor};\n position: sticky;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 99;\n`;\n\nconst HeaderContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: ${MOBILE_NAVBAR_HEIGHT}px;\n border-bottom: ${({theme}) => theme.colors.divider} 1px solid;\n\n ${TabListWrapper} {\n flex-basis: 0;\n flex-grow: 3;\n }\n`;\n\ninterface OwnProps {\n closeText?: string\n notificationsHistory?: INotificationsHistory\n}\n\ntype IMobileNavbar = OwnProps & IMenu & ITopBar;\n\nconst MobileNavbar: React.FC<IMobileNavbar> = ({\n content,\n home,\n logoMark,\n supportUrl,\n defaultMenuOpen = true,\n closeText,\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n hasNotifications,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n notificationsHistory,\n customDrawer,\n onLogout,\n onLanguageToggle,\n}) => {\n\n return (\n <Container>\n <Tabs>\n <HeaderContainer>\n <MobileLogoLink {...{ home, logoMark }} closeId={CLOSE_ID} />\n <TabList defaultTabId={CLOSE_ID}>\n {customDrawer && <MobileTab {...customDrawer} tabFor={CUSTOM_TAB} closeId={CLOSE_ID} />}\n {hasNotifications? <MobileTab tabFor={NOTI_TAB} icon='Notifications' closeId={CLOSE_ID} /> : null}\n <MobileTab tabFor={USER_TAB} icon='UserProfile' closeId={CLOSE_ID} />\n <MobileTab tabFor={MENU_TAB} icon='Menu' closeId={CLOSE_ID} />\n </TabList>\n </HeaderContainer>\n <MobileNavbarContainer closeId={CLOSE_ID}>\n <TabContent tabId={CUSTOM_TAB}>\n {customDrawer && customDrawer.customComponent}\n </TabContent>\n <TabContent tabId={NOTI_TAB}>\n {notificationsHistory && hasNotifications ? <NotificationsHistory {...notificationsHistory} /> : null}\n </TabContent>\n <TabContent tabId={USER_TAB}>\n <MobileUserMenu\n {...{\n hasLanguage,\n hasLogout,\n logoutLink,\n hasCurrentUser,\n userSubmenu,\n userDrawerBespoke,\n loggedInUser,\n onLogout,\n onLanguageToggle\n }}\n closeId={CLOSE_ID}\n />\n\n </TabContent>\n <TabContent tabId={MENU_TAB}>\n <MobileMenu {...{ content, supportUrl, defaultMenuOpen }} closeId={CLOSE_ID} />\n </TabContent>\n <CloseButton {...{ closeText }} closeId={CLOSE_ID} />\n </MobileNavbarContainer>\n </Tabs>\n </Container>\n );\n};\n\nexport default MobileNavbar;","import React from 'react';\nimport { IMenu, ITopBar} from '..';\nimport { Layout, MainContainer, ContentArea, MobileLayout } from '../atoms/Layout';\nimport MainMenu from '../organisms/MainMenu';\nimport TopBar from '../molecules/TopBar';\nimport MobileNavbar from '../organisms/MobileNavbar';\nimport useBreakpoints from '../../hooks/useBreakpoints';\n\n\ninterface OwnProps {\n maxWidth?: string,\n paddingOverride?: string,\n onMenuToggle?: (isMenuOpen: boolean) => void\n}\n\ntype INavigation = OwnProps & IMenu & ITopBar;\n\nconst GlobalUI: React.FC<INavigation> = ({\n content,\n home,\n openWidth,\n logoMark,\n logoText,\n supportUrl,\n defaultMenuOpen,\n canAlwaysPin,\n paddingOverride,\n maxWidth,\n children,\n onMenuToggle,\n ...props\n}) => {\n\n const { isLarge } = useBreakpoints();\n\n return (\n isLarge\n ? (\n <Layout>\n <MainMenu {...{\n content,\n home,\n openWidth,\n logoMark,\n logoText,\n supportUrl,\n defaultMenuOpen,\n canAlwaysPin,\n onMenuToggle,\n }\n }\n />\n <MainContainer>\n <TopBar\n {...{...props}}\n />\n <ContentArea {...{maxWidth, paddingOverride}}>\n {children}\n </ContentArea>\n </MainContainer>\n </Layout>\n )\n : (\n <MobileLayout>\n <MobileNavbar\n {...{\n content,\n home,\n logoMark,\n supportUrl,\n defaultMenuOpen,\n ...props\n }\n }\n />\n <ContentArea>\n {children}\n </ContentArea>\n </MobileLayout>\n )\n );\n};\n\nexport default GlobalUI;","import React from 'react';\nimport styled from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nconst Container = styled.div`\n width: 286px;\n border-right: 1px solid hsla(0, 0%, 84%, 50%);\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n`;\nconst LogoContainer = styled.div`\n height: 84px;\n color: hsl(205, 7%, 35%);\n border-bottom: 1px solid hsla(0, 0%, 84%, 50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding-top: 18px;\n padding-bottom: 15px;\n`;\nconst LogoTopText = styled.div`\n height: 31px;\n font-family: Monorale;\n font-size: 18px;\n font-weight: 500;\n line-height: 1.72;\n letter-spacing: 4.5px;\n text-align: center;\n`;\nconst LogoBottomText = styled.div`\n height: 19px;\n font-family: Monorale;\n font-size: 16px;\n font-weight: 300;\n line-height: normal;\n letter-spacing: 14.11px;\n text-align: center;\n`;\n\nexport const SidebarBox = styled.div`\n position: relative;\n border-bottom: 1px solid hsla(0, 0%, 84%, 50%);\n padding: 22px 20px 21px 20px;\n`;\nexport const SidebarHeading = styled.div`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n margin-bottom: 18px;\n`;\n\nexport const SidebarLinkHeading = styled.div`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n`;\n\nexport const BackLink = styled(Link)`\n font-size: 14px;\n font-weight: 500;\n letter-spacing: 0.35px;\n color: hsl(0, 0%, 50%);\n`;\n\nconst SLink = styled(Link)`\n position: absolute;\n right: 30px;\n top: 15px;\n /* width: 80px; */\n /* height: 30px; */\n font-size: 14px;\n font-weight: 600;\n text-align: center;\n color: hsl(0, 0%, 55%);\n border-radius: 3px;\n background-color: hsl(206, 70%, 96%);\n text-decoration: none;\n padding: 7px 20px;\n`;\n\nexport const SidebarLink : React.FC<{title: string; to: string}> = ({title,to}) => {\n return (\n <SidebarBox>\n <SidebarLinkHeading>{title}</SidebarLinkHeading>\n <SLink to={to}>Setup</SLink>\n </SidebarBox>\n );\n};\n\ninterface LogoProps{\n logoTextTop: string;\n logoTextBottom: string;\n}\n\nexport const Logo: React.FC<LogoProps> = ({logoTextTop,logoTextBottom}) => (\n <LogoContainer>\n <LogoTopText>{logoTextTop}</LogoTopText>\n <LogoBottomText>•{logoTextBottom}•</LogoBottomText>\n </LogoContainer>\n);\n\n\nconst Sidebar: React.FC = ({children,...props}) => {\n return (\n <Container {...props}>\n {children}\n </Container>\n );\n};\n\nexport default Sidebar;\n"],"names":["fontFamily","ui","data","dimensions","icons","weights","light","regular","heavy","strong","form","button","xsmall","height","padding","iconSize","small","normal","large","input","outer","width","borderRadius","inner","positions","top","off","neutral","locked","on","global","mainMenu","open","closed","animation","easing","primary","inOut","out","speed","faster","fast","slow","slower","slowest","deviceSize","medium","xlarge","xxlarge","deviceMediaQuery","typography","colors","styles","border","menu","active","hover","divider","feedback","error","info","success","warning","custom","label","fill","contrastLine","stroke","highlightLine","grabHandle","point","grabHandleContrast","grabHandleText","handleBase","handleRingLayer","handleReactiveFill","handleReactiveRing","handleContrastLayer","stopStart","stopColor","stopEnd","wrapperCss","css","IconWrapper","styled","div","IconWrapperForSVG","g","Icon","icon","size","weight","color","forSvgUsage","theme","useTheme","iconWeight","IconSVG","IconSVGs","React","RowCss","ColumnCss","resetButtonStyles","removeAutoFillStyle","EllipsisStyles","IconButton","selected","AlertWrapper","type","feedbackBar","message","pureBase","IconNames","MessageBox","AlertBar","hideCloseButton","useState","dismiss","setDismiss","useEffect","onClick","initAnimation","keyframes","closeAnimation","Container","easeInOut","isClosing","TextButton","MainMessage","Notification","id","isPinned","actionTextButton","closeNow","closeCallback","onTextButtonClick","slideUp","setSlideUp","textClicked","setTextClicked","handleDismiss","useCallback","handleTextClick","animationEnded","mounted","setTimeout","ReactDom","createPortal","onAnimationEnd","document","body","StyledButton","design","easeOut","backgroundColor","disabled","Button","children","props","TextContainer","position","IconContainer","InnerContainer","ButtonWithIcon","iconColor","circumference","radius","c","rotate","BaseCircle","circle","styling","indicators","spinner","base","borderColor","RotatingCircle","r","sizeGuide","Spinner","sizeVal","strokeWidth","circleRadius","viewBox","xmlns","cx","cy","LoadingButton","$loading","LoadingContainer","actionArea","ButtonWithLoading","loading","rest","hoverColor","StyledIconButton","alignment","ActionButtons","buttonsConfig","map","btn","key","ActionContainer","InputActionButton","attrs","FeedbackContainer","FeedbackMessage","FeedbackIcon","StyledInput","fieldState","value","placeholder","InputContainer","hasAction","indexOf","focused","Input","defaultValue","feedbackMessage","actionCallback","actionIcon","postfix","isActionButton","undefined","feedbackIcon","StyledLabel","rightAlign","LabelText","span","Label","htmlFor","labelText","compact","p","padRight","UnitKey","SmallInput","unit","name","className","unitElement","useRef","unitElementWidth","setUnitElementWidth","current","clientWidth","ref","SwitchPosition","intentPosition","left","checked","offset","intentLeft","parseInt","toString","RealInput","SwitchOuter","getPositionKey","switchPos","Off","On","Neutral","Locked","SwitchInner","SpinnerWrapper","themeState","activeTheming","useIntent","isTypeSwitchState","Switch","state","leftTheme","rightTheme","onChangeCallback","inputRef","setPosition","setActiveTheming","switchState","setSwitchState","positionSwitch","customOnChange","updateThemeChoice","stateCheck","onChange","defaultChecked","SvgLogoMark","x1","x2","y1","y2","fillRule","rx","d","SvgLogoText","SvgAvatarPlaceholder","strokeLinecap","strokeLinejoin","transform","x","y","CheckMark","CheckboxState","CheckboxOuter","CheckboxInner","visualState","checkbox","unchecked","Indeterminate","indeterminate","Checkbox","isChecked","setIsChecked","setVisualState","e","target","readOnly","InnerRadio","OuterRadio","HiddenInput","RadioButton","currentChecked","required","handleChange","checkedValue","StyledTextArea","textarea","TextArea","SelectWrapper","StyledSelect","select","isCompact","isLabelSameRow","activePlaceholder","SelectField","changeCallback","setPlaceholderStatus","handleOnChange","prev","renderSelect","hidden","isSameRow","text","isInsideRange","min","max","clamp","minValue","maxValue","Math","getShortTextTimeUnit","isTimeUnit","getTopLevelPath","pathname","parts","split","filter","String","length","getImageType","img","dataType","src","substr","includes","isValidImage","file","acceptedImageTypes","uniqueID","Date","now","random","replace","ThumbDiameter","SliderWrapper","Rail","Mark","leftValue","MarkLabel","ThumbWrapper","Thumb","bgColor","GhostThumb","thumbLeftPosition","valueToPercent","nearMark","marks","closest","reduce","curr","abs","getValidMin","getValidMax","round","getMarkAlignment","renderMarks","markList","listTag","listOptions","marksElements","index","push","Fragment","ghostThumbValue","SliderInput","thumbColor","onlyMarkSelect","inputCallback","maxValid","minValid","initValue","selectedValue","setSelectedValue","isGhostActive","setIsGhostActive","thumbValueRef","mark","ghostVal","handleInputChange","lastValue","val","numericVal","prevMark","handleSelectStart","handleSelectEnd","currentValue","list","onMouseUp","onMouseDown","onTouchStart","onTouchEnd","InputFileButton","buttonDesign","buttonSize","fileInputRef","handleFile","files","newFiles","forwardClick","click","Headers","ValueLabel","Unit","ValueTitle","DurationSlider","title","timeUnit","controlledValue","handleSelectedValue","labelValue","getThumbColor","getTitleLevel","PercentageSlider","updateThumbColor","updateTitle","PasswordField","showValue","setShowValue","setActionIcon","newValue","TextField","_type","TextAreaField","DragAndDrop","inDropZone","DropArea","dropCallback","setInDropZone","onDragEnter","preventDefault","stopPropagation","onDragLeave","onDragOver","onDrop","dataTransfer","updateCursorStyle","clientX","clientY","cursorStyle","drawImgValues","canvasHeight","canvasWidth","scale","naturalWidth","naturalHeight","floor","imageDraw","initialCropValues","cropWidth","cropHeight","imgWidth","imgHeight","aspectRatio","aspect","minWidth","minHeight","isLeftMouseButton","mouseButton","buttons","which","updateCropValues","oldSelection","newX","newY","cropLeft","cropTop","updatedLeft","updatedTop","updatedWidth","updatedHeight","diffX","mouseStartX","diffY","mouseStartY","cursorStart","imgLeft","imgTop","isUpdateRequired","areDimensionsDiff","updateCropWithAspect","imgBoundLeft","imgBoundTop","imgBoundWidth","imgBoundHeight","oldDimensions","newValues","isDifferent","CropLineStyle","TopLine","RightLine","BottomLine","LeftLine","resizeSquaresCss","PointN","isResizable","PointNW","PointNE","PointE","PointSE","PointS","PointSW","PointW","CropArea","hasAspectRatio","ToolHeader","TextGroup","mono","ButtonsGroup","PreviewArea","HiddenImage","SelectedArea","viewDimensions","isResizing","CropTool","cancelBtnTxt","cropBtnTxt","imgUrl","onCrop","onClose","onError","isLoading","setIsLoading","_loadDimensions","setLoadDimensions","canvasRef","imgRef","cropRef","drawImgOnCanvas","newImage","canvas","ctx","getContext","newImgDraw","drawImage","newCrop","prevState","handleCrop","cropArea","cropImageData","getImageData","canvasCropped","createElement","cropContext","putImageData","imgType","newImgUrl","toDataURL","handleMouseDown","rect","getBoundingClientRect","posX","posY","newCursorStyle","handleMouseUp","updateSelect","style","handleMouseMove","newDimensions","handleOnMouseLeave","onMouseMove","onMouseLeave","onLoad","crossOrigin","CROP_HEIGHT_AREA","CROP_WIDTH_AREA","CANVAS_HEIGHT","CANVAS_WIDTH","ratio","PHOTO_HEIGHT","PHOTO_WIDTH","PreviewImageGroup","PhotoContainerStyle","PreviewImage","PlaceholderText","NoPhoto","StyledInputFileButton","ButtonsWrapper","AvatarUploader","photoText","buttonText","buttonTextReplace","uploaderCropText","deletePhotoText","cropToolTitle","cropToolCancelTxt","cropToolConfirmTxt","currentImg","hasCrop","onAvatarUpdate","onRemove","avatarImg","setAvatarImg","cropImg","setCropImg","isCropOpen","setIsCropOpen","newFileUrl","fileType","fetch","then","blob","blobFile","File","newFile","handleCropClose","URL","revokeObjectURL","handleFileUpload","prevImg","createObjectURL","handleEdit","fileUrl","handleRemove","alt","AvatarPlaceholder","accept","PlusIcon","PlusIconWrapper","BigIconsSummary","StyledDropArea","InputButtonWrapper","FilesUploadGroup","hasFiles","filters","dropdownContainer","background","Title","Description","getUpdateFiles","allowedFileTypes","newFilesTransfer","DataTransfer","rejectedFilesTransfer","isCorrectType","items","add","result","goodFiles","rejectedFiles","updatedFilesTransfer","fileNamesSet","Set","isAlready","has","AreaUploadManager","description","fileIcons","selectFilesText","addMoreFilesText","customComponent","setFiles","handleFiles","console","log","multiple","FormContainer","spacing","Form","hide","datepicker","metaHeader","Item","IconWrap","TimeColon","InputWrap","passive","pureTop","DateTimeBlock","allowAfterMidnight","hasDate","hasTime","date","setDateCallback","format","displayHours","setDisplayHours","displayMinutes","setDisplayMinutes","setDateHours","endOfDay","set","hours","Number","minutes","seconds","milliseconds","setDateMinutes","isEqual","initializeInterval","day","start","end","TODAY","TODAY_INTERVAL","startOfDay","DateTimeArea","TimeZoneOption","TimeZoneLabel","subOption","TimeZoneValue","CalendarArea","CalendarHeader","CurrentMonth","focusedMonth","focusedYear","PaginateMonth","monthLink","CalBody","CalRow","CalHRow","CalCell","calendar","CalHCell","header","CalCellB","thisMonth","otherMonth","isToday","enDayGuide","jpDayGuide","isDateInterval","DatePicker","dateMode","timeMode","dateTimeTextUpper","dateTimeTextLower","timeZoneTitle","timeZoneValueTitle","hasEmptyValue","updateCallback","initialValue","lang","getInitialValue","selectedRange","setSelectedRange","setFocusedMonth","targetedDate","setTargetedDate","weeksOfMonth","setWeeksOfMonth","isInitialMount","dayGuide","eachWeekOfInterval","startOfMonth","endOfMonth","onCellClick","validRange","updateDay","isAfter","updateStartDate","updateEndDate","addMonths","locale","ja","enUS","week","days","eachDayOfInterval","endOfWeek","cellState","isSameMonth","interval","_hoverDate","isInsideInterval","singleDayRange","intervalToDuration","isWithinInterval","isSameDay","newDate","getHours","getMinutes","getSeconds","getMilliseconds","validInitial","topBorder","Inner","FilterDropdownContainer","FlipWrapper","isSortAscending","filterButton","dimmed","isOpen","hasFlipArrow","ButtonText","FilterButton","FakeCheckbox","FakeCheckboxInner","CheckMarkWrapper","inverse","FakeRadioButton","FakeInnerRadio","FilterOption","optionType","hasBorder","noBackground","searchInput","boxShadow","CrossButton","BasicSearchInput","hasCrossButton","onCrossClick","isFilterItem","item","useClickOutside","elRef","elCallback","callbackRef","handleClickOutside","eve","contains","addEventListener","removeEventListener","ButtonWrapper","ContentBox","openState","getDropPosition","buttonRect","openLeft","window","innerWidth","openTop","bottom","innerHeight","spaceTop","FilterDropHandler","buttonIcon","onToggleOpenCallback","onCloseCallback","setOpenState","buttonWrapperRef","mainRef","handleClose","handleToggleOpen","LoadingText","LoadingBox","loadingText","InnerBox","StyledFilterOption","OptionList","ResultsContainer","ResultCounter","SearchWrapper","EmptyResultText","isValueSelected","isItemSelected","Array","isArray","forEach","element","getNewSelected","validSelected","newSelected","selectedOrderList","maxItems","findIndex","newList","unshift","selectedIndexList","foundItem","find","sort","a","b","selectedIndex","getFilteredList","valueString","toLowerCase","getResultText","template","visible","total","newMessage","FilterDropdown","hasOptionsFilter","searchPlaceholder","maxDisplayedItems","searchResultText","emptyResultText","onSelect","visibleList","setVisibleList","searchText","setSearchText","handleSelection","handleInputFilter","isActive","OrderGroup","OrderButton","isSelected","SortDropdown","descendingText","ascendingText","handleSortSelect","handleOrderSelect","isAscending","MIN_WIDTH","MIN_HEIGHT","DropdownDatePicker","onUpdateCallback","onToggleCallback","pickerValue","isMount","mountedPicker","setMountedPicker","handleUpdateCallback","handleOnClose","handleOnToggle","canReset","fadeInAnimation","SearchInputWrapper","CloseSearchInputWrapper","StyledFilterButton","StyledDropdown","StyledDropdownDatePicker","renderDropdowns","dropdownFilters","showMoreDropdowns","hasShowMore","dropdown","canHide","renderSearchInputs","searchFilters","visibleSearchInputs","handleVisibleSearch","renderDatePickers","datePickerFilters","datePicker","renderAddSearchButtons","searchId","showFieldText","initialSearchFilters","currentVisible","FilterInputs","showMoreText","showLessText","setVisibleSearchInputs","setShowMoreDropdowns","toggleShowMore","newVisible","ResultsTextWrapper","FilterLabel","FilterLabelText","hasIcon","ClearTextButton","RemoveButton","FilterLabelsGroup","validateDateFormat","resultsDateFormat","isFormatValid","tryDate","renderResults","renderLabel","filterName","textLabel","isDateFormatValid","toDateString","FiltersResults","labelLists","totalResults","resultTextTemplate","clearText","onRemoveFilter","onClearAll","filterId","StyledFilterResults","getDisableValue","filtersValues","singleFilter","notNullValues","createDropdownFilters","dropdownsConfig","handleDropdownsSelected","newSelection","newDropdown","createSearchers","searchersConfig","handleSearchers","searchersFilters","searcher","currentTarget","newSearcher","createDatePickers","datePickersConfig","handleDatePickers","datePickersFilters","foundPicker","validInitialValue","newPicker","createLabelResults","foundSearcher","newLabel","foundDropdown","dropdownLabelVal","initFilters","newFilters","validatedSelected","initialSearch","initialDropdown","FilterBar","filtersTitle","setFiltersValues","dropdownsConfigRef","isequal","debounceSearcher","debounce","updatedFilters","foundFilter","handleOnClear","filterElement","handleOnRemoveFilter","selectedFiltered","oldItem","selection","updatedDatePickers","mountConfig","dropdownItem","StatusCounter","status","StatusDot","StatusIcon","counter","HandleTouchReactionKeyframes","HandleMouseReactionKeyframes","HandleBase","svg","lines","HandleRingLayer","maskID","HandleReactiveGroup","touchDragging","mouseDragging","HandleReactiveFill","HandleReactiveRing","HandleContrastLayer","HandleShadowLayer","fillID","GrabHandleIndexGroup","showIndex","StopStart","stop","StopEnd","GrabHandleIndexText","IconGroup","HandleUnit","useAngles","angle","lineSetId","moveCallback","moveEndCB","options","readOnlyHandle","handleInstance","createRef","setTouchDragging","setMouseDragging","touchIndex","setTouchIndex","handleTouchStart","i","touches","touch","parentNode","parentElement","handleTouchEnd","handleTouchMove","pageX","pageY","shadowGradientID","showPointHandle","showPointLabel","pointIndexOffset","onTouchMove","fontSize","ContrastLine","line","HighlightLine","GrabHandle","GrabHandleContrast","GrabHandleGroup","originalRadius","DMCircle","LineUnit","lineMoveCallback","lineMoveStartCallback","showSmallDirectionMark","overrideShowMoveHandle","handleFinderActive","revealSetIndex","showMoveHandle","setIndexOffset","showDirectionMark","hideGrabHandle","grabTouchMove","grabTouchStart","midpoint","directionMarkCoordinate","atan2","angleMode","PI","sin","cos","labelRotate","getDirectionMarkLine","dmCoordinate","textAnchor","dominantBaseline","LineSetContext","createContext","Point","AreaLabelText","AreaLabel","lineSetData","pointsLength","points","Textlen","areaName","LineSet","getCTM","boundaries","onLineMoveEnd","useContext","dispatch","handleAngles","setHandleAngles","handleRelation","handleRadius","handleUsesAngles","enforceBoundaries","handleMoveCallback","pointerPosition","screenCTM","pointer","f","newLineSetData","update","$merge","lineDragStart","handle","xDiff","yDiff","offsetX","offsetY","lineDragUpdate","newPoints","_handle","calcAngle","originX","originY","towardsX","towardsY","degrees","updateHandleAngles","inputHandleData","outputData","nextIndex","nextHandle","handles","showPoint","LoadingOverlay","Frame","transculent","Image","LineUI","onSizeChange","showHandleFinder","showSetIndex","showGrabHandle","fixedImgDimensions","boundaryOffset","setBoundaries","handleFinder","setHandleFinder","loaded","setLoaded","h","w","imgSize","setImgSize","setUnit","frame","initScaleAndBounds","clientHeight","debug","calculateCTM","ctm","getScreenCTM","handlePositionTipShow","handlePositionTipHide","bounds","baseVal","version","onPointerDown","onPointerUp","onPointerLeave","lineSet","lineData","Video","video","transcalent","LineUIVideo","onLoaded","videoOptions","loop","autoPlay","controls","muted","videoRef","videoSize","setVideoSize","videoHeight","videoWidth","onLoadedMetadata","_iteratorSymbol","Symbol","iterator","_asyncIteratorSymbol","asyncIterator","_catch","recover","WebRTCPlayer","enabled","peerAddress","maxConnectionAttempts","rtcConfiguration","setStatus","setError","connectionAttempts","setConnectionAttempts","webSocket","peerConnection","handleIncomingError","closeWebSocket","onIncomingSDP","sdp","localDescription","send","JSON","stringify","Error","createAnswer","answer","setLocalDescription","signalingState","Promise","all","setRemoteDescription","RTCSessionDescription","onIncomingICE","ice","candidate","RTCIceCandidate","addIceCandidate","onServerMessage","startsWith","msg","parse","SyntaxError","createCall","onServerClose","event","closePeerConnection","code","connectToPeer","onServerError","peerId","getPeerId","ws","WebSocket","setInterval","clearInterval","onRemoteTrack","srcObject","streams","pc","RTCPeerConnection","close","WebRTCClient","getMidpoint","pointA","pointB","action","$set","$splice","newPoint","newState","useTitle","area","delimiter","baseTitle","slice","trim","makeTitle","part","h1","pageHeader","mainTitle","AreaTitleCss","areaTitle","AreaTitle","AreaLinkTitle","Link","PageTitle","areaHref","updateDocTitle","hideAreaInDocTitle","to","introduction","IntroductionText","PageHeader","introductionText","MultilineContent","contentArray","MediaBoxWrapper","mediaStyle","isLoaded","hasModalLimits","StyledImage","MediaBox","incomingSrc","mediaType","retryLoading","retryLimit","onErrorCallback","onMediaLoad","retryCount","setRetryCount","setSrc","loadFailed","setLoadFailed","videoValues","randomDelay","count","handleLoad","preload","onCanPlayThrough","modal","overlay","CloseIcon","CloseButton","LightBox","container","Modal","isCloseEnable","closeText","onDismiss","dismissCallback","lightBoxRef","onClickOutside","defaultModalProps","defaultContext","modalProps","setModalProps","newProps","ModalContext","ModalProvider","setProps","Provider","useModal","setModalOpen","newStatus","updateProps","createModal","isModalOpen","videoDefaultOptions","useMediaModal","isMediaUrlValid","videoElement","resolve","reject","oncanplaythrough","isValid","onerror","onload","createMediaModal","mediaModal","isMediaModalOpen","setMediaModalOpen","mediaUrl","hoverZoom","showImage","PlayableDrop","TableRowThumbnail","image","retryImageLoad","setShowImage","imgSrc","setImgSrc","timeoutRef","handleModal","complete","clearTimeout","retryTimeout","retryImage","TypeTableDeviceStatus","useCopyToClipboard","copyToClipboard","str","el","setAttribute","appendChild","getSelection","rangeCount","getRangeAt","execCommand","removeChild","removeAllRanges","addRange","CopyToClipboard","CellContainer","cellStyle","table","columnData","hasCopyButton","hideDivider","tables","rows","UnitText","StatusBlip","TypeTableCell","showUnit","showStatus","isLastRow","href","RowContainer","isEmpty","TypeTableRow","selectable","selectCallback","hasStatus","hasThumbnail","hasTypeIcon","rowData","columnConfig","wrappedSelectCallback","columns","_checked","cell","HeaderTitle","ascending","isSortActive","sortable","TableHeaderTitle","columnId","indexKey","toggleSort","handleClick","colId","HeaderRow","HeaderItem","headerStyle","fixedWidth","TitleItems","GroupTitle","groupName","EmptyTitle","MiddleLine","groupLine","isLastOfGroup","renderGroupHeader","groupTitle","TypeTableHeader","allChecked","isEmptyTable","hasHeaderGroups","defaultAscending","toggleAllCallback","sortCallback","sortSpec","setSortSpec","ascendingState","setAscendingState","toggleAllCallbackWrapper","updatedSort","lastActiveKey","col","sortActive","newAscending","column","allColls","TableContainer","loadingOverlay","EmptyTableBox","TypeTable","emptyTableTitle","emptyTableText","setAllChecked","areAllChecked","every","StyledLoadingButton","StyledLink","EditContainer","EditCell","rowKey","toLink","saveCallback","isEditMode","setIsEditMode","updatedValue","setUpdatedValue","setLoading","handleSave","verifyKeyPress","keyCode","editContainerRef","onClickOutsideEdit","autoFocus","onKeyUp","connection","address","errorMessage","moving","zooming","stateID","direction","usePTZ","socketUrl","imageRefresh","useWebSocket","sendJsonMessage","lastMessage","useReducer","reducer","connect","user","username","pass","password","host","port","method","params","move","z","timeout","zoom","disconnect","getImage","intervalHandler","actions","PTZContext","PTZProvider","Active","Hover","Up","setHover","activeStart","activeEnd","hoverStart","hoverEnd","onMouseEnter","fillOpacity","xlinkHref","Arrow","Down","Left","Right","PTZControl","filterUnits","operator","dx","dy","stdDeviation","in2","values","stopOpacity","k2","k3","mask","ZoomBase","Controls","Base","ZoomOut","ZoomIn","EmptyWithIcon","hasPadding","Notice","NoticeMessage","NoticeTitle","NoticeIcon","NoticeTextGroup","StatusLine","MediaStream","isEmptyWithIcon","noticeIcon","hasNotice","noticeMessage","noticeTitle","emptyIcon","LeftData","hasRightData","RightData","DeviceDataGroup","LeftTitle","hasMarginBottom","LeftSubTitle","SubTitle","PanelMetaData","deviceIcon","leftSubTitle","leftTitle","rightTitle","rightSubTitle","hideIcon","useMemo","CameraPanelWrapper","backgroundImage","hasOnClick","NewComponent","streamProps","panelMetaData","customBottom","panelOnClick","CameraGrid","CameraPanels","panels","CameraPanel","TagWrapper","enableHover","Tag","linkTo","renderTag","TagListWrapper","TagList","tagsConfig","tagProps","DebouncedSearcher","onDebouncedChange","typedValue","setTypedValue","debounceChange","updateChange","updateTyped","LeftButtons","RightButtons","SelectedResults","renderSelected","ActionsBar","finishTextButton","actionButtons","selectedTemplate","totalSelected","totalAvailable","finishCallback","useInterval","callback","delay","savedCallback","tick","useTo","history","useHistory","url","sendNotification","clearNotifications","NotificationContext","notificationList","NotificationProvider","activeNotification","setActiveNotification","showNotification","nextNotification","shift","updateOnClose","displayedNotification","newNotification","validNotification","contextValue","useNotification","usePoll","timeoutIDRef","canceled","pollOnce","useMediaQuery","query","matches","setMatches","useLayoutEffect","mediaQuery","matchMedia","handler","useBreakpoints","breakpoints","isSmall","isMedium","isLarge","isXLarge","isXXLarge","activeScreen","matchDark","toggleThemeClass","isDarkEnabled","classList","remove","setInitial","localStorageTheme","localStorage","getItem","startDark","useThemeToggle","isDarkThemeEnabled","setIsDarkThemeEnabled","onThemeToggle","osThemeToggle","isDark","matcher","isLightMode","basicContent","ConfirmationModal","leftButtonText","leftButtonDesign","leftButtonCallback","rightButtonDesign","rightButtonText","rightButtonCallback","handlePrimaryBtn","handleSecondaryBtn","MOBILE_CLOSE_HEIGHT","MOBILE_NAVBAR_HEIGHT","Layout","MobileLayout","Content","padBottom","maxWidth","MainContainer","ContentArea","paddingOverride","ContextTitle","ContextIcon","iconBackground","ContextIndicator","ContextActionBaseCSS","StyledAnchor","ExternalIconWrapper","ContextWrapper","menuItem","$menuOpen","ContextActionA","$isActive","ContextActionButton","menuOpen","ContextItem","hasSubmenu","contextKey","submenuOpen","isExternalLink","onClickCallback","internal","menuReducer","openValueStorage","location","hostname","isMenuOpen","defaultMenuOpen","isMenuPinned","canAlwaysPin","canPin","desktopSize","setItem","menuState","useMenu","setMenu","setMenuOpen","setMenuClose","togglePinned","Submenu","ul","SubmenuHeader","SubmenuItemTitle","subheader","SubmenuItemLink","SubmenuItemAnchor","SubmenuItem","li","subItem","SubmenuContainer","ContextContainer","maxHeight","NavigationItem","topLevelPath","readyCallback","submenu","refSubmenu","submenuHeight","setSubmenuHeight","submenus","generateSubmenus","grouping","output","group","Logo","LogoMark","LogoType","SVGObject","object","SVGObjectText","NavigationContainer","MenuFooter","footerBackground","FooterItemContainer","PushContainer","ContainerInner","MainMenu","content","home","logoMark","logoText","keepOpenText","autoHideText","supportUrl","onMenuToggle","focusedContext","setFocusedContext","useLocation","checkedInItems","autoMenuOpen","pointerType","autoMenuClose","toggleMenuPin","setFocusedContextCb","onPointerEnter","ColumnContainer","DrawerBottomMenu","subTitle","DrawerTop","DrawerBottom","DrawerHeader","h2","CurrentUser","identity","UserOptions","Logout","LinkMenu","LinkMenuItem","LinkMenuItemA","UserMenu","hasLanguage","selectedLanguageText","hasLogout","logoutLink","logoutText","hasCurrentUser","currentUserText","accountOptionText","userSubmenu","userDrawerBespoke","loggedInUser","hasSwitchTheme","switchThemeText","selectedThemeText","onLogout","onLanguageToggle","closeOnClick","logoutHandler","assign","handleCloseWhenClick","ImgWrapper","EmptyImg","InfoContainer","Message","TimeMsg","NotificationItem","time","StatusContainer","NotificationWrapper","renderNotifications","NotificationsHistory","read","unread","noNotificationsText","readNotificationsText","unreadNotificationsText","SearchBar","SearchInput","topBar","search","ButtonArea","DrawerToggle","indicator","DrawerPortalWrapper","Drawer","baseWidth","NotificationsContainer","TopBar","hasNotifications","hasSearch","notificationsHistory","customDrawer","openDrawer","setOpenDrawer","toggleDrawers","drawerKey","prevDrawer","TabContext","setSelected","Tabs","TabListWrapper","TabList","defaultTabId","TabComponent","TabLabel","Tab","tabFor","onChangeTab","TabContent","tabId","LinkTab","MobileTab","closeId","TabWithIcon","subtitle","paddingLeft","TabsWithIconBar","tabList","TextWrapper","ContentWrapper","MobileNavbarContent","ItemWrapper","MobileMenu","handleCloseMenu","MobileLogoLink","MobileUserMenu","CLOSE_ID","NOTI_TAB","USER_TAB","MENU_TAB","CUSTOM_TAB","nav","HeaderContainer","MobileNavbar","MobileNavbarContainer","GlobalUI","openWidth","LogoContainer","LogoTopText","LogoBottomText","SidebarBox","SidebarHeading","SidebarLinkHeading","BackLink","SLink","SidebarLink","logoTextTop","logoTextBottom","Sidebar"],"mappings":"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"}
|