From c2885d64da6ef33977f4a7a5ca3adb32288e44be Mon Sep 17 00:00:00 2001 From: Oliver Chen <59662605+ochen1@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:14:27 -0600 Subject: [PATCH] initial commit --- LICENSE | 27 + README.md | 1718 +++++++ dist/Epg/Epg.d.ts | 19 + dist/Epg/components/Areas.d.ts | 15 + dist/Epg/components/Channel.d.ts | 10 + dist/Epg/components/Channels.d.ts | 17 + dist/Epg/components/CurrentTime.d.ts | 21 + dist/Epg/components/Grid.d.ts | 30 + dist/Epg/components/GridCellItem.d.ts | 23 + dist/Epg/components/GridDividerItem.d.ts | 3 + dist/Epg/components/Layout.d.ts | 87 + dist/Epg/components/Line.d.ts | 19 + dist/Epg/components/Loader.d.ts | 2 + dist/Epg/components/Program.d.ts | 25 + dist/Epg/components/Timeline.d.ts | 3 + dist/Epg/components/index.d.ts | 9 + dist/Epg/helpers/areas.d.ts | 32 + dist/Epg/helpers/channels.d.ts | 15 + dist/Epg/helpers/common.d.ts | 56 + dist/Epg/helpers/drag.d.ts | 19 + dist/Epg/helpers/enums.d.ts | 9 + dist/Epg/helpers/epg.d.ts | 105 + dist/Epg/helpers/grid.d.ts | 59 + dist/Epg/helpers/index.d.ts | 13 + dist/Epg/helpers/interfaces.d.ts | 286 ++ dist/Epg/helpers/layout.d.ts | 29 + dist/Epg/helpers/line.d.ts | 26 + dist/Epg/helpers/overlaps.d.ts | 13 + dist/Epg/helpers/time.d.ts | 33 + dist/Epg/helpers/timeline.d.ts | 21 + dist/Epg/helpers/types.d.ts | 43 + dist/Epg/helpers/variables.d.ts | 37 + dist/Epg/hooks/index.d.ts | 8 + dist/Epg/hooks/useAreas.d.ts | 34 + dist/Epg/hooks/useCurrentTime.d.ts | 23 + dist/Epg/hooks/useDrag.d.ts | 44 + dist/Epg/hooks/useEpg.d.ts | 184 + dist/Epg/hooks/useGrid.d.ts | 31 + dist/Epg/hooks/useGridExternalDnD.d.ts | 16 + dist/Epg/hooks/useInterval.d.ts | 1 + dist/Epg/hooks/useIsTouchDevice.d.ts | 1 + dist/Epg/hooks/useLayout.d.ts | 36 + dist/Epg/hooks/useLine.d.ts | 17 + dist/Epg/hooks/useProgram.d.ts | 139 + dist/Epg/hooks/useResize.d.ts | 76 + dist/Epg/hooks/useTimeline.d.ts | 48 + dist/Epg/index.d.ts | 220 + dist/Epg/styles/Area.styles.d.ts | 27 + dist/Epg/styles/Channel.styles.d.ts | 16 + dist/Epg/styles/Channels.styles.d.ts | 15 + dist/Epg/styles/CurrentTime.styles.d.ts | 28 + dist/Epg/styles/Epg.styles.d.ts | 54 + dist/Epg/styles/Grid.styles.d.ts | 39 + dist/Epg/styles/Line.styles.d.ts | 18 + dist/Epg/styles/Loader.styles.d.ts | 25 + dist/Epg/styles/Program.styles.d.ts | 57 + dist/Epg/styles/Timeline.styles.d.ts | 92 + dist/Epg/styles/global.styles.d.ts | 1 + dist/Epg/styles/index.d.ts | 11 + dist/Epg/test/db/channels.d.ts | 26 + dist/Epg/test/db/epg.d.ts | 98 + dist/Epg/test/db/grid.d.ts | 26 + dist/Epg/test/db/index.d.ts | 3 + dist/Epg/test/helpers.d.ts | 132 + dist/Epg/test/index.d.ts | 2 + dist/Epg/test/test-utils.d.ts | 5 + dist/Epg/theme/index.d.ts | 1 + dist/Epg/theme/theme.d.ts | 52 + dist/Epg/utils/time.d.ts | 4 + dist/index.d.ts | 1 + dist/index.js | 8 + dist/planby-pro.cjs.development.js | 5622 ++++++++++++++++++++ dist/planby-pro.cjs.development.js.map | 1 + dist/planby-pro.cjs.production.min.js | 2 + dist/planby-pro.cjs.production.min.js.map | 1 + dist/planby-pro.esm.js | 5691 +++++++++++++++++++++ dist/planby-pro.esm.js.map | 1 + package.json | 96 + 78 files changed, 15857 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 dist/Epg/Epg.d.ts create mode 100644 dist/Epg/components/Areas.d.ts create mode 100644 dist/Epg/components/Channel.d.ts create mode 100644 dist/Epg/components/Channels.d.ts create mode 100644 dist/Epg/components/CurrentTime.d.ts create mode 100644 dist/Epg/components/Grid.d.ts create mode 100644 dist/Epg/components/GridCellItem.d.ts create mode 100644 dist/Epg/components/GridDividerItem.d.ts create mode 100644 dist/Epg/components/Layout.d.ts create mode 100644 dist/Epg/components/Line.d.ts create mode 100644 dist/Epg/components/Loader.d.ts create mode 100644 dist/Epg/components/Program.d.ts create mode 100644 dist/Epg/components/Timeline.d.ts create mode 100644 dist/Epg/components/index.d.ts create mode 100644 dist/Epg/helpers/areas.d.ts create mode 100644 dist/Epg/helpers/channels.d.ts create mode 100644 dist/Epg/helpers/common.d.ts create mode 100644 dist/Epg/helpers/drag.d.ts create mode 100644 dist/Epg/helpers/enums.d.ts create mode 100644 dist/Epg/helpers/epg.d.ts create mode 100644 dist/Epg/helpers/grid.d.ts create mode 100644 dist/Epg/helpers/index.d.ts create mode 100644 dist/Epg/helpers/interfaces.d.ts create mode 100644 dist/Epg/helpers/layout.d.ts create mode 100644 dist/Epg/helpers/line.d.ts create mode 100644 dist/Epg/helpers/overlaps.d.ts create mode 100644 dist/Epg/helpers/time.d.ts create mode 100644 dist/Epg/helpers/timeline.d.ts create mode 100644 dist/Epg/helpers/types.d.ts create mode 100644 dist/Epg/helpers/variables.d.ts create mode 100644 dist/Epg/hooks/index.d.ts create mode 100644 dist/Epg/hooks/useAreas.d.ts create mode 100644 dist/Epg/hooks/useCurrentTime.d.ts create mode 100644 dist/Epg/hooks/useDrag.d.ts create mode 100644 dist/Epg/hooks/useEpg.d.ts create mode 100644 dist/Epg/hooks/useGrid.d.ts create mode 100644 dist/Epg/hooks/useGridExternalDnD.d.ts create mode 100644 dist/Epg/hooks/useInterval.d.ts create mode 100644 dist/Epg/hooks/useIsTouchDevice.d.ts create mode 100644 dist/Epg/hooks/useLayout.d.ts create mode 100644 dist/Epg/hooks/useLine.d.ts create mode 100644 dist/Epg/hooks/useProgram.d.ts create mode 100644 dist/Epg/hooks/useResize.d.ts create mode 100644 dist/Epg/hooks/useTimeline.d.ts create mode 100644 dist/Epg/index.d.ts create mode 100644 dist/Epg/styles/Area.styles.d.ts create mode 100644 dist/Epg/styles/Channel.styles.d.ts create mode 100644 dist/Epg/styles/Channels.styles.d.ts create mode 100644 dist/Epg/styles/CurrentTime.styles.d.ts create mode 100644 dist/Epg/styles/Epg.styles.d.ts create mode 100644 dist/Epg/styles/Grid.styles.d.ts create mode 100644 dist/Epg/styles/Line.styles.d.ts create mode 100644 dist/Epg/styles/Loader.styles.d.ts create mode 100644 dist/Epg/styles/Program.styles.d.ts create mode 100644 dist/Epg/styles/Timeline.styles.d.ts create mode 100644 dist/Epg/styles/global.styles.d.ts create mode 100644 dist/Epg/styles/index.d.ts create mode 100644 dist/Epg/test/db/channels.d.ts create mode 100644 dist/Epg/test/db/epg.d.ts create mode 100644 dist/Epg/test/db/grid.d.ts create mode 100644 dist/Epg/test/db/index.d.ts create mode 100644 dist/Epg/test/helpers.d.ts create mode 100644 dist/Epg/test/index.d.ts create mode 100644 dist/Epg/test/test-utils.d.ts create mode 100644 dist/Epg/theme/index.d.ts create mode 100644 dist/Epg/theme/theme.d.ts create mode 100644 dist/Epg/utils/time.d.ts create mode 100644 dist/index.d.ts create mode 100644 dist/index.js create mode 100644 dist/planby-pro.cjs.development.js create mode 100644 dist/planby-pro.cjs.development.js.map create mode 100644 dist/planby-pro.cjs.production.min.js create mode 100644 dist/planby-pro.cjs.production.min.js.map create mode 100644 dist/planby-pro.esm.js create mode 100644 dist/planby-pro.esm.js.map create mode 100644 package.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2583c84 --- /dev/null +++ b/LICENSE @@ -0,0 +1,27 @@ +Custom License - All Rights Reserved + +Copyright (c) 2022 Karol Kozer + +Operator hereby grants a non-exclusive, non-transferable license i.e. without the right to grant sublicense to use the Platform. +The license does not authorize the Company or the User to use the Platform for purposes other than use the Platform with intended purpose. + +The Company and the User has no right to reproduce, sell or otherwise market or distribute the Platform in whole or in part, in any form, in particular, transmit or make available in computer systems and networks, or any other communication. + +It’s not allowed: +1. repeated and systematic downloading or re-using of information from the Platform, contrary to normal use and resulting in an unjustified violation of the Operator’s legitimate interests; +2. repeated and systematic downloading or re-using contrary to normal use and resulting in an unjustified violation of the legitimate interests of the Operator; +3. copying parts of the database beyond normal personal use. + +THE PLATFORM IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE PLATFORM OR THE USE OR OTHER DEALINGS IN THE +PLATFORM. + +The above note is only a shortened version. Its full version is presented in the Terms & Conditions and should be interpreted and applied in accordance with their content. + +This license does not grant you any rights to trademarks, service marks, or +any other intellectual property of the author. For any specific licensing +needs or questions regarding this license, please contact the author. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cfa953 --- /dev/null +++ b/README.md @@ -0,0 +1,1718 @@ +
+ + Planby logo + +
+ +
+ + npm + + + downloads + + + downloads + + Support us +
+ +## Description + +Planby PRO is a React based component for a quick implementation of schedules, timelines, EPG, live streaming, music events and many more ideas. It uses a custom virtual view which allows you to operate on a really big number of data. The component has a simple API that you can easily integrate with other third party UI libraries. The component theme is customized to the needs of the application design. + +
+ + Planby preview + +
+
+ + Planby preview + +
+
+ + Planby preview + +
+
+ + Planby preview + +
+ +## Download example + +[Download - code examples](https://github.com/Nessprim/planby-pro/tree/main/examples) + +## Testimonials + +
+ + Planby preview + +
+
+ + Planby preview + +
+ +# Getting Started + +### Planby PRO version has a number of major updates so please read documentation about eg. render components, theme, styles, Typescript support. + +## Option 1 + +Login to npm registry with the Github account with your username and personal access token (classic) - read:packages. + +```sh +npm login --registry=https://npm.pkg.github.com --scope=@nessprim +``` + +```sh +> Username: USERNAME +> Password: TOKEN +``` + +In the same directory as your package.json file, create or edit an .npmrc file to include a line specifying GitHub Packages URL + +```sh +@nessprim:registry=https://npm.pkg.github.com +``` + +## Option 2 + +To your per-user authenticate by adding your personal access token (classic) to your ~/.npmrc file, edit the ~/.npmrc file for your project to include the following line, replacing TOKEN with your personal access token (classic). + +```sh +//npm.pkg.github.com/:_authToken=TOKEN +``` + +In the same directory as your package.json file, create or edit an .npmrc file to include a line specifying GitHub Packages URL + +```sh +@nessprim:registry=https://npm.pkg.github.com +``` + +## Option 3 + +In the same directory as your package.json file, create or edit an .npmrc file to include a line specifying GitHub Packages URL and your personal access token (classic) + +```sh +@nessprim:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=TOKEN +``` + +## Installation + +Specify the version which you want to install. + +- yarn + +```sh +yarn add @nessprim/planby-pro +``` + +- npm + +```sh +npm install @nessprim/planby-pro +``` + +## Usage + +```tsx +import { useEpg, Epg, Layout } from '@nessprim/planby-pro'; + +const channels = React.useMemo( + () => [ + { + logo: 'https://via.placeholder.com', + uuid: '10339a4b-7c48-40ab-abad-f3bcaf95d9fa', + ... + }, + ], + [] +); + +const epg = React.useMemo( + () => [ + { + channelUuid: '30f5ff1c-1346-480a-8047-a999dd908c1e', + description: + 'Ut anim nisi consequat minim deserunt...', + id: 'b67ccaa3-3dd2-4121-8256-33dbddc7f0e6', + image: 'https://via.placeholder.com', + since: "2022-02-02T23:50:00", + till: "2022-02-02T00:55:00", + title: 'Title', + ... + }, + ], + [] +); + +const { + getEpgProps, + getLayoutProps, + onScrollToNow, + onScrollLeft, + onScrollRight, +} = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 +}); + +return ( +
+
+ + + +
+
+); +``` + +or + +#### Custom width and height + +```tsx +const { + getEpgProps, + getLayoutProps, + ... +} = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 + width: 1200, + height: 600 +}); + +return ( +
+ + + +
+ +``` + +or + +#### Time range + +```tsx +const { + getEpgProps, + getLayoutProps, + ... +} = useEpg({ + epg, + channels, + startDate: '2022-02-02T10:00:00', + endDate: '2022-02-02T20:00:00', + width: 1200, + height: 600 +}); + +return ( +
+ + + +
+ +``` + +#### Week mode + +```tsx + +const epg = React.useMemo( + () => [ + { + channelUuid: '30f5ff1c-1346-480a-8047-a999dd908c1e', + description: + 'Ut anim nisi consequat minim deserunt...', + id: 'b67ccaa3-3dd2-4121-8256-33dbddc7f0e6', + image: 'https://via.placeholder.com', + since: "2023-05-01T00:00:00", + till: "2023-05-03T24:00:00", + title: 'Title', + ... + }, + ], + [] +); + +const { + getEpgProps, + getLayoutProps, + ... +} = useEpg({ + epg, + channels, + startDate: '2023-05-01T00:00:00', // Required day with time 00:00:00 + endDate: '2023-05-25T00:00:00', // Required day with time 00:00:00 + mode: {type: 'week', style: 'modern'} + ... +}); + +... + +``` + +#### Month mode + +```tsx + +const epg = React.useMemo( + () => [ + { + channelUuid: '30f5ff1c-1346-480a-8047-a999dd908c1e', + description: + 'Ut anim nisi consequat minim deserunt...', + id: 'b67ccaa3-3dd2-4121-8256-33dbddc7f0e6', + image: 'https://via.placeholder.com', + since: "2023-05-01T00:00:00", + till: "2023-08-31T24:00:00", + title: 'Title', + ... + }, + ], + [] +); + +const { + getEpgProps, + getLayoutProps, + ... +} = useEpg({ + epg, + channels, + startDate: '2023-05-01T00:00:00', // First day of the month with required time 00:00:00 + endDate: '2023-11-30T00:00:00', // Last day of the month with required time 00:00:00 + mode: {type: 'month', style: 'modern'} + ... +}); + +... + +``` + +# API + +### useEpg + +#### Options + +Available options in useEpg + +| Property | Type | Status | Description | Access | +| ------------------------ | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | +| `channels` | `array` | required | Array with channels data | | +| `epg` | `array` | required | Array with EPG data | | +| `width` | `number` | optional | EPG width | | +| `height` | `number` | optional | EPG height | | +| `sidebarWidth` | `number` | optional | Width of the sidebar with channels | | +| `timelineHeight` | `number` | optional | Height of the timeline | `PRO` | +| `itemHeight` | `number` | optional | Height of channels and programs in the EPG. Default value is 80 | | +| `dayWidth` | `number` | optional | Width of the day. Default value is 7200. Calculation to set up day width with own hour width value e.g., 24h \* 300px (your custom hour width) = 7200px -> `dayWidth` | | +| `startDate` | `string` | optional | Date format `2022/02/02` or `2022-02-02T00:00:00`. You can set your own start time, e.g., `2022-02-02T10:00:00`, `2022-02-02T14:00:00`, etc. Full clock hours only | | +| `endDate` | `string` | optional | Date format `2022-02-02T00:00:00`, `2022-02-02T20:00:00`, etc. Must be within the same 24-hour period as `startDate`. Full clock hours only. Scroll through `multiple days` and timeline mode is available only in `PRO` plan. | `PRO` | +| `timelineDividers` | `number` | optional | Set own dividers to Timeline and Grid bg. Default value is `4`. | `PRO` | +| `hoursInDays` | `array` | optional | Set start time and end time of each day in `multiple days` feature if your data for each day has some time spaces between items in the day. [Read more](#hours-in-days) | `PRO` | +| `initialScrollPositions` | `object` | optional | Set initial scroll position in Layout, e.g., `initialScrollPositions: { top: 500, left: 800 }` | `PRO` | +| `liveRefreshTime` | `number` | optional | Live refresh time of the events. Default value is 120 sec. | `PRO` | +| `isBaseTimeFormat` | `boolean` | optional | Convert to 12-hour format, e.g., `2:00am`, `4:00pm`, etc. Default value is false. | | +| `isCurrentTime` | `boolean` | optional | Show current time in Timeline. Default value is false. | `PRO` | +| `isInitialScrollToNow` | `boolean` | optional | Scroll to the current live element. | `PRO` | +| `isVerticalMode` | `boolean` | optional | Show Timeline in vertical view. Default value is false. | `PRO` | +| `isResize` | `boolean` | optional | Possibility to resize the element. | `PRO` | +| `isSidebar` | `boolean` | optional | Show/hide sidebar | | +| `isTimeline` | `boolean` | optional | Show/hide timeline | | +| `isLine` | `boolean` | optional | Show/hide line | | +| `isRTL` | `boolean` | optional | Change direction to RTL or LTR. Default value is false. | `PRO` | +| `theme` | `object` | optional | Object with theme schema [Read more](#theme) | | +| `timezone` | `object` | optional | Convert and display data from UTC format to your own time zone [Read more](#timezone) | `PRO` | +| `areas` | `array` | optional | Area gives possibilities to add field ranges to the Timeline layout. [Read more](#areas) | `PRO` | +| `mode` | `object` | optional | Type values: `day/week/month`. Style values: `default/modern` Define the mode and style of the timeline. Default mode is `day` and style is `default` [Read more](#week-and-month-mode) | `PRO` | +| `overlap` | `object` | optional | Enable the element overlaps in the layout. Mode values: `stack/layer`, layerOverlapLevel: `number` [Read more](#overlaps) | `PRO` | +| `dnd - drag and drop` | `object` | optional | Drag and move the element in the layout. Mode values: `row/multi-rows` [Read more](#drag-and-drop) | `PRO` | +| `snap - dnd snapping` | `object` | optional | Activate the snap option to facilitate Drag and Drop (DnD) or resize operations, ensuring alignment with specified snap values. Example value: `snap:{x: 50, y: 75}` | `PRO` | +| `grid layout` | `object` | optional | Background grid on the layout. Mode hoverHighlight values: `true/false`, `onGridItemClick`: function with all the properties on clicked item grid, `onGridItemDrop`: function with all the properties on drop item grid [Read more](#grid) | `PRO` | +| `channelMapKey` | `string` | optional | The Channel `uuid` attribute can be controlled by prop. Key map gives a possibilities to use specific prop from own data instead of needing to map to uuid in own data | `PRO` | +| `programChannelMapKey` | `string` | optional | The Programs `channelUuid` attributes can be controlled by prop. Key map gives a possibilities to use a specific prop from own data instead of needing to map to channelUuid in your data | `PRO` | +| `globalStyles` | `string` | optional | Inject custom global styles and font. Font weight: 400,500,600. Default font is "Inter" | `PRO` | + +## Note about width and height props + +Without declaring the `width` and `length` properties, the component takes the dimensions of the parent element. + +## Timezone + +Convert and display data from UTC format to your own time zone + +#### Timezone schema + +| Property | Type | Status | Values | +| --------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------- | +| `enabled` | `boolean` | required | +| `mode` | `string` | required | `utc` | +| `zone` | `string` | required | Specify your timezone eg. `Europe/Paris`, `America/New_York`. Please make user your timezone value is correct | + +## Areas + +Areas fields gives possibilities to add info ranges to the Timeline layout. + +#### Area schema + +| Property | Type | Status | +| ------------- | --------------- | -------- | +| `startDate` | `string` | required | +| `endDate` | `string` | optional | +| `styles` | `CSSProperties` | required | +| `onClick` | `function` | optional | +| `annotations` | `object` | optional | + +#### Annotations schema + +| Property | Type | Status | +| ----------- | --------------- | -------- | +| `textStart` | `string` | optional | +| `textEnd` | `string` | optional | +| `styles` | `CSSProperties` | required | + +Example: + +```tsx +[ + { + startDate: '2023-05-05T00:00:00', + endDate: '2023-05-08T00:00:00', + styles: { + background: '#00800012', + borderLeft: '2px dotted #38A169', + borderRight: '2px dotted #38A169', + }, + onClick: () => alert('Click on area'), + annotations: { + styles: { + background: '#38A169', + color: 'white', + }, + textStart: 'Testing Start', + textEnd: 'Testing End', + }, + }, + { + startDate: '2023-05-14T00:00:00', + endDate: '2023-05-17T00:00:00', + styles: { + borderLeft: '2px dotted #D69E2E', + borderRight: '2px dotted #D69E2E', + }, + annotations: { + styles: { + background: '#D69E2E', + color: 'white', + }, + textStart: 'Testing2 Start', + textEnd: 'Testing2 End', + }, + }, + { + startDate: '2023-05-11T00:00:00', + styles: { + borderLeft: '2px dotted #C53030', + }, + annotations: { + styles: { + background: '#C53030', + color: 'white', + }, + textStart: 'Release', + }, + }, +]; +``` + +## Week and Month mode + +#### Mode schema + +| Property | Type | Status | Values | +| -------- | -------- | -------- | ---------------- | +| `type` | `string` | optional | `day/week/month` | +| `style` | `string` | optional | `default/modern` | + +#### Month mode + +| Property | Description | +| ----------- | ---------------------------------------------------------------------------------------------------------- | +| `startDate` | You have to set the first day of the month with start time of the day `00:00:00` eg. `2023-05-01T00:00:00` | +| `endDate` | You have to set the last day of the month with start time of the day `00:00:00` eg.`2023-11-30T00:00:00` | + +#### Week mode + +| Property | Description | +| ----------- | ---------------------------------------------------------------------------------------------------------- | +| `startDate` | You have to set the first day of the month with start time of the day `00:00:00` eg. `2023-05-01T00:00:00` | +| `endDate` | You have to set the first day of the month with start time of the day `00:00:00` eg.`2023-05-20T00:00:00` | + +#### Week / Month EPG Item + +| Property | Description | +| -------- | ------------------------------------------------------------------------------ | +| `since` | You have to set the start time of the day `00:00:00` eg. `2023-05-01T00:00:00` | +| `till` | You have to set the end time of the day `24:00:00` eg. `2023-05-09T24:00:00` | + +## Overlaps + +Enable the element overlaps in the layout + +#### Mode schema + +| Property | Type | Description | Status | +| ------------------- | --------- | -------------------------------------------------- | ------------------------- | +| `enabled` | `boolean` | | required | +| `mode` | `string` | required | values: `stack` / `layer` | +| `layerOverlapLevel` | `number` | The percentage of elements layer on top each other | required | + +## Drag and Drop + +Enable the element overlaps in the layout + +#### DnD schema + +| Property | Type | Description | Status | +| -------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | +| `enabled` | `boolean` | | required | +| `mode` | `string` | required | values: `row` / `multi-rows` | +| `onDnDMouseUp` | `function` | Callback function with custom logic to check if new since/till time meets custom requirements | optional | +| `onDnDSuccess` | `function` | Callback function to add custom logic when drag event is successful. Return `true` value is custom logic is correct or 'false' value to restor initial element position in the layout | optional | + +```tsx +const { getEpgProps, getLayoutProps } = useEpg({ + startDate: '2023-05-02T00:00:00', + endDate: '2023-05-05T24:00:00', + dnd: { + enabled: true, + mode: 'multi-rows', + onDnDMouseUp: async event => { + // Event object contains new since and till values of the dragged program + // event = { id, since, till } + console.log('event'); + return true; // true or false + }, + onDnDSuccess: event => { + // event = { channelUuid, id, index, title, description, since, till, image, channelIndex, channelPosition } + console.log('event'), + } + }, +}); +``` + +## Grid + +Background grid on the layout with functionality to click on the grid item + +#### OnClick event props schema + +| Property | Type | +| ------------- | -------- | +| `since` | `string` | +| `till` | `string` | +| `date` | `string` | +| `channelUuid` | `string` | + +#### onGridItemDrop event props schema + +| Property | Type | +| ------------- | -------- | +| `since` | `string` | +| `till` | `string` | +| `date` | `string` | +| `channelUuid` | `string` | + +And other props pass to the dragged element + +## Hours in Days + +Set start time and end time of each day in multiple days feature if you data for each day has some time spaces between items in the day. You can set your own startDate and endDate time eg. `2023-05-02T00:00:00`, `2023-05-05T24:00:00` with start time `00:00:00` and end time eg.`24:00:00` + +#### Mode schema + +| Property | Type | Status | +| --------------- | -------- | -------- | +| `date` | `string` | required | +| `startTimeHour` | `string` | required | +| `endTimeHour` | `string` | required | + +Example: + +```tsx +const { getEpgProps, getLayoutProps } = useEpg({ + startDate:"2023-05-02T00:00:00", + endDate:"2023-05-05T24:00:00", + ... + }); + +const hoursInDays = [ + { + date: '2023-05-02', + startTimeHour: '2023-05-02T09:00:00', + endTimeHour: '2023-05-02T16:00:00', + }, + { + date: '2023-05-03', + startTimeHour: '2023-05-03T09:00:00', + endTimeHour: '2023-05-03T13:00:00', + }, + { + date: '2023-05-04', + startTimeHour: '2023-05-04T09:00:00', + endTimeHour: '2023-05-04T17:00:00', + }, + { + date: '2023-05-05', + startTimeHour: '2023-05-05T09:00:00', + endTimeHour: '2023-05-05T15:00:00', + }, +]; +``` + +### globalStyles + +Inject own custom font and other global styles. + +```tsx +const globalStyles = ` + @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap"); + +/* Available in sponsors plan */ + .planby { + font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, + Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + + /* Layout */ + .planby-layout {} + .planby-corner-box {} + + /* Line */ + .planby-line {} + + /* Current time */ + .planby-current-time {} + .planby-current-content {} + + /* Channels */ + .planby-channels {} + + /* Channel */ + .planby-channel {} + + /* Program */ + .planby-program {} + .planby-program-content {} + .planby-program-flex {} + .planby-program-stack {} + .planby-program-title {} + .planby-program-text {} + + /* Timeline */ + .planby-timeline-wrapper {} + .planby-timeline-box {} + .planby-timeline-time {} + .planby-timeline-dividers {} + .planby-timeline-wrapper {} +} + +`; +``` + +#### Instance Properties + +Properties returned from useEpg + +| Property | Type | Description | Access | +| ----------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------ | +| `scrollY` | `number` | Current scroll y value | +| `scrollX` | `number` | Current scroll x value | +| `onScrollLeft` | `function(value: number)` | Default value is 300 | +| `onScrollRight` | `function(value: number)` | Default value is 300 | +| `onScrollToNow` | `function()` | Scroll to current time/live programs | +| `onScrollTop` | `function(value: number)` | Default value is 300 | +| `getLayoutData` | `function()` | Generate and get all the layout data | `PRO` | +| `getDropItemData` | `function()` | Get converted item data after external drop into grid action | `PRO` | +| `isLayoutBottom` | `function(offset:number)` | Check if the layout has reached the bottom. Add an offset value to perform various actions before reaching the bottom. | `PRO` | +| `isLayoutRight` | `function(offset:number)` | Check if the layout has reached the right side. Add an offset value to perform various actions before reaching the right. | `PRO` | + +### Channel schema + +You can add other properties that you wish to have according to your specific requirements or functionalities you want to implement. + +| Property | Type | Status | Description | Access | +| ------------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------- | ------ | +| `logo` | `string` | required | | | +| `uuid` | `string` | required | | | +| `title` | `string` | optional | | | +| `groupTree` | `boolean` | optional | Set to true if the channel is the first main top channel in a group, used to display the channel group name in sidebar | `PRO` | +| `parentChannelUuid` | `string` | optional | Set for nested children. Required when main channel has `groupTree` set to `true` | `PRO` | +| `isOpen` | `boolean` | optional | Used to open the channel group in the sidebar | `PRO` | + +### Epg schema + +You can add other properties that you wish to have according to your specific requirements or functionalities you want to implement. + +| Property | Type | Status | Description | Access | +| ----------------- | --------- | -------- | -------------------------------------------------------------------- | ------ | +| `channelUuid` | `string` | required | +| `id` | `string` | required | +| `image` | `string` | required | +| `since` | `string` | required | +| `till` | `string` | required | +| `title` | `string` | required | +| `fixedVisibility` | `boolean` | optional | The element is always visible in the layout during the scroll events | `PRO` | + +### Epg + +#### Base props + +Available props in Epg + +| Property | Type | Description | Status | Access | +| ----------- | ----------- | ----------------------- | -------- | ------ | +| `isLoading` | `boolean` | Loader state | optional | +| `loader` | `Component` | Loader custom component | optional | `PRO` | + +### Layout + +#### Base props + +Available props in Layout. + +| Property | Type | Description | Status | Access | +| ------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------- | ------ | +| `renderProgram` | `function({ program: { data: object, position: object})` | `data` object contains all properties related to the program, `position` object includes all position styles | optional | +| `renderChannel` | `function({ channel: { ..., position: object})` | `channel` object contains all properties related to the channel, `position` object includes all position styles | optional | +| `renderTimeline` | `function({sidebarWidth: number})` | `sidebarWidth` value of the channel's sidebar width | optional | +| `renderGridCell` | `function(object)` | render custom Grid Cell element in Layout grid | `PRO` | +| `renderLine` | `function({styles: object})` | basic `styles` and `position` values for the custom live tracking Line | optional | `PRO` | +| `renderCurrentTime` | `function({styles: object, isRTL: boolean, isBaseTimeFormat: boolean, time: string})` | basic `styles` values for the custom current time | optional | `PRO` | +| `onLayoutBgClick` | `function()` | Possibility to click on Layout background to trigger some custom events | optional | `PRO` | + +# Render functions + +You can use Planby's style components to develop main features. Moreover, you can integrate with third party UI library eg. Chakra UI, Material UI etc or make custom styles. + +## renderProgram + +Below is an example that allows you to render your custom Program component using Plaby's style components. + +```tsx +import { + useEpg, + Epg, + Layout, + ProgramBox, + ProgramContent, + ProgramFlex, + ProgramStack, + ProgramTitle, + ProgramText, + ProgramImage, + useProgram, + Program, + ProgramItem +} from "planby"; + + +const Item = ({program,...rest }: ProgramItem) => { + const { styles, formatTime, isLive, isMinWidth } = useProgram({program,...rest }); + + const { data } = program; + const { image, title, since, till } = data; + + const sinceTime = formatTime(since); + const tillTime = formatTime(till); + + return ( + + + + {isLive && isMinWidth && } + + {title} + + {sinceTime} - {tillTime} + + + + + + ); +}; + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, +} = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 +}); + +return ( +
+
+ + ( + + )} + /> + +
+
+); +} + +export default App; +``` + +## renderProgram - Vertical Mode + +Below is an example that allows you to render your custom Program component using Planby's style components with Vertical mode. + +```tsx +const Item = ({isVerticalMode, program,...rest }: ProgramItem) => { + const { styles, formatTime, isLive, isMinWidth } = useProgram({isVerticalMode, program,...rest }); + +... + + return ( + + + + {isLive && isMinWidth && } + + {title} + + {sinceTime} - {tillTime} + + + + + + ); +}; + +``` + +## renderProgram - 12 hours time format + +Below is an example that allows you to render your custom Program component with 12 hours time format using Planby's style components. + +```tsx +... +const Item = ({ program, ...rest }: ProgramItem) => { + const { + styles, + formatTime, + set12HoursTimeFormat, + isLive, + isMinWidth, + } = useProgram({ + program, + ...rest + }); + + const { data } = program; + const { image, title, since, till } = data; + + const sinceTime = formatTime(since, set12HoursTimeFormat()).toLowerCase(); + const tillTime = formatTime(till, set12HoursTimeFormat()).toLowerCase(); + + return ( + + + + {isLive && isMinWidth && } + + {title} + + {sinceTime} - {tillTime} + + + + + + ); +}; + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, +} = useEpg({ + epg, + channels, + isBaseTimeFormat: true, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 +}); + +... +} + +export default App; +``` + +## renderProgram - RTL direction + +Below is an example that allows you to render your custom Program component with RTL direction using Planby's style components. + +```tsx +... +const Item = ({ program, ...rest }: ProgramItem) => { + const { + isRTL, + isLive, + isMinWidth, + formatTime, + styles, + set12HoursTimeFormat, + getRTLSinceTime, + getRTLTillTime, + } = useProgram({ + program, + ...rest + }); + + const { data } = program; + const { image, title, since, till } = data; + + const sinceTime = formatTime( + getRTLSinceTime(since), + set12HoursTimeFormat() + ).toLowerCase(); + const tillTime = formatTime( + getRTLTillTime(till), + set12HoursTimeFormat() + ).toLowerCase(); + + return ( + + + + {isLive && isMinWidth && } + + {title} + + {sinceTime} - {tillTime} + + + + + + ); +}; + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, +} = useEpg({ + epg, + channels, + isBaseTimeFormat: true, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 +}); + +... +} + +export default App; +``` + +## renderGridCell + +Below is an example that allows you to render your custom GridCell component using Planby's style components. + +```tsx +... +import { GridCell, GridItem, GridDivider } from "@nessprim/planby-pro"; + +export function ItemGrid(props: GridCell) { + const { + isDayMode, + isHoverHighlight, + item, + timelineDividers, + timelineDividerArray, + gridDividerProps, + gridItemClickProps, + } = props; + + const { onItemClick, ...dividerProps } = gridDividerProps.props; + const { left, ...styles } = gridDividerProps.styles; + return ( + + {isDayMode && + timelineDividerArray.map((_, index) => ( + + ))} + + ); +} +``` + +## renderChannel + +Below is an example that allows you to render your custom Channel component using Planby's style components. + +Available props in ChannelItem + +| Property | Type | Description | Status | +| ---------------- | --------- | ------------------------------------------------ | -------- | +| `isVerticalMode` | `boolean` | Vertical mode | optional | +| `isRTL` | `boolean` | RTL option mode | optional | +| `channel` | `object` | Object contains position styles and url for logo | optional | + +```tsx +import { + useEpg, + Epg, + Layout, + ChannelBox, + ChannelLogo, + Channel, + ChannelItem, +} from '@nessprim/planby-pro'; + +const CustomChannelItem = ({ channel }: ChannelItem) => { + const { position, logo } = channel; + return ( + + console.log('channel', channel)} + src={logo} + alt="Logo" + /> + + ); +}; + + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, + } = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 + }); + + return ( +
+
+ + ( + + )} + /> + +
+
+ ); +} + +``` + +## renderChannel - Vertical Mode + +Below is an example that allows you to render your custom Channel component using Planby's style components with Vertical mode. + +```tsx +import { + useEpg, + Epg, + Layout, + ChannelBox, + ChannelLogo, + Channel, + ChannelItem, +} from '@nessprim/planby-pro'; + +const CustomChannelItem = ({ isVerticalMode, channel }: ChannelItem) => { + const { position, logo } = channel; + return ( + + console.log('channel', channel)} + src={logo} + alt="Logo" + /> + + ); +}; +``` + +## renderTimeline + +Below is an example that allows you to render your custom Timeline component using Planby's style components. + +```tsx +import { + CurrentTime, + Timeline, + TimelineWrapper, + TimelineBox, + TimelineTime, + TimelineDivider, + TimelineDividers, + useTimeline, +} from '@nessprim/planby-pro'; + + +export function CustomTimeline(props: Timeline) { + const { time, dividers,timelineHeight, getTime, getTimelineProps, getCurrentTimeProps } = + useTimeline(props); + + const { + isToday, + isBaseTimeFormat, + isCurrentTime, + isTimelineVisible, + isVerticalMode, + } = props; + + const { hourWidth } = props; + + const renderTime = (item: string | number, index: number) => { + const { isNewDay, time } = getTime(item); + const position = { left: hourWidth * index, width: hourWidth }; + const isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return ( + + + {time} + + {renderDividers(isNewDay)} + + ); + }; + + const renderDividers = (isNewDay: boolean) => + dividers.map((_, index) => ( + + )); + + return ( + + {isToday && isCurrentTime && } + {time.map((item, index) => renderTime(item, index))} + + ); +} + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, + } = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 + }); + + return ( +
+
+ + } + /> + +
+
+ ); +} + +export default App; +``` + +## renderTimeline - Different hours in multiple days + +```tsx +import { + CurrentTime, + Timeline, + TimelineWrapper, + TimelineBox, + TimelineTime, + TimelineDivider, + TimelineDividers, + useTimeline, +} from '@nessprim/planby-pro'; + +export function CustomTimeline(props: Timeline) { + const { isTodayInHoursInDays, areHoursInDays, time, ...rest } = + useTimeline(props); + + const { timelineHeight, } = rest; + const { + getTime, getTimelineProps, getCurrentTimeProps + } = rest; + + const { + isToday, + isBaseTimeFormat, + isCurrentTime, + isTimelineVisible, + isVerticalMode, + } = props; + + const { hourWidth } = props; + + const renderTime = (item: string | number, index: number) => { + const { isNewDay, time } = getTime(item); + const position = { left: hourWidth * index, width: hourWidth }; + const isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return ( + + + {time} + + {renderDividers(isNewDay)} + + ); + }; +... +``` + +## renderTimeline - RTL direction + +Below is an example that allows you to render your custom Timeline component using Planby's style components. + +```tsx +import { + CurrentTime, + Timeline, + TimelineWrapper, + TimelineBox, + TimelineTime, + TimelineDivider, + TimelineDividers, + useTimeline, +} from '@nessprim/planby-pro'; + + +export function CustomTimeline(props: Timeline) { +const { time, dividers, getTime, getTimelineProps, getCurrentTimeProps } = + useTimeline(props); + + const { + isToday, + isBaseTimeFormat, + isCurrentTime, + isRTL, + isTimelineVisible, + isVerticalMode, + } = props; + + const { hourWidth } = props; + + const renderTime = (item: string | number, index: number) => { + const { isNewDay, time } = getTime(item); + const position = { left: hourWidth * index, width: hourWidth }; + const isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return ( + + + {time} + + {renderDividers(isNewDay)} + + ); + }; + + ... +} + +``` + +## renderTimeline - Week or Month mode + +Below is an example that allows you to render your custom Timeline component using Planby's style components. + +```tsx +import { + CurrentTime, + Timeline, + TimelineWrapper, + TimelineBox, + TimelineWeekMonthBox, + TimelineWeekMonthDate, + TimelineTime, + TimelineDivider, + TimelineDividers, + useTimeline, +} from '@nessprim/planby-pro'; + + +export function CustomTimeline(props: Timeline) { +const { isWeekMonthMode, isMonthMode, time, ...rest } = useTimeline(props); + const { timelineHeight, weekDayWidth, monthsWidth, dividers } = rest; + const { + formatWeekMonthDate, + getTime, + getDayMonthName, + getTimelineProps, + getCurrentTimeProps, + } = rest; + + const { + isToday, + isBaseTimeFormat, + isCurrentTime, + isRTL, + isTimelineVisible, + isVerticalMode, + } = props; + const { mode } = props; + const { hourWidth } = props; + + const renderWeekMonth = (item: string, index: number) => { + const width = isMonthMode ? monthsWidth[index].width : weekDayWidth; + const left = isMonthMode ? monthsWidth[index].left : width * index; + const position = { + left, + width, + }; + const isVisible = isTimelineVisible(position); + if (!isVisible) return null; + const isModernStyle = mode.style === "modern"; + return ( + + + {isModernStyle && {getDayMonthName(item)}} + {formatWeekMonthDate(item)} + + + ); + }; + + return ( + + {isCurrentTime && isToday && } + {time.map((item, index) => renderWeekMonth(item as string, index))} + + ); + + ... +} + +``` + +## renderTimeline - Vertical Mode + +Below is an example that allows you to render your custom Timeline component using Planby's style components with Vertical Mode. + +```tsx +import { + CurrentTime, + Timeline, + TimelineWrapper, + TimelineBox, + TimelineTime, + TimelineDivider, + TimelineDividers, + useTimeline, +} from '@nessprim/planby-pro'; + + +export function Timeline(props: Timeline) { + const { time, dividers, getTime, getTimelineProps, getCurrentTimeProps } = + useTimeline(props); + + const { + isToday, + isBaseTimeFormat, + isCurrentTime, + isRTL, + isTimelineVisible, + isVerticalMode, + } = props; + + const { hourWidth } = props; + + const renderTime = (item: string | number, index: number) => { + const { isNewDay, time } = getTime(item); + const position = { left: hourWidth * index, width: hourWidth }; + const isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return ( + + + {time} + + {renderDividers(isNewDay)} + + ); + + }; + + const renderDividers = (isNewDay: boolean) => + dividers.map((_, index) => ( + + )); + + ... +} + +``` + +## renderLine + +Below is an example that allows you to render your custom Line component using Planby's style components. + +Available props in Line + +| Property | Type | Description | Status | +| ---------------- | --------- | ------------------------------- | -------- | +| `isVerticalMode` | `boolean` | Vertical mode | optional | +| `isTimeline` | `boolean` | Vertical mode | optional | +| `styles` | `object` | Object contains position styles | optional | + +```tsx +import { Line } from '@nessprim/planby-pro'; + +export function CustomLine({isVerticalMode, styles }: Line) { + return ( +
+ ); +} + + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, + } = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 + }); + + return ( +
+
+ + } + /> + +
+
+ ); +} + +export default App; +``` + +## renderCurrentTime + +Below is an example that allows you to render your custom CurrentTime component using Planby's style components. + +```tsx +import { + CurrentTimeIndicator, + CurrentTimeBox, + CurrentTimeContent, + } from '@nessprim/planby-pro'; + +export function CustomCurrentTime(props: CurrentTimeIndicator) { + const { isVerticalMode, isRTL, isBaseTimeFormat } = props; + const { time, styles } = props; + + return ( + + + {time} + + + ); +} + + + +function App() { + + ... + + const { + getEpgProps, + getLayoutProps, + } = useEpg({ + epg, + channels, + startDate: '2022/02/02', // or 2022-02-02T00:00:00 + }); + + return ( +
+
+ + } + /> + +
+
+ ); +} + +export default App; +``` + +## Theme + +### Schema + +Make your theme custom. Below is theme schema that you can pass as one of the options to `useEpg` hook. + +```jsx +const theme = { + primary: { + 600: '#1a202c', + 900: '#171923', + }, + grey: { 300: '#d1d1d1' }, + white: '#fff', + teal: { + // Planby PRO version + 100: '#38B2AC', + }, + green: { + 200: '#389493', + 300: '#2C7A7B', + }, + loader: { + teal: '#5DDADB', + purple: '#3437A2', + pink: '#F78EB6', + bg: '#171923db', + }, + scrollbar: { + border: '#ffffff', + thumb: { + bg: '#e1e1e1', + }, + }, + gradient: { + blue: { + 300: '#002eb3', + 600: '#002360', + 900: '#051937', + }, + }, + text: { + grey: { + 300: '#a0aec0', + 500: '#718096', + }, + }, + timeline: { + divider: { + bg: '#718096', + }, + }, + grid: { + // Planby PRO version + item: '#7180961a', + divider: '#7180961a', + highlight: '#38B2AC', + }, +}; +``` + +## All import options + +```tsx +import { + Epg, + Layout, + ChannelBox, + ChannelLogo, + CurrentTimeBox, + CurrentTimeContent, + ProgramBox, + ProgramContent, + ProgramFlex, + ProgramStack, + ProgramTitle, + ProgramText, + ProgramImage, + TimelineWrapper, + TimelineBox, + TimelineWeekMonthBox, + TimelineWeekMonthDate, + TimelineTime, + TimelineDividers, + useEpg, + useProgram, + useTimeline, + Line, // Interface + Channel, // Interface + CurrentTimeIndicator, // Interface + Program, // Interface + ProgramItem, // Interface for program render + Timeline, // Interface for timeline render + Theme, // Interface +} from '@nessprim/planby-pro'; +``` + +## License + +Custom License - All Rights Reserved. [See `LICENSE` for more information](https://planby.app/docs/planby-license.pdf). + +## Contact + +Karol Kozer - [@kozerkarol_twitter](https://twitter.com/kozerkarol) + +Project Link: [https://github.com/karolkozer/planby](https://github.com/karolkozer/planby) diff --git a/dist/Epg/Epg.d.ts b/dist/Epg/Epg.d.ts new file mode 100644 index 0000000..21f491f --- /dev/null +++ b/dist/Epg/Epg.d.ts @@ -0,0 +1,19 @@ +import React from "react"; +import { Theme } from "./helpers/interfaces"; +interface EpgProps { + width?: number; + height?: number; + isVerticalMode?: boolean; + isRTL?: boolean; + isSidebar: boolean; + isTimeline?: boolean; + isLoading?: boolean; + children: React.ReactNode; + loader?: React.ReactNode; + theme: Theme; + globalStyles?: string; + sidebarWidth: number; + timelineHeight: number; +} +export declare const Epg: React.ForwardRefExoticComponent>; +export {}; diff --git a/dist/Epg/components/Areas.d.ts b/dist/Epg/components/Areas.d.ts new file mode 100644 index 0000000..395ffbc --- /dev/null +++ b/dist/Epg/components/Areas.d.ts @@ -0,0 +1,15 @@ +import React from "react"; +import { Area } from "../helpers/interfaces"; +import { DateTime } from "../helpers/types"; +interface AreasProps { + isVerticalMode: boolean; + areas: Area[]; + height: number; + hourWidth: number; + sidebarWidth: number; + timelineHeight: number; + startDate: DateTime; + endDate: DateTime; +} +export declare function Areas({ isVerticalMode, ...props }: AreasProps): React.JSX.Element; +export {}; diff --git a/dist/Epg/components/Channel.d.ts b/dist/Epg/components/Channel.d.ts new file mode 100644 index 0000000..94ef792 --- /dev/null +++ b/dist/Epg/components/Channel.d.ts @@ -0,0 +1,10 @@ +import * as React from "react"; +import { ChannelWithPosition } from "../helpers/types"; +interface ChannelProps { + isVerticalMode: boolean; + channel: T; + onOpenGroupTree?: (data: ChannelWithPosition) => void; + onClick?: (v: ChannelWithPosition) => void; +} +export declare function Channel({ isVerticalMode, channel, onOpenGroupTree, onClick, ...rest }: ChannelProps): React.JSX.Element; +export {}; diff --git a/dist/Epg/components/Channels.d.ts b/dist/Epg/components/Channels.d.ts new file mode 100644 index 0000000..c872629 --- /dev/null +++ b/dist/Epg/components/Channels.d.ts @@ -0,0 +1,17 @@ +import * as React from "react"; +import { ChannelItem, ChannelWithPosition } from "../helpers/types"; +interface ChannelsProps { + isVerticalMode: boolean; + isTimeline: boolean; + isRTL: boolean; + isChannelVisible: (position: any) => boolean; + channels: ChannelWithPosition[]; + contentHeight: number; + sidebarWidth: number; + timelineHeight: number; + scrollY: number; + openChannelGroupTree: (data: ChannelWithPosition) => void; + renderChannel?: (v: ChannelItem) => React.ReactNode; +} +export declare function Channels(props: ChannelsProps): React.JSX.Element; +export {}; diff --git a/dist/Epg/components/CurrentTime.d.ts b/dist/Epg/components/CurrentTime.d.ts new file mode 100644 index 0000000..74d28cb --- /dev/null +++ b/dist/Epg/components/CurrentTime.d.ts @@ -0,0 +1,21 @@ +import * as React from "react"; +import { CurrentTimeIndicator, HoursInDayDiffTime, Mode, Timezone } from "../helpers/interfaces"; +import { DateTime } from "../helpers/types"; +interface CurrentTimeProps { + isBaseTimeFormat?: boolean; + isVerticalMode?: boolean; + isRTL?: boolean; + timezone: Timezone; + mode: Mode; + startDate: DateTime; + endDate: DateTime; + hoursInDays: HoursInDayDiffTime[]; + dayWidth: number; + timelineHeight: number; + hourWidth: number; + sidebarWidth: number; + liveRefreshTime: number; + renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement; +} +export declare function CurrentTime(props: CurrentTimeProps): React.JSX.Element | null; +export {}; diff --git a/dist/Epg/components/Grid.d.ts b/dist/Epg/components/Grid.d.ts new file mode 100644 index 0000000..f9e5350 --- /dev/null +++ b/dist/Epg/components/Grid.d.ts @@ -0,0 +1,30 @@ +import * as React from "react"; +import { Mode, Grid as IGrid, HoursInDayDiffTime, GridCell } from "../helpers/interfaces"; +import { BaseTimeFormat, ChannelWithPosition, Position } from "../helpers/types"; +interface GridProps { + isVerticalMode: boolean; + isProgramVisible: (position: Position, overlapsCount: number) => boolean; + isBaseTimeFormat: BaseTimeFormat; + channelOverlapsCount: Record; + hourWidth: number; + dayWidth: number; + days: string[]; + hoursInDays: HoursInDayDiffTime[]; + months: string[]; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + offsetStartHoursRange: number; + gridItems: { + position: Position; + channel: ChannelWithPosition; + }[]; + grid: IGrid; + mode: Mode; + sidebarWidth: number; + timelineHeight: number; + timelineDividers: number; + renderGridCell?: (props: GridCell) => React.ReactNode; +} +export declare function Grid({ isVerticalMode, isProgramVisible, channelOverlapsCount, grid, gridItems, mode, hourWidth, timelineDividers, renderGridCell, ...rest }: GridProps): React.JSX.Element; +export {}; diff --git a/dist/Epg/components/GridCellItem.d.ts b/dist/Epg/components/GridCellItem.d.ts new file mode 100644 index 0000000..aaf2fb0 --- /dev/null +++ b/dist/Epg/components/GridCellItem.d.ts @@ -0,0 +1,23 @@ +import * as React from "react"; +import { GridCell } from "../helpers/interfaces"; +import { ChannelWithPosition, GridEvent, Position } from "../helpers/types"; +interface GridCellItemProps { + isVerticalMode: boolean; + isHoverHighlight: boolean | undefined; + isProgramVisible: (position: Position, overlapsCount: number) => boolean; + isItemClickable: boolean; + isDayMode: boolean; + item: { + position: Position; + channel: ChannelWithPosition; + }; + index: number; + channelOverlapsCount: Record; + hourWidth: number; + timelineDividers: number; + renderGridCell?: (props: GridCell) => React.ReactNode; + onItemClick: GridEvent; + onItemDrop: GridEvent; +} +export declare function GridCellItem({ isVerticalMode, isProgramVisible, isHoverHighlight, isDayMode, isItemClickable, item, index, channelOverlapsCount, hourWidth, timelineDividers, renderGridCell, onItemClick, onItemDrop, }: GridCellItemProps): {} | null | undefined; +export {}; diff --git a/dist/Epg/components/GridDividerItem.d.ts b/dist/Epg/components/GridDividerItem.d.ts new file mode 100644 index 0000000..470e4a2 --- /dev/null +++ b/dist/Epg/components/GridDividerItem.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +import { GridDividerItemProps } from "../helpers/interfaces"; +export declare function GridDividerItem({ index, item, dividerProps, }: GridDividerItemProps): React.JSX.Element; diff --git a/dist/Epg/components/Layout.d.ts b/dist/Epg/components/Layout.d.ts new file mode 100644 index 0000000..56f7557 --- /dev/null +++ b/dist/Epg/components/Layout.d.ts @@ -0,0 +1,87 @@ +import React from "react"; +import { Area, Grid as IGrid, HoursInDayDiffTime, Line as ILine, Mode, Overlap, ProgramOverlaps, DragAndDrop, Timezone, Snap, GridCell } from "../helpers/interfaces"; +import { Timeline as ITimeline, CurrentTimeIndicator } from "../helpers/interfaces"; +import { ProgramItem, ChannelWithPosition, DateTime, Position, BaseTimeFormat, DragMouseUp } from "../helpers/types"; +interface LayoutProps { + isToday: boolean; + isVerticalMode?: boolean; + isRTL?: boolean; + isBaseTimeFormat?: BaseTimeFormat; + isSidebar?: boolean; + isTimeline?: boolean; + isLine?: boolean; + isCurrentTime?: boolean; + isResize?: boolean; + programs: ProgramItem[]; + programOverlaps: ProgramOverlaps; + layerOverlapLevel: number; + channels: ChannelWithPosition[]; + channelOverlapsCount: Record; + startDate: DateTime; + endDate: DateTime; + hoursInDays: HoursInDayDiffTime[]; + scrollY: number; + dayWidth: number; + hourWidth: number; + days: string[]; + months: string[]; + currentDate: string; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + monthWidth: number; + offsetStartHoursRange: number; + sidebarWidth: number; + timelineHeight: number; + itemHeight: number; + liveRefreshTime: number; + snap?: Snap; + mode: Mode; + dnd: DragAndDrop; + overlapMode: Overlap["mode"]; + timelineDividers: number; + timezone: Timezone; + areas: Area[]; + gridItems: { + position: Position; + channel: ChannelWithPosition; + }[]; + grid: IGrid; + overlap: Overlap; + isProgramVisible: (position: Position, overlapsCount: number) => boolean; + isChannelVisible: (position: Pick) => boolean; + isTimelineVisible: (position: Pick) => boolean; + dragMouseUp: (position: DragMouseUp) => void; + resizeMouseUp: (data: any) => void; + openChannelGroupTree: (data: ChannelWithPosition) => void; + onScroll: (e: React.UIEvent & { + target: Element; + }) => void; + onLayoutBgClick?: () => void; + renderProgram?: (v: { + program: ProgramItem; + isRTL: boolean; + isVerticalMode: boolean; + isBaseTimeFormat: BaseTimeFormat; + startDate: DateTime; + liveRefreshTime: number; + dayWidth: number; + hourWidth: number; + itemHeight: number; + contentHeight: number; + snap?: Snap; + mode: Mode; + dnd: DragAndDrop; + dragMouseUp: (data: DragMouseUp) => void; + resizeMouseUp: (data: any) => void; + }) => React.ReactNode; + renderChannel?: (v: { + channel: ChannelWithPosition; + }) => React.ReactNode; + renderTimeline?: (v: ITimeline) => React.ReactNode; + renderLine?: (v: ILine) => React.ReactNode; + renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement; + renderGridCell?: (v: GridCell) => React.ReactElement; +} +export declare const Layout: React.ForwardRefExoticComponent>; +export {}; diff --git a/dist/Epg/components/Line.d.ts b/dist/Epg/components/Line.d.ts new file mode 100644 index 0000000..7df90a4 --- /dev/null +++ b/dist/Epg/components/Line.d.ts @@ -0,0 +1,19 @@ +import * as React from "react"; +import { HoursInDayDiffTime, Line as ILine, Timezone } from "../helpers/interfaces"; +import { DateTime } from "../helpers/types"; +interface LineProps { + isTimeline: boolean; + isVerticalMode: boolean; + height: number; + startDate: DateTime; + endDate: DateTime; + dayWidth: number; + hourWidth: number; + sidebarWidth: number; + liveRefreshTime: number; + hoursInDays: HoursInDayDiffTime[]; + timezone: Timezone; + renderLine?: (v: ILine) => React.ReactNode; +} +export declare function Line({ isTimeline, isVerticalMode, height, renderLine, ...rest }: LineProps): React.JSX.Element | null; +export {}; diff --git a/dist/Epg/components/Loader.d.ts b/dist/Epg/components/Loader.d.ts new file mode 100644 index 0000000..033e92e --- /dev/null +++ b/dist/Epg/components/Loader.d.ts @@ -0,0 +1,2 @@ +import * as React from "react"; +export declare function Loader(): React.JSX.Element; diff --git a/dist/Epg/components/Program.d.ts b/dist/Epg/components/Program.d.ts new file mode 100644 index 0000000..984cc35 --- /dev/null +++ b/dist/Epg/components/Program.d.ts @@ -0,0 +1,25 @@ +import * as React from "react"; +import { DragAndDrop, Mode, Program as ProgramType, Snap } from "../helpers/interfaces"; +import { BaseTimeFormat, DateTime, DragMouseUp, ResizeMouseUp } from "../helpers/types"; +import { ProgramItem } from "../helpers/types"; +interface ProgramProps { + isVerticalMode?: boolean; + isRTL?: boolean; + isResize?: boolean; + isBaseTimeFormat: BaseTimeFormat; + startDate: DateTime; + program: T; + liveRefreshTime: number; + snap?: Snap; + mode: Mode; + dnd: DragAndDrop; + contentHeight: number; + dayWidth: number; + hourWidth: number; + itemHeight: number; + dragMouseUp: (data: DragMouseUp) => void; + resizeMouseUp: (data: ResizeMouseUp) => void; + onClick?: (v: ProgramType) => void; +} +export declare function Program({ isVerticalMode, program, onClick, ...rest }: ProgramProps): React.JSX.Element; +export {}; diff --git a/dist/Epg/components/Timeline.d.ts b/dist/Epg/components/Timeline.d.ts new file mode 100644 index 0000000..fdba0ae --- /dev/null +++ b/dist/Epg/components/Timeline.d.ts @@ -0,0 +1,3 @@ +import * as React from "react"; +import { Timeline as ITimeline } from "../helpers/interfaces"; +export declare function Timeline(props: ITimeline): React.JSX.Element; diff --git a/dist/Epg/components/index.d.ts b/dist/Epg/components/index.d.ts new file mode 100644 index 0000000..24968ff --- /dev/null +++ b/dist/Epg/components/index.d.ts @@ -0,0 +1,9 @@ +export * from "./Layout"; +export * from "./Program"; +export * from "./Channels"; +export * from "./Channel"; +export * from "./Timeline"; +export * from "./Line"; +export * from "./Loader"; +export * from "./CurrentTime"; +export * from "./Areas"; diff --git a/dist/Epg/helpers/areas.d.ts b/dist/Epg/helpers/areas.d.ts new file mode 100644 index 0000000..f64669a --- /dev/null +++ b/dist/Epg/helpers/areas.d.ts @@ -0,0 +1,32 @@ +/// +import { Area } from "./interfaces"; +import { DateTime } from "./types"; +interface AreasData { + area: Area; + hourWidth: number; + sidebarWidth: number; + timelineHeight: number; + height: number; + startDate: DateTime; + endDate: DateTime; +} +export declare const getAreasFields: ({ area, startDate, endDate, hourWidth, sidebarWidth, timelineHeight, height, }: AreasData) => { + showArea: boolean; + areaFieldStyles: { + positionX: number; + width: number; + height: number; + timelineHeight: number; + }; + areaBgStyles: import("react").CSSProperties; + startDate: string; + endDate?: string | undefined; + styles: import("react").CSSProperties; + onClick?: (() => void) | undefined; + annotations?: { + styles: import("react").CSSProperties; + textStart?: string | undefined; + textEnd?: string | undefined; + } | undefined; +}; +export {}; diff --git a/dist/Epg/helpers/channels.d.ts b/dist/Epg/helpers/channels.d.ts new file mode 100644 index 0000000..b8f830a --- /dev/null +++ b/dist/Epg/helpers/channels.d.ts @@ -0,0 +1,15 @@ +import { ChannelWithPosition } from "./types"; +export declare const getChannelVerticalPosition: (channel: ChannelWithPosition, isVerticalMode: boolean) => ChannelWithPosition; +export declare const getChannelGroupTreeProps: (channel: ChannelWithPosition) => { + nestedChildren: string[] | undefined; + isFirstNestedChild: boolean; + isLastNestedChild: boolean; + isOpened?: boolean | undefined; + uuid: string; + logo: string; + groupTree?: boolean | undefined; + parentChannelUuid?: string | undefined; + isNestedChild: boolean; + position: Pick & Partial>; + index: number; +}; diff --git a/dist/Epg/helpers/common.d.ts b/dist/Epg/helpers/common.d.ts new file mode 100644 index 0000000..4b71158 --- /dev/null +++ b/dist/Epg/helpers/common.d.ts @@ -0,0 +1,56 @@ +import { useLayoutEffect } from "react"; +import { HoursInDayDiffTime, Mode, Overlap, ProgramOverlaps } from "./interfaces"; +import { ProgramItem } from "./types"; +declare type DateTime = string | number | Date; +declare type OmitObjectType = { + [key: string]: any; +}; +export declare const omit: (obj: OmitObjectType, ...props: string[]) => { + [x: string]: any; +}; +export declare const generateArray: (num: number) => any[]; +interface OverlapProgramOptions { + isVerticalMode: boolean; + program: ProgramItem; + programOverlaps: ProgramOverlaps; + layerOverlapLevel: number; + overlap: Overlap; + overlapMode: Overlap["mode"]; +} +export declare const getProgramOptions: ({ isVerticalMode, program, overlap, ...rest }: OverlapProgramOptions) => { + position: Pick; + data: import("./interfaces").Program; +}; +export declare const useIsomorphicLayoutEffect: () => typeof useLayoutEffect; +export declare const getHourWidth: (dayWidth: number) => number; +export declare const getDate: (date: DateTime) => Date; +interface DayWidth { + dayWidth: number; + startDate: DateTime; + endDate: DateTime; + hoursInDays: HoursInDayDiffTime[]; + modeType: Mode["type"]; +} +export declare const getDayWidthResources: ({ dayWidth, startDate, endDate, hoursInDays, modeType, }: DayWidth) => { + hourWidth: number; + dayWidth: number; + numberOfMonths: number; + numberOfHoursInDay: number; + monthWidth: number; + offsetStartHoursRange: number; +}; +export declare const getDayResources: ({ startDate, endDate, modeType, }: Pick) => { + isToday: boolean; + currentDate: string; + numberOfDays: number; + days: string[]; + months: string[]; +}; +export declare const switchPosition: (programPosition: ProgramItem["position"]) => { + top: number; + left: number; + width: number; + height: number; +}; +export declare function generateUUID(): string; +export {}; diff --git a/dist/Epg/helpers/drag.d.ts b/dist/Epg/helpers/drag.d.ts new file mode 100644 index 0000000..0b3dfa7 --- /dev/null +++ b/dist/Epg/helpers/drag.d.ts @@ -0,0 +1,19 @@ +import { DateTime, DragMouseUp, ResizeMouseUp } from "./types"; +declare type EventProps = Pick; +declare type EventSinceTill = EventProps & { + startDate?: DateTime; + hourWidth: number; + width?: ResizeMouseUp["width"]; + initialWidth?: ResizeMouseUp["initialWidth"]; +}; +export declare const calculateItemDragSinceTill: (props: EventSinceTill) => { + since: string; + till: string; +}; +export declare const getDefaultDragProps: (positionLeft: number) => { + currentPositionX: number; + dndEvents: { + isDragging: boolean; + }; +}; +export {}; diff --git a/dist/Epg/helpers/enums.d.ts b/dist/Epg/helpers/enums.d.ts new file mode 100644 index 0000000..e63b687 --- /dev/null +++ b/dist/Epg/helpers/enums.d.ts @@ -0,0 +1,9 @@ +export declare enum Layers { + Sidebar = 9, + EpgCornerBox = 10, + Line = 9, + Loader = 12, + Program = 1, + Timeline = 9, + Area = 2 +} diff --git a/dist/Epg/helpers/epg.d.ts b/dist/Epg/helpers/epg.d.ts new file mode 100644 index 0000000..e3d7feb --- /dev/null +++ b/dist/Epg/helpers/epg.d.ts @@ -0,0 +1,105 @@ +import { Channel, ChannelWithOmittedUuid, HoursInDayDiffTime, Mode, Program, ProgramWithOmittedUuid } from "./interfaces"; +import { Position, DateTime, ChannelWithPosition } from "./types"; +export declare const getPositionX: (since: DateTime, till: DateTime, startDate: DateTime, endDate: DateTime, hourWidth: number) => number; +export declare const getChannelPosition: (channelIndex: number, itemHeight: number) => { + top: number; + height: number; +}; +export declare const getProgramPosition: (program: Program, channelIndex: number, itemHeight: number, hourWidth: number, startDate: DateTime, endDate: DateTime, isVerticalMode: boolean) => { + position: { + width: number; + height: number; + top: number; + left: number; + edgeEnd: number; + }; + data: { + since: string; + till: string; + channelUuid: string; + id: string; + index: number; + title: string; + description: string; + image: string; + channelIndex: number; + channelPosition: Pick; + fixedVisibility?: boolean | undefined; + parentChannelUuid?: string | undefined; + }; +}; +interface ConvertedPrograms { + isVerticalMode: boolean; + isOverlapEnabled: boolean; + programChannelMapKey: string; + data: ProgramWithOmittedUuid[]; + channels: Channel[]; + startDate: DateTime; + endDate: DateTime; + itemHeight: number; + hourWidth: number; + hoursInDays: HoursInDayDiffTime[]; +} +export declare const getConvertedPrograms: ({ isVerticalMode, isOverlapEnabled, programChannelMapKey, data, channels, startDate, endDate, itemHeight, hourWidth, hoursInDays, }: ConvertedPrograms) => { + position: { + width: number; + height: number; + top: number; + left: number; + edgeEnd: number; + }; + data: { + since: string; + till: string; + channelUuid: string; + id: string; + index: number; + title: string; + description: string; + image: string; + channelIndex: number; + channelPosition: Pick; + fixedVisibility?: boolean | undefined; + parentChannelUuid?: string | undefined; + }; +}[]; +export declare const getConvertedChannels: (isOverlapEnabled: boolean, overlapMode: string, layerOverlapLevel: number, channels: ChannelWithOmittedUuid[], itemHeight: number, channelMapKey: string, channelOverlapsCount: Record) => ChannelWithPosition[]; +interface ItemVisibility { + position: Position; + scrollY: number; + scrollX: number; + containerHeight: number; + containerWidth: number; + isVerticalMode: boolean; + itemOverscan: number; + overlapsCount: number; +} +export declare const getItemVisibility: ({ position, scrollY, scrollX, containerHeight, containerWidth, itemOverscan, overlapsCount, isVerticalMode, }: ItemVisibility) => boolean; +interface SidebarItemVisibility { + isVerticalMode: boolean; + itemOverscan: number; + position: Pick & Partial>; + scrollX: number; + scrollY: number; + containerHeight: number; + containerWidth: number; +} +export declare const getSidebarItemVisibility: ({ position, scrollX, scrollY, containerHeight, containerWidth, itemOverscan, isVerticalMode, }: SidebarItemVisibility) => boolean; +interface TimelineItemVisibility { + position: Pick; + scrollY: number; + scrollX: number; + containerWidth: number; + containerHeight: number; + isVerticalMode: boolean; +} +export declare const getTimelineItemVisibility: ({ position, scrollY, scrollX, containerHeight, containerWidth, isVerticalMode, }: TimelineItemVisibility) => boolean; +export declare const setUpdatedLayoutItem: (data: ProgramWithOmittedUuid, modeType: Mode["type"]) => { + since: string; + till: string; + channelUuid?: string | undefined; + id: string; + title: string; + image: string; +}; +export {}; diff --git a/dist/Epg/helpers/grid.d.ts b/dist/Epg/helpers/grid.d.ts new file mode 100644 index 0000000..d5093c7 --- /dev/null +++ b/dist/Epg/helpers/grid.d.ts @@ -0,0 +1,59 @@ +import { Mode, Grid as IGrid, HoursInDayDiffTime } from "../helpers/interfaces"; +import { BaseTimeFormat, ChannelWithPosition, Position } from "./types"; +interface ConvertedGridItems { + isVerticalMode: boolean; + channels: ChannelWithPosition[]; + mode: Mode; + dayWidth: number; + hourWidth: number; + timelineHeight: number; + sidebarWidth: number; + dayWidthResources: { + numberOfMonths: number; + numberOfHoursInDay: number; + monthWidth: number; + offsetStartHoursRange: number; + }; + daysResources: { + numberOfDays: number; + days: string[]; + months: string[]; + }; +} +export declare const getConvertedGridItems: ({ isVerticalMode, channels, dayWidth, hourWidth, timelineHeight, sidebarWidth, mode, dayWidthResources, daysResources, }: ConvertedGridItems) => { + position: { + top: number; + left: number; + width: number; + height: number; + edgeEnd: number; + }; + channel: ChannelWithPosition; +}[]; +interface ClickGridItem { + isDrop?: boolean; + isVerticalMode: boolean; + isBaseTimeFormat: BaseTimeFormat; + index: number | undefined; + item: { + position: Position; + channel: ChannelWithPosition; + }; + grid: IGrid; + mode: Mode; + dayWidth: number; + hourWidth: number; + timelineHeight: number; + sidebarWidth: number; + days: string[]; + hoursInDays: HoursInDayDiffTime[]; + months: string[]; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + offsetStartHoursRange: number; + timelineDividers: number; + dataAttributes?: Record; +} +export declare const getClickGridItemData: ({ isDrop, isVerticalMode, isBaseTimeFormat, index, item, grid, mode, dayWidth, hourWidth, sidebarWidth, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange, timelineDividers, dataAttributes, }: ClickGridItem) => void; +export {}; diff --git a/dist/Epg/helpers/index.d.ts b/dist/Epg/helpers/index.d.ts new file mode 100644 index 0000000..962d003 --- /dev/null +++ b/dist/Epg/helpers/index.d.ts @@ -0,0 +1,13 @@ +export * from "./interfaces"; +export * from "./enums"; +export * from "./variables"; +export * from "./common"; +export * from "./time"; +export * from "./epg"; +export * from "./timeline"; +export * from "./line"; +export * from "./channels"; +export * from "./layout"; +export * from "./overlaps"; +export * from "./drag"; +export * from "./grid"; diff --git a/dist/Epg/helpers/interfaces.d.ts b/dist/Epg/helpers/interfaces.d.ts new file mode 100644 index 0000000..7eabd0c --- /dev/null +++ b/dist/Epg/helpers/interfaces.d.ts @@ -0,0 +1,286 @@ +import { CSSProperties } from "react"; +import { Layers } from "./enums"; +import { BaseTimeFormat, ChannelWithPosition, DateTime, DragMouseUp, GridEvent, Position, ProgramItem } from "./types"; +export interface Program { + channelUuid: string; + id: string; + index: number; + title: string; + description: string; + since: string | number | Date; + till: string | number | Date; + image: string; + channelIndex: number; + channelPosition: Pick; + fixedVisibility?: boolean; + parentChannelUuid?: string; + [key: string]: any; +} +export interface ProgramWithOmittedUuid extends Omit { + channelUuid?: string; +} +export interface Channel { + isOpened?: boolean; + uuid: string; + logo: string; + groupTree?: boolean; + parentChannelUuid?: string; + nestedChildren?: string[]; + isNestedChild: boolean; + isFirstNestedChild?: boolean; + isLastNestedChild?: boolean; + [key: string]: any; +} +export interface ChannelWithOmittedUuid extends Omit { + uuid?: string; +} +export interface ProgramOverlaps { + [key: string]: ProgramItem[]; +} +export interface Overlap { + enabled: boolean; + mode: "stack" | "layer"; + layerOverlapLevel?: number; +} +export interface Snap { + x?: number; + y?: number; +} +export interface GridDataAttributes { + [key: string]: string; +} +export interface GridItemProps { + since: string; + till: string; + date: string; + channelUuid: string; +} +export interface GridDividerItemProps { + index: number; + item: { + position: Position; + channel: ChannelWithPosition; + }; + dividerProps: { + styles: { + left: (index: number) => number; + width: number; + }; + props: { + isVerticalMode: boolean; + isHoverHighlight: boolean; + isItemClickable: boolean; + onItemClick: GridEvent; + onItemDrop?: GridEvent; + }; + }; +} +export interface GridDropItemProps extends GridItemProps { + [key: string]: string; +} +export interface Grid { + enabled: boolean; + hoverHighlight?: boolean; + onGridItemClick?: (props: GridItemProps) => void; + onGridItemDrop?: (props: GridItemProps) => void; +} +export interface GridCell { + isDayMode: boolean; + isHoverHighlight?: boolean; + isDragOver?: boolean; + id: string; + index: number; + item: { + position: Position; + channel: ChannelWithPosition; + }; + timelineDividers: number; + timelineDividerArray: string[]; + gridDividerProps: { + styles: { + left: (index: number) => number; + width: number; + }; + props: { + isVerticalMode: boolean; + isHoverHighlight: boolean; + isItemClickable: boolean; + onItemClick: GridEvent; + }; + }; + gridItemClickProps: { + onClick?: () => void; + isItemClickable: boolean; + }; + gridItemDnDProps: { + isDragOver?: undefined; + onDragEnter?: undefined; + onDragLeave?: undefined; + onDrop?: undefined; + } | { + isDragOver: boolean; + onDragEnter: (e: React.DragEvent) => void; + onDragLeave: (e: React.DragEvent) => void; + onDrop: (e: React.DragEvent) => void; + }; +} +export interface DragAndDrop { + enabled: boolean; + mode: "row" | "multi-rows"; + onDnDMouseUp?: (event: Pick) => void; + onDnDSuccess?: (event: ProgramWithOmittedUuid) => void; +} +export interface Line { + isVerticalMode: boolean; + isTimeline: boolean; + styles: { + position: { + top: number; + left: number; + width: number; + height: number; + zIndex: Layers; + }; + }; +} +export interface CurrentTimeIndicator { + isVerticalMode?: boolean; + isRTL?: boolean; + isBaseTimeFormat?: boolean; + time: string; + styles: { + position: Omit & { + width: string | number; + }; + }; +} +export interface Timeline { + isVerticalMode?: boolean; + isRTL?: boolean; + isToday: boolean; + isBaseTimeFormat: BaseTimeFormat; + isCurrentTime: boolean; + isSidebar: boolean; + isTimelineVisible: (position: Pick) => boolean; + timezone: Timezone; + dayWidth: number; + hourWidth: number; + days: string[]; + hoursInDays: HoursInDayDiffTime[]; + months: string[]; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + offsetStartHoursRange: number; + monthWidth: number; + sidebarWidth: number; + timelineHeight: number; + startDate: DateTime; + endDate: DateTime; + liveRefreshTime: number; + mode: Mode; + timelineDividers: number; + renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement; +} +export interface Mode { + type: "day" | "week" | "month"; + style?: "default" | "modern"; +} +export interface Area { + startDate: string; + endDate?: string; + styles: CSSProperties; + onClick?: () => void; + annotations?: { + styles: CSSProperties; + textStart?: string; + textEnd?: string; + }; +} +export interface AreaItem { + showArea: boolean; + startDate: Area["startDate"]; + endDate?: Area["endDate"]; + areaBgStyles: Area["styles"]; + onClick?: Area["onClick"]; + annotations?: { + styles: Area["styles"]; + textStart?: string; + textEnd?: string; + }; + areaFieldStyles: { + positionX: number; + width: number; + height: number; + timelineHeight: number; + }; +} +export interface HoursInDay { + date: string; + startTimeHour: string; + endTimeHour: string; +} +export interface HoursInDayDiffTime extends HoursInDay { + diffInHours: number; + prevItemDiffInHours: number; + diffLeft: number; + startTime: number; + endTime: number; +} +export interface Timezone { + enabled: boolean; + zone: string; + mode: string; +} +export interface Theme { + primary: { + 600: string; + 900: string; + }; + grey: { + 300: string; + }; + white: string; + teal: { + 100: string; + }; + green: { + 200: string; + 300: string; + }; + loader: { + teal: string; + purple: string; + pink: string; + bg: string; + }; + scrollbar: { + border: string; + thumb: { + bg: string; + }; + }; + gradient: { + blue: { + 300: string; + 600: string; + 900: string; + }; + }; + text: { + grey: { + 300: string; + 500: string; + }; + }; + timeline: { + divider: { + bg: string; + }; + }; + grid: { + item: string; + divider: string; + highlight: string; + }; +} diff --git a/dist/Epg/helpers/layout.d.ts b/dist/Epg/helpers/layout.d.ts new file mode 100644 index 0000000..1b1011e --- /dev/null +++ b/dist/Epg/helpers/layout.d.ts @@ -0,0 +1,29 @@ +import { ChannelWithOmittedUuid, Timezone } from "./interfaces"; +import { ChannelWithPosition, ProgramWithPosition } from "./types"; +export declare const setLayoutScreenCloneElement: (event: ProgramWithPosition, index: number) => void; +export declare const deleteLayoutScreenCloneElement: (event: ProgramWithPosition) => void; +export declare const getLayoutScreenCloneElements: () => Record>; +export declare const resetLayoutScreenCloneElements: () => void; +export declare const getChannelsContentHeight: (channels: ChannelWithPosition[]) => number; +export declare const setChannelEpgIndexes: ({ uuid, first, last, }: { + uuid: string; + first?: number | undefined; + last?: number | undefined; +}) => void; +export declare const getChannelEpgIndexes: (uuid: string) => { + uuid: string; + first: number; + last: number; +}; +export declare const resetChannelsEpgIndexes: () => void; +export declare const setChannelGroupTree: (channel: ChannelWithOmittedUuid) => void; +export declare const setChannelGroupTreeNestedChildren: (channelUuid: string, nestedChildUuid: string) => void; +export declare const getChannelsGroupTree: () => Record; +export declare const setTimezoneOptionsCache: (props: Timezone) => void; +export declare const getTimezoneOptionsCache: () => Timezone; +export declare const resetTimezoneOptionsCache: () => void; diff --git a/dist/Epg/helpers/line.d.ts b/dist/Epg/helpers/line.d.ts new file mode 100644 index 0000000..4b140c9 --- /dev/null +++ b/dist/Epg/helpers/line.d.ts @@ -0,0 +1,26 @@ +import { Layers } from "./enums"; +interface LineStyles { + isVerticalMode: boolean; + isTimeline: boolean; + lineStyles: { + position: string; + top: number; + width: number; + }; + position: { + height: number; + left: number; + zIndex: Layers; + }; +} +export declare const getLineStyles: ({ isVerticalMode, isTimeline, lineStyles, position, }: LineStyles) => { + position: { + position: string; + top: number; + left: number; + width: number; + height: number; + zIndex: Layers; + }; +}; +export {}; diff --git a/dist/Epg/helpers/overlaps.d.ts b/dist/Epg/helpers/overlaps.d.ts new file mode 100644 index 0000000..926d5ef --- /dev/null +++ b/dist/Epg/helpers/overlaps.d.ts @@ -0,0 +1,13 @@ +import { ProgramItem } from "./types"; +import { ProgramOverlaps } from "./interfaces"; +export declare function getOverlaps(isVerticalMode: boolean, itemOverlaps: ProgramOverlaps, programs: ProgramItem[]): { + overlaps: ProgramOverlaps; + channelOverlaps: Record; +}; +export declare function checkOverlaps(isMultirowsDnd: boolean, isVerticalMode: boolean, dndChannelUuid: { + index: number; + uuid: string; +}, itemOverlaps: ProgramOverlaps, programs: ProgramItem[]): { + overlaps: ProgramOverlaps; + channelOverlaps: Record; +}; diff --git a/dist/Epg/helpers/time.d.ts b/dist/Epg/helpers/time.d.ts new file mode 100644 index 0000000..f794f59 --- /dev/null +++ b/dist/Epg/helpers/time.d.ts @@ -0,0 +1,33 @@ +import { HoursInDay, HoursInDayDiffTime, Mode } from "./interfaces"; +import { DateTime as DateRangeTime } from "./types"; +declare type DateTime = number | string | Date; +export declare const getLiveStatus: (since: DateTime, till: DateTime) => boolean; +export declare const formatTime: (date: DateTime) => string; +export declare const formatTimeTz: (date: DateTime) => string; +export declare const roundToMinutes: (date: DateTime) => Date; +export declare const isYesterday: (since: DateTime, startDate: DateTime) => boolean; +export declare const isFutureTime: (date: DateTime) => boolean; +export declare const getTimeRangeDates: (startDate: DateRangeTime, endDate: DateRangeTime) => { + startDate: DateRangeTime; + endDate: DateRangeTime; +}; +interface FormatWeekMonthDate { + date: string; + mode: Mode; + isBaseTimeFormat: boolean; +} +export declare const getFormattedWeekMonthDate: ({ date, mode, isBaseTimeFormat, }: FormatWeekMonthDate) => string; +interface NumberOfHoursInDays { + startDate: DateRangeTime; + customHoursInDays: HoursInDay[]; +} +export declare const getNumberOfHoursInDays: ({ startDate, customHoursInDays, }: NumberOfHoursInDays) => HoursInDayDiffTime[]; +export declare const getTodayHoursInDays: (hoursInDays: HoursInDayDiffTime[]) => boolean; +interface HoursInDaysPositionX { + hoursInDays: HoursInDayDiffTime[]; + hourWidth: number; + sidebarWidth: number; + cb?: (v: boolean) => void; +} +export declare const getHoursInDaysPositionX: ({ hoursInDays, hourWidth, sidebarWidth, cb, }: HoursInDaysPositionX) => number; +export {}; diff --git a/dist/Epg/helpers/timeline.d.ts b/dist/Epg/helpers/timeline.d.ts new file mode 100644 index 0000000..49ac467 --- /dev/null +++ b/dist/Epg/helpers/timeline.d.ts @@ -0,0 +1,21 @@ +import { HoursInDayDiffTime, Mode } from "./interfaces"; +interface TimeSlots { + isBaseTimeFormat: boolean; + days: string[]; + hoursInDays: HoursInDayDiffTime[]; + months: string[]; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + offsetStartHoursRange: number; + weekDayWidth?: number; +} +export declare const generateTimelineSlots: (modeType: Mode["type"], options: TimeSlots) => (string | number)[]; +export declare const generateWeekTimelineSlots: ({ days, numberOfDays, }: Pick) => string[]; +export declare const generateMonthTimelineSlots: ({ months, numberOfMonths, }: Pick) => string[]; +export declare const getTimelineMonthsWidth: ({ months, weekDayWidth, }: Pick) => { + width: number; + left: number; +}[]; +export declare const getTimelineHeight: (timelineHeight: number, mode: Mode) => number; +export {}; diff --git a/dist/Epg/helpers/types.d.ts b/dist/Epg/helpers/types.d.ts new file mode 100644 index 0000000..8bcab1d --- /dev/null +++ b/dist/Epg/helpers/types.d.ts @@ -0,0 +1,43 @@ +import { Program, Channel, GridDataAttributes } from "./interfaces"; +export declare type Position = { + width: number; + height: number; + top: number; + left: number; + edgeEnd: number; +}; +export declare type InitialScrollPositions = Pick, "top" | "left">; +export declare type ProgramWithPosition = { + position: Position; + data: Program; +}; +export declare type ProgramItem = { + position: Omit; + data: Program; +}; +export declare type ChannelItem = { + isVerticalMode?: boolean; + isRTL?: boolean; + channel: ChannelWithPosition; + onOpenGroupTree?: (data: ChannelWithPosition) => void; +}; +export declare type ChannelWithPosition = Channel & { + position: Pick & Partial>; + index: number; +}; +export declare type DateTime = string | Date; +export declare type BaseTimeFormat = boolean; +export declare type DragMouseUp = Pick & Pick & { + initialPositionLeft: Position["left"]; + initialPositionTop: Position["top"]; +}; +export declare type ResizeMouseUp = Pick & Pick & { + initialPositionLeft: Position["left"]; + initialPositionTop: Position["top"]; + initialWidth: Position["width"]; + width: Position["width"]; +}; +export declare type GridEvent = (item: { + position: Position; + channel: ChannelWithPosition; +}, index?: number | undefined, ataAttributes?: GridDataAttributes) => () => void; diff --git a/dist/Epg/helpers/variables.d.ts b/dist/Epg/helpers/variables.d.ts new file mode 100644 index 0000000..ceefa96 --- /dev/null +++ b/dist/Epg/helpers/variables.d.ts @@ -0,0 +1,37 @@ +export declare const DAY_WIDTH = 7200; +export declare const HOURS_IN_DAY = 24; +export declare const HOUR_IN_MINUTES = 60; +export declare const SECONDS_IN_MINUTE = 60; +export declare const TIMELINE_HEIGHT = 60; +export declare const TIMELINE_HEIGHT_MODERN_STYLE = 80; +export declare const TIMELINE_WIDTH_VERTICAL = 70; +export declare const TIMELINE_DIVIDERS = 4; +export declare const SIDEBAR_WIDTH = 100; +export declare const ITEM_HEIGHT = 80; +export declare const ITEM_OVERSCAN = 80; +export declare const DEBOUNCE_WAIT = 100; +export declare const DEBOUNCE_WAIT_MAX = 100; +export declare const LIVE_REFRESH_TIME = 120; +export declare const THEME_MODE: { + DARK: string; + LIGHT: string; +}; +export declare const TIME_FORMAT: { + DEFAULT: string; + DATE: string; + DAY: string; + DAY_DATE: string; + MONTH: string; + DAY_MONTH: string; + BASE_DAY_MONTH: string; + HOURS_MIN: string; + BASE_HOURS_TIME: string; + YEAR: string; +}; +export declare const OVERLAP_MODES: { + STACK: string; + LAYER: string; +}; +export declare const TIMEZONE_MODES: { + UTC_TO_ZONED_TIME: string; +}; diff --git a/dist/Epg/hooks/index.d.ts b/dist/Epg/hooks/index.d.ts new file mode 100644 index 0000000..07b27aa --- /dev/null +++ b/dist/Epg/hooks/index.d.ts @@ -0,0 +1,8 @@ +export * from "./useEpg"; +export * from "./useInterval"; +export * from "./useProgram"; +export * from "./useTimeline"; +export * from "./useLine"; +export * from "./useCurrentTime"; +export * from "./useGrid"; +export * from "./useGridExternalDnD"; diff --git a/dist/Epg/hooks/useAreas.d.ts b/dist/Epg/hooks/useAreas.d.ts new file mode 100644 index 0000000..78d84b3 --- /dev/null +++ b/dist/Epg/hooks/useAreas.d.ts @@ -0,0 +1,34 @@ +/// +import { Area } from "../helpers/interfaces"; +import { DateTime } from "../helpers/types"; +interface UseAreasProps { + areas: Area[]; + hourWidth: number; + sidebarWidth: number; + height: number; + timelineHeight: number; + startDate: DateTime; + endDate: DateTime; +} +export declare function useAreas(props: UseAreasProps): { + data: { + showArea: boolean; + areaFieldStyles: { + positionX: number; + width: number; + height: number; + timelineHeight: number; + }; + areaBgStyles: import("react").CSSProperties; + startDate: string; + endDate?: string | undefined; + styles: import("react").CSSProperties; + onClick?: (() => void) | undefined; + annotations?: { + styles: import("react").CSSProperties; + textStart?: string | undefined; + textEnd?: string | undefined; + } | undefined; + }[]; +}; +export {}; diff --git a/dist/Epg/hooks/useCurrentTime.d.ts b/dist/Epg/hooks/useCurrentTime.d.ts new file mode 100644 index 0000000..f172cff --- /dev/null +++ b/dist/Epg/hooks/useCurrentTime.d.ts @@ -0,0 +1,23 @@ +import { BaseTimeFormat } from "../helpers/types"; +import { Mode } from "../helpers"; +interface useCurrentTimeProps { + isVerticalMode?: boolean; + isBaseTimeFormat?: BaseTimeFormat; + mode: Mode; + positionX: number; + timelineHeight: number; + sidebarWidth: number; +} +export declare function useCurrentTime({ isVerticalMode, isBaseTimeFormat, mode, positionX, timelineHeight, sidebarWidth, }: useCurrentTimeProps): { + time: string; + getCurrentTimeStyles: () => { + position: { + position: string; + width: string | number; + height: number; + top: number; + left: number; + }; + }; +}; +export {}; diff --git a/dist/Epg/hooks/useDrag.d.ts b/dist/Epg/hooks/useDrag.d.ts new file mode 100644 index 0000000..0247369 --- /dev/null +++ b/dist/Epg/hooks/useDrag.d.ts @@ -0,0 +1,44 @@ +import { MouseEvent } from "react"; +import { Program } from "../helpers/interfaces"; +import { DragMouseUp, Position } from "../helpers/types"; +interface UseDragProps { + isVerticalMode: boolean; + isDndEnabled: boolean; + isDndMutlirows: boolean; + initialPosition: Omit; + data: Program; + dayWidth: number; + itemHeight: number; + contentHeight: number; + dndSnapX?: number; + dndSnapY?: number; + elementRef: React.RefObject; + mouseUpCb: (props: DragMouseUp) => void; + dndMouseUpCb?: (props: DragMouseUp, data: Program) => void; +} +export declare function useDrag(props: UseDragProps): { + currentPositionX: number; + dndEvents: { + isDragging: boolean; + }; +} | { + dndEvents: { + onTouchStart: (e: MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => Promise; + onMouseDown?: undefined; + onMouseUp?: undefined; + isDragging: boolean; + ref: import("react").RefObject; + onClick: (e: MouseEvent) => void; + } | { + onMouseDown: (e: MouseEvent | React.TouchEvent) => void; + onMouseUp: () => Promise; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isDragging: boolean; + ref: import("react").RefObject; + onClick: (e: MouseEvent) => void; + }; + currentPositionX: number; +}; +export {}; diff --git a/dist/Epg/hooks/useEpg.d.ts b/dist/Epg/hooks/useEpg.d.ts new file mode 100644 index 0000000..94b6da6 --- /dev/null +++ b/dist/Epg/hooks/useEpg.d.ts @@ -0,0 +1,184 @@ +import React from "react"; +import { Area, ChannelWithOmittedUuid, DragAndDrop, Grid, HoursInDay, Mode, Overlap, ProgramOverlaps, ProgramWithOmittedUuid, Snap, Theme, Timezone } from "../helpers/interfaces"; +import { DateTime, BaseTimeFormat, Position, InitialScrollPositions, ProgramItem, DragMouseUp, ResizeMouseUp, ChannelWithPosition } from "../helpers/types"; +interface useEpgProps { + isVerticalMode?: boolean; + isRTL?: boolean; + isBaseTimeFormat?: BaseTimeFormat; + isSidebar?: boolean; + isTimeline?: boolean; + isLine?: boolean; + isCurrentTime?: boolean; + isInitialScrollToNow?: boolean; + isResize?: boolean; + initialScrollPositions?: InitialScrollPositions; + channels: ChannelWithOmittedUuid[]; + epg: ProgramWithOmittedUuid[]; + width?: number; + height?: number; + startDate?: DateTime; + endDate?: DateTime; + liveRefreshTime?: number; + mode?: Mode; + timezone?: Timezone; + overlap?: Overlap; + timelineDividers?: number; + snap?: Snap; + grid?: Grid; + dnd?: DragAndDrop; + areas?: Area[]; + hoursInDays?: HoursInDay[]; + theme?: Theme; + globalStyles?: string; + dayWidth?: number; + sidebarWidth?: number; + timelineHeight?: number; + itemHeight?: number; + itemOverscan?: number; + channelMapKey?: string; + programChannelMapKey?: string; +} +export declare function useEpg(props: useEpgProps): { + isLayoutBottom: (offset?: number) => boolean; + isLayoutRight: (offset?: number) => boolean; + getEpgProps: () => { + isVerticalMode: boolean; + isRTL: boolean; + isSidebar: boolean; + isLine: boolean; + isTimeline: boolean; + width: number | undefined; + height: number | undefined; + sidebarWidth: number; + timelineHeight: number; + ref: React.RefObject; + theme: Theme; + globalStyles: string | undefined; + }; + getLayoutProps: () => { + ref: React.RefObject; + numberOfMonths: number; + numberOfHoursInDay: number; + monthWidth: number; + offsetStartHoursRange: number; + numberOfDays: number; + days: string[]; + months: string[]; + isVerticalMode: boolean; + isRTL: boolean; + isBaseTimeFormat: boolean; + isSidebar: boolean; + isTimeline: boolean; + isLine: boolean; + isCurrentTime: boolean; + isProgramVisible: (position: Position, overlapsCount: number) => boolean; + isChannelVisible: (position: Pick) => boolean; + isTimelineVisible: (position: Pick) => boolean; + isToday: boolean; + isResize: boolean; + programs: { + position: { + width: number; + height: number; + top: number; + left: number; + edgeEnd: number; + }; + data: { + since: string; + till: string; + channelUuid: string; + id: string; + index: number; + title: string; + description: string; + image: string; + channelIndex: number; + channelPosition: Pick; + fixedVisibility?: boolean | undefined; + parentChannelUuid?: string | undefined; + }; + }[]; + programOverlaps: ProgramOverlaps; + channels: ChannelWithPosition[]; + channelOverlapsCount: Record; + layerOverlapLevel: number; + snap: Snap | undefined; + grid: Grid; + gridItems: { + position: { + top: number; + left: number; + width: number; + height: number; + edgeEnd: number; + }; + channel: ChannelWithPosition; + }[]; + dnd: DragAndDrop; + startDate: DateTime; + endDate: DateTime; + hoursInDays: import("../helpers").HoursInDayDiffTime[]; + liveRefreshTime: number; + scrollY: number; + dayWidth: number; + hourWidth: number; + sidebarWidth: number; + timelineHeight: number; + itemHeight: number; + currentDate: string; + mode: { + type: "day" | "week" | "month"; + style?: "default" | "modern" | undefined; + }; + timezone: { + enabled: boolean; + zone: string; + mode: string; + }; + timelineDividers: number; + overlapMode: "stack" | "layer"; + overlap: { + enabled: boolean; + mode: "stack" | "layer"; + layerOverlapLevel?: number | undefined; + }; + areas: Area[]; + openChannelGroupTree: (data: ChannelWithPosition) => void; + onScroll: (e: React.UIEvent & { + target: Element; + }) => void; + dragMouseUp: (props: DragMouseUp) => Promise; + resizeMouseUp: (props: ResizeMouseUp) => void; + }; + getLayoutData: (events: ProgramItem[]) => { + [x: string]: any; + channelUuid: string; + id: string; + index: number; + title: string; + description: string; + since: string | number | Date; + till: string | number | Date; + image: string; + channelIndex: number; + channelPosition: Pick; + fixedVisibility?: boolean | undefined; + parentChannelUuid?: string | undefined; + }[]; + getDropItemData: (data: ProgramWithOmittedUuid) => { + since: string; + till: string; + channelUuid?: string | undefined; + id: string; + title: string; + image: string; + }; + onScrollToNow: () => void; + onScrollTop: (value?: number) => void; + onScrollLeft: (value?: number) => void; + onScrollRight: (value?: number) => void; + scrollY: number; + scrollX: number; +}; +export {}; diff --git a/dist/Epg/hooks/useGrid.d.ts b/dist/Epg/hooks/useGrid.d.ts new file mode 100644 index 0000000..e83c672 --- /dev/null +++ b/dist/Epg/hooks/useGrid.d.ts @@ -0,0 +1,31 @@ +import { Mode, Grid as IGrid, HoursInDayDiffTime } from "../helpers/interfaces"; +import { BaseTimeFormat, ChannelWithPosition, Position } from "../helpers/types"; +interface UseGridProps { + isVerticalMode: boolean; + isBaseTimeFormat: BaseTimeFormat; + hourWidth: number; + dayWidth: number; + days: string[]; + hoursInDays: HoursInDayDiffTime[]; + months: string[]; + numberOfDays: number; + numberOfHoursInDay: number; + numberOfMonths: number; + offsetStartHoursRange: number; + grid: IGrid; + mode: Mode; + sidebarWidth: number; + timelineHeight: number; + timelineDividers: number; +} +export declare function useGrid({ mode, grid, timelineHeight, sidebarWidth, hourWidth, dayWidth, ...rest }: UseGridProps): { + onItemClick: (item: { + position: Position; + channel: ChannelWithPosition; + }, index?: number | undefined) => () => void; + onItemDrop: (item: { + position: Position; + channel: ChannelWithPosition; + }, index?: number | undefined, dataAttributes?: Record | undefined) => () => void; +}; +export {}; diff --git a/dist/Epg/hooks/useGridExternalDnD.d.ts b/dist/Epg/hooks/useGridExternalDnD.d.ts new file mode 100644 index 0000000..d042821 --- /dev/null +++ b/dist/Epg/hooks/useGridExternalDnD.d.ts @@ -0,0 +1,16 @@ +import React from "react"; +import { ChannelWithPosition, GridEvent, Position } from "../helpers/types"; +interface useGridCellItemProps { + onItemDrop?: GridEvent; +} +export declare function useGridExternalDnD({ onItemDrop }?: useGridCellItemProps): { + isDragOver: boolean; + dropAreaRef: React.MutableRefObject; + onDrop: (item: { + position: Position; + channel: ChannelWithPosition; + }, index: number) => (e: React.DragEvent) => void; + onDragEnter: (e: React.DragEvent) => void; + onDragLeave: (e: React.DragEvent) => void; +}; +export {}; diff --git a/dist/Epg/hooks/useInterval.d.ts b/dist/Epg/hooks/useInterval.d.ts new file mode 100644 index 0000000..9567582 --- /dev/null +++ b/dist/Epg/hooks/useInterval.d.ts @@ -0,0 +1 @@ +export declare function useInterval(callback: () => void, delay: number | null): void; diff --git a/dist/Epg/hooks/useIsTouchDevice.d.ts b/dist/Epg/hooks/useIsTouchDevice.d.ts new file mode 100644 index 0000000..41976c7 --- /dev/null +++ b/dist/Epg/hooks/useIsTouchDevice.d.ts @@ -0,0 +1 @@ +export declare function useIsTouchDevice(): boolean; diff --git a/dist/Epg/hooks/useLayout.d.ts b/dist/Epg/hooks/useLayout.d.ts new file mode 100644 index 0000000..7fe1892 --- /dev/null +++ b/dist/Epg/hooks/useLayout.d.ts @@ -0,0 +1,36 @@ +import React from "react"; +import { HoursInDayDiffTime } from "../helpers/interfaces"; +import { DateTime, InitialScrollPositions } from "../helpers/types"; +interface useLayoutProps { + isVerticalMode: boolean; + isToday: boolean; + isInitialScrollToNow: boolean; + initialScrollPositions: InitialScrollPositions; + height?: number; + width?: number; + hourWidth: number; + sidebarWidth: number; + channelsNumber: number; + startDate: DateTime; + endDate: DateTime; + currentDate: string; + hoursInDays: HoursInDayDiffTime[]; +} +export declare function useLayout({ isVerticalMode, isToday, isInitialScrollToNow, initialScrollPositions, height, width, channelsNumber, startDate, endDate, hourWidth, sidebarWidth, hoursInDays, }: useLayoutProps): { + containerRef: React.RefObject; + scrollBoxRef: React.RefObject; + scrollX: number; + scrollY: number; + layoutWidth: number; + layoutHeight: number; + isLayoutBottom: (offset?: number) => boolean; + isLayoutRight: (offset?: number) => boolean; + onScroll: (e: React.UIEvent & { + target: Element; + }) => void; + onScrollToNow: () => void; + onScrollTop: (value?: number) => void; + onScrollLeft: (value?: number) => void; + onScrollRight: (value?: number) => void; +}; +export {}; diff --git a/dist/Epg/hooks/useLine.d.ts b/dist/Epg/hooks/useLine.d.ts new file mode 100644 index 0000000..a82fbbd --- /dev/null +++ b/dist/Epg/hooks/useLine.d.ts @@ -0,0 +1,17 @@ +import { HoursInDayDiffTime, Timezone } from "../helpers/interfaces"; +import { DateTime } from "../helpers/types"; +interface useLineProps { + timezone: Timezone; + startDate: DateTime; + endDate: DateTime; + dayWidth: number; + hourWidth: number; + sidebarWidth: number; + hoursInDays: HoursInDayDiffTime[]; + liveRefreshTime: number; +} +export declare function useLine({ timezone, startDate, endDate, hoursInDays, dayWidth, hourWidth, sidebarWidth, liveRefreshTime, }: useLineProps): { + showLine: boolean; + positionX: number; +}; +export {}; diff --git a/dist/Epg/hooks/useProgram.d.ts b/dist/Epg/hooks/useProgram.d.ts new file mode 100644 index 0000000..ec771b4 --- /dev/null +++ b/dist/Epg/hooks/useProgram.d.ts @@ -0,0 +1,139 @@ +import React from "react"; +import { DragAndDrop, Mode, Snap } from "../helpers/interfaces"; +import { ProgramItem, BaseTimeFormat, DragMouseUp, ResizeMouseUp, DateTime } from "../helpers/types"; +interface useProgramProps { + isVerticalMode?: boolean; + isRTL?: boolean; + isBaseTimeFormat: BaseTimeFormat; + isResize?: boolean; + startDate: DateTime; + contentHeight: number; + dayWidth: number; + hourWidth: number; + program: T; + liveRefreshTime: number; + minWidth?: number; + itemHeight: number; + snap?: Snap; + mode: Mode; + dnd: DragAndDrop; + dragMouseUp: (data: DragMouseUp) => void; + resizeMouseUp: (data: ResizeMouseUp) => void; +} +export declare function useProgram({ isVerticalMode, isRTL, isResize, isBaseTimeFormat, startDate, contentHeight, dayWidth, itemHeight, hourWidth, minWidth, program, liveRefreshTime, mode, snap, dnd, dragMouseUp, resizeMouseUp, }: useProgramProps): { + isMouseEvent: boolean; + isLive: boolean; + isMinWidth: boolean; + isRTL: boolean; + resizeEvents: { + isResizing: boolean; + resources: { + ref: React.RefObject; + isResizing: boolean; + }; + eventsLeft: { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => void; + onMouseDown?: undefined; + onMouseUp?: undefined; + isResize: true; + isVerticalMode: boolean; + left: boolean; + onClick: (e: React.MouseEvent) => void; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => void; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isResize: true; + isVerticalMode: boolean; + left: boolean; + onClick: (e: React.MouseEvent) => void; + }; + eventsRight: { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => void; + onMouseDown?: undefined; + onMouseUp?: undefined; + isResize: true; + isVerticalMode: boolean; + onClick: (e: React.MouseEvent) => void; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => void; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isResize: true; + isVerticalMode: boolean; + onClick: (e: React.MouseEvent) => void; + }; + } | { + isResizing: boolean; + resources: { + ref?: undefined; + isResizing?: undefined; + }; + eventsLeft: {}; + eventsRight: {}; + }; + formatTime: (date: string | number | Date, formatType?: string) => string; + set12HoursTimeFormat: () => string; + getMouseEvents: () => { + isDragging: boolean; + ref: React.RefObject; + isResizing: boolean; + } | { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => Promise; + onMouseDown?: undefined; + onMouseUp?: undefined; + isDragging: boolean; + ref: React.RefObject; + onClick: (e: React.MouseEvent) => void; + isResizing: boolean; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => Promise; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isDragging: boolean; + ref: React.RefObject; + onClick: (e: React.MouseEvent) => void; + isResizing: boolean; + } | { + isDragging: boolean; + ref?: undefined; + isResizing?: undefined; + } | { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => Promise; + onMouseDown?: undefined; + onMouseUp?: undefined; + isDragging: boolean; + ref: React.RefObject; + onClick: (e: React.MouseEvent) => void; + isResizing?: undefined; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => Promise; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isDragging: boolean; + ref: React.RefObject; + onClick: (e: React.MouseEvent) => void; + isResizing?: undefined; + }; + getMouseEventTempTime: () => { + since: string; + till: string; + }; + getRTLSinceTime: (since: string | number | Date) => string | number | Date; + getRTLTillTime: (till: string | number | Date) => string | number | Date; + styles: { + width: number; + position: { + [x: string]: any; + }; + }; +}; +export {}; diff --git a/dist/Epg/hooks/useResize.d.ts b/dist/Epg/hooks/useResize.d.ts new file mode 100644 index 0000000..ac69661 --- /dev/null +++ b/dist/Epg/hooks/useResize.d.ts @@ -0,0 +1,76 @@ +import React from "react"; +import { Program } from "../helpers/interfaces"; +import { Position, ResizeMouseUp } from "../helpers/types"; +interface UseResizeProps { + isVerticalMode: boolean; + isResize: boolean; + initialPosition: Omit; + data: Program; + dayWidth: number; + contentHeight: number; + snapX?: number; + elementRef: React.RefObject; + mouseUpCb: (props: ResizeMouseUp) => void; +} +export declare function useResize({ isResize, isVerticalMode, data, dayWidth, contentHeight, initialPosition, snapX, elementRef, mouseUpCb, }: UseResizeProps): { + width: number; + initialWidth: number; + currentPositionX: number; + resizeEvents: { + isResizing: boolean; + resources: { + ref: React.RefObject; + isResizing: boolean; + }; + eventsLeft: { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => void; + onMouseDown?: undefined; + onMouseUp?: undefined; + isResize: true; + isVerticalMode: boolean; + left: boolean; + onClick: (e: React.MouseEvent) => void; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => void; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isResize: true; + isVerticalMode: boolean; + left: boolean; + onClick: (e: React.MouseEvent) => void; + }; + eventsRight: { + onTouchStart: (e: React.MouseEvent | React.TouchEvent) => void; + onTouchEnd: () => void; + onMouseDown?: undefined; + onMouseUp?: undefined; + isResize: true; + isVerticalMode: boolean; + onClick: (e: React.MouseEvent) => void; + } | { + onMouseDown: (e: React.MouseEvent | React.TouchEvent) => void; + onMouseUp: () => void; + onTouchStart?: undefined; + onTouchEnd?: undefined; + isResize: true; + isVerticalMode: boolean; + onClick: (e: React.MouseEvent) => void; + }; + }; +} | { + currentPositionX: number; + width: number; + resizeEvents: { + isResizing: boolean; + resources: { + ref?: undefined; + isResizing?: undefined; + }; + eventsLeft: {}; + eventsRight: {}; + }; + initialWidth?: undefined; +}; +export {}; diff --git a/dist/Epg/hooks/useTimeline.d.ts b/dist/Epg/hooks/useTimeline.d.ts new file mode 100644 index 0000000..2612436 --- /dev/null +++ b/dist/Epg/hooks/useTimeline.d.ts @@ -0,0 +1,48 @@ +/// +import { Timeline as ITimeline } from "../helpers/interfaces"; +declare type UseTimelineProps = ITimeline; +export declare function useTimeline(props: UseTimelineProps): { + isWeekMonthMode: boolean; + isMonthMode: boolean; + isTodayInHoursInDays: boolean; + areHoursInDays: boolean; + time: (string | number)[]; + weekDayWidth: number; + monthsWidth: { + width: number; + left: number; + }[]; + timelineHeight: number; + dividers: any[]; + timelineDividers: number; + formatWeekMonthDate: (date: string) => string; + getTime: (index: number | string) => { + time: string; + isNewDay: boolean; + }; + getDayMonthName: (date: string) => string; + getTimelineProps: () => { + isSidebar: boolean; + isVerticalMode: boolean | undefined; + dayWidth: number; + sidebarWidth: number; + timelineHeight: number; + }; + getCurrentTimeProps: () => { + isBaseTimeFormat: boolean; + isVerticalMode: boolean | undefined; + isRTL: boolean | undefined; + timezone: import("../helpers").Timezone; + mode: import("../helpers").Mode; + startDate: import("../helpers/types").DateTime; + endDate: import("../helpers/types").DateTime; + hoursInDays: import("../helpers").HoursInDayDiffTime[]; + dayWidth: number; + timelineHeight: number; + hourWidth: number; + sidebarWidth: number; + liveRefreshTime: number; + renderCurrentTime: ((v: import("../helpers").CurrentTimeIndicator) => import("react").ReactElement import("react").ReactElement | null) | (new (props: any) => import("react").Component)>) | undefined; + }; +}; +export {}; diff --git a/dist/Epg/index.d.ts b/dist/Epg/index.d.ts new file mode 100644 index 0000000..bdcb2a5 --- /dev/null +++ b/dist/Epg/index.d.ts @@ -0,0 +1,220 @@ +/// +import { Line as ILine, Theme as ITheme, Program as IProgram, Timeline as ITimeline, CurrentTimeIndicator as ICurrentTimeIndicator, Mode, GridItemProps as IGridItemProps, GridDividerItemProps as IGridDividerItemProps, DragAndDrop, Snap, GridCell as IGridCell } from "./helpers/interfaces"; +import { ProgramItem as ProgramItemType, ChannelItem as IChannelItem, ChannelWithPosition, BaseTimeFormat as BaseTimeFormatType, DragMouseUp, ResizeMouseUp, DateTime } from "./helpers/types"; +export declare type Channel = ChannelWithPosition; +export declare type ChannelItem = IChannelItem; +export declare type CurrentTimeIndicator = ICurrentTimeIndicator; +export declare type Line = ILine; +export declare type Program = IProgram; +export declare type ProgramItem = { + program: ProgramItemType; + isRTL: boolean; + isVerticalMode: boolean; + isBaseTimeFormat: BaseTimeFormatType; + liveRefreshTime: number; + mode: Mode; + startDate: DateTime; + snap?: Snap; + dnd: DragAndDrop; + dayWidth: number; + itemHeight: number; + contentHeight: number; + hourWidth: number; + dragMouseUp: (data: DragMouseUp) => void; + resizeMouseUp: (data: ResizeMouseUp) => void; +}; +export declare type GridItemProps = IGridItemProps; +export declare type GridDividerItemProps = IGridDividerItemProps; +export declare type Timeline = ITimeline; +export declare type Theme = ITheme; +export declare type GridCell = Omit; +export { Layout, CurrentTime } from "./components"; +export { Epg } from "./Epg"; +export { useEpg, useProgram, useTimeline, useGridExternalDnD } from "./hooks"; +declare const ChannelBox: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + top: number; + height: number; + groupTree?: boolean | undefined; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, ChannelLogo: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +}, import("react").DetailedHTMLProps, HTMLImageElement>, {}>; +declare const CurrentTimeBox: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + top: number; + left: number; + width: string | number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, CurrentTimeContent: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isBaseTimeFormat?: boolean | undefined; + isRTL?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>; +declare const GridItem: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isDayMode: boolean; + isHoverHighlight: boolean; + isDragOver?: boolean | undefined; + isItemClickable: boolean; + top: number; + left: number; + height: number; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, GridDivider: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isHoverHighlight: boolean; + isDragOver?: boolean | undefined; + isItemClickable?: boolean | undefined; + left: number; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +declare const ProgramBox: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isResizing?: boolean | undefined; + isDragging?: boolean | undefined; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, ProgramContent: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isLive: boolean; + width: number; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, ProgramFlex: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, ProgramStack: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isRTL?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, ProgramTitle: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLParagraphElement>, {}>, ProgramText: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>, ProgramImage: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLImageElement>, {}>, ProgramResizeHandle: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isResize?: boolean | undefined; + isVerticalMode?: boolean | undefined; + left?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +declare const TimelineWrapper: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isSidebar: boolean; + dayWidth: number; + sidebarWidth: number; + timelineHeight: number; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, TimelineBox: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, TimelineTime: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isBaseTimeFormat?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isRTL?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>, TimelineDividers: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>, TimelineWeekMonthBox: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; +} & import("react").ClassAttributes & import("react").HTMLAttributes & { + children?: import("react").ReactNode; +} & { + theme?: import("@emotion/react").Theme | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; + styleType?: "default" | "modern" | undefined; +}, {}, {}>, TimelineWeekMonthDate: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isRTL?: boolean | undefined; + styleType?: "default" | "modern" | undefined; + theme?: ITheme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export { ChannelBox, ChannelLogo, CurrentTimeBox, CurrentTimeContent, ProgramBox, ProgramContent, ProgramFlex, ProgramStack, ProgramTitle, ProgramText, ProgramImage, ProgramResizeHandle, TimelineWrapper, TimelineBox, TimelineWeekMonthBox, TimelineWeekMonthDate, TimelineTime, TimelineDividers, GridItem, GridDivider, }; +export declare const TimelineDivider: import("@emotion/styled").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: ITheme | undefined; + width: number; + left: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Area.styles.d.ts b/dist/Epg/styles/Area.styles.d.ts new file mode 100644 index 0000000..4631b90 --- /dev/null +++ b/dist/Epg/styles/Area.styles.d.ts @@ -0,0 +1,27 @@ +/// +import { Theme } from "../helpers"; +export declare const AreaFiled: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isClickable?: boolean | undefined; + positionX: number; + height: number; + width: number; + timelineHeight: number; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const AreaBg: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const AreaAnnotation: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode: boolean; + isLeft?: boolean | undefined; + width: number; + timelineHeight: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Channel.styles.d.ts b/dist/Epg/styles/Channel.styles.d.ts new file mode 100644 index 0000000..ef514c7 --- /dev/null +++ b/dist/Epg/styles/Channel.styles.d.ts @@ -0,0 +1,16 @@ +/// +import { Theme } from "../helpers"; +export declare const ChannelWrapper: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + top: number; + height: number; + groupTree?: boolean | undefined; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ChannelLogo: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +}, import("react").DetailedHTMLProps, HTMLImageElement>, {}>; diff --git a/dist/Epg/styles/Channels.styles.d.ts b/dist/Epg/styles/Channels.styles.d.ts new file mode 100644 index 0000000..21e3f40 --- /dev/null +++ b/dist/Epg/styles/Channels.styles.d.ts @@ -0,0 +1,15 @@ +/// +import { Theme } from "../helpers"; +export declare const Box: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isTimeline: boolean; + isRTL: boolean; + sidebarWidth: number; + timelineHeight: number; + contentHeight: number; + bottom: number; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/CurrentTime.styles.d.ts b/dist/Epg/styles/CurrentTime.styles.d.ts new file mode 100644 index 0000000..5e4e1f5 --- /dev/null +++ b/dist/Epg/styles/CurrentTime.styles.d.ts @@ -0,0 +1,28 @@ +/// +import { Theme } from "../helpers"; +export declare const boxStyles: ({ width }?: { + width?: string | number | undefined; +}) => { + position: string; + top: number; + width: string | number; + height: number; +}; +export declare const CurrentTimeBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + top: number; + left: number; + width: number | string; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const CurrentTimeContent: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isBaseTimeFormat?: boolean | undefined; + isRTL?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>; diff --git a/dist/Epg/styles/Epg.styles.d.ts b/dist/Epg/styles/Epg.styles.d.ts new file mode 100644 index 0000000..a0afe81 --- /dev/null +++ b/dist/Epg/styles/Epg.styles.d.ts @@ -0,0 +1,54 @@ +/// +import { Theme } from "../helpers"; +export declare const Container: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + height?: number | undefined; + width?: number | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const Wrapper: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ScrollBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: Theme | undefined; + isRTL?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const Box: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isRTL?: boolean | undefined; + left?: number | undefined; + top?: number | undefined; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const Content: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode: boolean; + isSidebar: boolean; + isTimeline: boolean; + theme?: Theme | undefined; + dayWidth: number; + contentHeight: number; + sidebarWidth: number; + timelineHeight: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const LayoutBg: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode: boolean; + isTimeline: boolean; + isSidebar: boolean; + dayWidth: number; + contentHeight: number; + timelineHeight: number; + sidebarWidth: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Grid.styles.d.ts b/dist/Epg/styles/Grid.styles.d.ts new file mode 100644 index 0000000..9d3e6e5 --- /dev/null +++ b/dist/Epg/styles/Grid.styles.d.ts @@ -0,0 +1,39 @@ +/// +export declare const GridContainer: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const GridWrapper: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode: boolean; + isSidebar: boolean; + isTimeline: boolean; + sidebarWidth: number; + timelineHeight: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const GridItem: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isDayMode: boolean; + isHoverHighlight: boolean; + isDragOver?: boolean | undefined; + isItemClickable: boolean; + top: number; + left: number; + height: number; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const GridDivider: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isHoverHighlight: boolean; + isDragOver?: boolean | undefined; + isItemClickable?: boolean | undefined; + left: number; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Line.styles.d.ts b/dist/Epg/styles/Line.styles.d.ts new file mode 100644 index 0000000..66e5c14 --- /dev/null +++ b/dist/Epg/styles/Line.styles.d.ts @@ -0,0 +1,18 @@ +/// +import { Layers, Theme } from "../helpers"; +export declare const lineStyles: { + position: string; + top: number; + width: number; +}; +export declare const LineBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode: boolean; + isTimeline: boolean; + height: number; + left: number; + zIndex: Layers; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Loader.styles.d.ts b/dist/Epg/styles/Loader.styles.d.ts new file mode 100644 index 0000000..e80c58a --- /dev/null +++ b/dist/Epg/styles/Loader.styles.d.ts @@ -0,0 +1,25 @@ +/// +import { Theme } from "../helpers"; +export declare const Box: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const Shape: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + width: number; + color: "teal" | "purple" | "pink"; + marginRight?: number | undefined; + transition: { + duration: number; + ease?: string; + delay?: number; + }; + animate: { + right: string[]; + }; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Program.styles.d.ts b/dist/Epg/styles/Program.styles.d.ts new file mode 100644 index 0000000..a33a18a --- /dev/null +++ b/dist/Epg/styles/Program.styles.d.ts @@ -0,0 +1,57 @@ +/// +import { Theme } from "../helpers"; +export declare const ProgramContent: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isLive: boolean; + width: number; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ProgramFlex: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ProgramTitle: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLParagraphElement>, {}>; +export declare const ProgramText: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>; +export declare const ProgramImage: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLImageElement>, {}>; +export declare const ProgramStack: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isRTL?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ProgramBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isResizing?: boolean | undefined; + isDragging?: boolean | undefined; + width: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const ProgramResizeHandle: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isResize?: boolean | undefined; + isVerticalMode?: boolean | undefined; + left?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; diff --git a/dist/Epg/styles/Timeline.styles.d.ts b/dist/Epg/styles/Timeline.styles.d.ts new file mode 100644 index 0000000..b2fe59b --- /dev/null +++ b/dist/Epg/styles/Timeline.styles.d.ts @@ -0,0 +1,92 @@ +/// +import { Theme } from "../helpers"; +export declare const TimelineTime: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isBaseTimeFormat?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isRTL?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLSpanElement>, {}>; +export declare const TimelineWeekMonthDate: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isRTL?: boolean | undefined; + styleType?: "default" | "modern" | undefined; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const TimelineDividers: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const TimelineDivider: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isNewDay?: boolean | undefined; + theme?: Theme | undefined; + width: number; + left: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const TimelineWrapper: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isSidebar: boolean; + dayWidth: number; + sidebarWidth: number; + timelineHeight: number; + theme?: Theme | undefined; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const TimelineBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; +}, import("react").DetailedHTMLProps, HTMLDivElement>, {}>; +export declare const TimelineWeekMonthBox: import("@emotion/styled/macro").StyledComponent<{ + theme?: import("@emotion/react").Theme | undefined; + as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "keygen" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "menuitem" | "meta" | "meter" | "nav" | "noindex" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "slot" | "script" | "section" | "select" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "template" | "tbody" | "td" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "webview" | "svg" | "animate" | "animateMotion" | "animateTransform" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | import("react").ComponentClass | import("react").FunctionComponent | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; +} & import("react").ClassAttributes & import("react").HTMLAttributes & { + children?: import("react").ReactNode; +} & { + theme?: import("@emotion/react").Theme | undefined; +} & { + isVerticalMode?: boolean | undefined; + isWeekMonthMode?: boolean | undefined; + isToday: boolean; + isCurrentTime: boolean; + isTodayInHoursInDays?: boolean | undefined; + areHoursInDays?: boolean | undefined; + width: number; + left: number; + timelineHeight: number; + styleType?: "default" | "modern" | undefined; +}, {}, {}>; diff --git a/dist/Epg/styles/global.styles.d.ts b/dist/Epg/styles/global.styles.d.ts new file mode 100644 index 0000000..85f522e --- /dev/null +++ b/dist/Epg/styles/global.styles.d.ts @@ -0,0 +1 @@ +export declare const globalStyles: import("@emotion/utils").SerializedStyles; diff --git a/dist/Epg/styles/index.d.ts b/dist/Epg/styles/index.d.ts new file mode 100644 index 0000000..7789a8d --- /dev/null +++ b/dist/Epg/styles/index.d.ts @@ -0,0 +1,11 @@ +export * from "./global.styles"; +export * as EpgStyled from "./Epg.styles"; +export * as ChannelsStyled from "./Channels.styles"; +export * as ChannelStyled from "./Channel.styles"; +export * as ProgramStyled from "./Program.styles"; +export * as TimelineStyled from "./Timeline.styles"; +export * as LineStyled from "./Line.styles"; +export * as LoaderStyled from "./Loader.styles"; +export * as CurrentTimeStyled from "./CurrentTime.styles"; +export * as AreaStyled from "./Area.styles"; +export * as GridStyled from "./Grid.styles"; diff --git a/dist/Epg/test/db/channels.d.ts b/dist/Epg/test/db/channels.d.ts new file mode 100644 index 0000000..a8f7262 --- /dev/null +++ b/dist/Epg/test/db/channels.d.ts @@ -0,0 +1,26 @@ +interface BuildChannel { + [key: string]: any; +} +export declare function buildChannel(overrides?: BuildChannel): { + country: any; + logo: any; + provider: number; + title: any; + type: any; + uuid: string; + year: any; +}; +export declare function buildChannelWithPosition(overrides?: BuildChannel): { + position: { + top: number; + height: number; + }; + country: any; + logo: any; + provider: number; + title: any; + type: any; + uuid: string; + year: any; +}; +export {}; diff --git a/dist/Epg/test/db/epg.d.ts b/dist/Epg/test/db/epg.d.ts new file mode 100644 index 0000000..1b3af96 --- /dev/null +++ b/dist/Epg/test/db/epg.d.ts @@ -0,0 +1,98 @@ +export declare const sinceAndTillTimes: { + since: string; + till: string; +}[]; +interface BuildProgram { + [key: string]: any; +} +export declare function buildProgram(overrides?: BuildProgram): { + id: string; + description: any; + title: any; + since: string; + till: string; + channelUuid: string; + image: any; + country: any; + genre: any; + rating: any; +}; +export interface BuildProgramWithPosition { + overrides?: BuildProgram; + program?: BuildProgram; +} +export declare function buildProgramWithPosition({ overrides, program, }?: BuildProgramWithPosition): { + data: { + index: number; + channelIndex: number; + channelPosition: { + top: number; + height: number; + }; + id: string; + description: any; + title: any; + since: string; + till: string; + channelUuid: string; + image: any; + country: any; + genre: any; + rating: any; + } | { + index: number; + channelIndex: number; + channelPosition: { + top: number; + height: number; + }; + id: string; + description: any; + title: any; + since: string; + till: string; + channelUuid: string; + image: any; + country: any; + genre: any; + rating: any; + }; + position: { + height: any; + left: any; + top: any; + width: any; + } | { + height: any; + left: any; + top: any; + width: any; + }; +}; +export declare function buildEpgWithPosition(): { + data: { + id: any; + description: any; + title: any; + channelUuid: string; + image: any; + country: any; + genre: any; + rating: any; + since: string; + till: string; + index: number; + channelIndex: number; + channelPosition: { + top: number; + height: number; + }; + }; + position: { + height: any; + left: any; + top: any; + width: any; + }; +}[]; +export {}; diff --git a/dist/Epg/test/db/grid.d.ts b/dist/Epg/test/db/grid.d.ts new file mode 100644 index 0000000..47225e4 --- /dev/null +++ b/dist/Epg/test/db/grid.d.ts @@ -0,0 +1,26 @@ +interface BuildGridItems { + [key: string]: any; +} +export declare function buildGridItems(overrides?: BuildGridItems): { + channel: { + country: any; + logo: any; + provider: number; + title: any; + type: any; + uuid: string; + year: any; + position: { + top: number; + height: number; + }; + }; + position: { + top: number; + height: number; + left: number; + width: number; + edgeEnd: number; + }; +}; +export {}; diff --git a/dist/Epg/test/db/index.d.ts b/dist/Epg/test/db/index.d.ts new file mode 100644 index 0000000..a3b331f --- /dev/null +++ b/dist/Epg/test/db/index.d.ts @@ -0,0 +1,3 @@ +export * from "./channels"; +export * from "./epg"; +export * from "./grid"; diff --git a/dist/Epg/test/helpers.d.ts b/dist/Epg/test/helpers.d.ts new file mode 100644 index 0000000..c0d58fa --- /dev/null +++ b/dist/Epg/test/helpers.d.ts @@ -0,0 +1,132 @@ +import { DragAndDrop, Mode, Overlap } from "../helpers/interfaces"; +declare type Overrides = { + [key: string]: any; +}; +export declare function getLayoutProps(overrides?: Overrides, sliceNumber?: number): { + isToday: boolean; + isSidebar: boolean; + isTimeline: boolean; + isLine: boolean; + isBaseTimeFormat: boolean; + isProgramVisible: () => boolean; + isChannelVisible: () => boolean; + isTimelineVisible: () => boolean; + programs: { + data: { + id: any; + description: any; + title: any; + channelUuid: string; + image: any; + country: any; + genre: any; + rating: any; + since: string; + till: string; + index: number; + channelIndex: number; + channelPosition: { + top: number; + height: number; + }; + }; + position: { + height: any; + left: any; + top: any; + width: any; + }; + }[]; + channels: { + position: { + top: number; + height: number; + }; + country: any; + logo: any; + provider: number; + title: any; + type: any; + uuid: string; + year: any; + }[]; + channelOverlapsCount: {}; + scrollY: number; + startDate: string; + endDate: string; + currentDate: string; + months: string[]; + numberOfMonths: number; + monthWidth: number; + mode: Mode; + dnd: DragAndDrop; + hoursInDays: never[]; + areas: never[]; + dayWidth: number; + hourWidth: number; + liveRefreshTime: number; + numberOfHoursInDay: number; + offsetStartHoursRange: number; + numberOfDays: number; + days: string[]; + sidebarWidth: number; + timelineHeight: number; + itemHeight: number; + programOverlaps: {}; + layerOverlapLevel: number; + overlapMode: "layer" | "stack"; + grid: { + enabled: boolean; + hoverHighlight: boolean; + }; + overlap: Overlap; + gridItems: { + channel: { + country: any; + logo: any; + provider: number; + title: any; + type: any; + uuid: string; + year: any; + position: { + top: number; + height: number; + }; + }; + position: { + top: number; + height: number; + left: number; + width: number; + edgeEnd: number; + }; + }[]; + onScroll: () => void; + dragMouseUp: () => null; +}; +export declare const getTimeLineProps: (overrides?: Overrides | undefined) => { + isToday: boolean; + isCurrentTime: boolean; + isSidebar: boolean; + isTimelineVisible: () => boolean; + isBaseTimeFormat: boolean; + numberOfHoursInDay: number; + offsetStartHoursRange: number; + numberOfDays: number; + days: string[]; + dayWidth: number; + hourWidth: number; + hoursInDays: never[]; + months: string[]; + numberOfMonths: number; + monthWidth: number; + sidebarWidth: number; + timelineHeight: number; + startDate: string; + endDate: string; + liveRefreshTime: number; + mode: Mode; +}; +export declare const getTestTimeDate: (h?: string, m?: string, s?: string) => string; +export {}; diff --git a/dist/Epg/test/index.d.ts b/dist/Epg/test/index.d.ts new file mode 100644 index 0000000..0c39c66 --- /dev/null +++ b/dist/Epg/test/index.d.ts @@ -0,0 +1,2 @@ +export * from "./db"; +export * from "./helpers"; diff --git a/dist/Epg/test/test-utils.d.ts b/dist/Epg/test/test-utils.d.ts new file mode 100644 index 0000000..426e922 --- /dev/null +++ b/dist/Epg/test/test-utils.d.ts @@ -0,0 +1,5 @@ +import React from "react"; +import userEvent from "@testing-library/user-event"; +declare const customRender: (ui: React.ReactElement, options?: Pick | undefined) => any; +export * from "@testing-library/react"; +export { customRender as render, userEvent }; diff --git a/dist/Epg/theme/index.d.ts b/dist/Epg/theme/index.d.ts new file mode 100644 index 0000000..e555584 --- /dev/null +++ b/dist/Epg/theme/index.d.ts @@ -0,0 +1 @@ +export * from "./theme"; diff --git a/dist/Epg/theme/theme.d.ts b/dist/Epg/theme/theme.d.ts new file mode 100644 index 0000000..b23c64a --- /dev/null +++ b/dist/Epg/theme/theme.d.ts @@ -0,0 +1,52 @@ +export declare const theme: { + primary: { + 600: string; + 900: string; + }; + grey: { + 300: string; + }; + white: string; + teal: { + 100: string; + }; + green: { + 200: string; + 300: string; + }; + loader: { + teal: string; + purple: string; + pink: string; + bg: string; + }; + scrollbar: { + border: string; + thumb: { + bg: string; + }; + }; + gradient: { + blue: { + 300: string; + 600: string; + 900: string; + }; + }; + text: { + grey: { + 300: string; + 500: string; + }; + }; + timeline: { + divider: { + bg: string; + }; + }; + grid: { + item: string; + divider: string; + highlight: string; + }; +}; diff --git a/dist/Epg/utils/time.d.ts b/dist/Epg/utils/time.d.ts new file mode 100644 index 0000000..3cefa5f --- /dev/null +++ b/dist/Epg/utils/time.d.ts @@ -0,0 +1,4 @@ +export declare const getNewDateTimeTz: (date: Date | string | number) => number; +export declare const getNewDateTz: (date?: string | number | Date | undefined) => Date; +export declare const formatTz: (date: Date | number, formatTime?: string) => string; +export declare const zonedDateTimeToUtc: (date: Date) => Date; diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..2ee3813 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1 @@ +export * from "./Epg"; diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..6da741f --- /dev/null +++ b/dist/index.js @@ -0,0 +1,8 @@ + +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./planby-pro.cjs.production.min.js') +} else { + module.exports = require('./planby-pro.cjs.development.js') +} diff --git a/dist/planby-pro.cjs.development.js b/dist/planby-pro.cjs.development.js new file mode 100644 index 0000000..9886c5f --- /dev/null +++ b/dist/planby-pro.cjs.development.js @@ -0,0 +1,5622 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var react = require('@emotion/react'); +var _styled = _interopDefault(require('@emotion/styled/base')); +var React = require('react'); +var React__default = _interopDefault(React); +var dateFns = require('date-fns'); +var dateFnsTz = require('date-fns-tz'); +var useDebounce = require('use-debounce'); + +function _regeneratorRuntime() { + _regeneratorRuntime = function () { + return e; + }; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function (t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function (t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(typeof e + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function (e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function () { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function (e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function (t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function (t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + catch: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function (e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} +function _taggedTemplateLiteralLoose(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + strings.raw = raw; + return strings; +} +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +var _templateObject; +var globalStyles = /*#__PURE__*/react.css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n .planby {\n font-family: \"Inter\", system-ui, -apple-system,\n /* Firefox supports this but not yet system-ui */ \"Segoe UI\", Roboto,\n Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"; /* 2 */\n }\n"]))); + +var Layers; +(function (Layers) { + Layers[Layers["Sidebar"] = 9] = "Sidebar"; + Layers[Layers["EpgCornerBox"] = 10] = "EpgCornerBox"; + Layers[Layers["Line"] = 9] = "Line"; + Layers[Layers["Loader"] = 12] = "Loader"; + Layers[Layers["Program"] = 1] = "Program"; + Layers[Layers["Timeline"] = 9] = "Timeline"; + Layers[Layers["Area"] = 2] = "Area"; +})(Layers || (Layers = {})); + +// Dimensions +var DAY_WIDTH = 7200; +var HOURS_IN_DAY = 24; +var HOUR_IN_MINUTES = 60; +var SECONDS_IN_MINUTE = 60; +var TIMELINE_HEIGHT = 60; +var TIMELINE_HEIGHT_MODERN_STYLE = 80; +var TIMELINE_DIVIDERS = 4; +var SIDEBAR_WIDTH = 100; +var ITEM_HEIGHT = 80; +var ITEM_OVERSCAN = ITEM_HEIGHT; +// Debounce +var DEBOUNCE_WAIT = 100; +var DEBOUNCE_WAIT_MAX = 100; +// Live refresh time +var LIVE_REFRESH_TIME = 120; +var TIME_FORMAT = { + DEFAULT: "yyyy-MM-dd HH:mm:ss", + DATE: "yyyy-MM-dd", + DAY: "EEE", + DAY_DATE: "dd", + MONTH: "LLL", + DAY_MONTH: "dd.MM", + BASE_DAY_MONTH: "MM/dd", + HOURS_MIN: "HH:mm", + BASE_HOURS_TIME: "h:mm a", + YEAR: "yyyy" +}; +// Overlap mode +var OVERLAP_MODES = { + STACK: "stack", + LAYER: "layer" +}; +// Timezone mode +var TIMEZONE_MODES = { + UTC_TO_ZONED_TIME: "utc" +}; + +var _excluded = ["isVerticalMode", "program", "overlap"]; +var omit = function omit(obj) { + var result = _extends({}, obj); + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + for (var _i = 0, _props = props; _i < _props.length; _i++) { + var property = _props[_i]; + delete result[property]; + } + return result; +}; +var generateArray = function generateArray(num) { + return new Array(num).fill(""); +}; +var getOverlapProgramOptions = function getOverlapProgramOptions(_ref) { + var isVerticalMode = _ref.isVerticalMode, + program = _ref.program, + programOverlaps = _ref.programOverlaps, + layerOverlapLevel = _ref.layerOverlapLevel, + overlapMode = _ref.overlapMode; + var data = program.data, + position = program.position; + var linkedProgramOverlaps = programOverlaps[data.channelUuid]; + if (linkedProgramOverlaps) { + var programOverlapIndex = linkedProgramOverlaps.findIndex(function (element) { + return element.data.id === data.id; + }); + var overlapProgram = linkedProgramOverlaps[programOverlapIndex]; + if (overlapProgram) { + if (overlapMode === OVERLAP_MODES.LAYER && overlapProgram.data.channelPosition.top < overlapProgram.position.top) { + var newTop = overlapProgram.position.top * layerOverlapLevel; + if (overlapProgram.data.channelPosition.top !== 0) { + newTop = overlapProgram.data.channelPosition.top + Math.abs(overlapProgram.data.channelPosition.top - overlapProgram.position.top) * layerOverlapLevel; + } + var _position = _extends({}, overlapProgram.position, { + top: newTop + }); + if (isVerticalMode) { + _position = switchPosition(_extends({}, overlapProgram.position, { + top: newTop + })); + } + return _extends({}, program, { + isOverlap: true, + position: _position + }); + } + return _extends({}, program, { + position: isVerticalMode ? switchPosition(overlapProgram.position) : overlapProgram.position + }); + } else { + return _extends({}, program, { + position: position + }); + } + } + var width = position.width, + height = position.height, + top = position.top, + left = position.left; + return _extends({}, program, { + position: { + width: width, + height: height, + top: top, + left: left + } + }); +}; +var getProgramOptions = function getProgramOptions(_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + program = _ref2.program, + overlap = _ref2.overlap, + rest = _objectWithoutPropertiesLoose(_ref2, _excluded); + if (overlap.enabled) { + return getOverlapProgramOptions(_extends({ + isVerticalMode: isVerticalMode, + program: program, + overlap: overlap + }, rest)); + } + var _program$position = program.position, + width = _program$position.width, + height = _program$position.height, + top = _program$position.top, + left = _program$position.left; + return _extends({}, program, { + position: { + width: width, + height: height, + top: top, + left: left + } + }); +}; +var useIsomorphicLayoutEffect = function useIsomorphicLayoutEffect() { + return typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect; +}; +var getDate = function getDate(date) { + return new Date(date); +}; +var abs = function abs(num) { + return Math.abs(num); +}; +var getDayWidthResources = function getDayWidthResources(_ref3) { + var dayWidth = _ref3.dayWidth, + startDate = _ref3.startDate, + endDate = _ref3.endDate, + hoursInDays = _ref3.hoursInDays, + modeType = _ref3.modeType; + var defaultOptions = { + hourWidth: 0, + numberOfMonths: 0, + numberOfHoursInDay: 0, + monthWidth: 0, + offsetStartHoursRange: 0, + dayWidth: 0 + }; + var startDateTime = new Date(startDate); + var endDateTime = new Date(endDate); + if (endDateTime < startDateTime) { + console.error("Invalid endDate property. Value of endDate must be greater than startDate. Props: startDateTime: " + startDateTime + ", endDateTime: " + endDateTime); + } + if (modeType === "week" || modeType === "month") { + var endOfMonthTime = dateFns.startOfMonth(dateFns.addMonths(endDateTime, 1)); + var numberOfMonthInMonthMode = dateFns.differenceInMonths(endOfMonthTime, startDateTime); + var numberOfDaysInWeekMode = dateFns.differenceInDays(endDateTime, startDateTime); + var dayWidthInWeekMode = Math.floor(dayWidth / numberOfDaysInWeekMode); + var _hourWidth = dayWidthInWeekMode / HOURS_IN_DAY; + var newDayWidthInWeekMode = _hourWidth * HOURS_IN_DAY * numberOfDaysInWeekMode; + return _extends({}, defaultOptions, { + hourWidth: abs(_hourWidth), + dayWidth: abs(newDayWidthInWeekMode), + numberOfMonths: numberOfMonthInMonthMode + }); + } + if (hoursInDays.length > 0) { + var _numberOfHoursInDay = hoursInDays.reduce(function (acc, curr) { + return acc + curr.diffInHours; + }, 0); + var _hourWidth2 = dayWidth / _numberOfHoursInDay; + var _newDayWidth = _hourWidth2 * _numberOfHoursInDay; + return _extends({}, defaultOptions, { + hourWidth: abs(_hourWidth2), + dayWidth: abs(_newDayWidth), + numberOfHoursInDay: abs(_numberOfHoursInDay) + }); + } + var offsetStartHoursRange = dateFns.differenceInHours(startDateTime, dateFns.startOfDay(startDateTime)); + var numberOfHoursInDay = dateFns.differenceInHours(endDateTime, startDateTime); + var hourWidth = Math.floor(dayWidth / numberOfHoursInDay); + var newDayWidth = hourWidth * numberOfHoursInDay; + return _extends({}, defaultOptions, { + hourWidth: abs(hourWidth), + dayWidth: abs(newDayWidth), + numberOfHoursInDay: abs(numberOfHoursInDay), + offsetStartHoursRange: abs(offsetStartHoursRange) + }); +}; +var convertDate = function convertDate(date) { + var newDate = date.replace(/T.*/, ""); + return dateFnsTz.toDate(newDate); +}; +var getDayResources = function getDayResources(_ref4) { + var startDate = _ref4.startDate, + endDate = _ref4.endDate, + modeType = _ref4.modeType; + var startDateFormat = dateFns.format(convertDate(startDate), TIME_FORMAT.DATE); + var endDateFormat = dateFns.format(convertDate(endDate), TIME_FORMAT.DATE); + var modeIncrementValue = modeType === "day" ? 1 : 0; + var diffDays = dateFns.differenceInDays(dateFnsTz.toDate(endDateFormat), dateFnsTz.toDate(startDateFormat)) + modeIncrementValue; + var startToEndInterval = { + start: new Date(startDate), + end: new Date(endDate) + }; + var days = dateFns.eachDayOfInterval(startToEndInterval).map(function (day) { + return dateFns.format(day, TIME_FORMAT.DATE); + }); + var months = dateFns.eachMonthOfInterval(startToEndInterval).map(function (day) { + return dateFns.format(day, TIME_FORMAT.DATE); + }); + var dates = days.map(function (day) { + return dateFns.isToday(dateFnsTz.toDate(day)); + }); + var isToday = dates.some(function (day) { + return day === true; + }); + var currentDate = days[dates.indexOf(true)]; + return { + isToday: isToday, + currentDate: currentDate, + numberOfDays: diffDays, + days: days, + months: months + }; +}; +var switchPosition = function switchPosition(programPosition) { + return _extends({}, programPosition, { + top: programPosition.left, + left: programPosition.top, + width: programPosition.height, + height: programPosition.width + }); +}; +function generateUUID() { + // Generate a random hexadecimal string with the specified length + var generateRandomHex = function generateRandomHex(length) { + var result = ""; + var characters = "abcdef0123456789"; + for (var i = 0; i < length; i++) { + result += characters[Math.floor(Math.random() * characters.length)]; + } + return result; + }; + // Format a UUID string according to the version 4 UUID format + var formatUUID = function formatUUID(parts) { + return parts[0] + "-" + parts[1] + "-4" + parts[2].substring(1) + "-" + "89ab"[Math.floor(Math.random() * 4)] + parts[3].substring(1) + "-" + parts[4]; + }; + // Generate the parts of the UUID + var parts = [generateRandomHex(8), generateRandomHex(4), "89ab"[Math.random() * 4 | 0] + generateRandomHex(3), "89ab"[Math.random() * 4 | 0] + generateRandomHex(3), generateRandomHex(12)]; + // Return the formatted UUID + return formatUUID(parts); +} + +var LayoutScreenCloneCache = {}; +var setChannel = function setChannel(event) { + var isChannel = LayoutScreenCloneCache[event.data.channelUuid]; + if (!isChannel) { + LayoutScreenCloneCache[event.data.channelUuid] = {}; + return LayoutScreenCloneCache; + } + return LayoutScreenCloneCache; +}; +var updateLayoutScreenCloneElement = function updateLayoutScreenCloneElement(data) { + return LayoutScreenCloneCache = data; +}; +var setLayoutScreenCloneElement = function setLayoutScreenCloneElement(event, index) { + var channels = setChannel(event); + var program = channels[event.data.channelUuid][event.data.id]; + if (!program) { + event["data"].index = index; + channels[event.data.channelUuid][event.data.id] = event; + } + updateLayoutScreenCloneElement(channels); +}; +var deleteLayoutScreenCloneElement = function deleteLayoutScreenCloneElement(event) { + var channels = setChannel(event); + var program = channels[event.data.channelUuid][event.data.id]; + if (program) { + delete channels[event.data.channelUuid][event.data.id]; + } + updateLayoutScreenCloneElement(channels); +}; +var resetLayoutScreenCloneElements = function resetLayoutScreenCloneElements() { + return LayoutScreenCloneCache = {}; +}; +var getChannelsContentHeight = function getChannelsContentHeight(channels) { + return channels.reduce(function (acc, channel) { + return acc += channel.position.height; + }, 0); +}; +var channelEpgIndexesCache = {}; +var setChannelEpgIndexes = function setChannelEpgIndexes(_ref) { + var uuid = _ref.uuid, + _ref$first = _ref.first, + first = _ref$first === void 0 ? 0 : _ref$first, + _ref$last = _ref.last, + last = _ref$last === void 0 ? 0 : _ref$last; + channelEpgIndexesCache[uuid] = { + first: first, + last: last, + uuid: uuid + }; +}; +var getChannelEpgIndexes = function getChannelEpgIndexes(uuid) { + return channelEpgIndexesCache[uuid]; +}; +var channelsGroupTreeCache = {}; +var setChannelGroupTree = function setChannelGroupTree(channel) { + channelsGroupTreeCache[channel.uuid] = { + uuid: channel.uuid, + isOpen: channel.isOpen, + groupTree: channel.groupTree + }; +}; +var setChannelGroupTreeNestedChildren = function setChannelGroupTreeNestedChildren(channelUuid, nestedChildUuid) { + var _channel$nestedChildr; + var channel = channelsGroupTreeCache[channelUuid]; + channelsGroupTreeCache[channelUuid] = _extends({}, channel, { + nestedChildren: [].concat((_channel$nestedChildr = channel.nestedChildren) != null ? _channel$nestedChildr : [], [nestedChildUuid]) + }); +}; +var getChannelsGroupTree = function getChannelsGroupTree() { + return channelsGroupTreeCache; +}; +// Timezones +var timezoneOptionsCache = { + enabled: false, + zone: "", + mode: "" +}; +var setTimezoneOptionsCache = function setTimezoneOptionsCache(props) { + timezoneOptionsCache = props; +}; +var getTimezoneOptionsCache = function getTimezoneOptionsCache() { + return timezoneOptionsCache; +}; + +var getNewDateTimeTz = function getNewDateTimeTz(date) { + var timezone = getTimezoneOptionsCache(); + var newDate = new Date(date); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = dateFnsTz.utcToZonedTime(newDate, timezone.zone); + return zonedTime.getTime(); + } + return newDate.getTime(); +}; +var getNewDateTz = function getNewDateTz(date) { + var timezone = getTimezoneOptionsCache(); + var newDate = date ? new Date(date) : new Date(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = dateFnsTz.utcToZonedTime(newDate, timezone.zone); + return zonedTime; + } + return newDate; +}; +var formatTz = function formatTz(date, formatTime) { + if (formatTime === void 0) { + formatTime = TIME_FORMAT.DEFAULT; + } + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = dateFnsTz.utcToZonedTime(date, timezone.zone); + var formattedZonedTime = dateFnsTz.format(zonedTime, formatTime, { + timeZone: timezone.zone + }); + return formattedZonedTime; + } + return dateFns.format(date, formatTime); +}; +var zonedDateTimeToUtc = function zonedDateTimeToUtc(date) { + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = dateFnsTz.zonedTimeToUtc(date, timezone.zone); + return zonedTime; + } + return date; +}; + +// -------- Program width -------- +var getItemDiffWidth = function getItemDiffWidth(diff, hourWidth) { + return diff * hourWidth / HOUR_IN_MINUTES; +}; +var getPositionX = function getPositionX(since, till, startDate, endDate, hourWidth) { + var isTomorrow = dateFns.getTime(getDate(till)) > dateFns.getTime(getDate(endDate)); + var isYesterday = dateFns.getTime(getDate(since)) < dateFns.getTime(getDate(startDate)); + // When time range is set to 1 hour and program time is greater than 1 hour + if (isYesterday && isTomorrow) { + var _diffTime = dateFns.differenceInMinutes(roundToMinutes(getDate(endDate)), getDate(startDate)); + return getItemDiffWidth(_diffTime, hourWidth); + } + if (isYesterday) { + var _diffTime2 = dateFns.differenceInMinutes(roundToMinutes(getDate(till)), getDate(startDate)); + return getItemDiffWidth(_diffTime2, hourWidth); + } + if (isTomorrow) { + var _diffTime3 = dateFns.differenceInMinutes(getDate(endDate), roundToMinutes(getDate(since))); + if (_diffTime3 < 0) return 0; + return getItemDiffWidth(_diffTime3, hourWidth); + } + var diffTime = dateFns.differenceInMinutes(roundToMinutes(getDate(till)), roundToMinutes(getDate(since))); + return getItemDiffWidth(diffTime, hourWidth); +}; +// -------- Channel position in the Epg -------- +var getChannelPosition = function getChannelPosition(channelIndex, itemHeight) { + var top = itemHeight * channelIndex; + var position = { + top: top, + height: itemHeight + }; + return position; +}; +// -------- Program position in the Epg -------- +var getProgramPosition = function getProgramPosition(program, channelIndex, itemHeight, hourWidth, startDate, endDate, isVerticalMode) { + var item = _extends({}, program, { + since: formatTimeTz(program.since), + till: formatTimeTz(program.till) + }); + var isYesterday$1 = isYesterday(item.since, startDate); + var width = getPositionX(item.since, item.till, startDate, endDate, hourWidth); + var top = itemHeight * channelIndex; + var left = getPositionX(startDate, item.since, startDate, endDate, hourWidth); + var edgeEnd = getPositionX(startDate, item.till, startDate, endDate, hourWidth); + if (isYesterday$1) left = 0; + // If item has negative top position, it means that it is not visible in this day + if (top < 0) width = 0; + var position = { + width: width, + height: itemHeight, + top: top, + left: left, + edgeEnd: edgeEnd + }; + if (isVerticalMode) { + position = _extends({}, position, { + top: left, + left: top, + width: itemHeight, + height: width + }); + } + return { + position: position, + data: item + }; +}; +var getProgramPositionWithDayHours = function getProgramPositionWithDayHours(_ref) { + var isVerticalMode = _ref.isVerticalMode, + hoursInDays = _ref.hoursInDays, + position = _ref.position, + since = _ref.since, + hourWidth = _ref.hourWidth; + var day = hoursInDays.find(function (day) { + return since.includes(day.date); + }); + if (!day) return { + position: position + }; + if (isVerticalMode) { + var _diffHours = day.diffLeft * hourWidth; + var top = position.top - _diffHours; + var _edgeEnd = position.edgeEnd - _diffHours; + return _extends({}, position, { + top: top, + edgeEnd: _edgeEnd + }); + } + var diffHours = day.diffLeft * hourWidth; + var left = position.left - diffHours; + var edgeEnd = position.edgeEnd - diffHours; + return _extends({}, position, { + left: left, + edgeEnd: edgeEnd + }); +}; +var getConvertedPrograms = function getConvertedPrograms(_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + isOverlapEnabled = _ref2.isOverlapEnabled, + programChannelMapKey = _ref2.programChannelMapKey, + data = _ref2.data, + channels = _ref2.channels, + startDate = _ref2.startDate, + endDate = _ref2.endDate, + itemHeight = _ref2.itemHeight, + hourWidth = _ref2.hourWidth, + hoursInDays = _ref2.hoursInDays; + var first = 0; + return data.map(function (next, index, arr) { + var _arr, _arr2, _channels$channelInde, _channels$channelInde2; + next["channelUuid"] = next[programChannelMapKey]; + if (((_arr = arr[index - 1]) == null ? void 0 : _arr[programChannelMapKey]) !== next[programChannelMapKey]) { + first = index; + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first + }); + } + if (next[programChannelMapKey] !== ((_arr2 = arr[index + 1]) == null ? void 0 : _arr2[programChannelMapKey])) { + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first, + last: index + }); + } else { + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first, + last: index + }); + } + var channelIndex = channels.findIndex(function (_ref3) { + var uuid = _ref3.uuid; + return uuid === next.channelUuid; + }); + next["channelIndex"] = channelIndex; + next["channelPosition"] = (_channels$channelInde = channels[channelIndex]) == null ? void 0 : _channels$channelInde.position; + next["index"] = index; + // Group tree + if ((_channels$channelInde2 = channels[channelIndex]) != null && _channels$channelInde2.parentChannelUuid) { + var _channels$channelInde3; + next["parentChannelUuid"] = (_channels$channelInde3 = channels[channelIndex]) == null ? void 0 : _channels$channelInde3.parentChannelUuid; + } + var programData = getProgramPosition(next, channelIndex, itemHeight, hourWidth, startDate, endDate, isVerticalMode); + if (isOverlapEnabled && channelIndex > 0) { + var position = channels[channelIndex - 1].position; + var newPositionTop = position.top + position.height; + if (isVerticalMode) { + programData.position.left = newPositionTop; + } else { + programData.position.top = newPositionTop; + } + } + if (hoursInDays.length === 0) return programData; + var newPosition = getProgramPositionWithDayHours({ + isVerticalMode: isVerticalMode, + hoursInDays: hoursInDays, + position: programData.position, + since: programData.data.since, + hourWidth: hourWidth + }); + programData["position"] = newPosition; + return programData; + }, []); +}; +// -------- Converted channels with position data -------- +var getConvertedChannels = function getConvertedChannels(isOverlapEnabled, overlapMode, layerOverlapLevel, channels, itemHeight, channelMapKey, channelOverlapsCount) { + var top = 0; + var isStackMode = overlapMode === OVERLAP_MODES.STACK; + var isLayerMode = overlapMode === OVERLAP_MODES.LAYER; + return channels.reduce(function (acc, channel, index) { + var overlap = channelOverlapsCount[channel[channelMapKey]]; + // Check channels group tree + if (channel.groupTree && channel.uuid) { + setChannelGroupTree(channel); + } + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = channelsGroupTree[channel.parentChannelUuid]; + // if parent channel is closed, skip this channel + if (channelGroupTree && channel.parentChannelUuid) { + setChannelGroupTreeNestedChildren(channelGroupTree.uuid, channel.uuid); + channel["isNestedChild"] = true; + if (!(channelGroupTree != null && channelGroupTree.isOpen)) return acc; + } else { + channel["isNestedChild"] = false; + } + var largestSizeLength = 1; + var overlapsLength = overlap != null ? overlap : 0; + if (isOverlapEnabled && (isStackMode || isLayerMode) && overlapsLength > 0) { + largestSizeLength = overlap; + } + var position = getChannelPosition(index, itemHeight * largestSizeLength); + if (isOverlapEnabled && isStackMode) { + position.top = top; + top = top + position.height; + } + if (isOverlapEnabled && isLayerMode) { + if (overlapsLength > 0) { + position.top = top; + position.height = overlapsLength <= 1 ? position.height : itemHeight * layerOverlapLevel * (overlapsLength - 1) + itemHeight; + top = top + position.height; + } else { + position.top = top; + top = top + position.height; + } + } + var item = _extends({}, channel, { + uuid: channel[channelMapKey], + index: index, + position: position + }); + acc.push(item); + return acc; + }, []); +}; +var getItemVisibility = function getItemVisibility(_ref4) { + var position = _ref4.position, + scrollY = _ref4.scrollY, + scrollX = _ref4.scrollX, + containerHeight = _ref4.containerHeight, + containerWidth = _ref4.containerWidth, + itemOverscan = _ref4.itemOverscan, + overlapsCount = _ref4.overlapsCount, + isVerticalMode = _ref4.isVerticalMode; + // Set item visibility for vertical mode + var _overlapsCount = overlapsCount === 0 ? 1 : overlapsCount; + if (isVerticalMode) { + if (position.height <= 0) { + return false; + } + if (scrollX > position.left + position.width * 2 * _overlapsCount) { + return false; + } + if (scrollX + containerWidth <= position.left) { + return false; + } + if (scrollY + containerHeight >= position.top && scrollY <= position.edgeEnd) { + return true; + } + } else { + // Set item visibility for horizontal mode + if (position.width <= 0) { + return false; + } + if (scrollY > position.top + itemOverscan * 3 * _overlapsCount) { + return false; + } + if (scrollY + containerHeight <= position.top) { + return false; + } + if (scrollX + containerWidth >= position.left && scrollX <= position.edgeEnd) { + return true; + } + } + return false; +}; +var getSidebarItemVisibility = function getSidebarItemVisibility(_ref5) { + var position = _ref5.position, + scrollX = _ref5.scrollX, + scrollY = _ref5.scrollY, + containerHeight = _ref5.containerHeight, + containerWidth = _ref5.containerWidth, + itemOverscan = _ref5.itemOverscan, + isVerticalMode = _ref5.isVerticalMode; + // Set item visibility for vertical mode + if (isVerticalMode) { + var left = position.left + position.height; + if (scrollX > left + itemOverscan * 3) { + return false; + } + if (scrollX + containerWidth <= left - position.height) { + return false; + } + } else { + // Set item visibility for horizontal mode + if (scrollY > position.top + position.height + itemOverscan * 3) { + return false; + } + if (scrollY + containerHeight <= position.top) { + return false; + } + } + return true; +}; +var getTimelineItemVisibility = function getTimelineItemVisibility(_ref6) { + var position = _ref6.position, + scrollY = _ref6.scrollY, + scrollX = _ref6.scrollX, + containerHeight = _ref6.containerHeight, + containerWidth = _ref6.containerWidth, + isVerticalMode = _ref6.isVerticalMode; + // Set item visibility for vertical mode + if (isVerticalMode) { + if (scrollY > position.left + position.width * 2) { + return false; + } + if (scrollY + containerHeight <= position.left) { + return false; + } + } else { + // Set item visibility for horizontal mode + if (scrollX > position.left + position.width * 2) { + return false; + } + if (scrollX + containerWidth <= position.left) { + return false; + } + } + return true; +}; +var setUpdatedLayoutItem = function setUpdatedLayoutItem(data, modeType) { + var id = generateUUID(); + var since = data.date + " " + data.since; + var till = data.date + " " + data.till; + if (modeType === "week") { + till = formatTz(dateFns.endOfDay(new Date(till)), TIME_FORMAT.DEFAULT); + } else if (modeType === "month") { + till = formatTz(dateFns.addDays(dateFns.endOfDay(new Date(till)), 20), TIME_FORMAT.DEFAULT); + } + return _extends({ + id: id, + title: "", + image: "" + }, data, { + since: since, + till: till + }); +}; + +var getTime = function getTime(date) { + return dateFnsTz.toDate(date).getTime(); +}; +var getLiveStatus = function getLiveStatus(since, till) { + var nowTime = getNewDateTimeTz(getNewDateTz()); + var sinceTime = getNewDateTimeTz(since); + var sinceTill = getNewDateTimeTz(till); + return nowTime >= sinceTime && sinceTill > nowTime; +}; +var formatTime = function formatTime(date) { + return dateFns.format(new Date(date), TIME_FORMAT.DEFAULT).replace(/\s/g, "T"); +}; +var formatTimeTz = function formatTimeTz(date) { + return formatTz(new Date(date), TIME_FORMAT.DEFAULT).replace(/\s/g, "T"); +}; +var roundToMinutes = function roundToMinutes(date) { + return dateFns.roundToNearestMinutes(new Date(date)); +}; +var isYesterday = function isYesterday(since, startDate) { + var sinceTime = getTime(new Date(since)); + var startDateTime = getTime(new Date(startDate)); + return startDateTime > sinceTime; +}; +var isFutureTime = function isFutureTime(date) { + var dateTime = getTime(new Date(date)); + var now = getTime(new Date()); + return dateTime > now; +}; +var getTimeRangeDates = function getTimeRangeDates(startDate, endDate) { + var endDateValue = endDate; + if (endDate === "") { + endDateValue = formatTime(dateFns.startOfDay(dateFns.addDays(getDate(startDate), 1))); + } + return { + startDate: startDate, + endDate: endDateValue + }; +}; +var getFormattedWeekMonthDate = function getFormattedWeekMonthDate(_ref) { + var date = _ref.date, + mode = _ref.mode, + isBaseTimeFormat = _ref.isBaseTimeFormat; + if (mode.type === "week") { + if (mode.style === "modern") { + return dateFns.format(dateFnsTz.toDate(date), TIME_FORMAT.DAY_DATE); + } + var dateFormat = isBaseTimeFormat ? TIME_FORMAT.BASE_DAY_MONTH : TIME_FORMAT.DAY_MONTH; + return dateFns.format(dateFnsTz.toDate(date), dateFormat); + } + return dateFns.format(dateFnsTz.toDate(date), TIME_FORMAT.MONTH); +}; +var getNumberOfHoursInDays = function getNumberOfHoursInDays(_ref2) { + var startDate = _ref2.startDate, + customHoursInDays = _ref2.customHoursInDays; + if (customHoursInDays.length === 0) return []; + var itemsDiffInHours = 0; + var data = customHoursInDays.reduce(function (acc, item) { + var diffLeft = 0; + var prevItem = acc[acc.length - 1]; + if (!prevItem) { + diffLeft = dateFns.differenceInHours(getDate(item.startTimeHour), getDate(startDate)); + } + if (prevItem) { + diffLeft = dateFns.differenceInHours(getDate(item.startTimeHour), getDate(prevItem.endTimeHour)); + diffLeft += prevItem.diffLeft; + itemsDiffInHours += prevItem.diffInHours; + } + var diffInHours = dateFns.differenceInHours(getDate(item.endTimeHour), getDate(item.startTimeHour)); + var startTime = Number(dateFns.format(getDate(item.startTimeHour), "H")); + var endTime = Number(dateFns.format(getDate(item.endTimeHour), "H")); + var obj = _extends({}, item, { + diffLeft: diffLeft, + diffInHours: diffInHours, + prevItemDiffInHours: itemsDiffInHours, + startTime: startTime, + endTime: endTime + }); + acc.push(obj); + return acc; + }, []); + return data; +}; +var getTodayHoursInDays = function getTodayHoursInDays(hoursInDays) { + var date = hoursInDays.filter(function (item) { + return dateFns.isWithinInterval(new Date(), { + start: new Date(item.startTimeHour), + end: new Date(item.endTimeHour) + }); + }); + return date.length > 0; +}; +var getHoursInDaysPositionX = function getHoursInDaysPositionX(_ref3) { + var hoursInDays = _ref3.hoursInDays, + hourWidth = _ref3.hourWidth, + sidebarWidth = _ref3.sidebarWidth, + cb = _ref3.cb; + var date = hoursInDays.filter(function (item) { + return dateFns.isWithinInterval(new Date(), { + start: new Date(item.startTimeHour), + end: new Date(item.endTimeHour) + }); + }); + if (date.length === 0) { + cb == null || cb(false); + return 0; + } + var day = date[0]; + var positionX = getPositionX(dateFns.startOfDay(new Date(day.startTimeHour)), new Date(), day.startTimeHour, day.endTimeHour, hourWidth); + return positionX + sidebarWidth + day.prevItemDiffInHours * hourWidth; +}; + +var _excluded$1 = ["hoursInDays"]; +var BASE_DAY_MONTH = TIME_FORMAT.BASE_DAY_MONTH, + DAY_MONTH = TIME_FORMAT.DAY_MONTH; +var generateDayHours = function generateDayHours(isBaseTimeFormat, dayIndex, days) { + return Array.from({ + length: HOURS_IN_DAY + }, function (_, i) { + if (i === 0) { + var timeFormat = isBaseTimeFormat ? BASE_DAY_MONTH : DAY_MONTH; + var date = dateFns.parse(days[dayIndex], TIME_FORMAT.DATE, new Date()); + return dayIndex === 0 ? i : dateFns.format(date, timeFormat); + } + return i; + }); +}; +var generateTimelineSlots = function generateTimelineSlots(modeType, options) { + var hoursInDays = options.hoursInDays, + rest = _objectWithoutPropertiesLoose(options, _excluded$1); + if (modeType === "week") { + return generateWeekTimelineSlots(rest); + } + if (modeType === "month") { + return generateMonthTimelineSlots(rest); + } + if (hoursInDays.length > 0) { + return getDayHoursTimeSlots(options); + } + return getDayTimeSlots(rest); +}; +var getDayHoursTimeSlots = function getDayHoursTimeSlots(_ref) { + var isBaseTimeFormat = _ref.isBaseTimeFormat, + days = _ref.days, + hoursInDays = _ref.hoursInDays, + numberOfDays = _ref.numberOfDays; + var slots = generateArray(numberOfDays).reduce(function (acc, _, dayIndex) { + var hours = generateDayHours(isBaseTimeFormat, dayIndex, days); + var hoursInDay = hoursInDays[dayIndex]; + var sliced = hours.slice(hoursInDay.startTime, hoursInDay.endTime); + if (dayIndex > 0) sliced[0] = hours[0]; + return [].concat(acc, sliced); + }, []); + return slots; +}; +var getDayTimeSlots = function getDayTimeSlots(_ref2) { + var isBaseTimeFormat = _ref2.isBaseTimeFormat, + days = _ref2.days, + numberOfDays = _ref2.numberOfDays, + numberOfHoursInDay = _ref2.numberOfHoursInDay, + offsetStartHoursRange = _ref2.offsetStartHoursRange; + var slots = generateArray(numberOfDays).reduce(function (acc, _, dayIndex) { + var hours = generateDayHours(isBaseTimeFormat, dayIndex, days); + if (dayIndex === 0) return [].concat(acc, hours.slice(offsetStartHoursRange)); + return [].concat(acc, hours); + }, []); + return slots.slice(0, numberOfHoursInDay); +}; +var generateWeekTimelineSlots = function generateWeekTimelineSlots(_ref3) { + var days = _ref3.days, + numberOfDays = _ref3.numberOfDays; + var slots = generateArray(numberOfDays).map(function (_, dayIndex) { + var date = dateFns.parse(days[dayIndex], TIME_FORMAT.DATE, new Date()); + return dateFns.format(date, TIME_FORMAT.DATE); + }); + return slots; +}; +var generateMonthTimelineSlots = function generateMonthTimelineSlots(_ref4) { + var months = _ref4.months, + numberOfMonths = _ref4.numberOfMonths; + var slots = generateArray(numberOfMonths).map(function (_, dayIndex) { + var date = dateFns.parse(months[dayIndex], TIME_FORMAT.DATE, new Date()); + return dateFns.format(date, TIME_FORMAT.DATE); + }); + return slots; +}; +var getTimelineMonthsWidth = function getTimelineMonthsWidth(_ref5) { + var months = _ref5.months, + weekDayWidth = _ref5.weekDayWidth; + var _months$reduce = months.reduce(function (acc, month, index) { + var daysInMonth = dateFns.getDaysInMonth(dateFnsTz.toDate(month)); + var width = daysInMonth * weekDayWidth; + if (index === 0) { + acc.data.push({ + width: width, + left: 0 + }); + acc.offsetLeft = 0; + return acc; + } + var left = acc.offsetLeft + acc.data[index - 1].width; + acc.data.push({ + width: width, + left: left + }); + acc.offsetLeft = left; + return acc; + }, { + data: [], + offsetLeft: 0 + }), + data = _months$reduce.data; + return data; +}; +var getTimelineHeight = function getTimelineHeight(timelineHeight, mode) { + if ((mode.type === "week" || mode.type === "month") && mode.style === "modern") { + return TIMELINE_HEIGHT_MODERN_STYLE; + } + return timelineHeight; +}; + +var getLineStyles = function getLineStyles(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isTimeline = _ref.isTimeline, + lineStyles = _ref.lineStyles, + position = _ref.position; + if (isVerticalMode) { + return { + position: _extends({}, position, { + position: lineStyles.position, + top: position.left, + left: isTimeline ? lineStyles.top : 0, + width: position.height, + height: lineStyles.width + }) + }; + } + return { + position: _extends({}, position, { + position: lineStyles.position, + top: isTimeline ? lineStyles.top : 0, + width: lineStyles.width + }) + }; +}; + +var getChannelVerticalPosition = function getChannelVerticalPosition(channel, isVerticalMode) { + if (isVerticalMode) { + return _extends({}, channel, { + position: _extends({}, channel.position, { + left: channel.position.top, + width: channel.position.height + }) + }); + } + return channel; +}; +var getChannelGroupTreeProps = function getChannelGroupTreeProps(channel) { + var _channel$parentChanne; + var data = _extends({}, channel, { + nestedChildren: [], + isFirstNestedChild: false, + isLastNestedChild: false + }); + var getChanelGroupTree = function getChanelGroupTree(uuid) { + var _channelsGroupTree; + return (_channelsGroupTree = channelsGroupTree[uuid != null ? uuid : ""]) != null ? _channelsGroupTree : null; + }; + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = getChanelGroupTree(channel.uuid); + var channelNestedGroupTree = getChanelGroupTree((_channel$parentChanne = channel.parentChannelUuid) != null ? _channel$parentChanne : ""); + if (channel.parentChannelUuid && channelNestedGroupTree) { + var _channelNestedGroupTr, _channelNestedGroupTr2; + var isFirstNestedChild = ((_channelNestedGroupTr = channelNestedGroupTree.nestedChildren) == null ? void 0 : _channelNestedGroupTr.at(0)) === channel.uuid; + var isLastNestedChild = ((_channelNestedGroupTr2 = channelNestedGroupTree.nestedChildren) == null ? void 0 : _channelNestedGroupTr2.at(-1)) === channel.uuid; + return _extends({}, data, { + isFirstNestedChild: isFirstNestedChild, + isLastNestedChild: isLastNestedChild + }); + } else if (channelGroupTree) { + return _extends({}, data, { + nestedChildren: channelGroupTree.nestedChildren + }); + } + return data; +}; + +function getOverlapCount(program, overlapArray) { + var sinceB = new Date(program.data.since); + var tillB = new Date(program.data.till); + var overlapCount = 0; + for (var _iterator = _createForOfIteratorHelperLoose(overlapArray), _step; !(_step = _iterator()).done;) { + var otherProgram = _step.value; + if (program.data.id === otherProgram.data.id) continue; + var sinceOther = new Date(otherProgram.data.since); + var tillOther = new Date(otherProgram.data.till); + if (sinceB <= tillOther && tillB >= sinceOther || sinceOther <= tillB && tillOther >= sinceB) { + overlapCount++; + } + } + return overlapCount; +} +function overlapPosition(program, overlapArray, channelOverlapsCount) { + var sinceB = new Date(program.data.since); + var tillB = new Date(program.data.till); + var newChannelOverlapsCount = channelOverlapsCount; + for (var index = 0; index < newChannelOverlapsCount + 1; index++) { + var top = program.data.channelPosition.top > 0 ? program.data.channelPosition.top : 0; + var levelTop = top + program.position.height * index; + var overlapsOnLevel = false; + var overlapsOnLevelUp = false; + for (var _iterator2 = _createForOfIteratorHelperLoose(overlapArray), _step2; !(_step2 = _iterator2()).done;) { + var otherProgram = _step2.value; + if (program.data.id === otherProgram.data.id) continue; + if (levelTop === otherProgram.position.top) { + var sinceOther = new Date(otherProgram.data.since); + var tillOther = new Date(otherProgram.data.till); + if (sinceB < tillOther && tillB > sinceOther || sinceOther < tillB && tillOther > sinceB) { + if (sinceB <= tillOther && tillB >= sinceOther || sinceOther <= tillB && tillOther >= sinceB) { + overlapsOnLevelUp = true; + } + overlapsOnLevel = true; + break; + } + } + } + if (!overlapsOnLevel) { + return overlapsOnLevelUp ? index + 4 : index; + } + } + return newChannelOverlapsCount; +} +var getOverlapProgramOptions$1 = function getOverlapProgramOptions(program, overlapArray, channelOverlapsCount) { + var _program = _extends({}, program); + var data = _program.data, + position = _program.position; + var programOverlapIndex = overlapArray.length + 1; + var channelPosition = data.channelPosition, + overlapTimes = data.overlapTimes; + var width = position.width, + height = position.height, + left = position.left; + var newHeight = height ; + var newTop = channelPosition.top + (overlapTimes != null ? overlapTimes : programOverlapIndex) * newHeight; + var newProgram = _extends({}, program, { + position: { + width: width, + height: newHeight, + top: newTop, + left: left + } + }); + var overlapTop = overlapPosition(newProgram, overlapArray, channelOverlapsCount); + newProgram.position = _extends({}, newProgram.position, { + top: channelPosition.top + newProgram.position.height * overlapTop + }); + return [newProgram, overlapTop + 1]; +}; +var setChannelOverlapCount = function setChannelOverlapCount(programA, channelOverlapsCount, channelOverlaps) { + return channelOverlapsCount > channelOverlaps[programA.data.channelUuid] ? channelOverlapsCount : channelOverlaps[programA.data.channelUuid]; +}; +function getOverlaps(isVerticalMode, itemOverlaps, programs) { + var overlaps = _extends({}, itemOverlaps); + var channelOverlaps = {}; + for (var _iterator3 = _createForOfIteratorHelperLoose(programs), _step3; !(_step3 = _iterator3()).done;) { + var program = _step3.value; + overlaps[program.data.channelUuid] = []; + } + var _loop = function _loop() { + var _programA$data; + var programA = _extends({}, programs[i]); + var sinceA = new Date(programA.data.since); + var tillA = new Date(programA.data.till); + // Group channel tree + // If parent group tree is open, then all children group tree are visible + // If parent group tree is closed, then all children group tree are not visible + if (programA != null && (_programA$data = programA.data) != null && _programA$data.parentChannelUuid) { + var _programA$data2; + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = channelsGroupTree[programA == null || (_programA$data2 = programA.data) == null ? void 0 : _programA$data2.parentChannelUuid]; + if (!(channelGroupTree != null && channelGroupTree.isOpen)) return 1; // continue + } + if (isVerticalMode) { + programA.position = switchPosition(programA.position); + } + var _loop2 = function _loop2() { + var programB = _extends({}, programs[j]); + if (programA.data.channelUuid !== programB.data.channelUuid) return 1; // continue + if (isVerticalMode) { + programB.position = switchPosition(programB.position); + } + var sinceB = new Date(programB.data.since); + var tillB = new Date(programB.data.till); + if (sinceA < tillB && tillA > sinceB || sinceB < tillA && tillB > sinceA) { + var elementA = overlaps[programA.data.channelUuid]; + var elementB = overlaps[programB.data.channelUuid]; + var isSameChannelUuid = programA.data.channelUuid === programB.data.channelUuid; + if (elementA && elementB && isSameChannelUuid) { + programB.data.overlapLinkedId = programA.data.overlapLinkedId; + var overlapArray = overlaps[programA.data.channelUuid]; + var isElementAExist = overlapArray.some(function (el) { + return el.data.id === programA.data.id; + }); + var isElementBExist = overlapArray.some(function (el) { + return el.data.id === programB.data.id; + }); + var channelOverlapsLength = overlaps[programA.data.channelUuid].length; + if (!isElementBExist && channelOverlapsLength === 0) { + programB.position.top = programA.data.channelPosition.top + programA.position.height; + overlaps[programA.data.channelUuid] = [programA, programB]; + channelOverlaps[programA.data.channelUuid] = !channelOverlaps[programA.data.channelUuid] ? 2 : channelOverlaps[programA.data.channelUuid]; + } else if (!isElementBExist && channelOverlapsLength > 1) { + var overlapCount = 0; + if (!isElementAExist) { + overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = overlapCount; + var _getOverlapProgramOpt = getOverlapProgramOptions$1(programA, overlapArray, channelOverlaps[programA.data.channelUuid]), + newProgramA = _getOverlapProgramOpt[0], + _channelOverlapsCount = _getOverlapProgramOpt[1]; + overlapArray.push(newProgramA); + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, _channelOverlapsCount, channelOverlaps); + } + overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = overlapCount; + var _getOverlapProgramOpt2 = getOverlapProgramOptions$1(programB, overlapArray, channelOverlaps[programA.data.channelUuid]), + newProgramB = _getOverlapProgramOpt2[0], + channelOverlapsCount = _getOverlapProgramOpt2[1]; + overlapArray.push(newProgramB); + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, channelOverlapsCount, channelOverlaps); + } else if (isElementBExist && channelOverlapsLength > 1) { + var _overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = _overlapCount; + var _getOverlapProgramOpt3 = getOverlapProgramOptions$1(programB, overlapArray, channelOverlaps[programA.data.channelUuid]), + _channelOverlapsCount2 = _getOverlapProgramOpt3[1]; + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, _channelOverlapsCount2, channelOverlaps); + } else if (channelOverlapsLength > 1) { + overlapArray.push(programB); + } + } + } else if (overlaps[programA.data.channelUuid] && overlaps[programA.data.channelUuid].length === 0) { + channelOverlaps[programA.data.channelUuid] = 0; + overlaps[programA.data.channelUuid] = []; + } + }; + for (var j = i + 1; j < programs.length; j++) { + if (_loop2()) continue; + } + }; + for (var i = 0; i < programs.length - 1; i++) { + if (_loop()) continue; + } + return { + overlaps: overlaps, + channelOverlaps: channelOverlaps + }; +} +var getChannelProgramSliced = function getChannelProgramSliced(programs) { + var acc = new Map(); + for (var _iterator4 = _createForOfIteratorHelperLoose(programs), _step4; !(_step4 = _iterator4()).done;) { + var next = _step4.value; + var channelUuid = next.data.channelUuid; + if (!acc.has(channelUuid)) { + acc.set(channelUuid, []); + } + acc.get(channelUuid).push(next); + } + return Object.fromEntries(acc); +}; +var getChannelEpdIndexesProgramSliced = function getChannelEpdIndexesProgramSliced(programs, overlaps, dndChannelUuidIndex) { + var acc = {}; + for (var _i = 0, _Object$keys = Object.keys(overlaps); _i < _Object$keys.length; _i++) { + var _overlaps$next, _overlaps$next2; + var next = _Object$keys[_i]; + var channelIndex = (_overlaps$next = overlaps[next]) == null || (_overlaps$next = _overlaps$next[0]) == null ? void 0 : _overlaps$next.data.channelIndex; + var channelUuid = (_overlaps$next2 = overlaps[next]) == null || (_overlaps$next2 = _overlaps$next2[0]) == null ? void 0 : _overlaps$next2.data.channelUuid; + if (channelIndex !== undefined && channelIndex > dndChannelUuidIndex) { + var channelEpgIndexes = getChannelEpgIndexes(next); + var slicedPrograms = programs.slice(channelEpgIndexes.first, channelEpgIndexes.last + 1); + acc[channelUuid] = slicedPrograms; + } + } + return acc; +}; +function checkOverlaps(isMultirowsDnd, isVerticalMode, dndChannelUuid, itemOverlaps, programs) { + var overlaps = _extends({}, itemOverlaps); + var channelOverlaps = {}; + var data = {}; + var channelEpgIndexes = getChannelEpgIndexes(dndChannelUuid.uuid); + if (!isMultirowsDnd && channelEpgIndexes) { + var _extends2; + var slicedOverlapsPrograms = getChannelEpdIndexesProgramSliced(programs, overlaps, dndChannelUuid.index); + data = _extends((_extends2 = {}, _extends2[dndChannelUuid.uuid] = programs.slice(channelEpgIndexes.first, channelEpgIndexes.last + 1), _extends2), slicedOverlapsPrograms); + } else { + data = getChannelProgramSliced(programs); + } + for (var channel in data) { + var props = getOverlaps(isVerticalMode, itemOverlaps, data[channel]); + overlaps[channel] = props.overlaps[channel]; + channelOverlaps[channel] = props.channelOverlaps[channel]; + } + for (var channelUuid in overlaps) { + var _Object$keys2; + if (overlaps != null && overlaps[channelUuid] && ((_Object$keys2 = Object.keys(overlaps == null ? void 0 : overlaps[channelUuid])) == null ? void 0 : _Object$keys2.length) === 0) { + delete overlaps[channelUuid]; + } + } + return { + overlaps: overlaps, + channelOverlaps: channelOverlaps + }; +} + +var getFormattedDndDate = function getFormattedDndDate(newSince, newTill) { + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var utcDateSince = zonedDateTimeToUtc(newSince); + var utcDateTill = zonedDateTimeToUtc(newTill); + return { + since: utcDateSince.toISOString(), + till: utcDateTill.toISOString() + }; + } + return { + since: dateFns.format(newSince, TIME_FORMAT.DEFAULT).replace(" ", "T"), + till: dateFns.format(newTill, TIME_FORMAT.DEFAULT).replace(" ", "T") + }; +}; +var getResizeTill = function getResizeTill(_ref) { + var initialWidth = _ref.initialWidth, + width = _ref.width, + hourWidth = _ref.hourWidth; + if (!initialWidth && !width) return 0; + var diff = width - initialWidth; + var diffHours = diff / hourWidth; + return diffHours * 60; +}; +var calculateItemDragSinceTill = function calculateItemDragSinceTill(props) { + var initialPositionLeft = props.initialPositionLeft, + left = props.left, + initialWidth = props.initialWidth, + width = props.width, + hourWidth = props.hourWidth, + startDate = props.startDate, + since = props.since, + till = props.till; + var minDiff = 0; + if (startDate) { + var startDateTime = new Date(startDate).getTime(); + var sinceTime = new Date(since).getTime(); + if (sinceTime < startDateTime) { + minDiff = dateFns.differenceInMinutes(new Date(startDate), new Date(since)); + } + } + var diff = left - initialPositionLeft; + var diffHours = diff / hourWidth; + var tillDiffHours = getResizeTill({ + initialWidth: initialWidth, + width: width, + hourWidth: hourWidth + }); + var newSince = dateFns.addMinutes(new Date(since), diffHours * 60 + minDiff); + var newTill = dateFns.addMinutes(new Date(till), diffHours * 60 + tillDiffHours + minDiff); + return getFormattedDndDate(newSince, newTill); +}; +var getDefaultDragProps = function getDefaultDragProps(positionLeft) { + return { + currentPositionX: positionLeft, + dndEvents: { + isDragging: false + } + }; +}; + +var getConvertedGridItems = function getConvertedGridItems(_ref) { + var isVerticalMode = _ref.isVerticalMode, + channels = _ref.channels, + dayWidth = _ref.dayWidth, + hourWidth = _ref.hourWidth, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth, + mode = _ref.mode, + dayWidthResources = _ref.dayWidthResources, + daysResources = _ref.daysResources; + var isMonthMode = mode.type === "month"; + var numberOfSlots = function numberOfSlots() { + if (mode.type === "day") return dayWidthResources.numberOfHoursInDay; + if (mode.type === "week") return daysResources.numberOfDays; + return dayWidthResources.numberOfMonths; + }; + var monthsWidth = function monthsWidth() { + return getTimelineMonthsWidth({ + months: daysResources.months, + weekDayWidth: hourWidth * HOURS_IN_DAY + }); + }; + var getGridItemPosition = function getGridItemPosition(channel, index) { + var width = 0; + var left = 0; + if (isMonthMode) { + width = monthsWidth()[index].width; + left = monthsWidth()[index].left; + } else { + width = dayWidth / numberOfSlots(); + left = width * index; + } + var position = { + top: channel.position.top, + left: left, + width: width, + height: channel.position.height, + edgeEnd: left + width + }; + if (isVerticalMode) { + position = _extends({}, position, { + left: position.top + timelineHeight, + top: position.left + sidebarWidth, + width: position.height, + height: position.width + }); + } else { + position = _extends({}, position, { + top: position.top + timelineHeight, + left: left + sidebarWidth, + width: width, + height: position.height + }); + } + return { + position: position, + channel: channel + }; + }; + return channels.flatMap(function (channel) { + return generateArray(numberOfSlots()).map(function (_, index) { + return getGridItemPosition(channel, index); + }); + }); +}; +var getClickGridItemData = function getClickGridItemData(_ref2) { + var _ref2$isDrop = _ref2.isDrop, + isDrop = _ref2$isDrop === void 0 ? false : _ref2$isDrop, + isVerticalMode = _ref2.isVerticalMode, + isBaseTimeFormat = _ref2.isBaseTimeFormat, + index = _ref2.index, + item = _ref2.item, + grid = _ref2.grid, + mode = _ref2.mode, + dayWidth = _ref2.dayWidth, + hourWidth = _ref2.hourWidth, + sidebarWidth = _ref2.sidebarWidth, + days = _ref2.days, + hoursInDays = _ref2.hoursInDays, + months = _ref2.months, + numberOfDays = _ref2.numberOfDays, + numberOfHoursInDay = _ref2.numberOfHoursInDay, + numberOfMonths = _ref2.numberOfMonths, + offsetStartHoursRange = _ref2.offsetStartHoursRange, + timelineDividers = _ref2.timelineDividers, + dataAttributes = _ref2.dataAttributes; + var position = item.position, + channel = item.channel; + var isDayMode = mode.type === "day"; + var newPosition = {}; + if (isVerticalMode) { + newPosition = _extends({}, position, { + top: position.left, + left: position.top - sidebarWidth, + edgeEnd: position.left + hourWidth - sidebarWidth + }); + } else { + newPosition = _extends({}, position, { + top: position.top, + left: position.left - sidebarWidth, + edgeEnd: position.edgeEnd - sidebarWidth + }); + } + var options = { + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange + }; + var timeSlots = generateTimelineSlots(mode.type, options); + var left = isDayMode ? newPosition.left + index * (hourWidth / timelineDividers) : newPosition.left; + var edgeEnd = isDayMode ? left + hourWidth / timelineDividers : newPosition.edgeEnd; + var itemClickProps = { + since: "00:00:00", + till: "00:00:00", + date: "", + channelUuid: channel.uuid + }; + if (isDayMode) { + var gridItemProps = getDividerGridProps({ + left: left, + edgeEnd: edgeEnd, + timeSlots: timeSlots, + channel: channel, + days: days, + dayWidth: dayWidth, + hourWidth: hourWidth, + index: index + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, gridItemProps, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(gridItemProps); + } + if (mode.type === "week") { + var _index = Math.floor(left / (hourWidth * 24)); + var _options = _extends({}, itemClickProps, { + date: timeSlots[_index] + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, _options, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(_options); + } + if (mode.type === "month") { + var _index2 = Math.floor(left / (hourWidth * 24 * 30)); + var _options2 = _extends({}, itemClickProps, { + date: timeSlots[_index2] + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, _options2, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(_options2); + } +}; +var getDividerGridProps = function getDividerGridProps(_ref3) { + var left = _ref3.left, + edgeEnd = _ref3.edgeEnd, + timeSlots = _ref3.timeSlots, + channel = _ref3.channel, + days = _ref3.days, + hourWidth = _ref3.hourWidth, + dayWidth = _ref3.dayWidth, + index = _ref3.index; + var since = ""; + var till = ""; + var dayTimeSlots = timeSlots.map(function (time) { + return typeof time === "number" ? time : 0; + }); + var sinceTimeInHours = Math.floor(left / hourWidth); // Assuming 4 hours per hourWidth + var tillTimeInHours = Math.floor(edgeEnd / hourWidth); // Assuming 4 hours per hourWidth + var getTime = function getTime(index) { + return dayTimeSlots[index] < 10 ? "0" + dayTimeSlots[index] : dayTimeSlots[index]; + }; + var newSince = getTime(sinceTimeInHours); + var newTill = getTime(tillTimeInHours); + var newSinceMin = index === 0 ? "00" : index * 15; + var newTillMin = index + 1 === 0 ? "00" : (index + 1) * 15; + since = newSince + ":" + newSinceMin + ":00"; + till = newTill + ":" + newTillMin + ":00"; + if (newTillMin === 60) { + var newNextTill = dayTimeSlots[sinceTimeInHours + 1] < 10 ? "0" + dayTimeSlots[sinceTimeInHours + 1] : dayTimeSlots[tillTimeInHours]; + till = newTill ? newNextTill + ":00:00 " : "00:00:00"; + } + var singleDayWidth = dayWidth / (days.length - 1); + var dayIndex = Math.floor(left / singleDayWidth); + var options = { + since: since, + till: till, + date: days[dayIndex], + channelUuid: channel.uuid + }; + return options; +}; + +function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var Container = /*#__PURE__*/_styled("div", { + target: "e1mhijim5", + label: "Container" +})("padding:5px;height:", function (_ref) { + var height = _ref.height; + return height ? height + "px" : "100%"; +}, ";width:", function (_ref2) { + var width = _ref2.width; + return width ? width + "px" : "100%"; +}, ";*,::before,::after{box-sizing:border-box;}" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRW9DIiwiZmlsZSI6IkVwZy5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA1cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gKGhlaWdodCA/IGAke2hlaWdodH1weGAgOiBcIjEwMCVcIil9O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAod2lkdGggPyBgJHt3aWR0aH1weGAgOiBcIjEwMCVcIil9O1xuXG4gICosXG4gIDo6YmVmb3JlLFxuICA6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5gO1xyXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmA7XHJcbmV4cG9ydCBjb25zdCBTY3JvbGxCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmIGB0cmFuc2Zvcm06IHNjYWxlKC0xLDEpYH07XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zY3JvbGxiYXIudGh1bWIuYmd9O1xuICAgIGJvcmRlcjogMTBweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgYm9yZGVyOiAyMnB4IG5vbmUgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyB0b3AgPSAwIH0pID0+IHRvcH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAke0xheWVycy5FcGdDb3JuZXJCb3h9O1xuXG4gICR7KHsgaXNSVEwsIGxlZnQgPSAwIH0pID0+IChpc1JUTCA/IGByaWdodDowcHg7YCA6IGAgbGVmdDogJHtsZWZ0fXB4YCl9O1xuYDtcclxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAkeyh7IGNvbnRlbnRIZWlnaHQgfSkgPT4gY29udGVudEhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGNvbnRlbnRIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIHdpZHRoOiAke2NvbnRlbnRIZWlnaHR9cHg7XG4gICAgICBoZWlnaHQ6ICR7ZGF5V2lkdGh9cHg7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBMYXlvdXRCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyBpc1RpbWVsaW5lLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyBkYXlXaWR0aCB9KSA9PiBkYXlXaWR0aH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBpc1NpZGViYXIsIGRheVdpZHRoLCB0aW1lbGluZUhlaWdodCwgc2lkZWJhcldpZHRoLCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgICB3aWR0aDogMTAwJTtcbiAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcGcuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var Wrapper = /*#__PURE__*/_styled("div", { + target: "e1mhijim4", + label: "Wrapper" +})( { + name: "qjsha7", + styles: "height:100%;width:100%;display:flex;flex-direction:column;position:relative;border-radius:6px;overflow:hidden", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYWtDIiwiZmlsZSI6IkVwZy5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA1cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gKGhlaWdodCA/IGAke2hlaWdodH1weGAgOiBcIjEwMCVcIil9O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAod2lkdGggPyBgJHt3aWR0aH1weGAgOiBcIjEwMCVcIil9O1xuXG4gICosXG4gIDo6YmVmb3JlLFxuICA6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5gO1xyXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmA7XHJcbmV4cG9ydCBjb25zdCBTY3JvbGxCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmIGB0cmFuc2Zvcm06IHNjYWxlKC0xLDEpYH07XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zY3JvbGxiYXIudGh1bWIuYmd9O1xuICAgIGJvcmRlcjogMTBweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgYm9yZGVyOiAyMnB4IG5vbmUgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyB0b3AgPSAwIH0pID0+IHRvcH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAke0xheWVycy5FcGdDb3JuZXJCb3h9O1xuXG4gICR7KHsgaXNSVEwsIGxlZnQgPSAwIH0pID0+IChpc1JUTCA/IGByaWdodDowcHg7YCA6IGAgbGVmdDogJHtsZWZ0fXB4YCl9O1xuYDtcclxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAkeyh7IGNvbnRlbnRIZWlnaHQgfSkgPT4gY29udGVudEhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGNvbnRlbnRIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIHdpZHRoOiAke2NvbnRlbnRIZWlnaHR9cHg7XG4gICAgICBoZWlnaHQ6ICR7ZGF5V2lkdGh9cHg7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBMYXlvdXRCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyBpc1RpbWVsaW5lLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyBkYXlXaWR0aCB9KSA9PiBkYXlXaWR0aH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBpc1NpZGViYXIsIGRheVdpZHRoLCB0aW1lbGluZUhlaWdodCwgc2lkZWJhcldpZHRoLCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgICB3aWR0aDogMTAwJTtcbiAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcGcuc3R5bGVzLmpzLm1hcCJdfQ== */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__ +}); +var ScrollBox = /*#__PURE__*/_styled("div", { + target: "e1mhijim3", + label: "ScrollBox" +})("position:relative;height:100%;width:100%;overflow:auto;scroll-behavior:smooth;background:", function (_ref3) { + var theme = _ref3.theme; + return theme.primary[900]; +}, ";", function (_ref4) { + var isRTL = _ref4.isRTL; + return isRTL && "transform: scale(-1,1)"; +}, ";::-webkit-scrollbar{width:10px;height:10px;}::-webkit-scrollbar-thumb{background:", function (_ref5) { + var theme = _ref5.theme; + return theme.scrollbar.thumb.bg; +}, ";border:10px none ", function (_ref6) { + var theme = _ref6.theme; + return theme.white; +}, ";border-radius:20px;}::-webkit-scrollbar-thumb:hover{background:", function (_ref7) { + var theme = _ref7.theme; + return theme.white; +}, ";}::-webkit-scrollbar-track{background:", function (_ref8) { + var theme = _ref8.theme; + return theme.primary[900]; +}, ";border:22px none ", function (_ref9) { + var theme = _ref9.theme; + return theme.white; +}, ";border-radius:0px;}::-webkit-scrollbar-corner{background:", function (_ref10) { + var theme = _ref10.theme; + return theme.primary[900]; +}, ";}" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JvQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Box = /*#__PURE__*/_styled("div", { + target: "e1mhijim2", + label: "Box" +})("position:absolute;top:", function (_ref11) { + var _ref11$top = _ref11.top, + top = _ref11$top === void 0 ? 0 : _ref11$top; + return top; +}, "px;background:", function (_ref12) { + var theme = _ref12.theme; + return theme.primary[900]; +}, ";z-index:", Layers.EpgCornerBox, ";", function (_ref13) { + var isRTL = _ref13.isRTL, + _ref13$left = _ref13.left, + left = _ref13$left === void 0 ? 0 : _ref13$left; + return isRTL ? "right:0px;" : " left: " + left + "px"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0Q4QiIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Content = /*#__PURE__*/_styled("div", { + target: "e1mhijim1", + label: "Content" +})("position:relative;left:", function (_ref14) { + var isSidebar = _ref14.isSidebar, + sidebarWidth = _ref14.sidebarWidth; + return isSidebar ? sidebarWidth : 0; +}, "px;height:", function (_ref15) { + var contentHeight = _ref15.contentHeight; + return contentHeight; +}, "px;width:", function (_ref16) { + var dayWidth = _ref16.dayWidth; + return dayWidth; +}, "px;background:", function (_ref17) { + var theme = _ref17.theme; + return theme.primary[900]; +}, ";", function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + isTimeline = _ref18.isTimeline, + dayWidth = _ref18.dayWidth, + timelineHeight = _ref18.timelineHeight, + contentHeight = _ref18.contentHeight; + return isVerticalMode && "\n left: " + (isTimeline ? timelineHeight : 0) + "px;\n width: " + contentHeight + "px;\n height: " + dayWidth + "px;\n "; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0VrQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var LayoutBg = /*#__PURE__*/_styled("div", { + target: "e1mhijim0", + label: "LayoutBg" +})("position:absolute;top:", function (_ref19) { + var isTimeline = _ref19.isTimeline, + timelineHeight = _ref19.timelineHeight; + return isTimeline ? timelineHeight : 0; +}, "px;left:", function (_ref20) { + var isSidebar = _ref20.isSidebar, + sidebarWidth = _ref20.sidebarWidth; + return isSidebar ? sidebarWidth : 0; +}, "px;height:100%;width:", function (_ref21) { + var dayWidth = _ref21.dayWidth; + return dayWidth; +}, "px;", function (_ref22) { + var isVerticalMode = _ref22.isVerticalMode, + isTimeline = _ref22.isTimeline, + isSidebar = _ref22.isSidebar, + dayWidth = _ref22.dayWidth, + timelineHeight = _ref22.timelineHeight, + sidebarWidth = _ref22.sidebarWidth; + return isVerticalMode && "\n top: " + (isSidebar ? sidebarWidth : 0) + "px;\n left: " + (isTimeline ? timelineHeight : 0) + "px;\n width: 100%;\n height: " + dayWidth + "px;\n "; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEVtQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$1, _templateObject2, _templateObject3; +var Box$1 = /*#__PURE__*/_styled("div", { + target: "e1psuwkz0", + label: "Box" +})(function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + isTimeline = _ref.isTimeline, + isRTL = _ref.isRTL, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + contentHeight = _ref.contentHeight, + bottom = _ref.bottom, + theme = _ref.theme; + return react.css(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n background-color: ", ";\n\n ", ";\n\n ", "\n\n ", "\n "])), theme.primary[900], isRTL && "& > div { transform: scale(-1,1) }", isVerticalMode && react.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), isTimeline ? timelineHeight : 0, sidebarWidth, contentHeight), !isVerticalMode && react.css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n left: 0;\n bottom: ", "px;\n float: left;\n width: ", "px;\n "])), bottom, sidebarWidth)); +}, " z-index:", Layers.Sidebar, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWxzLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHOEIiLCJmaWxlIjoiQ2hhbm5lbHMuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgQm94ID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzVGltZWxpbmUsIGlzUlRMLCBzaWRlYmFyV2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0LCBib3R0b20sIHRoZW1lLCB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5wcmltYXJ5WzkwMF19O1xuXG4gICAgJHtpc1JUTCAmJiBgJiA+IGRpdiB7IHRyYW5zZm9ybTogc2NhbGUoLTEsMSkgfWB9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIGhlaWdodDogJHtzaWRlYmFyV2lkdGh9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgIGB9XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206ICR7Ym90dG9tfXB4O1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB3aWR0aDogJHtzaWRlYmFyV2lkdGh9cHg7XG4gICAgYH1cbiAgYH1cbiAgei1pbmRleDogJHtMYXllcnMuU2lkZWJhcn07XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGFubmVscy5zdHlsZXMuanMubWFwIl19 */")); + +var _templateObject$2, _templateObject2$1, _templateObject3$1; +function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var ChannelWrapper = /*#__PURE__*/_styled("div", { + target: "eqmxcnp1", + label: "ChannelWrapper" +})(function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + top = _ref.top, + height = _ref.height, + groupTree = _ref.groupTree, + theme = _ref.theme; + return react.css(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n cursor: ", ";\n\n ", "\n ", ";\n "])), theme.primary[900], groupTree ? "pointer" : "default", isVerticalMode && react.css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n width: ", "px;\n height: 100%;\n "])), top, height), !isVerticalMode && react.css(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n height: ", "px;\n width: 100%;\n "])), top, height)); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV5QyIsImZpbGUiOiJDaGFubmVsLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IENoYW5uZWxXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIHRvcCwgaGVpZ2h0LCBncm91cFRyZWUsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgY3Vyc29yOiAke2dyb3VwVHJlZSA/IFwicG9pbnRlclwiIDogXCJkZWZhdWx0XCJ9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6ICR7dG9wfXB4O1xuICAgICAgd2lkdGg6ICR7aGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7dG9wfXB4O1xuICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIGB9O1xuICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IENoYW5uZWxMb2dvID0gc3R5bGVkLmltZyBgXG4gIG1heC1oZWlnaHQ6IDYwcHg7XG4gIG1heC13aWR0aDogNjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2hhbm5lbC5zdHlsZXMuanMubWFwIl19 */")); +var ChannelLogo = /*#__PURE__*/_styled("img", { + target: "eqmxcnp0", + label: "ChannelLogo" +})( { + name: "vfop22", + styles: "max-height:60px;max-width:60px;position:relative", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBCc0MiLCJmaWxlIjoiQ2hhbm5lbC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBDaGFubmVsV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCB0b3AsIGhlaWdodCwgZ3JvdXBUcmVlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGN1cnNvcjogJHtncm91cFRyZWUgPyBcInBvaW50ZXJcIiA6IFwiZGVmYXVsdFwifTtcblxuICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAke3RvcH1weDtcbiAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICBgfVxuICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke3RvcH1weDtcbiAgICAgIGhlaWdodDogJHtoZWlnaHR9cHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICBgfTtcbiAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBDaGFubmVsTG9nbyA9IHN0eWxlZC5pbWcgYFxuICBtYXgtaGVpZ2h0OiA2MHB4O1xuICBtYXgtd2lkdGg6IDYwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoYW5uZWwuc3R5bGVzLmpzLm1hcCJdfQ== */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 +}); + +var ProgramContent = /*#__PURE__*/_styled("div", { + target: "e1cx08bt7", + label: "ProgramContent" +})("border:1px solid #171923;position:relative;display:flex;font-size:11px;height:100%;border-radius:8px;padding:10px ", function (_ref) { + var width = _ref.width; + return width < 30 ? 4 : 20; +}, "px;overflow:hidden;cursor:pointer;transition:all 0.4s ease-in-out;background:", function (_ref2) { + var primary = _ref2.theme.primary; + return "linear-gradient(to right, " + primary[600] + ", " + primary[600] + ")"; +}, ";z-index:", Layers.Program, ";&:hover{background:", function (_ref3) { + var gradient = _ref3.theme.gradient; + return "linear-gradient(to right, " + gradient.blue[900] + ", " + gradient.blue[600] + ")"; +}, ";}", function (_ref4) { + var isLive = _ref4.isLive, + isVerticalMode = _ref4.isVerticalMode, + gradient = _ref4.theme.gradient; + return isLive && "background: linear-gradient(to " + (isVerticalMode ? "bottom" : "right") + ", " + gradient.blue[900] + ", " + gradient.blue[600] + "," + gradient.blue[300] + ")"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV5QyIsImZpbGUiOiJQcm9ncmFtLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUNvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgYm9yZGVyOiAxcHggc29saWQgIzE3MTkyMztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmb250LXNpemU6IDExcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiAxMHB4ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoIDwgMzAgPyA0IDogMjApfXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lOiB7IHByaW1hcnkgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke3ByaW1hcnlbNjAwXX0sICR7cHJpbWFyeVs2MDBdfSlgfTtcbiAgei1pbmRleDogJHtMYXllcnMuUHJvZ3JhbX07XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBncmFkaWVudCB9IH0pID0+IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICR7Z3JhZGllbnQuYmx1ZVs5MDBdfSwgJHtncmFkaWVudC5ibHVlWzYwMF19KWB9O1xuICB9XG5cbiAgJHsoeyBpc0xpdmUsIGlzVmVydGljYWxNb2RlLCB0aGVtZTogeyBncmFkaWVudCB9IH0pID0+IGlzTGl2ZSAmJlxyXG4gICAgYGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byAke2lzVmVydGljYWxNb2RlID8gXCJib3R0b21cIiA6IFwicmlnaHRcIn0sICR7Z3JhZGllbnQuYmx1ZVs5MDBdfSwgJHtncmFkaWVudC5ibHVlWzYwMF19LCR7Z3JhZGllbnQuYmx1ZVszMDBdfSlgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1GbGV4ID0gc3R5bGVkLmRpdiBgXG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtgfTtcbmA7XHJcbmNvbnN0IEVsaXBzaXMgPSBgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1UaXRsZSA9IHN0eWxlZC5wIGBcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZXlbMzAwXX07XG4gICR7RWxpcHNpc31cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGV4dCA9IHN0eWxlZC5zcGFuIGBcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTIuNXB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50ZXh0LmdyZXlbNTAwXX07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gICR7RWxpcHNpc31cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtSW1hZ2UgPSBzdHlsZWQuaW1nIGBcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIHdpZHRoOiAxMDBweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmIGB3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMTBweGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1TdGFjayA9IHN0eWxlZC5kaXYgYFxuICBvdmVyZmxvdzogaGlkZGVuO1xuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKTsgXG4gICAgIGRpc3BsYXk6IGZsZXg7IFxuICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBcbiAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kYH07XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID09PSAwID8gMCA6IDQpfXB4O1xuICB6LWluZGV4OiAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gaXNEcmFnZ2luZyB8fCBpc1Jlc2l6aW5nID8gTGF5ZXJzLlByb2dyYW0gKiAzIDogTGF5ZXJzLlByb2dyYW19O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICR7KHsgaXNEcmFnZ2luZywgaXNSZXNpemluZyB9KSA9PiAoIWlzRHJhZ2dpbmcgfHwgIWlzUmVzaXppbmcpICYmXHJcbiAgICBgICY6aG92ZXIge1xuICAgIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW0gKiAyfTtcblxuICAgICR7UHJvZ3JhbVJlc2l6ZUhhbmRsZX0ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1gfVxuXG4gICR7KHsgaXNEcmFnZ2luZywgaXNSZXNpemluZywgdGhlbWUgfSkgPT4gKGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZykgJiZcclxuICAgIGAgXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyZWVuWzIwMF19O1xuICAgIFxuICAgICR7UHJvZ3JhbUNvbnRlbnR9e1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbiAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtUmVzaXplSGFuZGxlID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDtcblxuICAkeyh7IGlzUmVzaXplIH0pID0+ICFpc1Jlc2l6ZSAmJiBcImRpc3BsYXk6IG5vbmU7XCJ9XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICR7bGVmdCA/IGB0b3A6IDA7YCA6IGBib3R0b206IDA7YH1cbiAgICBsZWZ0OjA7XG4gICAgaGVpZ2h0OjI1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogJHtsZWZ0ID8gXCJuLXJlc2l6ZVwiIDogXCJzLXJlc2l6ZVwifTtcbiAgYH1cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgICR7bGVmdCA/IGBsZWZ0OiAwO2AgOiBgcmlnaHQ6IDA7YH1cbiAgICB3aWR0aDogMjVweDtcbiAgICBjdXJzb3I6ICR7bGVmdCA/IFwidy1yZXNpemVcIiA6IFwiZS1yZXNpemVcIn07XG4gICAgYH1cblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JlZW5bMjAwXX07XG5cbiAgICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+ICFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYCAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGhlaWdodDogNTAlO1xuICAgICAgd2lkdGg6IDRweDtcbiAgICAgICAgJHtsZWZ0ID8gYGxlZnQ6IDlweDtgIDogYHJpZ2h0OiA5cHg7YH1cbiAgICAgICAgYH1cbiAgICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICAke2xlZnQgPyBgdG9wOiA5cHg7YCA6IGBib3R0b206IDlweDtgfVxuICAgICBsZWZ0OjUwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgXG4gICAgICAgIGB9XG4gIH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVByb2dyYW0uc3R5bGVzLmpzLm1hcCJdfQ== */")); +var ProgramFlex = /*#__PURE__*/_styled("div", { + target: "e1cx08bt6", + label: "ProgramFlex" +})("width:100%;display:flex;justify-content:flex-start;", function (_ref5) { + var isVerticalMode = _ref5.isVerticalMode; + return isVerticalMode && "flex-direction: column;"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCc0MiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Elipsis = "\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"; +var ProgramTitle = /*#__PURE__*/_styled("p", { + target: "e1cx08bt5", + label: "ProgramTitle" +})("font-size:14px;text-align:left;margin-top:0;margin-bottom:5px;font-weight:500;color:", function (_ref6) { + var theme = _ref6.theme; + return theme.grey[300]; +}, ";", Elipsis, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DcUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramText = /*#__PURE__*/_styled("span", { + target: "e1cx08bt4", + label: "ProgramText" +})("display:block;font-size:12.5px;font-weight:400;color:", function (_ref7) { + var theme = _ref7.theme; + return theme.text.grey[500]; +}, ";text-align:left;", Elipsis, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRDdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramImage = /*#__PURE__*/_styled("img", { + target: "e1cx08bt3", + label: "ProgramImage" +})("margin-right:15px;border-radius:6px;width:100px;", function (_ref8) { + var isVerticalMode = _ref8.isVerticalMode; + return isVerticalMode && "width: 100%; margin-bottom: 10px"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramStack = /*#__PURE__*/_styled("div", { + target: "e1cx08bt2", + label: "ProgramStack" +})("overflow:hidden;", function (_ref9) { + var isRTL = _ref9.isRTL; + return isRTL && "transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramBox = /*#__PURE__*/_styled("div", { + target: "e1cx08bt1", + label: "ProgramBox" +})("position:absolute;padding:", function (_ref10) { + var width = _ref10.width; + return width === 0 ? 0 : 4; +}, "px;z-index:", function (_ref11) { + var isDragging = _ref11.isDragging, + isResizing = _ref11.isResizing; + return isDragging || isResizing ? Layers.Program * 3 : Layers.Program; +}, ";overflow:hidden;", function (_ref12) { + var isDragging = _ref12.isDragging, + isResizing = _ref12.isResizing; + return (!isDragging || !isResizing) && " &:hover {\n z-index: " + Layers.Program * 2 + ";\n\n " + ProgramResizeHandle + " {\n opacity: 1;\n }\n }"; +}, " ", function (_ref13) { + var isDragging = _ref13.isDragging, + isResizing = _ref13.isResizing, + theme = _ref13.theme; + return (isDragging || isResizing) && " \n border-radius: 10px;\n background: " + theme.green[200] + ";\n \n " + ProgramContent + "{\n user-select: none;\n cursor: move;\n }\n "; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1FcUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramResizeHandle = /*#__PURE__*/_styled("div", { + target: "e1cx08bt0", + label: "ProgramResizeHandle" +})("position:absolute;opacity:0;", function (_ref14) { + var isResize = _ref14.isResize; + return !isResize && "display: none;"; +}, " ", function (_ref15) { + var isVerticalMode = _ref15.isVerticalMode, + left = _ref15.left; + return isVerticalMode && "\n " + (left ? "top: 0;" : "bottom: 0;") + "\n left:0;\n height:25px;\n width: 100%;\n cursor: " + (left ? "n-resize" : "s-resize") + ";\n "; +}, " ", function (_ref16) { + var isVerticalMode = _ref16.isVerticalMode, + left = _ref16.left; + return !isVerticalMode && "\n top: 0;\n bottom: 0;\n " + (left ? "left: 0;" : "right: 0;") + "\n width: 25px;\n cursor: " + (left ? "w-resize" : "e-resize") + ";\n "; +}, " &:after{content:\"\";position:absolute;margin:auto;border-radius:8px;background:", function (_ref17) { + var theme = _ref17.theme; + return theme.green[200]; +}, ";", function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + left = _ref18.left; + return !isVerticalMode && " top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n " + (left ? "left: 9px;" : "right: 9px;") + "\n "; +}, " ", function (_ref19) { + var isVerticalMode = _ref19.isVerticalMode, + left = _ref19.left; + return isVerticalMode && "\n " + (left ? "top: 9px;" : "bottom: 9px;") + "\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n "; +}, ";}" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZGOEMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$3, _templateObject2$2, _templateObject3$2, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14; +var TimelineTime = /*#__PURE__*/_styled("span", { + target: "e1bnz7pf6", + label: "TimelineTime" +})("position:absolute;top:13px;left:", function (_ref) { + var isRTL = _ref.isRTL, + isBaseTimeFormat = _ref.isBaseTimeFormat, + isVerticalMode = _ref.isVerticalMode, + isWeekMonthMode = _ref.isWeekMonthMode; + if (isVerticalMode) { + if (isRTL) return isBaseTimeFormat ? 9 : 17; + return isBaseTimeFormat ? 9 : 14; + } + if (isWeekMonthMode) return 0; + return isRTL && isBaseTimeFormat ? "-32" : "-18"; +}, "px;color:", function (_ref2) { + var theme = _ref2.theme; + return theme.text.grey[300]; +}, ";", function (_ref3) { + var isRTL = _ref3.isRTL; + return isRTL && "\n transform: scale(-1, 1);\n "; +}, " ", function (_ref4) { + var theme = _ref4.theme, + isNewDay = _ref4.isNewDay; + return isNewDay && "color: " + theme.teal[100] + "; font-weight: 600"; +}, ";", function (_ref5) { + var isVerticalMode = _ref5.isVerticalMode, + isRTL = _ref5.isRTL; + return isVerticalMode && react.css(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose(["\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ", ";\n "])), isRTL ? "scale(-1,1)" : ""); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHd0MiLCJmaWxlIjoiVGltZWxpbmUuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVUaW1lID0gc3R5bGVkLnNwYW4gYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTNweDtcbiAgbGVmdDogJHsoeyBpc1JUTCwgaXNCYXNlVGltZUZvcm1hdCwgaXNWZXJ0aWNhbE1vZGUsIGlzV2Vla01vbnRoTW9kZSB9KSA9PiB7XHJcbiAgICBpZiAoaXNWZXJ0aWNhbE1vZGUpIHtcclxuICAgICAgICBpZiAoaXNSVEwpXHJcbiAgICAgICAgICAgIHJldHVybiBpc0Jhc2VUaW1lRm9ybWF0ID8gOSA6IDE3O1xyXG4gICAgICAgIHJldHVybiBpc0Jhc2VUaW1lRm9ybWF0ID8gOSA6IDE0O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzV2Vla01vbnRoTW9kZSlcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIHJldHVybiBpc1JUTCAmJiBpc0Jhc2VUaW1lRm9ybWF0ID8gXCItMzJcIiA6IFwiLTE4XCI7XHJcbn19cHg7XG5cbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuXG4gICR7KHsgaXNSVEwgfSkgPT4gaXNSVEwgJiZcclxuICAgIGBcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICAgIGB9XG5cbiAgJHsoeyB0aGVtZSwgaXNOZXdEYXkgfSkgPT4gaXNOZXdEYXkgJiYgYGNvbG9yOiAke3RoZW1lLnRlYWxbMTAwXX07IGZvbnQtd2VpZ2h0OiA2MDBgfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogLTEwcHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwJSkgJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwiXCJ9O1xuICAgIGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV2Vla01vbnRoRGF0ZSA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm06ICR7KHsgaXNSVEwgfSkgPT4gKGlzUlRMID8gXCJzY2FsZSgtMSwxKVwiIDogXCJzY2FsZSgxLDEpXCIpfTtcblxuICBzcGFuIHtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50ZXh0LmdyZXlbMzAwXX07XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICB9XG5cbiAgJHsoeyBzdHlsZVR5cGUsIHRoZW1lIH0pID0+IHN0eWxlVHlwZSA9PT0gXCJtb2Rlcm5cIiAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHNwYW46Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIH1cbiAgICAgIHNwYW4ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZXh0LmdyZXlbMzAwXX07XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIH1cbiAgICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzUlRMIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgdHJhbnNmb3JtOiAke2lzUlRMID8gXCJzY2FsZSgtMSwxKVwiIDogXCJzY2FsZSgxLDEpXCJ9O1xuICAgIGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lRGl2aWRlcnMgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNnB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICBoZWlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAxcHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIH1cbiAgICBgfVxuXG4gICR7KHsgaXNOZXdEYXksIHRoZW1lIH0pID0+IGlzTmV3RGF5ICYmXHJcbiAgICBgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHdpZHRoOjJweDtcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUudGVhbFsxMDBdfTtcbiAgfWB9XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCwgZGF5V2lkdGgsIHRoZW1lLCB9KSA9PiBjc3MgYFxuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgICAgIHotaW5kZXg6ICR7TGF5ZXJzLlRpbWVsaW5lfTtcblxuICAgICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYm90dG9tOiAwcHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgYH1cblxuICAgICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgICBoZWlnaHQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIHdpZHRoOiAke2RheVdpZHRofXB4O1xuICAgICAgYH1cbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lQm94ID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQsIHdpZHRoLCB0aW1lbGluZUhlaWdodCwgdGhlbWUgfSkgPT4gY3NzIGBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbGVmdDogJHtsZWZ0fXB4O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYH1cbiAgICAke2lzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBoZWlnaHQ6ICR7d2lkdGh9cHg7XG4gICAgICB3aWR0aDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICBgfVxuICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzVG9kYXksIGlzQ3VycmVudFRpbWUsIGlzVG9kYXlJbkhvdXJzSW5EYXlzLCBhcmVIb3Vyc0luRGF5cywgaXNXZWVrTW9udGhNb2RlLCB9KSA9PiB7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyRGVmYXVsdCA9IGlzVG9kYXkgJiYgaXNDdXJyZW50VGltZSA/IDIgOiAxO1xyXG4gICAgY29uc3QgdHlwZU51bWJlckluSG91cnNEYXlzID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IGlzVG9kYXlJbkhvdXJzSW5EYXlzICYmIGlzQ3VycmVudFRpbWVcclxuICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgIDogMVxyXG4gICAgICAgIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXIgPSBhcmVIb3Vyc0luRGF5c1xyXG4gICAgICAgID8gdHlwZU51bWJlckluSG91cnNEYXlzXHJcbiAgICAgICAgOiB0eXBlTnVtYmVyRGVmYXVsdDtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gaXNWZXJ0aWNhbE1vZGUgPyBcInRvcFwiIDogXCJsZWZ0XCI7XHJcbiAgICBpZiAoIWlzV2Vla01vbnRoTW9kZSkge1xyXG4gICAgICAgIHJldHVybiBgJjpudGgtb2YtdHlwZSgke3R5cGVOdW1iZXJ9KSB7XG4gICAgICAgICR7VGltZWxpbmVUaW1lfSB7XG4gICAgICAgICAgJHtwb3NpdGlvbn06IDBweDtcbiAgICAgICAgfVxuICAgICAgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxufX1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aEJveCA9IHN0eWxlZChUaW1lbGluZUJveCkgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBzdHlsZVR5cGUsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUudGltZWxpbmUuZGl2aWRlci5iZ307XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAgICAgICAke2lzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAke3N0eWxlVHlwZSA9PT0gXCJtb2Rlcm5cIiA/IFwiMzUlXCIgOiBcIjcwJVwifTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lLnN0eWxlcy5qcy5tYXAiXX0= */")); +var TimelineWeekMonthDate = /*#__PURE__*/_styled("div", { + target: "e1bnz7pf5", + label: "TimelineWeekMonthDate" +})("display:flex;justify-content:center;align-items:center;flex-direction:column;height:100%;transform:", function (_ref6) { + var isRTL = _ref6.isRTL; + return isRTL ? "scale(-1,1)" : "scale(1,1)"; +}, ";span{color:", function (_ref7) { + var theme = _ref7.theme; + return theme.text.grey[300]; +}, ";font-size:16px;}", function (_ref8) { + var styleType = _ref8.styleType, + theme = _ref8.theme; + return styleType === "modern" && react.css(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose(["\n span:first-of-type {\n font-weight: 500;\n color: ", ";\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ", ";\n font-size: 24px;\n }\n "])), theme.teal[100], theme.text.grey[300]); +}, " ", function (_ref9) { + var isVerticalMode = _ref9.isVerticalMode, + isRTL = _ref9.isRTL; + return isVerticalMode && react.css(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose(["\n margin-top: 0px;\n transform: ", ";\n "])), isRTL ? "scale(-1,1)" : "scale(1,1)"); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ2dEIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineDividers = /*#__PURE__*/_styled("div", { + target: "e1bnz7pf4", + label: "TimelineDividers" +})("position:relative;height:100%;width:100%;padding-bottom:6px;", function (_ref10) { + var isVerticalMode = _ref10.isVerticalMode; + return isVerticalMode && react.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n grid-template-columns: 1fr;\n align-items: start;\n "]))); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRTJDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineDivider = /*#__PURE__*/_styled("div", { + target: "e1bnz7pf3", + label: "TimelineDivider" +})("position:absolute;bottom:6px;background:", function (_ref11) { + var theme = _ref11.theme; + return theme.timeline.divider.bg; +}, ";height:10px;width:1px;left:", function (_ref12) { + var left = _ref12.left; + return left; +}, "px;", function (_ref13) { + var isVerticalMode = _ref13.isVerticalMode, + left = _ref13.left; + return isVerticalMode && react.css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n "])), left); +}, " ", function (_ref14) { + var isNewDay = _ref14.isNewDay, + theme = _ref14.theme; + return isNewDay && "&:first-of-type {\n width:2px;\n background: " + theme.teal[100] + ";\n }"; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RTBDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineWrapper = /*#__PURE__*/_styled("div", { + target: "e1bnz7pf2", + label: "TimelineWrapper" +})(function (_ref15) { + var isVerticalMode = _ref15.isVerticalMode, + isSidebar = _ref15.isSidebar, + sidebarWidth = _ref15.sidebarWidth, + timelineHeight = _ref15.timelineHeight, + dayWidth = _ref15.dayWidth, + theme = _ref15.theme; + return react.css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n position: sticky;\n background: ", ";\n z-index: ", ";\n\n ", "\n\n ", "\n "])), theme.primary[900], Layers.Timeline, isVerticalMode && react.css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n left: 0;\n bottom: 0px;\n float: left;\n width: ", "px;\n margin-top: ", "px;\n "])), timelineHeight, isSidebar ? sidebarWidth : 0), !isVerticalMode && react.css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), isSidebar ? sidebarWidth : 0, timelineHeight, dayWidth)); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RzBDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineBox = /*#__PURE__*/_styled("div", { + target: "e1bnz7pf1", + label: "TimelineBox" +})(function (_ref16) { + var isVerticalMode = _ref16.isVerticalMode, + left = _ref16.left, + width = _ref16.width, + timelineHeight = _ref16.timelineHeight, + theme = _ref16.theme; + return react.css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n position: absolute;\n font-size: 14px;\n background-color: ", ";\n\n ", "\n ", "\n "])), theme.primary[900], !isVerticalMode && react.css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n left: ", "px;\n width: ", "px;\n height: 100%;\n "])), left, width), isVerticalMode && react.css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n height: ", "px;\n width: ", "px;\n "])), left, width, timelineHeight)); +}, " ", function (_ref17) { + var isVerticalMode = _ref17.isVerticalMode, + isToday = _ref17.isToday, + isCurrentTime = _ref17.isCurrentTime, + isTodayInHoursInDays = _ref17.isTodayInHoursInDays, + areHoursInDays = _ref17.areHoursInDays, + isWeekMonthMode = _ref17.isWeekMonthMode; + var typeNumberDefault = isToday && isCurrentTime ? 2 : 1; + var typeNumberInHoursDays = areHoursInDays ? isTodayInHoursInDays && isCurrentTime ? 2 : 1 : 1; + var typeNumber = areHoursInDays ? typeNumberInHoursDays : typeNumberDefault; + var position = isVerticalMode ? "top" : "left"; + if (!isWeekMonthMode) { + return "&:nth-of-type(" + typeNumber + ") {\n " + TimelineTime + " {\n " + position + ": 0px;\n }\n }"; + } + return ""; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpSXNDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineWeekMonthBox = /*#__PURE__*/_styled(TimelineBox, { + target: "e1bnz7pf0", + label: "TimelineWeekMonthBox" +})(function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + styleType = _ref18.styleType, + theme = _ref18.theme; + return react.css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n &:not(:last-of-type) {\n &:after {\n content: \"\";\n position: absolute;\n background: ", ";\n transform: translate(-50%, -50%);\n\n ", "\n }\n }\n "])), theme.timeline.divider.bg, isVerticalMode ? react.css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n bottom: 0;\n height: 1px;\n width: 80%;\n "]))) : react.css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n top: 50%;\n right: 0;\n height: 100%;\n height: ", ";\n width: 1px;\n "])), styleType === "modern" ? "35%" : "70%")); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwS3dEIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); + +var lineStyles = { + position: "absolute", + top: 64, + width: 3 +}; +var LineBox = /*#__PURE__*/_styled("div", { + target: "ef4is9g0", + label: "LineBox" +})("position:", lineStyles.position, ";top:", function (_ref) { + var isTimeline = _ref.isTimeline; + return isTimeline ? lineStyles.top : 0; +}, "px;left:", function (_ref2) { + var left = _ref2.left; + return left; +}, "px;height:", function (_ref3) { + var height = _ref3.height; + return height; +}, "px;width:", lineStyles.width, "px;background:", function (_ref4) { + var theme = _ref4.theme; + return theme.green[300]; +}, ";pointer-events:none;z-index:", function (_ref5) { + var zIndex = _ref5.zIndex; + return zIndex; +}, ";", function (_ref6) { + var isVerticalMode = _ref6.isVerticalMode, + isTimeline = _ref6.isTimeline, + left = _ref6.left, + height = _ref6.height; + return isVerticalMode && " \n top: " + left + "px;\n left: " + (isTimeline ? lineStyles.top : 0) + "px;\n height: " + lineStyles.width + "px;\n width: " + height + "px;\n "; +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpbmUuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1rQyIsImZpbGUiOiJMaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5leHBvcnQgY29uc3QgbGluZVN0eWxlcyA9IHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICB0b3A6IDY0LFxyXG4gICAgd2lkdGg6IDMsXHJcbn07XHJcbmV4cG9ydCBjb25zdCBMaW5lQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiAke2xpbmVTdHlsZXMucG9zaXRpb259O1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSB9KSA9PiAoaXNUaW1lbGluZSA/IGxpbmVTdHlsZXMudG9wIDogMCl9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7bGluZVN0eWxlcy53aWR0aH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmVlblszMDBdfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6ICR7KHsgekluZGV4IH0pID0+IHpJbmRleH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgbGVmdCwgaGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgIFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyBsaW5lU3R5bGVzLnRvcCA6IDB9cHg7XG4gICAgICBoZWlnaHQ6ICR7bGluZVN0eWxlcy53aWR0aH1weDtcbiAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpbmUuc3R5bGVzLmpzLm1hcCJdfQ== */")); + +var _templateObject$4; +var time = [0, 50, 0]; +var moveLeft = function moveLeft(animate) { + return react.keyframes(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteralLoose(["\n", "\n"])), time.map(function (item, index) { + return item + "% {\n transform: translateX(-" + animate.right[index] + ");\n}"; + })); +}; +var Box$2 = /*#__PURE__*/_styled("div", { + target: "e8ysujy1", + label: "Box" +})("position:absolute;top:0;left:0;bottom:0;width:100%;background:", function (_ref) { + var theme = _ref.theme; + return theme.loader.bg; +}, ";display:flex;justify-content:center;align-items:center;z-index:", Layers.Loader, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvYWRlci5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUzhCIiwiZmlsZSI6IkxvYWRlci5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmNvbnN0IHRpbWUgPSBbMCwgNTAsIDBdO1xyXG5jb25zdCBtb3ZlTGVmdCA9IChhbmltYXRlKSA9PiBrZXlmcmFtZXMgYFxuJHt0aW1lLm1hcCgoaXRlbSwgaW5kZXgpID0+IGAke2l0ZW19JSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHthbmltYXRlLnJpZ2h0W2luZGV4XX0pO1xufWApfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5sb2FkZXIuYmd9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogJHtMYXllcnMuTG9hZGVyfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBTaGFwZSA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aCAqIDAuNDJ9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUsIGNvbG9yIH0pID0+IHRoZW1lLmxvYWRlcltjb2xvcl19O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDQ1cHg7XG4gIG1hcmdpbi1yaWdodDogJHsoeyBtYXJnaW5SaWdodCB9KSA9PiBtYXJnaW5SaWdodCA/PyAwfXB4O1xuICBhbmltYXRpb24tbmFtZTogJHsoeyBhbmltYXRlIH0pID0+IG1vdmVMZWZ0KGFuaW1hdGUpfTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkeyh7IHRyYW5zaXRpb24gfSkgPT4gdHJhbnNpdGlvbi5kdXJhdGlvbn1zO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkeyh7IHRyYW5zaXRpb24gfSkgPT4gdHJhbnNpdGlvbi5lYXNlID8/IFwiZWFzZS1pbi1vdXRcIn07XG4gIGFuaW1hdGlvbi1kZWxheTogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZGVsYXkgPz8gMH1zO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxvYWRlci5zdHlsZXMuanMubWFwIl19 */")); +var Shape = /*#__PURE__*/_styled("div", { + target: "e8ysujy0", + label: "Shape" +})("width:", function (_ref2) { + var width = _ref2.width; + return width * 0.42; +}, "px;background:", function (_ref3) { + var theme = _ref3.theme, + color = _ref3.color; + return theme.loader[color]; +}, ";height:18px;border-radius:45px;margin-right:", function (_ref4) { + var marginRight = _ref4.marginRight; + return marginRight != null ? marginRight : 0; +}, "px;animation-name:", function (_ref5) { + var animate = _ref5.animate; + return moveLeft(animate); +}, ";animation-duration:", function (_ref6) { + var transition = _ref6.transition; + return transition.duration; +}, "s;animation-timing-function:", function (_ref7) { + var _transition$ease; + var transition = _ref7.transition; + return (_transition$ease = transition.ease) != null ? _transition$ease : "ease-in-out"; +}, ";animation-delay:", function (_ref8) { + var _transition$delay; + var transition = _ref8.transition; + return (_transition$delay = transition.delay) != null ? _transition$delay : 0; +}, "s;animation-iteration-count:infinite;" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvYWRlci5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJnQyIsImZpbGUiOiJMb2FkZXIuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5jb25zdCB0aW1lID0gWzAsIDUwLCAwXTtcclxuY29uc3QgbW92ZUxlZnQgPSAoYW5pbWF0ZSkgPT4ga2V5ZnJhbWVzIGBcbiR7dGltZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBgJHtpdGVtfSUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSR7YW5pbWF0ZS5yaWdodFtpbmRleF19KTtcbn1gKX1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUubG9hZGVyLmJnfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6ICR7TGF5ZXJzLkxvYWRlcn07XG5gO1xyXG5leHBvcnQgY29uc3QgU2hhcGUgPSBzdHlsZWQuZGl2IGBcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGggKiAwLjQyfXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lLCBjb2xvciB9KSA9PiB0aGVtZS5sb2FkZXJbY29sb3JdfTtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiA0NXB4O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgbWFyZ2luUmlnaHQgfSkgPT4gbWFyZ2luUmlnaHQgPz8gMH1weDtcbiAgYW5pbWF0aW9uLW5hbWU6ICR7KHsgYW5pbWF0ZSB9KSA9PiBtb3ZlTGVmdChhbmltYXRlKX07XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZHVyYXRpb259cztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZWFzZSA/PyBcImVhc2UtaW4tb3V0XCJ9O1xuICBhbmltYXRpb24tZGVsYXk6ICR7KHsgdHJhbnNpdGlvbiB9KSA9PiB0cmFuc2l0aW9uLmRlbGF5ID8/IDB9cztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Mb2FkZXIuc3R5bGVzLmpzLm1hcCJdfQ== */")); + +var _templateObject$5, _templateObject2$3, _templateObject3$3; +var boxStyles = function boxStyles(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + width = _ref.width; + return { + position: "absolute", + top: 0, + width: width != null ? width : 70, + height: 20 + }; +}; +var CurrentTimeBox = /*#__PURE__*/_styled("div", { + target: "e1b7bm21", + label: "CurrentTimeBox" +})("position:", /*#__PURE__*/boxStyles().position, ";top:", function (_ref2) { + var top = _ref2.top; + return top; +}, "px;left:", function (_ref3) { + var left = _ref3.left; + return left; +}, "px;width:", function (_ref4) { + var width = _ref4.width; + return typeof width === "string" ? "auto" : width + "px"; +}, ";height:", /*#__PURE__*/boxStyles().height, "px;background-color:", function (_ref5) { + var theme = _ref5.theme; + return theme.primary[900]; +}, ";z-index:2;" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1cnJlbnRUaW1lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFReUMiLCJmaWxlIjoiQ3VycmVudFRpbWUuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5leHBvcnQgY29uc3QgYm94U3R5bGVzID0gKHsgd2lkdGggfSA9IHt9KSA9PiAoe1xyXG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcclxuICAgIHRvcDogMCxcclxuICAgIHdpZHRoOiB3aWR0aCA/PyA3MCxcclxuICAgIGhlaWdodDogMjAsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgQ3VycmVudFRpbWVCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246ICR7Ym94U3R5bGVzKCkucG9zaXRpb259O1xuICB0b3A6ICR7KHsgdG9wIH0pID0+IHRvcH1weDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIHdpZHRoOiAkeyh7IHdpZHRoIH0pID0+ICh0eXBlb2Ygd2lkdGggPT09IFwic3RyaW5nXCIgPyBcImF1dG9cIiA6IGAke3dpZHRofXB4YCl9O1xuICBoZWlnaHQ6ICR7Ym94U3R5bGVzKCkuaGVpZ2h0fXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIHotaW5kZXg6IDI7XG5gO1xyXG5leHBvcnQgY29uc3QgQ3VycmVudFRpbWVDb250ZW50ID0gc3R5bGVkLnNwYW4gYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc0Jhc2VUaW1lRm9ybWF0LCBpc1JUTCwgaXNOZXdEYXksIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAke3RoZW1lLmdyZWVuWzIwMF19O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgICAke2lzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgICAke2lzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwiXCJ9O1xuICAgIGB9XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogNHB4O1xuICAgICAgbGVmdDogJHtpc1JUTCAmJiBpc0Jhc2VUaW1lRm9ybWF0ID8gXCItMzJcIiA6IFwiLTE2XCJ9cHg7XG4gICAgICAke2lzUlRMICYmIFwidHJhbnNmb3JtOiBzY2FsZSgtMSwxKTtcIn1cbiAgICBgfVxuICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q3VycmVudFRpbWUuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var CurrentTimeContent = /*#__PURE__*/_styled("span", { + target: "e1b7bm20", + label: "CurrentTimeContent" +})(function (_ref6) { + var isVerticalMode = _ref6.isVerticalMode, + isBaseTimeFormat = _ref6.isBaseTimeFormat, + isRTL = _ref6.isRTL, + isNewDay = _ref6.isNewDay, + theme = _ref6.theme; + return react.css(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ", ";\n background-color: ", ";\n ", ";\n\n ", "\n\n ", "\n "])), theme.green[200], theme.primary[900], isNewDay && "color: " + theme.teal[100] + "; font-weight: 600", isVerticalMode && react.css(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["\n left: 50%;\n transform: translate(-50%, -50%) ", ";\n "])), isRTL ? "scale(-1,1)" : ""), !isVerticalMode && react.css(_templateObject3$3 || (_templateObject3$3 = _taggedTemplateLiteralLoose(["\n top: 4px;\n left: ", "px;\n ", "\n "])), isRTL && isBaseTimeFormat ? "-32" : "-16", isRTL && "transform: scale(-1,1);")); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1cnJlbnRUaW1lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjhDIiwiZmlsZSI6IkN1cnJlbnRUaW1lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IGJveFN0eWxlcyA9ICh7IHdpZHRoIH0gPSB7fSkgPT4gKHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICB0b3A6IDAsXHJcbiAgICB3aWR0aDogd2lkdGggPz8gNzAsXHJcbiAgICBoZWlnaHQ6IDIwLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IEN1cnJlbnRUaW1lQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiAke2JveFN0eWxlcygpLnBvc2l0aW9ufTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAodHlwZW9mIHdpZHRoID09PSBcInN0cmluZ1wiID8gXCJhdXRvXCIgOiBgJHt3aWR0aH1weGApfTtcbiAgaGVpZ2h0OiAke2JveFN0eWxlcygpLmhlaWdodH1weDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAyO1xuYDtcclxuZXhwb3J0IGNvbnN0IEN1cnJlbnRUaW1lQ29udGVudCA9IHN0eWxlZC5zcGFuIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNCYXNlVGltZUZvcm1hdCwgaXNSVEwsIGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgJHtpc05ld0RheSAmJiBgY29sb3I6ICR7dGhlbWUudGVhbFsxMDBdfTsgZm9udC13ZWlnaHQ6IDYwMGB9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfVxuXG4gICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IDRweDtcbiAgICAgIGxlZnQ6ICR7aXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xNlwifXB4O1xuICAgICAgJHtpc1JUTCAmJiBcInRyYW5zZm9ybTogc2NhbGUoLTEsMSk7XCJ9XG4gICAgYH1cbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUN1cnJlbnRUaW1lLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$6, _templateObject2$4, _templateObject3$4, _templateObject4$1, _templateObject5$1, _templateObject6$1; +function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var AreaFiled = /*#__PURE__*/_styled("div", { + target: "euzzuzq2", + label: "AreaFiled" +})("position:absolute;pointer-events:", function (props) { + return props.isClickable ? "auto" : "none"; +}, ";cursor:", function (props) { + return props.isClickable ? "pointer" : "none"; +}, ";z-index:", Layers.Area, ";", function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + positionX = _ref.positionX, + height = _ref.height, + width = _ref.width, + timelineHeight = _ref.timelineHeight; + return isVerticalMode ? react.css(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), positionX, timelineHeight, width, height) : react.css(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), timelineHeight, positionX, height, width); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlvQyIsImZpbGUiOiJBcmVhLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG4vLyBJbXBvcnQgaGVscGVyc1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuZXhwb3J0IGNvbnN0IEFyZWFGaWxlZCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJhdXRvXCIgOiBcIm5vbmVcIil9O1xuICBjdXJzb3I6ICR7KHByb3BzKSA9PiAocHJvcHMuaXNDbGlja2FibGUgPyBcInBvaW50ZXJcIiA6IFwibm9uZVwiKX07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLkFyZWF9O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIHBvc2l0aW9uWCwgaGVpZ2h0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGVcclxuICAgID8gY3NzIGBcbiAgICAgICAgICB0b3A6ICR7cG9zaXRpb25YfXB4O1xuICAgICAgICAgIGxlZnQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgICAgICAgYFxyXG4gICAgOiBjc3MgYFxuICAgICAgICAgIHRvcDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgICBsZWZ0OiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBoZWlnaHQ6ICR7aGVpZ2h0fXB4O1xuICAgICAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEFyZWFCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQW5ub3RhdGlvbiA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA0cHggNnB4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIHdpZHRoOiBtYXgtY29udGVudDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc0xlZnQgPSBmYWxzZSwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGNzcyBgXG4gICAgJHshaXNWZXJ0aWNhbE1vZGVcclxuICAgID8gY3NzIGBcbiAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgIHRvcDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgICAke2lzTGVmdFxyXG4gICAgICAgID8gYGZsb2F0OmxlZnQ7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtgXHJcbiAgICAgICAgOiBgZmxvYXQ6cmlnaHQ7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O2B9XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgIGxlZnQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgICAgICAgICR7aXNMZWZ0ICYmIGNzcyBgYCA/IGB0b3A6IDA7IGAgOiBgbWFyZ2luLXRvcDoke3dpZHRoIC0gNjB9cHg7YH1cbiAgICAgICAgYH1cbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFyZWEuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var AreaBg = /*#__PURE__*/_styled("div", { + target: "euzzuzq1", + label: "AreaBg" +})( { + name: "1b4920d", + styles: "position:absolute;top:0;left:0;width:100%;height:100%", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCaUMiLCJmaWxlIjoiQXJlYS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuLy8gSW1wb3J0IGhlbHBlcnNcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmV4cG9ydCBjb25zdCBBcmVhRmlsZWQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogJHsocHJvcHMpID0+IChwcm9wcy5pc0NsaWNrYWJsZSA/IFwiYXV0b1wiIDogXCJub25lXCIpfTtcbiAgY3Vyc29yOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJwb2ludGVyXCIgOiBcIm5vbmVcIil9O1xuICB6LWluZGV4OiAke0xheWVycy5BcmVhfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBwb3NpdGlvblgsIGhlaWdodCwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgdG9wOiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgICAgICB3aWR0aDogJHtoZWlnaHR9cHg7XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgbGVmdDogJHtwb3NpdGlvblh9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xyXG5leHBvcnQgY29uc3QgQXJlYUFubm90YXRpb24gPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNMZWZ0ID0gZmFsc2UsIHdpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBjc3MgYFxuICAgICR7IWlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgJHtpc0xlZnRcclxuICAgICAgICA/IGBmbG9hdDpsZWZ0OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7YFxyXG4gICAgICAgIDogYGZsb2F0OnJpZ2h0OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtgfVxuICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICAke2lzTGVmdCAmJiBjc3MgYGAgPyBgdG9wOiAwOyBgIDogYG1hcmdpbi10b3A6JHt3aWR0aCAtIDYwfXB4O2B9XG4gICAgICAgIGB9XG4gIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcmVhLnN0eWxlcy5qcy5tYXAiXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 +}); +var AreaAnnotation = /*#__PURE__*/_styled("div", { + target: "euzzuzq0", + label: "AreaAnnotation" +})("padding:4px 6px;font-size:15px;width:max-content;", function (_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + _ref2$isLeft = _ref2.isLeft, + isLeft = _ref2$isLeft === void 0 ? false : _ref2$isLeft, + width = _ref2.width, + timelineHeight = _ref2.timelineHeight; + return react.css(_templateObject3$4 || (_templateObject3$4 = _taggedTemplateLiteralLoose(["\n ", "\n "])), !isVerticalMode ? react.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n top: ", "px;\n ", "\n "])), timelineHeight, isLeft ? "float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;" : "float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;") : react.css(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n left: ", "px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ", "\n "])), timelineHeight, isLeft && react.css(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose([""]))) ? "top: 0; " : "margin-top:" + (width - 60) + "px;")); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStCeUMiLCJmaWxlIjoiQXJlYS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuLy8gSW1wb3J0IGhlbHBlcnNcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmV4cG9ydCBjb25zdCBBcmVhRmlsZWQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogJHsocHJvcHMpID0+IChwcm9wcy5pc0NsaWNrYWJsZSA/IFwiYXV0b1wiIDogXCJub25lXCIpfTtcbiAgY3Vyc29yOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJwb2ludGVyXCIgOiBcIm5vbmVcIil9O1xuICB6LWluZGV4OiAke0xheWVycy5BcmVhfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBwb3NpdGlvblgsIGhlaWdodCwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgdG9wOiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgICAgICB3aWR0aDogJHtoZWlnaHR9cHg7XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgbGVmdDogJHtwb3NpdGlvblh9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xyXG5leHBvcnQgY29uc3QgQXJlYUFubm90YXRpb24gPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNMZWZ0ID0gZmFsc2UsIHdpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBjc3MgYFxuICAgICR7IWlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgJHtpc0xlZnRcclxuICAgICAgICA/IGBmbG9hdDpsZWZ0OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7YFxyXG4gICAgICAgIDogYGZsb2F0OnJpZ2h0OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtgfVxuICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICAke2lzTGVmdCAmJiBjc3MgYGAgPyBgdG9wOiAwOyBgIDogYG1hcmdpbi10b3A6JHt3aWR0aCAtIDYwfXB4O2B9XG4gICAgICAgIGB9XG4gIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcmVhLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$7, _templateObject2$5, _templateObject3$5; +function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var GridContainer = /*#__PURE__*/_styled("div", { + target: "eopf81a3", + label: "GridContainer" +})( { + name: "1jykxby", + styles: "position:absolute;top:0;left:0;height:100%;width:100%;z-index:1", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV3QyIsImZpbGUiOiJHcmlkLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IEdyaWRDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNTaWRlYmFyLCBpc1RpbWVsaW5lLCBzaWRlYmFyV2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgIHRvcDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZEl0ZW0gPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wIH0pID0+IHRvcH1weDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gaGVpZ2h0fXB4O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyaWQuaXRlbX07XG4gIHotaW5kZXg6IDE7XG5cbiAgJHsoeyBpc0RheU1vZGUsIGlzSG92ZXJIaWdobGlnaHQsIGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+ICFpc0RheU1vZGUgJiZcclxuICAgIGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuICAgICR7aXNEcmFnT3ZlciAmJiBgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07YH1cbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWREaXZpZGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAkeyh7IHdpZHRoIH0pID0+IHdpZHRofXB4O1xuXG4gICR7KHsgaXNIb3ZlckhpZ2hsaWdodCwgdGhlbWUgfSkgPT4gaXNIb3ZlckhpZ2hsaWdodCAmJlxyXG4gICAgYFxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07XG4gICAgfSAgIFxuXG5cbiAgICBgfVxuICAkeyh7IGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+IGlzRHJhZ092ZXIgJiZcclxuICAgIGBcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTsgXG5cbiAgICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQsIHdpZHRoLCB0aGVtZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHt0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICAgIGB9XG5cbiAgJHsoeyBpc0l0ZW1DbGlja2FibGUgfSkgPT4gaXNJdGVtQ2xpY2thYmxlICYmXHJcbiAgICBjc3MgYFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1HcmlkLnN0eWxlcy5qcy5tYXAiXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3 +}); +var GridItem = /*#__PURE__*/_styled("div", { + target: "eopf81a1", + label: "GridItem" +})("position:absolute;top:", function (_ref4) { + var top = _ref4.top; + return top; +}, "px;left:", function (_ref5) { + var left = _ref5.left; + return left; +}, "px;height:", function (_ref6) { + var height = _ref6.height; + return height; +}, "px;width:", function (_ref7) { + var width = _ref7.width; + return width; +}, "px;border:1px solid transparent;border-right-color:", function (_ref8) { + var theme = _ref8.theme; + return theme.grid.item; +}, ";border-bottom-color:", function (_ref9) { + var theme = _ref9.theme; + return theme.grid.item; +}, ";z-index:1;", function (_ref10) { + var isDayMode = _ref10.isDayMode, + isHoverHighlight = _ref10.isHoverHighlight, + isDragOver = _ref10.isDragOver, + theme = _ref10.theme; + return !isDayMode && isHoverHighlight && "\n &:hover {\n border: 1px solid " + theme.grid.highlight + ";\n } \n\n " + (isDragOver && "border: 1px solid " + theme.grid.highlight + ";") + "\n "; +}, " ", function (_ref11) { + var isItemClickable = _ref11.isItemClickable; + return isItemClickable && react.css(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteralLoose(["\n cursor: pointer;\n "]))); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCbUMiLCJmaWxlIjoiR3JpZC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBHcmlkQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxO1xuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAkeyh7IGlzVGltZWxpbmUsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gIGxlZnQ6ICR7KHsgaXNTaWRlYmFyLCBzaWRlYmFyV2lkdGggfSkgPT4gKGlzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDApfXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgaXNUaW1lbGluZSwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRJdGVtID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGh9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5pdGVtfTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICB6LWluZGV4OiAxO1xuXG4gICR7KHsgaXNEYXlNb2RlLCBpc0hvdmVySGlnaGxpZ2h0LCBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiAhaXNEYXlNb2RlICYmXHJcbiAgICBpc0hvdmVySGlnaGxpZ2h0ICYmXHJcbiAgICBgXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTtcbiAgICB9ICAgXG5cbiAgICAke2lzRHJhZ092ZXIgJiYgYGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O2B9XG4gICAgYH1cblxuICAkeyh7IGlzSXRlbUNsaWNrYWJsZSB9KSA9PiBpc0l0ZW1DbGlja2FibGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBHcmlkRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcblxuICAkeyh7IGlzSG92ZXJIaWdobGlnaHQsIHRoZW1lIH0pID0+IGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuXG4gICAgYH1cbiAgJHsoeyBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiBpc0RyYWdPdmVyICYmXHJcbiAgICBgXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07IFxuXG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGhlbWUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7dGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZC5zdHlsZXMuanMubWFwIl19 */")); +var GridDivider = /*#__PURE__*/_styled("div", { + target: "eopf81a0", + label: "GridDivider" +})("position:absolute;top:0;left:", function (_ref12) { + var left = _ref12.left; + return left; +}, "px;border:1px solid transparent;border-right-color:", function (_ref13) { + var theme = _ref13.theme; + return theme.grid.divider; +}, ";height:100%;width:", function (_ref14) { + var width = _ref14.width; + return width; +}, "px;", function (_ref15) { + var isHoverHighlight = _ref15.isHoverHighlight, + theme = _ref15.theme; + return isHoverHighlight && "\n &:hover {\n border: 1px solid " + theme.grid.highlight + ";\n } \n\n\n "; +}, " ", function (_ref16) { + var isDragOver = _ref16.isDragOver, + theme = _ref16.theme; + return isDragOver && "\n border: 1px solid " + theme.grid.highlight + "; \n\n "; +}, " ", function (_ref17) { + var isVerticalMode = _ref17.isVerticalMode, + left = _ref17.left, + width = _ref17.width, + theme = _ref17.theme; + return isVerticalMode && react.css(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: 0;\n width: 100%;\n height: ", "px;\n border-bottom-color: ", ";\n "])), left, width, theme.grid.divider); +}, " ", function (_ref18) { + var isItemClickable = _ref18.isItemClickable; + return isItemClickable && react.css(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteralLoose(["\n cursor: pointer;\n "]))); +}, ";" + ( "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDc0MiLCJmaWxlIjoiR3JpZC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBHcmlkQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxO1xuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAkeyh7IGlzVGltZWxpbmUsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gIGxlZnQ6ICR7KHsgaXNTaWRlYmFyLCBzaWRlYmFyV2lkdGggfSkgPT4gKGlzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDApfXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgaXNUaW1lbGluZSwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRJdGVtID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGh9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5pdGVtfTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICB6LWluZGV4OiAxO1xuXG4gICR7KHsgaXNEYXlNb2RlLCBpc0hvdmVySGlnaGxpZ2h0LCBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiAhaXNEYXlNb2RlICYmXHJcbiAgICBpc0hvdmVySGlnaGxpZ2h0ICYmXHJcbiAgICBgXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTtcbiAgICB9ICAgXG5cbiAgICAke2lzRHJhZ092ZXIgJiYgYGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O2B9XG4gICAgYH1cblxuICAkeyh7IGlzSXRlbUNsaWNrYWJsZSB9KSA9PiBpc0l0ZW1DbGlja2FibGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBHcmlkRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcblxuICAkeyh7IGlzSG92ZXJIaWdobGlnaHQsIHRoZW1lIH0pID0+IGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuXG4gICAgYH1cbiAgJHsoeyBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiBpc0RyYWdPdmVyICYmXHJcbiAgICBgXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07IFxuXG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGhlbWUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7dGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZC5zdHlsZXMuanMubWFwIl19 */")); + +var theme = { + primary: { + 600: "#1a202c", + 900: "#171923" + }, + grey: { + 300: "#d1d1d1" + }, + white: "#fff", + teal: { + 100: "#38B2AC" + }, + green: { + 200: "#389493", + 300: "#2C7A7B" + }, + loader: { + teal: "#5DDADB", + purple: "#3437A2", + pink: "#F78EB6", + bg: "#171923db" + }, + scrollbar: { + border: "#ffffff", + thumb: { + bg: "#e1e1e1" + } + }, + gradient: { + blue: { + 300: "#002eb3", + 600: "#002360", + 900: "#051937" + } + }, + text: { + grey: { + 300: "#a0aec0", + 500: "#718096" + } + }, + timeline: { + divider: { + bg: "#718096" + } + }, + grid: { + item: "#7180961a", + divider: "#7180961a", + highlight: "#38B2AC" + } +}; + +function useLayout(_ref) { + var _scrollBoxRef$current; + var isVerticalMode = _ref.isVerticalMode, + isToday = _ref.isToday, + isInitialScrollToNow = _ref.isInitialScrollToNow, + initialScrollPositions = _ref.initialScrollPositions, + height = _ref.height, + width = _ref.width, + channelsNumber = _ref.channelsNumber, + startDate = _ref.startDate, + endDate = _ref.endDate, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + hoursInDays = _ref.hoursInDays; + var useIsomorphicEffect = useIsomorphicLayoutEffect(); + var containerRef = React__default.useRef(null); + var scrollBoxRef = React__default.useRef(null); + //-------- State -------- + var _React$useState = React__default.useState(0), + scrollY = _React$useState[0], + setScrollY = _React$useState[1]; + var _React$useState2 = React__default.useState(0), + scrollX = _React$useState2[0], + setScrollX = _React$useState2[1]; + var _React$useState3 = React__default.useState(width), + layoutWidth = _React$useState3[0], + setLayoutWidth = _React$useState3[1]; + var _React$useState4 = React__default.useState(height), + layoutHeight = _React$useState4[0], + setLayoutHeight = _React$useState4[1]; + //-------- Variables -------- + var scrollBoxInnerHeight = scrollBoxRef == null || (_scrollBoxRef$current = scrollBoxRef.current) == null ? void 0 : _scrollBoxRef$current.scrollHeight; + var initialScrollPositionsSerialized = JSON.stringify(initialScrollPositions); + // -------- Handlers -------- + var handleScrollDebounced = useDebounce.useDebouncedCallback(function (value) { + setScrollY(value.y); + setScrollX(value.x); + }, DEBOUNCE_WAIT, { + maxWait: DEBOUNCE_WAIT_MAX + }); + var handleOnScroll = React__default.useCallback(function (e) { + handleScrollDebounced({ + y: e.target.scrollTop, + x: e.target.scrollLeft + }); + }, [handleScrollDebounced]); + var hoursInDaysSerialized = JSON.stringify(hoursInDays); + var areHoursInDays = React__default.useMemo(function () { + return hoursInDays.length > 0; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [hoursInDaysSerialized]); + var handleOnScrollToNow = React__default.useCallback(function () { + if (scrollBoxRef != null && scrollBoxRef.current && isToday) { + var _containerRef$current; + var clientWidth = width != null ? width : (_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.clientWidth; + var date = new Date(startDate); + var positionX = getPositionX(dateFns.startOfDay(date), getNewDateTz(), startDate, endDate, hourWidth); + if (areHoursInDays) { + positionX = getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth + }); + } + var scrollNow = positionX - clientWidth / 2 + sidebarWidth; + if (isVerticalMode) { + scrollBoxRef.current.scrollTop = scrollNow + hourWidth; + } else { + scrollBoxRef.current.scrollLeft = scrollNow; + } + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, isToday, areHoursInDays, width, hourWidth, sidebarWidth, startDate, endDate]); + var handleScrollToInitialPositions = React__default.useCallback(function () { + var isInitialScrollPosition = Object.keys(initialScrollPositions).length; + if (scrollBoxRef != null && scrollBoxRef.current && isInitialScrollPosition) { + var _initialScrollPositio = initialScrollPositions.top, + top = _initialScrollPositio === void 0 ? 0 : _initialScrollPositio, + _initialScrollPositio2 = initialScrollPositions.left, + left = _initialScrollPositio2 === void 0 ? 0 : _initialScrollPositio2; + scrollBoxRef.current.scrollTo({ + behavior: "smooth", + top: top, + left: left + }); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [initialScrollPositionsSerialized, scrollBoxInnerHeight]); + var handleOnScrollTop = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var top = scrollBoxRef.current.scrollTop + value; + scrollBoxRef.current.scrollTop = top; + } + }, [hourWidth]); + var handleOnScrollRight = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var right = scrollBoxRef.current.scrollLeft + value; + scrollBoxRef.current.scrollLeft = right; + } + }, [hourWidth]); + var handleOnScrollLeft = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var left = scrollBoxRef.current.scrollLeft - value; + scrollBoxRef.current.scrollLeft = left; + } + }, [hourWidth]); + var handleResizeDebounced = useDebounce.useDebouncedCallback(function () { + if (containerRef != null && containerRef.current && !width) { + var container = containerRef.current; + var clientWidth = container.clientWidth; + setLayoutWidth(clientWidth); + } + }, DEBOUNCE_WAIT * 4, { + maxWait: DEBOUNCE_WAIT_MAX * 4 + }); + var handleCheckIsLayoutBottom = React__default.useCallback(function (offset) { + if (offset === void 0) { + offset = 0; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isVerticalMode) { + // Check if the scroll is at the bottom in scrollBox in vertical mode + var _scrollBoxRef$current2 = scrollBoxRef.current, + scrollWidth = _scrollBoxRef$current2.scrollWidth, + scrollLeft = _scrollBoxRef$current2.scrollLeft, + clientWidth = _scrollBoxRef$current2.clientWidth; + if (scrollLeft === 0) return false; + return scrollWidth - scrollLeft - offset <= clientWidth; + } else { + // Check if the scroll is at the bottom in scrollBox + var _scrollBoxRef$current3 = scrollBoxRef.current, + scrollHeight = _scrollBoxRef$current3.scrollHeight, + scrollTop = _scrollBoxRef$current3.scrollTop, + clientHeight = _scrollBoxRef$current3.clientHeight; + if (scrollTop === 0) return false; + return scrollHeight - scrollTop - offset <= clientHeight; + } + } + return false; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, scrollX, scrollY, channelsNumber]); + var handleCheckIsLayoutRight = React__default.useCallback(function (offset) { + if (offset === void 0) { + offset = 0; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isVerticalMode) { + // Check if the scroll is at the right in scrollBox in vertical mode + var _scrollBoxRef$current4 = scrollBoxRef.current, + scrollHeight = _scrollBoxRef$current4.scrollHeight, + scrollTop = _scrollBoxRef$current4.scrollTop, + clientHeight = _scrollBoxRef$current4.clientHeight; + if (scrollTop === 0) return false; + return scrollHeight - scrollTop - offset <= clientHeight; + } else { + // Check if the scroll is at the right in scrollBox + var _scrollBoxRef$current5 = scrollBoxRef.current, + scrollWidth = _scrollBoxRef$current5.scrollWidth, + scrollLeft = _scrollBoxRef$current5.scrollLeft, + clientWidth = _scrollBoxRef$current5.clientWidth; + if (scrollLeft === 0) return false; + return scrollWidth - scrollLeft - offset <= clientWidth; + } + } + return false; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [scrollX, scrollY, channelsNumber]); + // -------- Effects -------- + useIsomorphicEffect(function () { + if (containerRef != null && containerRef.current) { + var container = containerRef.current; + if (!width) { + var clientWidth = container.clientWidth; + setLayoutWidth(clientWidth); + } + if (!height) { + var clientHeight = container.clientHeight; + setLayoutHeight(clientHeight); + } + } + }, [height, width, startDate]); + useIsomorphicEffect(function () { + var isInitialScrollPosition = Object.keys(initialScrollPositions).length; + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isInitialScrollPosition) { + handleScrollToInitialPositions(); + } else if (isInitialScrollToNow) { + handleOnScrollToNow(); + } + } + }, [isToday, isInitialScrollToNow, initialScrollPositionsSerialized]); + useIsomorphicEffect(function () { + window.addEventListener("resize", handleResizeDebounced); + return function () { + window.removeEventListener("resize", handleResizeDebounced); + }; + }, [width]); + return { + containerRef: containerRef, + scrollBoxRef: scrollBoxRef, + scrollX: scrollX, + scrollY: scrollY, + layoutWidth: layoutWidth, + layoutHeight: layoutHeight, + isLayoutBottom: handleCheckIsLayoutBottom, + isLayoutRight: handleCheckIsLayoutRight, + onScroll: handleOnScroll, + onScrollToNow: handleOnScrollToNow, + onScrollTop: handleOnScrollTop, + onScrollLeft: handleOnScrollLeft, + onScrollRight: handleOnScrollRight + }; +} + +var _excluded$2 = ["isToday", "currentDate"], + _excluded2 = ["hourWidth", "dayWidth"], + _excluded3 = ["isLayoutBottom", "isLayoutRight", "containerRef", "scrollBoxRef"]; +var defaultStartDateTime = /*#__PURE__*/formatTime( /*#__PURE__*/dateFns.startOfToday()); +var defaultMode = { + type: "day", + style: "default" +}; +var defaultTimezone = { + enabled: false, + zone: "", + mode: "formatInTimeZone" +}; +var defaultOverlap = { + enabled: false, + mode: "stack", + layerOverlapLevel: 0.4 +}; +var defaultGrid = { + enabled: false, + hoverHighlight: false +}; +var defaultDnd = { + enabled: false, + mode: "row" +}; +function useEpg(props) { + var _props$isVerticalMode = props.isVerticalMode, + isVerticalMode = _props$isVerticalMode === void 0 ? false : _props$isVerticalMode, + _props$isRTL = props.isRTL, + isRTL = _props$isRTL === void 0 ? false : _props$isRTL, + _props$isResize = props.isResize, + isResize = _props$isResize === void 0 ? false : _props$isResize, + _props$isBaseTimeForm = props.isBaseTimeFormat, + isBaseTimeFormat = _props$isBaseTimeForm === void 0 ? false : _props$isBaseTimeForm, + _props$isSidebar = props.isSidebar, + isSidebar = _props$isSidebar === void 0 ? true : _props$isSidebar, + _props$isTimeline = props.isTimeline, + isTimeline = _props$isTimeline === void 0 ? true : _props$isTimeline, + _props$isLine = props.isLine, + isLine = _props$isLine === void 0 ? true : _props$isLine, + _props$isCurrentTime = props.isCurrentTime, + isCurrentTime = _props$isCurrentTime === void 0 ? false : _props$isCurrentTime, + _props$isInitialScrol = props.isInitialScrollToNow, + isInitialScrollToNow = _props$isInitialScrol === void 0 ? true : _props$isInitialScrol; + var width = props.width, + height = props.height; + var channelsEpg = props.channels, + epg = props.epg; + var _props$startDate = props.startDate, + startDateInput = _props$startDate === void 0 ? defaultStartDateTime : _props$startDate, + _props$endDate = props.endDate, + endDateInput = _props$endDate === void 0 ? "" : _props$endDate, + _props$hoursInDays = props.hoursInDays, + customHoursInDays = _props$hoursInDays === void 0 ? [] : _props$hoursInDays; + var _props$initialScrollP = props.initialScrollPositions, + initialScrollPositions = _props$initialScrollP === void 0 ? {} : _props$initialScrollP, + _props$liveRefreshTim = props.liveRefreshTime, + liveRefreshTime = _props$liveRefreshTim === void 0 ? LIVE_REFRESH_TIME : _props$liveRefreshTim, + _props$timelineDivide = props.timelineDividers, + timelineDividers = _props$timelineDivide === void 0 ? TIMELINE_DIVIDERS : _props$timelineDivide, + snap = props.snap, + _props$mode = props.mode, + customMode = _props$mode === void 0 ? defaultMode : _props$mode, + _props$overlap = props.overlap, + customOverlap = _props$overlap === void 0 ? defaultOverlap : _props$overlap, + _props$timezone = props.timezone, + customTimezone = _props$timezone === void 0 ? defaultTimezone : _props$timezone, + _props$areas = props.areas, + areas = _props$areas === void 0 ? [] : _props$areas, + _props$grid = props.grid, + grid = _props$grid === void 0 ? defaultGrid : _props$grid, + _props$dnd = props.dnd, + dnd = _props$dnd === void 0 ? defaultDnd : _props$dnd, + customTheme = props.theme, + globalStyles = props.globalStyles; + var _props$dayWidth = props.dayWidth, + customDayWidth = _props$dayWidth === void 0 ? DAY_WIDTH : _props$dayWidth, + _props$sidebarWidth = props.sidebarWidth, + sidebarWidth = _props$sidebarWidth === void 0 ? SIDEBAR_WIDTH : _props$sidebarWidth, + _props$timelineHeight = props.timelineHeight, + customTimelineHeight = _props$timelineHeight === void 0 ? TIMELINE_HEIGHT : _props$timelineHeight, + _props$itemHeight = props.itemHeight, + itemHeight = _props$itemHeight === void 0 ? ITEM_HEIGHT : _props$itemHeight, + _props$itemOverscan = props.itemOverscan, + itemOverscan = _props$itemOverscan === void 0 ? ITEM_OVERSCAN : _props$itemOverscan; + var _props$channelMapKey = props.channelMapKey, + channelMapKey = _props$channelMapKey === void 0 ? "uuid" : _props$channelMapKey, + _props$programChannel = props.programChannelMapKey, + programChannelMapKey = _props$programChannel === void 0 ? "channelUuid" : _props$programChannel; + var timezone = _extends({}, defaultTimezone, customTimezone); + var mode = _extends({}, defaultMode, customMode); + var overlap = _extends({}, defaultOverlap, customOverlap); + var isOverlapEnabled = overlap.enabled; + var isMultirowsDnd = dnd.mode === "multi-rows"; + // Get converted start and end dates + var _getTimeRangeDates = getTimeRangeDates(startDateInput, endDateInput), + startDate = _getTimeRangeDates.startDate, + endDate = _getTimeRangeDates.endDate; + // Get hours in days + var serializedHoursInDays = JSON.stringify(customHoursInDays); + var hoursInDays = React__default.useMemo(function () { + return getNumberOfHoursInDays({ + customHoursInDays: customHoursInDays, + startDate: startDate + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [serializedHoursInDays]); + // Get days resources eg. number of days, dates and hours + var _React$useMemo = React__default.useMemo(function () { + return getDayResources({ + startDate: startDate, + endDate: endDate, + modeType: mode.type + }); + }, [startDate, endDate, mode.type]), + isToday = _React$useMemo.isToday, + currentDate = _React$useMemo.currentDate, + daysResources = _objectWithoutPropertiesLoose(_React$useMemo, _excluded$2); + // Get day and hour width of the day + var _React$useMemo2 = React__default.useMemo(function () { + return getDayWidthResources({ + dayWidth: customDayWidth, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + modeType: mode.type + }); + }, [customDayWidth, startDate, endDate, hoursInDays, mode.type]), + hourWidth = _React$useMemo2.hourWidth, + dayWidth = _React$useMemo2.dayWidth, + dayWidthResourcesProps = _objectWithoutPropertiesLoose(_React$useMemo2, _excluded2); + // -------- State -------- + var _React$useReducer = React__default.useReducer(function (x) { + return x + 1; + }, 0), + update = _React$useReducer[0], + setForceUpdate = _React$useReducer[1]; + var _React$useReducer2 = React__default.useReducer(function (x) { + return x + 1; + }, 0), + updateChannels = _React$useReducer2[0], + setForceChannelsUpdate = _React$useReducer2[1]; + var _React$useState = React__default.useState({ + index: -1, + uuid: "" + }), + dndChannelUuid = _React$useState[0], + setDndChannelUuid = _React$useState[1]; + var _React$useState2 = React__default.useState(function () { + return 0; + }), + newOverlaps = _React$useState2[0], + setNewOverlaps = _React$useState2[1]; + var _React$useState3 = React__default.useState({}), + overlaps = _React$useState3[0], + setOverlaps = _React$useState3[1]; + var _React$useState4 = React__default.useState({}), + channelOverlapsCount = _React$useState4[0], + setChannelOverlapsCount = _React$useState4[1]; + var timezoneSerialized = JSON.stringify(timezone); + // Set base timezone functions + React__default.useMemo(function () { + if (timezone.enabled) { + setTimezoneOptionsCache(timezone); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [timezoneSerialized]); + React__default.useEffect(function () { + setForceUpdate(); + setDndChannelUuid({ + index: -1, + uuid: "" + }); + }, [isVerticalMode]); + var _useLayout = useLayout({ + isVerticalMode: isVerticalMode, + isToday: isToday, + isInitialScrollToNow: isInitialScrollToNow, + initialScrollPositions: initialScrollPositions, + startDate: startDate, + endDate: endDate, + sidebarWidth: sidebarWidth, + width: width, + height: height, + hourWidth: hourWidth, + currentDate: currentDate, + hoursInDays: hoursInDays, + channelsNumber: channelsEpg.length + }), + isLayoutBottom = _useLayout.isLayoutBottom, + isLayoutRight = _useLayout.isLayoutRight, + containerRef = _useLayout.containerRef, + scrollBoxRef = _useLayout.scrollBoxRef, + layoutProps = _objectWithoutPropertiesLoose(_useLayout, _excluded3); + React__default.useEffect(function () { + return function () { + resetLayoutScreenCloneElements(); + }; + }, []); + var scrollX = layoutProps.scrollX, + scrollY = layoutProps.scrollY, + layoutWidth = layoutProps.layoutWidth, + layoutHeight = layoutProps.layoutHeight; + var onScroll = layoutProps.onScroll, + onScrollToNow = layoutProps.onScrollToNow, + onScrollTop = layoutProps.onScrollTop, + onScrollLeft = layoutProps.onScrollLeft, + onScrollRight = layoutProps.onScrollRight; + //-------- Variables -------- + var timelineHeight = getTimelineHeight(customTimelineHeight, mode); + var channelsEpgSerialized = React__default.useMemo(function () { + return JSON.stringify(channelsEpg); + }, [channelsEpg]); + var channelOverlapsCountSerialized = React__default.useMemo(function () { + return channelOverlapsCount; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify(channelOverlapsCount)]); + var channels = React__default.useMemo(function () { + // Convert channels + return getConvertedChannels(isOverlapEnabled, overlap.mode, overlap.layerOverlapLevel, channelsEpg, itemHeight, channelMapKey, channelOverlapsCount); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isOverlapEnabled, overlap.mode, overlap.layerOverlapLevel, channelsEpgSerialized, channelOverlapsCountSerialized, itemHeight, channelMapKey, newOverlaps, updateChannels]); + var startDateTime = formatTime(startDate); + var endDateTime = formatTime(endDate); + var channelsSerialized = React__default.useMemo(function () { + return JSON.stringify(channels); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channels]); + var overlapsSerialized = React__default.useMemo(function () { + return overlaps; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify(overlaps)]); + var _React$useMemo3 = React__default.useMemo(function () { + var data = getConvertedPrograms({ + isVerticalMode: isVerticalMode, + isOverlapEnabled: isOverlapEnabled, + programChannelMapKey: programChannelMapKey, + data: epg, + channels: channels, + startDate: startDateTime, + endDate: endDateTime, + hoursInDays: hoursInDays, + itemHeight: itemHeight, + hourWidth: hourWidth + }); + if (isOverlapEnabled) { + var _overlaps = overlaps; + var _checkOverlaps = checkOverlaps(isMultirowsDnd, isVerticalMode, dndChannelUuid, _overlaps, data), + itemsOverlaps = _checkOverlaps.overlaps, + channelOverlaps = _checkOverlaps.channelOverlaps; + setChannelOverlapsCount(_extends({}, channelOverlapsCount, channelOverlaps)); + setNewOverlaps(function (prev) { + return prev + 1; + }); + setOverlaps(itemsOverlaps); + return { + programs: data, + programOverlaps: itemsOverlaps + }; + } + return { + programs: data, + programOverlaps: {} + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isMultirowsDnd, isOverlapEnabled, isVerticalMode, epg, channelsSerialized, overlapsSerialized, startDateTime, endDateTime, itemHeight, hourWidth, hoursInDays, programChannelMapKey, timezoneSerialized, update]), + programs = _React$useMemo3.programs, + programOverlaps = _React$useMemo3.programOverlaps; + var gridItems = React__default.useMemo(function () { + if (!grid.enabled) return []; + return getConvertedGridItems({ + isVerticalMode: isVerticalMode, + channels: channels, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + mode: mode, + dayWidthResources: dayWidthResourcesProps, + daysResources: daysResources + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [grid.enabled, channelsSerialized, mode.type, dayWidthResourcesProps.numberOfHoursInDay, dayWidthResourcesProps.numberOfMonths, daysResources.numberOfDays, dayWidth, hourWidth, sidebarWidth, timelineHeight, isVerticalMode]); + var theme$1 = _extends({}, theme, customTheme); + // -------- Handlers -------- + var isProgramVisible = React__default.useCallback(function (position, overlapsCount) { + return getItemVisibility({ + isVerticalMode: isVerticalMode, + itemOverscan: itemOverscan, + overlapsCount: overlapsCount, + position: position, + scrollY: scrollY, + scrollX: scrollX, + containerHeight: layoutHeight, + containerWidth: layoutWidth + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, itemOverscan, layoutHeight, layoutWidth, scrollY, scrollX]); + var isChannelVisible = React__default.useCallback(function (position) { + return getSidebarItemVisibility({ + isVerticalMode: isVerticalMode, + itemOverscan: itemOverscan, + position: position, + scrollX: scrollX, + scrollY: scrollY, + containerHeight: layoutHeight, + containerWidth: layoutWidth + }); + }, [isVerticalMode, itemOverscan, scrollY, scrollX, layoutHeight, layoutWidth]); + var isTimelineVisible = React__default.useCallback(function (position) { + return getTimelineItemVisibility({ + position: position, + scrollY: scrollY, + scrollX: scrollX, + containerHeight: layoutHeight, + containerWidth: layoutWidth, + isVerticalMode: isVerticalMode + }); + }, [scrollY, scrollX, layoutHeight, layoutWidth, isVerticalMode]); + var dndOnSuccessCb = React__default.useCallback(function (event) { + return dnd == null || dnd.onDnDSuccess == null ? void 0 : dnd.onDnDSuccess(event); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + []); + var resizeMouseUp = React__default.useCallback(function (props) { + var newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + setDndChannelUuid({ + index: epg[props.index].channelIndex, + uuid: epg[props.index][programChannelMapKey] + }); + dndOnSuccessCb(epg[props.index]); + setForceUpdate(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, startDate, hourWidth, programs]); + var dragMouseUp = React__default.useCallback( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(props) { + var newTime, element, checkChannelTopOutRange, checkChannelTopInRange, isChannelTopInRange, isChannelTopOutRange, newChannel, newChannelRange, newChannelEpgIndexes; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + element = _extends({}, epg[props.index]); + checkChannelTopOutRange = function checkChannelTopOutRange() { + var elementChannel = element.channelPosition; + if (props.top > elementChannel.top + elementChannel.height - 1 || props.top < elementChannel.top - 1) { + return true; + } + return false; + }; + checkChannelTopInRange = function checkChannelTopInRange() { + var elementChannel = element.channelPosition; + return elementChannel.top <= props.top && props.top <= elementChannel.top + elementChannel.height ? true : false; + }; + isChannelTopInRange = checkChannelTopInRange(); + isChannelTopOutRange = checkChannelTopOutRange(); + if (isMultirowsDnd && isChannelTopOutRange) { + newChannel = channels.find(function (channel) { + return channel.position.top === props.top; + }); + newChannelRange = channels.find(function (channel) { + return channel.position.top <= props.top && props.top <= channel.position.top + channel.position.height; + }); + if (newChannel) { + newChannelEpgIndexes = getChannelEpgIndexes(newChannel[channelMapKey]); + if (newChannelEpgIndexes) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannel[channelMapKey]; + epg[props.index].channelIndex = newChannel.index; + epg[props.index].channelPosition = { + top: newChannel.position.top, + height: newChannel.position.height, + left: newChannel.position.left + }; + } else { + setChannelEpgIndexes({ + uuid: newChannel[channelMapKey], + first: props.index, + last: props.index + }); + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannel[channelMapKey]; + epg[props.index].channelIndex = newChannel.index; + epg[props.index].channelPosition = { + top: newChannel.position.top, + height: newChannel.position.height, + left: newChannel.position.left + }; + } + } else if (newChannelRange) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannelRange[channelMapKey]; + epg[props.index].channelIndex = newChannelRange.index; + epg[props.index].channelPosition = { + top: newChannelRange.position.top, + height: newChannelRange.position.height, + left: newChannelRange.position.left + }; + } + } else if (isMultirowsDnd && isChannelTopInRange) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + } else { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + setDndChannelUuid({ + index: epg[props.index].channelIndex, + uuid: epg[props.index][programChannelMapKey] + }); + } + dndOnSuccessCb(epg[props.index]); + setForceUpdate(); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; + }(), + // eslint-disable-next-line react-hooks/exhaustive-deps + [isMultirowsDnd, startDate, hourWidth, programs]); + var handleGetLayoutData = React__default.useCallback(function (events) { + return events.map(function (event) { + return _extends({}, event.data); + }); + }, []); + var handleOpenChannelGroupTree = React__default.useCallback(function (data) { + channelsEpg[data.index].isOpen = !channelsEpg[data.index].isOpen; + setForceChannelsUpdate(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channels]); + var handleGetDropItemData = React__default.useCallback(function (data) { + return setUpdatedLayoutItem(data, mode.type); + }, [mode.type]); + var getEpgProps = function getEpgProps() { + return { + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isSidebar: isSidebar, + isLine: isLine, + isTimeline: isTimeline, + width: width, + height: height, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + ref: containerRef, + theme: theme$1, + globalStyles: globalStyles + }; + }; + var getLayoutProps = function getLayoutProps() { + return _extends({ + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isBaseTimeFormat: isBaseTimeFormat, + isSidebar: isSidebar, + isTimeline: isTimeline, + isLine: isLine, + isCurrentTime: isCurrentTime, + isProgramVisible: isProgramVisible, + isChannelVisible: isChannelVisible, + isTimelineVisible: isTimelineVisible, + isToday: isToday, + isResize: isResize, + programs: programs, + programOverlaps: programOverlaps, + channels: channels, + channelOverlapsCount: channelOverlapsCount, + layerOverlapLevel: overlap.layerOverlapLevel, + snap: snap, + grid: grid, + gridItems: gridItems, + dnd: dnd, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + liveRefreshTime: liveRefreshTime, + scrollY: scrollY, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + itemHeight: itemHeight, + currentDate: currentDate, + mode: mode, + timezone: timezone, + timelineDividers: timelineDividers, + overlapMode: overlap.mode, + overlap: overlap, + areas: areas, + openChannelGroupTree: handleOpenChannelGroupTree, + onScroll: onScroll, + dragMouseUp: dragMouseUp, + resizeMouseUp: resizeMouseUp + }, daysResources, dayWidthResourcesProps, { + ref: scrollBoxRef + }); + }; + return { + isLayoutBottom: isLayoutBottom, + isLayoutRight: isLayoutRight, + getEpgProps: getEpgProps, + getLayoutProps: getLayoutProps, + getLayoutData: handleGetLayoutData, + getDropItemData: handleGetDropItemData, + onScrollToNow: onScrollToNow, + onScrollTop: onScrollTop, + onScrollLeft: onScrollLeft, + onScrollRight: onScrollRight, + scrollY: scrollY, + scrollX: scrollX + }; +} + +function useInterval(callback, delay) { + var useIsomorphicEffect = useIsomorphicLayoutEffect(); + var savedCallback = React__default.useRef(callback); + useIsomorphicEffect(function () { + savedCallback.current = callback; + }, [callback]); + React__default.useEffect(function () { + if (!delay && delay !== 0) { + return; + } + var id = setInterval(function () { + return savedCallback.current(); + }, delay); + return function () { + return clearInterval(id); + }; + }, [delay]); +} + +function useIsTouchDevice() { + var _React$useState = React__default.useState(false), + isMobile = _React$useState[0], + setIsMobile = _React$useState[1]; + React__default.useEffect(function () { + function checkDevice() { + var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.userAgent.includes("Mac") && "ontouchend" in document; + var androidOrWebOS = /Android|webOS/.test(navigator.userAgent); + var isMobileDevice = iOS || androidOrWebOS; + var isTouchScreen = "ontouchstart" in window || navigator.maxTouchPoints > 0 || window.matchMedia && window.matchMedia("(any-pointer: coarse)").matches; + setIsMobile(isMobileDevice || isTouchScreen); + } + checkDevice(); + window.addEventListener("resize", checkDevice); + return function () { + window.removeEventListener("resize", checkDevice); + }; + }, []); + return isMobile; +} + +function useDrag(props) { + var isDndEnabled = props.isDndEnabled, + isDndMutlirows = props.isDndMutlirows, + isVerticalMode = props.isVerticalMode, + initialPosition = props.initialPosition, + data = props.data, + dayWidth = props.dayWidth, + itemHeight = props.itemHeight, + contentHeight = props.contentHeight, + dndSnapX = props.dndSnapX, + _props$dndSnapY = props.dndSnapY, + dndSnapY = _props$dndSnapY === void 0 ? itemHeight : _props$dndSnapY, + elementRef = props.elementRef, + mouseUpCb = props.mouseUpCb, + dndMouseUpCb = props.dndMouseUpCb; + var isClicked = React.useRef(false); + var isMouseMove = React.useRef(false); + var isTouchDevice = useIsTouchDevice(); + var _useState = React.useState(false), + isDragging = _useState[0], + setIsDragging = _useState[1]; + var _useState2 = React.useState(false), + isPreventScroll = _useState2[0], + setIsPreventScroll = _useState2[1]; + var _useState3 = React.useState({ + x: initialPosition.left, + y: initialPosition.top + }), + position = _useState3[0], + setPosition = _useState3[1]; + var _useState4 = React.useState({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }), + coords = _useState4[0], + setCoords = _useState4[1]; + var id = data.id, + index = data.index, + since = data.since, + till = data.till, + channelPosition = data.channelPosition; + var handleMouseDown = React.useCallback(function (e) { + e.stopPropagation(); + isClicked.current = true; + isTouchDevice && setIsPreventScroll(true); + setIsDragging(true); + var event = isTouchDevice ? e.touches[0] : e; + coords.startY = event.clientY; + coords.startX = event.clientX; + }, [isTouchDevice, coords]); + var handleMouseClick = React.useCallback(function (e) { + if (isMouseMove.current) { + e.stopPropagation(); + e.preventDefault(); + } + }, []); + var handleMouseUp = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _elementRef$current, _elementRef$current2, _elementRef$current3, _elementRef$current4, options, optionsYX, isDndMouseUpSuccess, optionsY, _isDndMouseUpSuccess; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (isVerticalMode) { + coords.lastY = (_elementRef$current = elementRef.current) == null ? void 0 : _elementRef$current.offsetTop; + coords.lastX = (_elementRef$current2 = elementRef.current) == null ? void 0 : _elementRef$current2.offsetLeft; + } else { + coords.lastY = (_elementRef$current3 = elementRef.current) == null ? void 0 : _elementRef$current3.offsetTop; + coords.lastX = (_elementRef$current4 = elementRef.current) == null ? void 0 : _elementRef$current4.offsetLeft; + } + options = { + id: id, + index: index, + since: since, + till: till + }; + if (!(!isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.top !== coords.lastY))) { + _context.next = 8; + break; + } + optionsYX = _extends({}, options, { + top: coords.lastY, + left: coords.lastX, + initialPositionLeft: initialPosition.left, + initialPositionTop: initialPosition.top + }); + _context.next = 6; + return dndMouseUpCb == null ? void 0 : dndMouseUpCb(optionsYX, data); + case 6: + isDndMouseUpSuccess = _context.sent; + if (isDndMouseUpSuccess) { + mouseUpCb(optionsYX); + } else { + elementRef.current.style.left = initialPosition.left + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: initialPosition.left, + y: initialPosition.top + }); + }); + } + case 8: + if (!(isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.top !== coords.lastY))) { + _context.next = 14; + break; + } + optionsY = _extends({}, options, { + top: coords.lastX, + left: coords.lastY, + initialPositionLeft: initialPosition.top, + initialPositionTop: initialPosition.left + }); + _context.next = 12; + return dndMouseUpCb == null ? void 0 : dndMouseUpCb(optionsY, data); + case 12: + _isDndMouseUpSuccess = _context.sent; + if (_isDndMouseUpSuccess) { + mouseUpCb(optionsY); + } else { + elementRef.current.style.left = initialPosition.left + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: initialPosition.left, + y: initialPosition.top + }); + }); + } + case 14: + isClicked.current = false; + setIsDragging(false); + if (isTouchDevice) { + setIsPreventScroll(false); + } + setTimeout(function () { + return isMouseMove.current = false; + }, 0); + case 18: + case "end": + return _context.stop(); + } + }, _callee); + })), + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, initialPosition.top, initialPosition.left, coords, id, index, since, till, mouseUpCb]); + var initialPositionSerialized = JSON.stringify(initialPosition); + React.useEffect(function () { + // if (isVerticalMode) { + // setCoords({ + // startY: initialPosition.top, + // lastY: initialPosition.top, + // startX: initialPosition.left, + // lastX: initialPosition.left, + // }); + // } + setCoords({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }); + setPosition({ + x: initialPosition.left, + y: initialPosition.top + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isVerticalMode, initialPositionSerialized]); + React.useEffect(function () { + function handleMouseMove(e) { + var _elementRef$current5, _elementRef$current6, _elementRef$current7, _elementRef$current8; + if (isPreventScroll) { + e.preventDefault(); + } + if (!isDndEnabled) return; + if (!isClicked.current) return; + if (!elementRef.current) return; + isMouseMove.current = true; + var event = isTouchDevice ? e.touches[0] : e; + var offsetWidth = isVerticalMode ? (_elementRef$current5 = elementRef.current) == null ? void 0 : _elementRef$current5.offsetHeight : (_elementRef$current6 = elementRef.current) == null ? void 0 : _elementRef$current6.offsetWidth; + var offsetHeight = isVerticalMode ? (_elementRef$current7 = elementRef.current) == null ? void 0 : _elementRef$current7.offsetWidth : (_elementRef$current8 = elementRef.current) == null ? void 0 : _elementRef$current8.offsetHeight; + var elementChannel = channelPosition; + if (isVerticalMode) { + var nextYValue = event.clientY - coords.startY + coords.lastY; + var nextY = dndSnapX ? Math.round(nextYValue / dndSnapX) * dndSnapX : nextYValue; + if (isDndMutlirows) { + var nextX = event.clientX - coords.startX + coords.lastX; + var nextXSnap = Math.round(nextX / dndSnapY) * dndSnapY; + if (nextXSnap >= 0 && nextXSnap <= contentHeight - offsetHeight && nextY >= 0 && nextY <= dayWidth - offsetWidth) { + var checkTopRange = function checkTopRange() { + if (nextXSnap > elementChannel.top + elementChannel.height - 1) { + return true; + } else if (nextXSnap < elementChannel.top - 1) { + return true; + } + return false; + }; + var isOutTopRange = checkTopRange(); + if (!isOutTopRange) { + elementRef.current.style.top = nextY + "px"; + elementRef.current.style.left = initialPosition.left + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY, + x: initialPosition.left + }); + }); + } else { + elementRef.current.style.top = nextY + "px"; + elementRef.current.style.left = nextXSnap + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY, + x: nextXSnap + }); + }); + } + } + } else if (nextY >= 0 && nextY <= dayWidth - offsetWidth) { + elementRef.current.style.top = nextY + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY + }); + }); + } + } else { + var nextXValue = event.clientX - coords.startX + coords.lastX; + var _nextX = dndSnapX ? Math.round(nextXValue / dndSnapX) * dndSnapX : nextXValue; + if (isDndMutlirows) { + var _nextY = event.clientY - coords.startY + coords.lastY; + var nextYSnap = Math.round(_nextY / dndSnapY) * dndSnapY; + if (nextYSnap >= 0 && nextYSnap <= contentHeight - offsetHeight && _nextX >= 0 && _nextX <= dayWidth - offsetWidth) { + var _checkTopRange = function _checkTopRange() { + if (nextYSnap > elementChannel.top + elementChannel.height - 1) { + return true; + } else if (nextYSnap < elementChannel.top - 1) { + return true; + } + return false; + }; + var _isOutTopRange = _checkTopRange(); + if (!_isOutTopRange) { + elementRef.current.style.left = _nextX + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX, + y: initialPosition.top + }); + }); + } else { + elementRef.current.style.top = nextYSnap + "px"; + elementRef.current.style.left = _nextX + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX, + y: nextYSnap + }); + }); + } + } + } else if (_nextX >= 0 && _nextX <= dayWidth - offsetWidth) { + elementRef.current.style.left = _nextX + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX + }); + }); + } + } + } + var mouseMoveEvent = isTouchDevice ? "touchmove" : "mousemove"; + var mouseUpEvent = isTouchDevice ? "touchend" : "mouseup"; + var options = isTouchDevice ? { + passive: false + } : undefined; + if (isDndEnabled) { + document.addEventListener(mouseMoveEvent, handleMouseMove, options); + document.addEventListener(mouseUpEvent, handleMouseUp); + } + return function () { + document.removeEventListener(mouseMoveEvent, handleMouseMove); + document.removeEventListener(mouseUpEvent, handleMouseUp); + }; + }, [isTouchDevice, isPreventScroll, isDndEnabled, isVerticalMode, isDragging, isDndMutlirows, initialPosition.top, initialPosition.left, channelPosition, dndSnapX, dndSnapY, coords, dayWidth, itemHeight, contentHeight, elementRef, handleMouseUp]); + if (isDndEnabled) { + var events = isTouchDevice ? { + onTouchStart: handleMouseDown, + onTouchEnd: handleMouseUp + } : { + onMouseDown: handleMouseDown, + onMouseUp: handleMouseUp + }; + return { + dndEvents: _extends({ + isDragging: isDragging, + ref: elementRef, + onClick: handleMouseClick + }, events), + currentPositionX: isVerticalMode ? position.y : position.x + }; + } + return getDefaultDragProps(initialPosition.left); +} + +function useResize(_ref) { + var isResize = _ref.isResize, + isVerticalMode = _ref.isVerticalMode, + data = _ref.data, + dayWidth = _ref.dayWidth, + contentHeight = _ref.contentHeight, + initialPosition = _ref.initialPosition, + snapX = _ref.snapX, + elementRef = _ref.elementRef, + mouseUpCb = _ref.mouseUpCb; + var isClicked = React.useRef(false); + var isMouseMove = React.useRef(false); + var isTouchDevice = useIsTouchDevice(); + // State + var _useState = React.useState(false), + isPreventScroll = _useState[0], + setIsPreventScroll = _useState[1]; + var _useState2 = React.useState(false), + isResizing = _useState2[0], + setIsResizing = _useState2[1]; + var _useState3 = React.useState(false), + isResizingLeft = _useState3[0], + setIsResizingLeft = _useState3[1]; + var _useState4 = React.useState(false), + isResizingRight = _useState4[0], + setIsResizingRight = _useState4[1]; + var _useState5 = React.useState(0), + mouseOffsetX = _useState5[0], + setMouseOffsetX = _useState5[1]; + var _useState6 = React.useState({ + x: initialPosition.left, + y: initialPosition.top, + width: isVerticalMode ? initialPosition.height : initialPosition.width + }), + position = _useState6[0], + setPosition = _useState6[1]; + var _useState7 = React.useState({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }), + coords = _useState7[0], + setCoords = _useState7[1]; + var id = data.id, + index = data.index, + since = data.since, + till = data.till; + var initialWidth = React.useMemo(function () { + return isVerticalMode ? initialPosition.height : initialPosition.width; + }, [isVerticalMode, initialPosition.height, initialPosition.width]); + var handleMouseDown = React.useCallback(function (left) { + if (left === void 0) { + left = false; + } + return function (e) { + e.stopPropagation(); + isClicked.current = true; + isTouchDevice && setIsPreventScroll(true); + setIsResizing(true); + var container = elementRef.current; + if (!container) return; + var event = isTouchDevice ? e.touches[0] : e; + setMouseOffsetX(isVerticalMode ? event.pageY : event.pageX); + coords.startY = event.clientY; + coords.startX = event.clientX; + if (left) { + setIsResizingLeft(true); + setIsResizingRight(false); + } else { + setIsResizingLeft(false); + setIsResizingRight(true); + } + }; + }, [isTouchDevice, isVerticalMode, coords, elementRef]); + var handleMouseClick = React.useCallback(function (e) { + if (isMouseMove.current) { + e.stopPropagation(); + e.preventDefault(); + } + }, []); + var handleMouseUp = React.useCallback(function () { + if (isVerticalMode) { + var _elementRef$current, _elementRef$current2, _elementRef$current3; + coords.lastY = (_elementRef$current = elementRef.current) == null ? void 0 : _elementRef$current.offsetTop; + coords.lastX = (_elementRef$current2 = elementRef.current) == null ? void 0 : _elementRef$current2.offsetLeft; + position.width = (_elementRef$current3 = elementRef.current) == null ? void 0 : _elementRef$current3.offsetHeight; + } else { + var _elementRef$current4, _elementRef$current5, _elementRef$current6; + coords.lastY = (_elementRef$current4 = elementRef.current) == null ? void 0 : _elementRef$current4.offsetTop; + coords.lastX = (_elementRef$current5 = elementRef.current) == null ? void 0 : _elementRef$current5.offsetLeft; + position.width = (_elementRef$current6 = elementRef.current) == null ? void 0 : _elementRef$current6.offsetWidth; + } + var options = { + id: id, + index: index, + since: since, + till: till + }; + if (!isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.width !== position.width)) { + mouseUpCb(_extends({}, options, { + top: coords.lastY, + left: coords.lastX, + width: position.width, + initialPositionTop: initialPosition.top, + initialPositionLeft: initialPosition.left, + initialWidth: initialPosition.width + })); + } + if (isVerticalMode && isClicked.current && (initialPosition.top !== coords.lastY || initialPosition.width !== position.width)) { + mouseUpCb(_extends({}, options, { + top: coords.lastX, + left: coords.lastY, + width: position.width, + initialPositionTop: initialPosition.left, + initialPositionLeft: initialPosition.top, + initialWidth: initialPosition.height + })); + } + setIsResizing(false); + isClicked.current = false; + if (isTouchDevice) { + setIsPreventScroll(false); + } + setTimeout(function () { + return isMouseMove.current = false; + }, 0); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isTouchDevice, isVerticalMode, id, index, since, till, initialWidth, initialPosition.left, initialPosition.width, mouseUpCb]); + var initialPositionSerialized = JSON.stringify(initialPosition); + React.useEffect(function () { + // if (isVerticalMode) { + // setCoords({ + // startY: initialPosition.top, + // lastY: initialPosition.top, + // startX: initialPosition.left, + // lastX: initialPosition.left, + // }); + // } + setCoords({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }); + setPosition({ + x: initialPosition.left, + y: initialPosition.top, + width: isVerticalMode ? initialPosition.height : initialPosition.width + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isVerticalMode, initialPositionSerialized]); + React.useEffect(function () { + function handleMouseMove(e) { + if (isPreventScroll) { + e.preventDefault(); + } + if (!isResizing) return; + if (!isClicked.current) return; + if (!elementRef.current) return; + isMouseMove.current = true; + var event = isTouchDevice ? e.touches[0] : e; + var element = elementRef.current; + var elementRect = element.getBoundingClientRect(); + if (isVerticalMode) { + var _elementRef$current7; + var offsetHeight = (_elementRef$current7 = elementRef.current) == null ? void 0 : _elementRef$current7.offsetHeight; + var nextY = event.clientY - coords.startY + coords.lastY; + var snapYTop = snapX ? Math.round((event.pageY - mouseOffsetX) / snapX) * snapX : event.pageY - mouseOffsetX; + var newHeightTop = initialWidth - snapYTop; + var newHeightBottom = snapX ? Math.round((event.clientY - elementRect.top + 14) / snapX) * snapX : event.clientY - elementRect.top + 14; + var isInLeftLayout = nextY >= 0 && nextY <= dayWidth - offsetHeight; + // To be used in the future + // const isInLeftLayout = + // nextY >= 0 && nextY <= contentHeight - offsetHeight; + var isInRightLayout = coords.lastY + newHeightBottom <= dayWidth; + if (isResizingLeft && isInLeftLayout && newHeightTop >= 50) { + var top = initialPosition.top + snapYTop; + element.style.height = newHeightTop + "px"; + element.style.top = top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: top, + width: newHeightTop + }); + }); + } else if (isResizingRight && isInRightLayout && newHeightBottom >= 50) { + element.style.height = newHeightBottom + "px"; + element.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: initialPosition.top, + width: newHeightBottom + }); + }); + } + } else { + var _elementRef$current8; + var offsetWidth = (_elementRef$current8 = elementRef.current) == null ? void 0 : _elementRef$current8.offsetWidth; + var nextX = event.clientX - coords.startX + coords.lastX; + var snapXLeft = snapX ? Math.round((event.pageX - mouseOffsetX) / snapX) * snapX : event.pageX - mouseOffsetX; + var newWidthLeft = initialWidth - snapXLeft; + var newWidthRight = snapX ? Math.round((event.clientX - elementRect.left + 14) / snapX) * snapX : event.clientX - elementRect.left + 14; + var _isInLeftLayout = nextX >= 0 && nextX <= dayWidth - offsetWidth; + var _isInRightLayout = coords.lastX + newWidthRight <= dayWidth; + if (isResizingLeft && _isInLeftLayout && newWidthLeft >= 50) { + var left = initialPosition.left + snapXLeft; + element.style.width = newWidthLeft + "px"; + element.style.left = left + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: left, + width: newWidthLeft + }); + }); + } else if (isResizingRight && _isInRightLayout && newWidthRight >= 50) { + element.style.width = newWidthRight + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + width: newWidthRight + }); + }); + } + } + } + var mouseMoveEvent = isTouchDevice ? "touchmove" : "mousemove"; + var mouseUpEvent = isTouchDevice ? "touchend" : "mouseup"; + var options = isTouchDevice ? { + passive: false + } : undefined; + if (isResize) { + document.addEventListener(mouseMoveEvent, handleMouseMove, options); + document.addEventListener(mouseUpEvent, handleMouseUp); + } + return function () { + document.removeEventListener(mouseMoveEvent, handleMouseMove); + document.removeEventListener(mouseUpEvent, handleMouseUp); + }; + }, [isTouchDevice, isPreventScroll, isResize, isVerticalMode, isResizing, isResizingLeft, isResizingRight, dayWidth, contentHeight, initialWidth, initialPosition.top, initialPosition.left, coords, snapX, mouseOffsetX, elementRef, handleMouseUp]); + if (isResize) { + var getEvents = function getEvents(isLeft) { + if (isTouchDevice) { + return { + onTouchStart: handleMouseDown(isLeft), + onTouchEnd: handleMouseUp + }; + } + return { + onMouseDown: handleMouseDown(isLeft), + onMouseUp: handleMouseUp + }; + }; + return { + width: position.width, + initialWidth: isVerticalMode ? initialPosition.height : initialPosition.width, + currentPositionX: isVerticalMode ? position.y : position.x, + resizeEvents: { + isResizing: isResizing, + resources: { + ref: elementRef, + isResizing: isResizing + }, + eventsLeft: _extends({ + isResize: isResize, + isVerticalMode: isVerticalMode, + left: true, + onClick: handleMouseClick + }, getEvents(true)), + eventsRight: _extends({ + isResize: isResize, + isVerticalMode: isVerticalMode, + onClick: handleMouseClick + }, getEvents()) + } + }; + } + return { + currentPositionX: isVerticalMode ? initialPosition.top : initialPosition.left, + width: isVerticalMode ? initialPosition.height : initialPosition.width, + resizeEvents: { + isResizing: false, + resources: {}, + eventsLeft: {}, + eventsRight: {} + } + }; +} + +function useProgram(_ref) { + var _ref$isVerticalMode = _ref.isVerticalMode, + isVerticalMode = _ref$isVerticalMode === void 0 ? false : _ref$isVerticalMode, + _ref$isRTL = _ref.isRTL, + isRTL = _ref$isRTL === void 0 ? false : _ref$isRTL, + _ref$isResize = _ref.isResize, + isResize = _ref$isResize === void 0 ? false : _ref$isResize, + isBaseTimeFormat = _ref.isBaseTimeFormat, + startDate = _ref.startDate, + contentHeight = _ref.contentHeight, + dayWidth = _ref.dayWidth, + itemHeight = _ref.itemHeight, + hourWidth = _ref.hourWidth, + _ref$minWidth = _ref.minWidth, + minWidth = _ref$minWidth === void 0 ? 200 : _ref$minWidth, + program = _ref.program, + liveRefreshTime = _ref.liveRefreshTime, + mode = _ref.mode, + snap = _ref.snap, + dnd = _ref.dnd, + dragMouseUp = _ref.dragMouseUp, + resizeMouseUp = _ref.resizeMouseUp; + var elementRef = React.useRef(null); + var data = program.data, + position = program.position; + var width = position.width, + height = position.height; + var since = data.since, + till = data.till; + // Hooks + var _React$useState = React__default.useState(function () { + return getLiveStatus(since, till); + }), + isLive = _React$useState[0], + setIsLive = _React$useState[1]; + var options = { + isVerticalMode: isVerticalMode, + initialPosition: position, + data: data, + dayWidth: dayWidth, + contentHeight: contentHeight, + elementRef: elementRef + }; + var resizeOptions = _extends({}, options, { + isResize: isResize, + snapX: snap == null ? void 0 : snap.x, + mouseUpCb: resizeMouseUp + }); + var _useResize = useResize(resizeOptions), + resizeCurrentPositionX = _useResize.currentPositionX, + resizeWidth = _useResize.width, + resizeEvents = _useResize.resizeEvents; + var dndMouseUpCb = React__default.useCallback(function (props, data) { + var _dnd$onDnDMouseUp; + var newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + var options = _extends({}, newTime, { + id: props.id, + data: data + }); + return (_dnd$onDnDMouseUp = dnd == null || dnd.onDnDMouseUp == null ? void 0 : dnd.onDnDMouseUp(options)) != null ? _dnd$onDnDMouseUp : true; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + []); + var dragOptions = _extends({}, options, { + isDndEnabled: dnd.enabled ? !resizeEvents.resources.isResizing : false, + isDndMutlirows: dnd.mode === "multi-rows", + dndSnapX: snap == null ? void 0 : snap.x, + dndSnapY: snap == null ? void 0 : snap.y, + itemHeight: itemHeight, + dndMouseUpCb: dndMouseUpCb, + mouseUpCb: dragMouseUp + }); + var _useDrag = useDrag(dragOptions), + currentPositionX = _useDrag.currentPositionX, + dndEvents = _useDrag.dndEvents; + // Variables + var newPosition = _extends({}, omit(position, "egdeEnd")); + var styles = { + width: width, + position: newPosition + }; + var formatTime = function formatTime(date, formatType) { + if (formatType === void 0) { + formatType = TIME_FORMAT.HOURS_MIN; + } + return dateFns.format(new Date(date), formatType).replace(/\s/g, ""); + }; + var set12HoursTimeFormat = function set12HoursTimeFormat() { + if (mode.type === "week" || mode.type === "month") { + if (isBaseTimeFormat) return TIME_FORMAT.BASE_DAY_MONTH; + return TIME_FORMAT.DAY_MONTH; + } + if (isBaseTimeFormat) return TIME_FORMAT.BASE_HOURS_TIME; + return TIME_FORMAT.HOURS_MIN; + }; + var getRTLSinceTime = function getRTLSinceTime(since) { + return isRTL ? till : since; + }; + var getRTLTillTime = function getRTLTillTime(till) { + return isRTL ? since : till; + }; + // Effects + useInterval(function () { + var status = getLiveStatus(since, till); + setIsLive(status); + }, liveRefreshTime); + var isMinWidth = isVerticalMode ? height > minWidth : width > minWidth; + var getMouseEventTempTime = function getMouseEventTempTime() { + var left = resizeEvents.isResizing ? resizeCurrentPositionX : currentPositionX; + var options = { + id: data.id, + index: data.index, + since: data.since, + till: data.till, + top: 0, + left: left, + initialPositionTop: position.top, + initialPositionLeft: position.left, + initialWidth: width, + width: resizeWidth, + hourWidth: hourWidth + }; + if (isVerticalMode) { + options.initialPositionLeft = position.top; + options.initialPositionTop = position.left; + options.initialWidth = height; + } + var _calculateItemDragSin = calculateItemDragSinceTill(options), + since = _calculateItemDragSin.since, + till = _calculateItemDragSin.till; + var formatTempTime = function formatTempTime(time) { + return formatTime(getRTLSinceTime(time), set12HoursTimeFormat()).toLowerCase(); + }; + return { + since: formatTempTime(since), + till: formatTempTime(till) + }; + }; + var getMouseEvents = React.useCallback(function () { + return _extends({}, resizeEvents.resources, dndEvents); + }, [dndEvents, resizeEvents.resources]); + var isMouseEvent = dndEvents.isDragging || resizeEvents.resources.isResizing || false; + return { + isMouseEvent: isMouseEvent, + isLive: isLive, + isMinWidth: isMinWidth, + isRTL: isRTL, + resizeEvents: resizeEvents, + formatTime: formatTime, + set12HoursTimeFormat: set12HoursTimeFormat, + getMouseEvents: getMouseEvents, + getMouseEventTempTime: getMouseEventTempTime, + getRTLSinceTime: getRTLSinceTime, + getRTLTillTime: getRTLTillTime, + styles: styles + }; +} + +function useTimeline(props) { + var isBaseTimeFormat = props.isBaseTimeFormat, + isRTL = props.isRTL, + isSidebar = props.isSidebar, + isVerticalMode = props.isVerticalMode; + var timezone = props.timezone, + dayWidth = props.dayWidth, + hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight; + var mode = props.mode, + startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays, + days = props.days, + liveRefreshTime = props.liveRefreshTime, + months = props.months, + numberOfDays = props.numberOfDays, + numberOfHoursInDay = props.numberOfHoursInDay, + numberOfMonths = props.numberOfMonths, + offsetStartHoursRange = props.offsetStartHoursRange, + timelineDividers = props.timelineDividers, + renderCurrentTime = props.renderCurrentTime; + // Handlers + var getTime = function getTime(index) { + if (typeof index === "string") return { + time: index, + isNewDay: true + }; + var date = new Date(); + var baseDate = dateFns.format(date, TIME_FORMAT.DATE); + var time = index < 10 ? "0" + index : index; + if (isBaseTimeFormat) { + var _date = new Date(baseDate + "T" + time + ":00:00"); + var baseFormat = dateFns.format(_date, TIME_FORMAT.BASE_HOURS_TIME).toLowerCase().replace(/\s/g, ""); + return { + time: baseFormat, + isNewDay: false + }; + } + return { + time: time + ":00", + isNewDay: false + }; + }; + var formatWeekMonthDate = function formatWeekMonthDate(date) { + return getFormattedWeekMonthDate({ + date: date, + mode: mode, + isBaseTimeFormat: isBaseTimeFormat + }); + }; + var getDayMonthName = function getDayMonthName(date) { + var dateFormat = mode.type === "week" ? TIME_FORMAT.DAY : TIME_FORMAT.YEAR; + return dateFns.format(dateFnsTz.toDate(date), dateFormat); + }; + var getCurrentTimeProps = function getCurrentTimeProps() { + return { + isBaseTimeFormat: isBaseTimeFormat, + isVerticalMode: isVerticalMode, + isRTL: isRTL, + timezone: timezone, + mode: mode, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + dayWidth: dayWidth, + timelineHeight: timelineHeight, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + liveRefreshTime: liveRefreshTime, + renderCurrentTime: renderCurrentTime + }; + }; + var getTimelineProps = function getTimelineProps() { + return { + isSidebar: isSidebar, + isVerticalMode: isVerticalMode, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight + }; + }; + // Variables + var timeSlots = React.useMemo(function () { + var options = { + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange + }; + return generateTimelineSlots(mode.type, options); + }, [mode.type, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange]); + var isWeekMode = mode.type === "week"; + var isMonthMode = mode.type === "month"; + var isWeekMonthMode = isWeekMode || isMonthMode; + var isTodayInHoursInDays = getTodayHoursInDays(hoursInDays); + var areHoursInDays = hoursInDays.length > 0; + var weekDayWidth = hourWidth * HOURS_IN_DAY; + var monthsWidth = React.useMemo(function () { + return getTimelineMonthsWidth({ + months: months, + weekDayWidth: weekDayWidth + }); + }, [months, weekDayWidth]); + var dividers = generateArray(timelineDividers); + return { + isWeekMonthMode: isWeekMonthMode, + isMonthMode: isMonthMode, + isTodayInHoursInDays: isTodayInHoursInDays, + areHoursInDays: areHoursInDays, + time: timeSlots, + weekDayWidth: weekDayWidth, + monthsWidth: monthsWidth, + timelineHeight: timelineHeight, + dividers: dividers, + timelineDividers: timelineDividers, + formatWeekMonthDate: formatWeekMonthDate, + getTime: getTime, + getDayMonthName: getDayMonthName, + getTimelineProps: getTimelineProps, + getCurrentTimeProps: getCurrentTimeProps + }; +} + +function useLine(_ref) { + var timezone = _ref.timezone, + startDate = _ref.startDate, + endDate = _ref.endDate, + hoursInDays = _ref.hoursInDays, + dayWidth = _ref.dayWidth, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + liveRefreshTime = _ref.liveRefreshTime; + var _React$useState = React__default.useState(true), + showLine = _React$useState[0], + setShowLine = _React$useState[1]; + var _React$useState2 = React__default.useState(getInitialState), + positionX = _React$useState2[0], + setPositionX = _React$useState2[1]; + // Variables + var timezoneSerialized = JSON.stringify(timezone); + var hoursInDaysSerialized = JSON.stringify(hoursInDays); + var liveIntervalTime = liveRefreshTime * 1000; + var isDayEnd = positionX <= dayWidth; + var isScrollX = React__default.useMemo(function () { + return isDayEnd ? liveIntervalTime : null; + }, [isDayEnd, liveIntervalTime]); + // Helpers + function getInitialState() { + if (hoursInDays.length > 0) return getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + cb: setShowLine + }); + var positionX = getPositionX(dateFns.startOfDay(new Date(startDate)), new Date(), startDate, endDate, hourWidth); + return positionX + sidebarWidth; + } + // Effects + useInterval(function () { + var offset = hourWidth / HOUR_IN_MINUTES; + var step = offset / SECONDS_IN_MINUTE; + var positionOffset = step * liveRefreshTime; + if (hoursInDays.length > 0) { + var idCurrentDay = getTodayHoursInDays(hoursInDays); + if (idCurrentDay) { + setShowLine(true); + setPositionX(function (prev) { + return prev + positionOffset; + }); + } else { + setShowLine(false); + } + } else { + setPositionX(function (prev) { + return prev + positionOffset; + }); + } + }, isScrollX); + React__default.useEffect(function () { + if (hoursInDays.length > 0) { + var newPositionX = getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + cb: setShowLine + }); + setPositionX(newPositionX); + } else { + var date = new Date(startDate); + var _positionX = getPositionX(dateFns.startOfDay(date), getNewDateTz(), startDate, endDate, hourWidth); + var _newPositionX = _positionX + sidebarWidth; + setPositionX(_newPositionX); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [startDate, endDate, sidebarWidth, hourWidth, hoursInDaysSerialized, timezoneSerialized]); + return { + showLine: showLine, + positionX: positionX + }; +} + +function useCurrentTime(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isBaseTimeFormat = _ref.isBaseTimeFormat, + mode = _ref.mode, + positionX = _ref.positionX, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth; + var formatTime = function formatTime() { + var date = getNewDateTz(); + if (mode.type === "month") { + if (isBaseTimeFormat) return dateFns.format(date, TIME_FORMAT.BASE_DAY_MONTH); + return dateFns.format(date, TIME_FORMAT.DAY_MONTH); + } + var baseTime = dateFns.format(date, TIME_FORMAT.HOURS_MIN); + if (isBaseTimeFormat) { + var baseFormat = dateFns.format(date, TIME_FORMAT.BASE_HOURS_TIME).toLowerCase().replace(/\s/g, ""); + return baseFormat; + } + return baseTime; + }; + var handleGetCurrentTimeStyles = function handleGetCurrentTimeStyles() { + var _boxStyles = boxStyles({ + width: timelineHeight + }), + position = _boxStyles.position, + top = _boxStyles.top, + height = _boxStyles.height, + styleWidth = _boxStyles.width; + var width = isVerticalMode ? styleWidth : "auto"; + var commonStyles = { + position: position, + width: width, + height: height + }; + if (isVerticalMode) { + return { + position: _extends({ + top: positionX - sidebarWidth, + left: top + }, commonStyles) + }; + } + return { + position: _extends({ + top: top, + left: positionX - sidebarWidth + }, commonStyles) + }; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + var time = React__default.useMemo(function () { + return formatTime(); + }, [positionX, isBaseTimeFormat]); + return { + time: time, + getCurrentTimeStyles: handleGetCurrentTimeStyles + }; +} + +var _excluded$3 = ["mode", "grid", "timelineHeight", "sidebarWidth", "hourWidth", "dayWidth"]; +function useGrid(_ref) { + var mode = _ref.mode, + grid = _ref.grid, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth, + hourWidth = _ref.hourWidth, + dayWidth = _ref.dayWidth, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$3); + var isVerticalMode = rest.isVerticalMode, + isBaseTimeFormat = rest.isBaseTimeFormat, + days = rest.days, + hoursInDays = rest.hoursInDays, + months = rest.months, + numberOfDays = rest.numberOfDays, + numberOfHoursInDay = rest.numberOfHoursInDay, + numberOfMonths = rest.numberOfMonths, + offsetStartHoursRange = rest.offsetStartHoursRange, + timelineDividers = rest.timelineDividers; + var handleItemClick = React.useCallback(function (item, index) { + return function () { + getClickGridItemData({ + isVerticalMode: isVerticalMode, + index: index, + item: item, + grid: grid, + mode: mode, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + timelineDividers: timelineDividers + }); + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, hourWidth, dayWidth, sidebarWidth, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange, mode.type]); + var handleItemDrop = React.useCallback(function (item, index, dataAttributes) { + return function () { + getClickGridItemData({ + isDrop: true, + isVerticalMode: isVerticalMode, + index: index, + item: item, + grid: grid, + mode: mode, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + timelineDividers: timelineDividers, + dataAttributes: dataAttributes + }); + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, hourWidth, dayWidth, sidebarWidth, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange, mode.type]); + return { + onItemClick: handleItemClick, + onItemDrop: handleItemDrop + }; +} + +function useGridExternalDnD(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + onItemDrop = _ref.onItemDrop; + var dropAreaRef = React__default.useRef(null); + var _React$useState = React__default.useState(false), + isDragOver = _React$useState[0], + setIsDragOver = _React$useState[1]; + var handleDrop = React.useCallback(function (item, index) { + return function (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(false); + var droppedItemId = e.dataTransfer.getData("text/plain"); + var droppedItem = document.getElementById(droppedItemId); + if (droppedItem) { + // Loop through all attributes + var attributes = droppedItem.attributes; + var dataAttributes = {}; + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (attribute.name.startsWith("data-")) { + dataAttributes[attribute.name.replace("data-", "")] = attribute.value; + } + } + // Call the onDrop callback with the dropped item, attributes, and position + onItemDrop == null || onItemDrop(item, index, dataAttributes)(); + } + } + }; + }, [onItemDrop]); + var handleDragEnter = React.useCallback(function (e) { + if (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(true); + } + } + }, []); + var handleDragLeave = React.useCallback(function (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(false); + } + }, []); + return { + isDragOver: isDragOver, + dropAreaRef: dropAreaRef, + onDrop: handleDrop, + onDragEnter: handleDragEnter, + onDragLeave: handleDragLeave + }; +} + +var _excluded$4 = ["onItemClick", "onItemDrop"]; +var GridDivider$1 = GridDivider; +function GridDividerItem(_ref) { + var index = _ref.index, + item = _ref.item, + dividerProps = _ref.dividerProps; + var styles = dividerProps.styles, + props = dividerProps.props; + var onItemClick = props.onItemClick, + onItemDrop = props.onItemDrop, + restProps = _objectWithoutPropertiesLoose(props, _excluded$4); + var _useGridExternalDnD = useGridExternalDnD({ + onItemDrop: onItemDrop + }), + isDragOver = _useGridExternalDnD.isDragOver, + onDrop = _useGridExternalDnD.onDrop, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave, + dropAreaRef = _useGridExternalDnD.dropAreaRef; + return React__default.createElement(GridDivider$1, Object.assign({ + className: "planby-grid-item-divider", + ref: dropAreaRef, + key: index + }, styles, { + left: styles.left(index) + }, restProps, { + onClick: onItemClick(item, index), + // Drag + isDragOver: isDragOver, + onDragEnter: onDragEnter, + onDragLeave: onDragLeave, + onDrop: onDrop(item, index) + })); +} + +var GridItem$1 = GridItem; +function GridCellItem(_ref) { + var _channelOverlapsCount; + var isVerticalMode = _ref.isVerticalMode, + isProgramVisible = _ref.isProgramVisible, + isHoverHighlight = _ref.isHoverHighlight, + isDayMode = _ref.isDayMode, + isItemClickable = _ref.isItemClickable, + item = _ref.item, + index = _ref.index, + channelOverlapsCount = _ref.channelOverlapsCount, + hourWidth = _ref.hourWidth, + timelineDividers = _ref.timelineDividers, + renderGridCell = _ref.renderGridCell, + onItemClick = _ref.onItemClick, + onItemDrop = _ref.onItemDrop; + var overlapsCount = (_channelOverlapsCount = channelOverlapsCount[item.channel.uuid]) != null ? _channelOverlapsCount : 1; + var isVisible = isProgramVisible(item.position, overlapsCount); + var _useGridExternalDnD = useGridExternalDnD({ + onItemDrop: onItemDrop + }), + isDragOver = _useGridExternalDnD.isDragOver, + dropAreaRef = _useGridExternalDnD.dropAreaRef, + onDrop = _useGridExternalDnD.onDrop, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave; + if (!isVisible) return null; + var gridItemClickProps = isDayMode ? { + isItemClickable: false + } : { + onClick: onItemClick(item), + isItemClickable: isItemClickable + }; + var dividerProps = { + styles: { + left: function left(index) { + return index * (hourWidth / timelineDividers); + }, + width: hourWidth / timelineDividers + }, + props: { + isVerticalMode: isVerticalMode, + isHoverHighlight: isHoverHighlight, + isItemClickable: isItemClickable, + onItemClick: onItemClick, + onItemDrop: onItemDrop + } + }; + var gridItemDnDProps = isDayMode ? {} : { + isDragOver: isDragOver, + onDragEnter: onDragEnter, + onDragLeave: onDragLeave, + onDrop: onDrop(item, index) + }; + if (renderGridCell) { + var id = item.channel.uuid + index; + return renderGridCell({ + isDayMode: isDayMode, + id: id, + index: index, + item: item, + isHoverHighlight: isHoverHighlight, + timelineDividers: timelineDividers, + gridDividerProps: dividerProps, + timelineDividerArray: generateArray(timelineDividers), + gridItemClickProps: gridItemClickProps, + gridItemDnDProps: gridItemDnDProps + }); + } + return React.createElement(GridItem$1, Object.assign({ + ref: dropAreaRef, + key: item.channel.uuid + index, + className: "planby-grid-item", + isDayMode: isDayMode, + isHoverHighlight: isHoverHighlight + }, item.position, gridItemClickProps, gridItemDnDProps), isDayMode && generateArray(timelineDividers).map(function (_, index) { + return React.createElement(GridDividerItem, { + key: index, + index: index, + item: item, + dividerProps: dividerProps + }); + })); +} + +var _excluded$5 = ["isVerticalMode", "isProgramVisible", "channelOverlapsCount", "grid", "gridItems", "mode", "hourWidth", "timelineDividers", "renderGridCell"]; +var GridContainer$1 = GridContainer; +function Grid(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isProgramVisible = _ref.isProgramVisible, + channelOverlapsCount = _ref.channelOverlapsCount, + grid = _ref.grid, + gridItems = _ref.gridItems, + mode = _ref.mode, + hourWidth = _ref.hourWidth, + timelineDividers = _ref.timelineDividers, + renderGridCell = _ref.renderGridCell, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$5); + var _useGrid = useGrid(_extends({ + isVerticalMode: isVerticalMode, + grid: grid, + mode: mode, + hourWidth: hourWidth, + timelineDividers: timelineDividers + }, rest)), + onItemClick = _useGrid.onItemClick, + onItemDrop = _useGrid.onItemDrop; + var isDayMode = mode.type === "day"; + var isHoverHighlight = grid.hoverHighlight; + var isItemClickable = !!grid.onGridItemClick; + var renderGridItem = function renderGridItem(item, index) { + var props = { + isVerticalMode: isVerticalMode, + isProgramVisible: isProgramVisible, + isHoverHighlight: isHoverHighlight, + isDayMode: isDayMode, + isItemClickable: isItemClickable, + item: item, + index: index, + channelOverlapsCount: channelOverlapsCount, + hourWidth: hourWidth, + timelineDividers: timelineDividers, + renderGridCell: renderGridCell, + onItemClick: onItemClick, + onItemDrop: onItemDrop + }; + // @ts-ignore + return React.createElement(GridCellItem, Object.assign({ + key: item.channel.uuid + index + }, props)); + }; + return React.createElement(GridContainer$1, { + className: "planby-grid" + }, gridItems.map(function (item, index) { + return renderGridItem(item, index); + })); +} + +var ScrollBox$1 = ScrollBox, + Content$1 = Content; +var Layout = /*#__PURE__*/React__default.forwardRef(function (props, scrollBoxRef) { + var startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays, + liveRefreshTime = props.liveRefreshTime, + scrollY = props.scrollY; + var channels = props.channels, + channelOverlapsCount = props.channelOverlapsCount, + programs = props.programs, + programOverlaps = props.programOverlaps, + layerOverlapLevel = props.layerOverlapLevel; + var timezone = props.timezone, + areas = props.areas, + grid = props.grid, + gridItems = props.gridItems, + mode = props.mode, + dnd = props.dnd, + snap = props.snap, + overlap = props.overlap, + overlapMode = props.overlapMode, + timelineDividers = props.timelineDividers; + var dayWidth = props.dayWidth, + hourWidth = props.hourWidth, + monthWidth = props.monthWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + itemHeight = props.itemHeight; + var days = props.days, + months = props.months, + numberOfHoursInDay = props.numberOfHoursInDay, + numberOfDays = props.numberOfDays, + numberOfMonths = props.numberOfMonths, + offsetStartHoursRange = props.offsetStartHoursRange; + var _props$isVerticalMode = props.isVerticalMode, + isVerticalMode = _props$isVerticalMode === void 0 ? false : _props$isVerticalMode, + _props$isRTL = props.isRTL, + isRTL = _props$isRTL === void 0 ? false : _props$isRTL, + _props$isSidebar = props.isSidebar, + isSidebar = _props$isSidebar === void 0 ? true : _props$isSidebar, + _props$isTimeline = props.isTimeline, + isTimeline = _props$isTimeline === void 0 ? true : _props$isTimeline, + _props$isLine = props.isLine, + isLine = _props$isLine === void 0 ? true : _props$isLine, + isToday = props.isToday, + _props$isBaseTimeForm = props.isBaseTimeFormat, + isBaseTimeFormat = _props$isBaseTimeForm === void 0 ? false : _props$isBaseTimeForm, + _props$isCurrentTime = props.isCurrentTime, + isCurrentTime = _props$isCurrentTime === void 0 ? false : _props$isCurrentTime, + _props$isResize = props.isResize, + isResize = _props$isResize === void 0 ? false : _props$isResize; + var dragMouseUp = props.dragMouseUp, + resizeMouseUp = props.resizeMouseUp, + openChannelGroupTree = props.openChannelGroupTree, + onLayoutBgClick = props.onLayoutBgClick, + onScroll = props.onScroll, + isProgramVisible = props.isProgramVisible, + isChannelVisible = props.isChannelVisible, + isTimelineVisible = props.isTimelineVisible, + renderProgram = props.renderProgram, + renderChannel = props.renderChannel, + renderTimeline = props.renderTimeline, + renderLine = props.renderLine, + renderCurrentTime = props.renderCurrentTime, + renderGridCell = props.renderGridCell; + // Calculate the height of the content + var channelsLength = channels.length; + var programsOverlapsLength = Object.keys(programOverlaps).length; + var programOverlapsSerialized = JSON.stringify(programOverlaps); + var contentHeight = React__default.useMemo(function () { + if (programsOverlapsLength > 0) { + return getChannelsContentHeight(channels); + } + return channelsLength * itemHeight; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channelsLength, programsOverlapsLength, itemHeight, programOverlapsSerialized]); + var showAreas = areas.length > 0; + var isFuture = isFutureTime(endDate); + var renderPrograms = function renderPrograms(program, index) { + var _channelOverlapsCount, _data$fixedVisibility; + var position = program.position, + data = program.data; + var overlapsCount = (_channelOverlapsCount = channelOverlapsCount[program.data.channelUuid]) != null ? _channelOverlapsCount : 1; + var isVisible = (_data$fixedVisibility = data.fixedVisibility) != null ? _data$fixedVisibility : isProgramVisible(position, overlapsCount); + if (isVisible) { + setLayoutScreenCloneElement(program, index); + var options = getProgramOptions({ + isVerticalMode: isVerticalMode, + program: program, + programOverlaps: programOverlaps, + layerOverlapLevel: layerOverlapLevel, + overlapMode: overlapMode, + overlap: overlap + }); + var _props = { + isRTL: isRTL, + isResize: isResize, + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + startDate: startDate, + program: options, + liveRefreshTime: liveRefreshTime, + snap: snap, + mode: mode, + dnd: dnd, + dayWidth: dayWidth, + contentHeight: contentHeight, + itemHeight: itemHeight, + hourWidth: hourWidth, + dragMouseUp: dragMouseUp, + resizeMouseUp: resizeMouseUp + }; + if (renderProgram) return renderProgram(_props); + return React__default.createElement(Program, Object.assign({ + key: program.data.channelUuid + "-" + program.data.id + }, _props)); + } + deleteLayoutScreenCloneElement(program); + return null; + }; + var renderTopbar = function renderTopbar() { + var timeProps = { + isVerticalMode: isVerticalMode, + isSidebar: isSidebar, + isRTL: isRTL, + isTimelineVisible: isTimelineVisible, + isToday: isToday, + isBaseTimeFormat: isBaseTimeFormat, + isCurrentTime: isCurrentTime, + timezone: timezone, + startDate: startDate, + endDate: endDate, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + offsetStartHoursRange: offsetStartHoursRange, + monthWidth: monthWidth, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + numberOfDays: numberOfDays, + hourWidth: hourWidth, + days: days, + months: months, + hoursInDays: hoursInDays, + liveRefreshTime: liveRefreshTime, + mode: mode, + timelineDividers: timelineDividers, + renderCurrentTime: renderCurrentTime + }; + if (renderTimeline) { + return renderTimeline(timeProps); + } + return React__default.createElement(Timeline, Object.assign({}, timeProps)); + }; + return React__default.createElement(ScrollBox$1, { + ref: scrollBoxRef, + id: "planby-layout-scrollbox", + className: "planby-layout", + isRTL: isRTL, + onScroll: onScroll + }, grid.enabled && React__default.createElement(Grid, { + isVerticalMode: isVerticalMode, + isProgramVisible: isProgramVisible, + channelOverlapsCount: channelOverlapsCount, + isBaseTimeFormat: isBaseTimeFormat, + hourWidth: hourWidth, + dayWidth: dayWidth, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + grid: grid, + gridItems: gridItems, + mode: mode, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + timelineDividers: timelineDividers, + renderGridCell: renderGridCell + }), onLayoutBgClick && React__default.createElement(LayoutBg, { + className: "planby-layout-bg", + isSidebar: isSidebar, + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + dayWidth: dayWidth, + contentHeight: contentHeight, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + onClick: onLayoutBgClick + }), isLine && isToday && isFuture && React__default.createElement(Line, { + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + startDate: startDate, + endDate: endDate, + height: contentHeight, + liveRefreshTime: liveRefreshTime, + hoursInDays: hoursInDays, + timezone: timezone, + renderLine: renderLine + }), showAreas && React__default.createElement(Areas, { + isVerticalMode: isVerticalMode, + sidebarWidth: sidebarWidth, + hourWidth: hourWidth, + areas: areas, + startDate: startDate, + endDate: endDate, + height: contentHeight, + timelineHeight: timelineHeight + }), isTimeline && renderTopbar(), isSidebar && React__default.createElement(Channels, { + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isTimeline: isTimeline, + isChannelVisible: isChannelVisible, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + contentHeight: contentHeight, + channels: channels, + scrollY: scrollY, + openChannelGroupTree: openChannelGroupTree, + renderChannel: renderChannel + }), React__default.createElement(Content$1, { + className: "planby-content", + isVerticalMode: isVerticalMode, + isSidebar: isSidebar, + isTimeline: isTimeline, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + contentHeight: contentHeight + }, programs.map(function (program, index) { + return renderPrograms(program, index); + }))); +}); + +var _excluded$6 = ["isVerticalMode", "program", "onClick"]; +var ProgramBox$1 = ProgramBox, + ProgramContent$1 = ProgramContent, + ProgramResizeHandle$1 = ProgramResizeHandle, + ProgramFlex$1 = ProgramFlex, + ProgramStack$1 = ProgramStack, + ProgramTitle$1 = ProgramTitle, + ProgramText$1 = ProgramText, + ProgramImage$1 = ProgramImage; +function Program(_ref) { + var isVerticalMode = _ref.isVerticalMode, + program = _ref.program, + onClick = _ref.onClick, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$6); + var _useProgram = useProgram(_extends({ + isVerticalMode: isVerticalMode, + program: program + }, rest)), + isRTL = _useProgram.isRTL, + isLive = _useProgram.isLive, + isMinWidth = _useProgram.isMinWidth, + isMouseEvent = _useProgram.isMouseEvent, + styles = _useProgram.styles, + resizeEvents = _useProgram.resizeEvents, + formatTime = _useProgram.formatTime, + getMouseEvents = _useProgram.getMouseEvents, + getMouseEventTempTime = _useProgram.getMouseEventTempTime, + set12HoursTimeFormat = _useProgram.set12HoursTimeFormat, + getRTLSinceTime = _useProgram.getRTLSinceTime, + getRTLTillTime = _useProgram.getRTLTillTime; + var data = program.data; + var image = data.image, + title = data.title, + since = data.since, + till = data.till; + var handleOnContentClick = function handleOnContentClick() { + return onClick == null ? void 0 : onClick(data); + }; + var sinceTime = formatTime(getRTLSinceTime(since), set12HoursTimeFormat()).toLowerCase(); + var tillTime = formatTime(getRTLTillTime(till), set12HoursTimeFormat()).toLowerCase(); + var tempTime = getMouseEventTempTime(); + return React.createElement(ProgramBox$1, Object.assign({ + id: data.id, + className: "planby-program", + width: styles.width, + style: styles.position + }, getMouseEvents()), React.createElement(ProgramContent$1, Object.assign({ + className: "planby-program-content", + width: styles.width, + isLive: isLive, + isVerticalMode: isVerticalMode, + onClick: handleOnContentClick + }, rest), React.createElement(ProgramResizeHandle$1, Object.assign({}, resizeEvents.eventsLeft)), React.createElement(ProgramResizeHandle$1, Object.assign({}, resizeEvents.eventsRight)), React.createElement(ProgramFlex$1, { + className: "planby-program-flex", + isVerticalMode: isVerticalMode + }, isLive && isMinWidth && React.createElement(ProgramImage$1, { + isVerticalMode: isVerticalMode, + src: image, + alt: "Preview" + }), React.createElement(ProgramStack$1, { + className: "planby-program-stack", + isRTL: isRTL + }, React.createElement(ProgramTitle$1, { + className: "planby-program-title" + }, title), React.createElement(ProgramText$1, { + className: "planby-program-text", + "aria-label": "program time" + }, isMouseEvent ? React.createElement(React.Fragment, null, tempTime.since, " - ", tempTime.till) : React.createElement(React.Fragment, null, sinceTime, " - ", tillTime)))))); +} + +var Box$3 = Box$1; +function Channels(props) { + var channels = props.channels, + scrollY = props.scrollY, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + contentHeight = props.contentHeight, + openChannelGroupTree = props.openChannelGroupTree, + renderChannel = props.renderChannel; + var isVerticalMode = props.isVerticalMode, + isRTL = props.isRTL, + isTimeline = props.isTimeline, + isChannelVisible = props.isChannelVisible; + var renderChannels = function renderChannels(channel) { + var channelWithPosition = getChannelVerticalPosition(channel, isVerticalMode); + var isVisible = isChannelVisible(channelWithPosition.position); + var newChannel = getChannelGroupTreeProps(channelWithPosition); + var groupEventProps = newChannel.groupTree ? { + onOpenGroupTree: openChannelGroupTree + } : {}; + if (isVisible) { + if (renderChannel) { + return renderChannel(_extends({ + channel: newChannel, + isVerticalMode: isVerticalMode, + isRTL: isRTL + }, groupEventProps)); + } + return React.createElement(Channel, Object.assign({ + key: channel.uuid, + channel: newChannel, + isVerticalMode: isVerticalMode + }, groupEventProps)); + } + return null; + }; + return React.createElement(Box$3, { + className: "planby-channels", + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isTimeline: isTimeline, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + contentHeight: contentHeight, + bottom: scrollY + }, channels.map(renderChannels)); +} + +var _excluded$7 = ["isVerticalMode", "channel", "onOpenGroupTree", "onClick"]; +var ChannelWrapper$1 = ChannelWrapper, + ChannelLogo$1 = ChannelLogo; +function Channel(_ref) { + var isVerticalMode = _ref.isVerticalMode, + channel = _ref.channel, + onOpenGroupTree = _ref.onOpenGroupTree, + _onClick = _ref.onClick, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$7); + var position = channel.position, + logo = channel.logo, + groupTree = channel.groupTree; + return React.createElement(ChannelWrapper$1, Object.assign({ + className: "planby-channel", + isVerticalMode: isVerticalMode, + groupTree: groupTree, + onClick: function onClick() { + var _onOpenGroupTree; + return (_onOpenGroupTree = onOpenGroupTree == null ? void 0 : onOpenGroupTree(channel)) != null ? _onOpenGroupTree : _onClick == null ? void 0 : _onClick(channel); + } + }, position, rest), React.createElement(ChannelLogo$1, { + src: logo, + alt: "Logo" + })); +} + +var CurrentTimeBox$1 = CurrentTimeBox, + CurrentTimeContent$1 = CurrentTimeContent; +function CurrentTime(props) { + var isVerticalMode = props.isVerticalMode, + isBaseTimeFormat = props.isBaseTimeFormat, + isRTL = props.isRTL; + var timezone = props.timezone, + mode = props.mode, + liveRefreshTime = props.liveRefreshTime, + startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays; + var dayWidth = props.dayWidth, + timelineHeight = props.timelineHeight, + hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth; + var renderCurrentTime = props.renderCurrentTime; + var _useLine = useLine({ + timezone: timezone, + hoursInDays: hoursInDays, + startDate: startDate, + endDate: endDate, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + liveRefreshTime: liveRefreshTime + }), + showLine = _useLine.showLine, + positionX = _useLine.positionX; + var _useCurrentTime = useCurrentTime({ + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + mode: mode, + positionX: positionX, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth + }), + time = _useCurrentTime.time, + getCurrentTimeStyles = _useCurrentTime.getCurrentTimeStyles; + if (!showLine) return null; + var styles = getCurrentTimeStyles(); + if (renderCurrentTime) { + return renderCurrentTime({ + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL, + time: time, + styles: styles + }); + } + return React.createElement(CurrentTimeBox$1, Object.assign({ + className: "planby-current-time" + }, styles.position), React.createElement(CurrentTimeContent$1, { + className: "planby-current-content", + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL + }, time)); +} + +var _excluded$8 = ["isWeekMonthMode", "isMonthMode", "isTodayInHoursInDays", "areHoursInDays", "time"]; +var TimelineWrapper$1 = TimelineWrapper, + TimelineBox$1 = TimelineBox, + TimelineTime$1 = TimelineTime, + TimelineDividers$1 = TimelineDividers, + TimelineDivider$1 = TimelineDivider; +function Timeline(props) { + var _useTimeline = useTimeline(props), + isWeekMonthMode = _useTimeline.isWeekMonthMode, + isMonthMode = _useTimeline.isMonthMode, + isTodayInHoursInDays = _useTimeline.isTodayInHoursInDays, + areHoursInDays = _useTimeline.areHoursInDays, + time = _useTimeline.time, + rest = _objectWithoutPropertiesLoose(_useTimeline, _excluded$8); + var timelineHeight = rest.timelineHeight, + weekDayWidth = rest.weekDayWidth, + monthsWidth = rest.monthsWidth, + dividers = rest.dividers, + timelineDividers = rest.timelineDividers; + var formatWeekMonthDate = rest.formatWeekMonthDate, + getTime = rest.getTime, + getDayMonthName = rest.getDayMonthName, + getTimelineProps = rest.getTimelineProps, + getCurrentTimeProps = rest.getCurrentTimeProps; + var isToday = props.isToday, + isBaseTimeFormat = props.isBaseTimeFormat, + isCurrentTime = props.isCurrentTime, + isRTL = props.isRTL, + isTimelineVisible = props.isTimelineVisible, + isVerticalMode = props.isVerticalMode; + var mode = props.mode; + var hourWidth = props.hourWidth; + // Handlers + var renderDay = function renderDay(item, index) { + var _getTime = getTime(item), + isNewDay = _getTime.isNewDay, + time = _getTime.time; + var position = { + left: hourWidth * index, + width: hourWidth + }; + var isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return React.createElement(TimelineBox$1, Object.assign({ + className: "planby-timeline-box", + key: index, + isToday: isToday, + isCurrentTime: isCurrentTime, + isVerticalMode: isVerticalMode, + isTodayInHoursInDays: isTodayInHoursInDays, + areHoursInDays: areHoursInDays, + timelineHeight: timelineHeight + }, position), React.createElement(TimelineTime$1, { + className: "planby-timeline-time", + isNewDay: isNewDay, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL, + isVerticalMode: isVerticalMode + }, time), React.createElement(TimelineDividers$1, { + isVerticalMode: isVerticalMode, + className: "planby-timeline-dividers" + }, renderDividers(isNewDay))); + }; + var renderWeekMonth = function renderWeekMonth(item, index) { + var width = isMonthMode ? monthsWidth[index].width : weekDayWidth; + var left = isMonthMode ? monthsWidth[index].left : width * index; + var position = { + left: left, + width: width + }; + var isVisible = isTimelineVisible(position); + if (!isVisible) return null; + var isModernStyle = mode.style === "modern"; + return React.createElement(TimelineWeekMonthBox, Object.assign({ + className: "planby-timeline-box", + key: index, + isToday: isToday, + isWeekMonthMode: isWeekMonthMode, + isCurrentTime: isCurrentTime, + isVerticalMode: isVerticalMode, + timelineHeight: timelineHeight, + styleType: mode.style + }, position), React.createElement(TimelineWeekMonthDate, { + className: "planby-timeline-week-month-date", + isRTL: isRTL, + isVerticalMode: isVerticalMode, + styleType: mode.style + }, isModernStyle && React.createElement("span", null, getDayMonthName(item)), React.createElement("span", null, formatWeekMonthDate(item)))); + }; + var renderDividers = function renderDividers(isNewDay) { + return dividers.map(function (_, index) { + return React.createElement(TimelineDivider$1, { + key: index, + isVerticalMode: isVerticalMode, + className: "planby-timeline-divider", + isNewDay: isNewDay, + left: index * (hourWidth / timelineDividers), + width: hourWidth / timelineDividers + }); + }); + }; + var renderTimelineItems = function renderTimelineItems(item, index) { + return isWeekMonthMode ? renderWeekMonth(item, index) : renderDay(item, index); + }; + return React.createElement(TimelineWrapper$1, Object.assign({ + className: "planby-timeline-wrapper" + }, getTimelineProps()), isCurrentTime && isToday && React.createElement(CurrentTime, Object.assign({}, getCurrentTimeProps())), time.map(function (item, index) { + return renderTimelineItems(item, index); + })); +} + +var _excluded$9 = ["isTimeline", "isVerticalMode", "height", "renderLine"]; +var lineStyles$1 = lineStyles, + LineBox$1 = LineBox; +function Line(_ref) { + var isTimeline = _ref.isTimeline, + isVerticalMode = _ref.isVerticalMode, + height = _ref.height, + renderLine = _ref.renderLine, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$9); + var _useLine = useLine(rest), + positionX = _useLine.positionX, + showLine = _useLine.showLine; + if (!showLine) return null; + var position = { + height: height, + left: positionX, + zIndex: Layers.Line + }; + var styles = getLineStyles({ + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + lineStyles: lineStyles$1, + position: position + }); + if (renderLine) return React.createElement(React.Fragment, null, renderLine({ + styles: styles, + isVerticalMode: isVerticalMode, + isTimeline: isTimeline + })); + return React.createElement(LineBox$1, Object.assign({ + className: "planby-line", + isVerticalMode: isVerticalMode, + isTimeline: isTimeline + }, position)); +} + +var Box$4 = Box$2, + Shape$1 = Shape; +var Element = function Element(_ref) { + var width = _ref.width, + color = _ref.color, + animate = _ref.animate, + marginRight = _ref.marginRight, + transition = _ref.transition; + return React.createElement(Shape$1, { + className: "SHAPE", + width: width, + color: color, + animate: animate, + transition: transition, + marginRight: marginRight + }); +}; +function Loader() { + return React.createElement(Box$4, { + "aria-label": "loading" + }, React.createElement("div", null, React.createElement("div", { + style: { + display: "flex", + justifyContent: "end", + marginBottom: 16 + } + }, React.createElement(Element, { + animate: { + right: ["0px", "75px", "0px"] + }, + transition: { + duration: 1 + }, + width: 217, + color: "teal", + marginRight: 10 + }), React.createElement(Element, { + width: 122, + color: "purple", + animate: { + right: ["0px", "50px", "0px"] + }, + transition: { + duration: 1, + delay: 0.02 + } + })), React.createElement("div", { + style: { + display: "flex", + justifyContent: "end", + marginBottom: 16 + } + }, React.createElement(Element, { + width: 267, + color: "pink", + animate: { + right: ["0px", "70px", "0px"] + }, + transition: { + delay: 0.5, + duration: 1 + } + })), React.createElement("div", { + style: { + display: "flex", + justifyContent: "end" + } + }, React.createElement(Element, { + width: 217, + color: "purple", + marginRight: 10, + animate: { + right: ["0px", "95px", "0px"] + }, + transition: { + delay: 0.3, + duration: 1 + } + }), React.createElement(Element, { + width: 80, + color: "teal", + animate: { + right: ["0px", "70px", "0px"] + }, + transition: { + duration: 1, + delay: 0.33 + } + })))); +} + +var getAreasFields = function getAreasFields(_ref) { + var _area$endDate; + var area = _ref.area, + startDate = _ref.startDate, + endDate = _ref.endDate, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + height = _ref.height; + var areaStartDate = area.startDate; + var areaEndDate = (_area$endDate = area == null ? void 0 : area.endDate) != null ? _area$endDate : areaStartDate; + var left = getPositionX(startDate, areaStartDate, startDate, endDate, hourWidth) + sidebarWidth; + var width = getPositionX(areaStartDate, areaEndDate, startDate, endDate, hourWidth); + var intervalOptions = { + start: new Date(startDate), + end: new Date(endDate) + }; + var isStartAreaDateValid = dateFns.isWithinInterval(new Date(areaStartDate), intervalOptions); + var showArea = isStartAreaDateValid; + var areaFieldStyles = { + positionX: left, + width: width, + height: height, + timelineHeight: timelineHeight + }; + return _extends({}, area, { + showArea: showArea, + areaFieldStyles: areaFieldStyles, + areaBgStyles: area.styles + }); +}; + +function useAreas(props) { + var startDate = props.startDate, + endDate = props.endDate, + areas = props.areas; + var hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + height = props.height; + var areasSerialized = JSON.stringify(areas); + var data = React.useMemo(function () { + return areas.map(function (area) { + var options = { + area: area, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + height: height, + startDate: startDate, + endDate: endDate, + timelineHeight: timelineHeight + }; + return getAreasFields(options); + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [areasSerialized, hourWidth, sidebarWidth, height, startDate, endDate, timelineHeight]); + return { + data: data + }; +} + +var _excluded$a = ["isVerticalMode"]; +var AreaAnnotation$1 = AreaAnnotation, + AreaBg$1 = AreaBg, + AreaFiled$1 = AreaFiled; +function Areas(_ref) { + var isVerticalMode = _ref.isVerticalMode, + props = _objectWithoutPropertiesLoose(_ref, _excluded$a); + var _useAreas = useAreas(props), + data = _useAreas.data; + var renderAreaAnnotation = function renderAreaAnnotation(props) { + var isLeft = props.isLeft, + text = props.text; + var areaFieldStyles = props.areaFieldStyles, + styles = props.styles; + var className = isLeft ? "left" : "right"; + return React__default.createElement(AreaAnnotation$1, { + className: "planby-area-annotation-" + className, + isVerticalMode: isVerticalMode, + isLeft: isLeft, + timelineHeight: areaFieldStyles.timelineHeight, + width: areaFieldStyles.width, + style: styles + }, text); + }; + var renderArea = function renderArea(props, index) { + var _annotations$styles; + var showArea = props.showArea, + annotations = props.annotations, + onClick = props.onClick; + var _props$areaBgStyles = props.areaBgStyles, + areaBgStyles = _props$areaBgStyles === void 0 ? {} : _props$areaBgStyles, + areaFieldStyles = props.areaFieldStyles; + if (!showArea) return null; + var annotationProps = { + areaFieldStyles: areaFieldStyles, + styles: (_annotations$styles = annotations == null ? void 0 : annotations.styles) != null ? _annotations$styles : {} + }; + return React__default.createElement(AreaFiled$1, Object.assign({ + key: index, + className: "planby-area-field", + isVerticalMode: isVerticalMode, + isClickable: !!onClick, + onClick: onClick + }, areaFieldStyles), React__default.createElement(AreaBg$1, { + className: "planby-area-bg", + style: areaBgStyles + }), annotations && React__default.createElement(React__default.Fragment, null, annotations.textStart && renderAreaAnnotation(_extends({ + isLeft: true, + text: annotations.textStart + }, annotationProps)), annotations.textEnd && renderAreaAnnotation(_extends({ + isLeft: false, + text: annotations.textEnd + }, annotationProps)))); + }; + return React__default.createElement(React__default.Fragment, null, data.map(function (props, index) { + return renderArea(props, index); + })); +} + +var _excluded$b = ["children", "width", "height", "sidebarWidth", "timelineHeight", "theme", "globalStyles", "isVerticalMode", "isRTL", "isSidebar", "isTimeline", "isLoading", "loader"]; +var Container$1 = Container, + Wrapper$1 = Wrapper, + Box$5 = Box; +var Epg = /*#__PURE__*/React__default.forwardRef(function (_ref, containerRef) { + var children = _ref.children, + width = _ref.width, + height = _ref.height, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + theme = _ref.theme, + customGlobalStyles = _ref.globalStyles, + _ref$isVerticalMode = _ref.isVerticalMode, + isVerticalMode = _ref$isVerticalMode === void 0 ? false : _ref$isVerticalMode, + _ref$isRTL = _ref.isRTL, + isRTL = _ref$isRTL === void 0 ? false : _ref$isRTL, + _ref$isSidebar = _ref.isSidebar, + isSidebar = _ref$isSidebar === void 0 ? true : _ref$isSidebar, + _ref$isTimeline = _ref.isTimeline, + isTimeline = _ref$isTimeline === void 0 ? true : _ref$isTimeline, + _ref$isLoading = _ref.isLoading, + isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading, + LoaderComponent = _ref.loader, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$b); + var renderLoader = function renderLoader() { + return LoaderComponent != null ? LoaderComponent : React__default.createElement(Loader, null); + }; + var epgGlobalStyles = customGlobalStyles != null ? customGlobalStyles : globalStyles; + var blankSpaceStyles = isVerticalMode ? { + height: sidebarWidth, + width: timelineHeight + } : { + width: sidebarWidth, + height: timelineHeight + }; + return React__default.createElement(react.ThemeProvider, { + theme: theme + }, React__default.createElement(react.Global, { + styles: epgGlobalStyles + }), React__default.createElement(Container$1, Object.assign({ + className: "planby", + width: width, + height: height, + ref: containerRef + }, rest), React__default.createElement(WrapperDnD, null, isSidebar && isTimeline && React__default.createElement(Box$5, { + className: "planby-corner-box", + isRTL: isRTL, + left: 0, + top: 0, + style: blankSpaceStyles + }), isLoading && renderLoader(), children))); +}); +function WrapperDnD(_ref2) { + var children = _ref2.children; + var _useGridExternalDnD = useGridExternalDnD(), + isDragOver = _useGridExternalDnD.isDragOver, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave, + dropAreaRef = _useGridExternalDnD.dropAreaRef; + React__default.useEffect(function () { + var gridElement = document.querySelector(".planby-grid"); + if (gridElement) { + if (isDragOver) { + gridElement.style.zIndex = "5"; + } else { + gridElement.style.zIndex = "1"; + } + } + }, [isDragOver]); + return React__default.createElement(Wrapper$1, { + ref: dropAreaRef, + id: "planby-wrapper", + onDragOver: onDragEnter, + onDragLeaveCapture: onDragLeave, + onDrop: onDragLeave + }, children); +} + +// Styles +var ChannelBox = ChannelWrapper, + ChannelLogo$2 = ChannelLogo; +var CurrentTimeBox$2 = CurrentTimeBox, + CurrentTimeContent$2 = CurrentTimeContent; +var GridItem$2 = GridItem, + GridDivider$2 = GridDivider; +var ProgramBox$2 = ProgramBox, + ProgramContent$2 = ProgramContent, + ProgramFlex$2 = ProgramFlex, + ProgramStack$2 = ProgramStack, + ProgramTitle$2 = ProgramTitle, + ProgramText$2 = ProgramText, + ProgramImage$2 = ProgramImage, + ProgramResizeHandle$2 = ProgramResizeHandle; +var TimelineWrapper$2 = TimelineWrapper, + TimelineBox$2 = TimelineBox, + TimelineTime$2 = TimelineTime, + TimelineDividerStyled = TimelineDivider, + TimelineDividers$2 = TimelineDividers, + TimelineWeekMonthBox$1 = TimelineWeekMonthBox, + TimelineWeekMonthDate$1 = TimelineWeekMonthDate; +var TimelineDivider$2 = TimelineDividerStyled; + +exports.ChannelBox = ChannelBox; +exports.ChannelLogo = ChannelLogo$2; +exports.CurrentTime = CurrentTime; +exports.CurrentTimeBox = CurrentTimeBox$2; +exports.CurrentTimeContent = CurrentTimeContent$2; +exports.Epg = Epg; +exports.GridDivider = GridDivider$2; +exports.GridItem = GridItem$2; +exports.Layout = Layout; +exports.ProgramBox = ProgramBox$2; +exports.ProgramContent = ProgramContent$2; +exports.ProgramFlex = ProgramFlex$2; +exports.ProgramImage = ProgramImage$2; +exports.ProgramResizeHandle = ProgramResizeHandle$2; +exports.ProgramStack = ProgramStack$2; +exports.ProgramText = ProgramText$2; +exports.ProgramTitle = ProgramTitle$2; +exports.TimelineBox = TimelineBox$2; +exports.TimelineDivider = TimelineDivider$2; +exports.TimelineDividers = TimelineDividers$2; +exports.TimelineTime = TimelineTime$2; +exports.TimelineWeekMonthBox = TimelineWeekMonthBox$1; +exports.TimelineWeekMonthDate = TimelineWeekMonthDate$1; +exports.TimelineWrapper = TimelineWrapper$2; +exports.useEpg = useEpg; +exports.useGridExternalDnD = useGridExternalDnD; +exports.useProgram = useProgram; +exports.useTimeline = useTimeline; +//# sourceMappingURL=planby-pro.cjs.development.js.map diff --git a/dist/planby-pro.cjs.development.js.map b/dist/planby-pro.cjs.development.js.map new file mode 100644 index 0000000..98a6511 --- /dev/null +++ b/dist/planby-pro.cjs.development.js.map @@ -0,0 +1 @@ +{"version":3,"file":"planby-pro.cjs.development.js","sources":["../src/Epg/styles/global.styles.ts","../src/Epg/helpers/enums.ts","../src/Epg/helpers/variables.ts","../src/Epg/helpers/common.ts","../src/Epg/helpers/layout.ts","../src/Epg/utils/time.ts","../src/Epg/helpers/epg.ts","../src/Epg/helpers/time.ts","../src/Epg/helpers/timeline.ts","../src/Epg/helpers/line.ts","../src/Epg/helpers/channels.ts","../src/Epg/helpers/overlaps.ts","../src/Epg/helpers/drag.ts","../src/Epg/helpers/grid.ts","../src/Epg/styles/Epg.styles.ts","../src/Epg/styles/Channels.styles.ts","../src/Epg/styles/Channel.styles.ts","../src/Epg/styles/Program.styles.ts","../src/Epg/styles/Timeline.styles.ts","../src/Epg/styles/Line.styles.ts","../src/Epg/styles/Loader.styles.ts","../src/Epg/styles/CurrentTime.styles.ts","../src/Epg/styles/Area.styles.ts","../src/Epg/styles/Grid.styles.ts","../src/Epg/theme/theme.ts","../src/Epg/hooks/useLayout.tsx","../src/Epg/hooks/useEpg.tsx","../src/Epg/hooks/useInterval.tsx","../src/Epg/hooks/useIsTouchDevice.tsx","../src/Epg/hooks/useDrag.tsx","../src/Epg/hooks/useResize.tsx","../src/Epg/hooks/useProgram.tsx","../src/Epg/hooks/useTimeline.tsx","../src/Epg/hooks/useLine.tsx","../src/Epg/hooks/useCurrentTime.tsx","../src/Epg/hooks/useGrid.tsx","../src/Epg/hooks/useGridExternalDnD.tsx","../src/Epg/components/GridDividerItem.tsx","../src/Epg/components/GridCellItem.tsx","../src/Epg/components/Grid.tsx","../src/Epg/components/Layout.tsx","../src/Epg/components/Program.tsx","../src/Epg/components/Channels.tsx","../src/Epg/components/Channel.tsx","../src/Epg/components/CurrentTime.tsx","../src/Epg/components/Timeline.tsx","../src/Epg/components/Line.tsx","../src/Epg/components/Loader.tsx","../src/Epg/helpers/areas.ts","../src/Epg/hooks/useAreas.tsx","../src/Epg/components/Areas.tsx","../src/Epg/Epg.tsx","../src/Epg/index.ts"],"sourcesContent":["import { css } from \"@emotion/react\";\n\nexport const globalStyles = css`\n @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n .planby {\n font-family: \"Inter\", system-ui, -apple-system,\n /* Firefox supports this but not yet system-ui */ \"Segoe UI\", Roboto,\n Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"; /* 2 */\n }\n`;\n","export enum Layers {\n Sidebar = 9,\n EpgCornerBox = 10,\n Line = 9,\n Loader = 12,\n Program = 1,\n Timeline = 9,\n Area = 2,\n}\n","// Dimensions\nexport const DAY_WIDTH = 7200;\nexport const HOURS_IN_DAY = 24;\n\nexport const HOUR_IN_MINUTES = 60;\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const TIMELINE_HEIGHT = 60;\nexport const TIMELINE_HEIGHT_MODERN_STYLE = 80;\nexport const TIMELINE_WIDTH_VERTICAL = 70;\nexport const TIMELINE_DIVIDERS = 4;\n\nexport const SIDEBAR_WIDTH = 100;\nexport const ITEM_HEIGHT = 80;\n\nexport const ITEM_OVERSCAN = ITEM_HEIGHT;\n\n// Debounce\nexport const DEBOUNCE_WAIT = 100;\nexport const DEBOUNCE_WAIT_MAX = 100;\n\n// Live refresh time\nexport const LIVE_REFRESH_TIME = 120;\n\n// Theme\nexport const THEME_MODE = {\n DARK: \"dark\",\n LIGHT: \"light\",\n};\n\nexport const TIME_FORMAT = {\n DEFAULT: \"yyyy-MM-dd HH:mm:ss\",\n DATE: \"yyyy-MM-dd\",\n DAY: \"EEE\",\n DAY_DATE: \"dd\",\n MONTH: \"LLL\",\n DAY_MONTH: \"dd.MM\",\n BASE_DAY_MONTH: \"MM/dd\",\n HOURS_MIN: \"HH:mm\",\n BASE_HOURS_TIME: \"h:mm a\",\n YEAR: \"yyyy\",\n};\n\n// Overlap mode\nexport const OVERLAP_MODES = {\n STACK: \"stack\",\n LAYER: \"layer\",\n};\n\n// Timezone mode\nexport const TIMEZONE_MODES = {\n UTC_TO_ZONED_TIME: \"utc\",\n};\n","import { useLayoutEffect, useEffect } from \"react\";\nimport {\n Interval,\n isToday as isTodayFns,\n format,\n differenceInHours,\n differenceInDays,\n startOfDay,\n eachDayOfInterval,\n eachMonthOfInterval,\n differenceInMonths,\n startOfMonth,\n addMonths,\n} from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n\n// Import interfaces\nimport {\n HoursInDayDiffTime,\n Mode,\n Overlap,\n ProgramOverlaps,\n} from \"./interfaces\";\n\n// Import types\nimport { ProgramItem } from \"./types\";\n\n// Import variables\nimport { HOURS_IN_DAY, OVERLAP_MODES, TIME_FORMAT } from \"./variables\";\n\ntype DateTime = string | number | Date;\n\ntype OmitObjectType = { [key: string]: any };\nexport const omit = (obj: OmitObjectType, ...props: string[]) => {\n const result = { ...obj };\n\n for (const property of props) {\n delete result[property];\n }\n\n return result;\n};\n\nexport const generateArray = (num: number) => new Array(num).fill(\"\");\n\ninterface OverlapProgramOptions {\n isVerticalMode: boolean;\n program: ProgramItem;\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n overlap: Overlap;\n overlapMode: Overlap[\"mode\"];\n}\nconst getOverlapProgramOptions = ({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n}: OverlapProgramOptions) => {\n const { data, position } = program;\n const linkedProgramOverlaps = programOverlaps[data.channelUuid];\n\n if (linkedProgramOverlaps) {\n const programOverlapIndex = linkedProgramOverlaps.findIndex(\n (element) => element.data.id === data.id\n );\n const overlapProgram = linkedProgramOverlaps[programOverlapIndex];\n\n if (overlapProgram) {\n if (\n overlapMode === OVERLAP_MODES.LAYER &&\n overlapProgram.data.channelPosition.top < overlapProgram.position.top\n ) {\n let newTop = overlapProgram.position.top * layerOverlapLevel;\n if (overlapProgram.data.channelPosition.top !== 0) {\n newTop =\n overlapProgram.data.channelPosition.top +\n Math.abs(\n overlapProgram.data.channelPosition.top -\n overlapProgram.position.top\n ) *\n layerOverlapLevel;\n }\n\n let position = {\n ...overlapProgram.position,\n top: newTop,\n };\n\n if (isVerticalMode) {\n position = switchPosition({\n ...overlapProgram.position,\n top: newTop,\n });\n }\n\n return {\n ...program,\n isOverlap: true,\n position,\n };\n }\n\n return {\n ...program,\n position: isVerticalMode\n ? switchPosition(overlapProgram.position)\n : overlapProgram.position,\n };\n } else {\n return {\n ...program,\n position,\n };\n }\n }\n const { width, height, top, left } = position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const getProgramOptions = ({\n isVerticalMode,\n program,\n overlap,\n ...rest\n}: OverlapProgramOptions) => {\n if (overlap.enabled) {\n return getOverlapProgramOptions({\n isVerticalMode,\n program,\n overlap,\n ...rest,\n });\n }\n\n const { width, height, top, left } = program.position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const useIsomorphicLayoutEffect = () =>\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const getHourWidth = (dayWidth: number) => dayWidth / HOURS_IN_DAY;\n\nexport const getDate = (date: DateTime) => new Date(date);\n\nconst abs = (num: number) => Math.abs(num);\ninterface DayWidth {\n dayWidth: number;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n modeType: Mode[\"type\"];\n}\nexport const getDayWidthResources = ({\n dayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType,\n}: DayWidth) => {\n const defaultOptions = {\n hourWidth: 0,\n numberOfMonths: 0,\n numberOfHoursInDay: 0,\n monthWidth: 0,\n offsetStartHoursRange: 0,\n dayWidth: 0,\n };\n\n const startDateTime = new Date(startDate);\n const endDateTime = new Date(endDate);\n\n if (endDateTime < startDateTime) {\n console.error(\n `Invalid endDate property. Value of endDate must be greater than startDate. Props: startDateTime: ${startDateTime}, endDateTime: ${endDateTime}`\n );\n }\n if (modeType === \"week\" || modeType === \"month\") {\n const endOfMonthTime = startOfMonth(addMonths(endDateTime, 1));\n const numberOfMonthInMonthMode = differenceInMonths(\n endOfMonthTime,\n startDateTime\n );\n\n const numberOfDaysInWeekMode = differenceInDays(endDateTime, startDateTime);\n const dayWidthInWeekMode = Math.floor(dayWidth / numberOfDaysInWeekMode);\n const hourWidth = dayWidthInWeekMode / HOURS_IN_DAY;\n const newDayWidthInWeekMode =\n hourWidth * HOURS_IN_DAY * numberOfDaysInWeekMode;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidthInWeekMode),\n numberOfMonths: numberOfMonthInMonthMode,\n };\n }\n\n if (hoursInDays.length > 0) {\n const numberOfHoursInDay = hoursInDays.reduce(\n (acc, curr) => acc + curr.diffInHours,\n 0\n );\n const hourWidth = dayWidth / numberOfHoursInDay;\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n };\n }\n\n const offsetStartHoursRange = differenceInHours(\n startDateTime,\n startOfDay(startDateTime)\n );\n\n const numberOfHoursInDay = differenceInHours(endDateTime, startDateTime);\n const hourWidth = Math.floor(dayWidth / numberOfHoursInDay);\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n offsetStartHoursRange: abs(offsetStartHoursRange),\n };\n};\n\nconst convertDate = (date: DateTime) => {\n const newDate = (date as string).replace(/T.*/, \"\");\n return toDate(newDate);\n};\n\nexport const getDayResources = ({\n startDate,\n endDate,\n modeType,\n}: Pick) => {\n const startDateFormat = format(convertDate(startDate), TIME_FORMAT.DATE);\n const endDateFormat = format(convertDate(endDate), TIME_FORMAT.DATE);\n\n const modeIncrementValue = modeType === \"day\" ? 1 : 0;\n const diffDays =\n differenceInDays(toDate(endDateFormat), toDate(startDateFormat)) +\n modeIncrementValue;\n\n const startToEndInterval: Interval = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n\n const days = eachDayOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const months = eachMonthOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const dates = days.map((day) => isTodayFns(toDate(day)));\n let isToday = dates.some((day) => day === true);\n let currentDate = days[dates.indexOf(true)];\n\n return {\n isToday,\n currentDate,\n numberOfDays: diffDays,\n days,\n months,\n };\n};\n\nexport const switchPosition = (programPosition: ProgramItem[\"position\"]) => ({\n ...programPosition,\n top: programPosition.left,\n left: programPosition.top,\n width: programPosition.height,\n height: programPosition.width,\n});\n\nexport function generateUUID() {\n // Generate a random hexadecimal string with the specified length\n const generateRandomHex = (length: number) => {\n let result = \"\";\n const characters = \"abcdef0123456789\";\n\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n\n return result;\n };\n\n // Format a UUID string according to the version 4 UUID format\n const formatUUID = (parts: string[]) => {\n return `${parts[0]}-${parts[1]}-4${parts[2].substring(1)}-${\n \"89ab\"[Math.floor(Math.random() * 4)]\n }${parts[3].substring(1)}-${parts[4]}`;\n };\n\n // Generate the parts of the UUID\n const parts = [\n generateRandomHex(8),\n generateRandomHex(4),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n generateRandomHex(12),\n ];\n\n // Return the formatted UUID\n return formatUUID(parts);\n}\n","// Import interfaces\nimport { ChannelWithOmittedUuid, Timezone } from \"./interfaces\";\n// Import types\nimport { ChannelWithPosition, ProgramWithPosition } from \"./types\";\n\ntype LayoutScreenClone = Record>;\n\nlet LayoutScreenCloneCache = {} as LayoutScreenClone;\n\nconst setChannel = (event: ProgramWithPosition) => {\n const isChannel = LayoutScreenCloneCache[event.data.channelUuid];\n if (!isChannel) {\n LayoutScreenCloneCache[event.data.channelUuid] = {};\n return LayoutScreenCloneCache;\n }\n return LayoutScreenCloneCache;\n};\n\nconst updateLayoutScreenCloneElement = (data: LayoutScreenClone) =>\n (LayoutScreenCloneCache = data);\n\nexport const setLayoutScreenCloneElement = (\n event: ProgramWithPosition,\n index: number\n) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (!program) {\n event[\"data\"].index = index;\n channels[event.data.channelUuid][event.data.id] = event;\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const deleteLayoutScreenCloneElement = (event: ProgramWithPosition) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (program) {\n delete channels[event.data.channelUuid][event.data.id];\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const getLayoutScreenCloneElements = () => LayoutScreenCloneCache;\nexport const resetLayoutScreenCloneElements: () => void = () =>\n (LayoutScreenCloneCache = {} as LayoutScreenClone);\n\nexport const getChannelsContentHeight = (channels: ChannelWithPosition[]) =>\n channels.reduce((acc, channel) => (acc += channel.position.height), 0);\n\n// Channel epg indexes\ntype ChannelEpgIndex = Record<\n string,\n { uuid: string; first: number; last: number }\n>;\nlet channelEpgIndexesCache = {} as ChannelEpgIndex;\n\nexport const setChannelEpgIndexes = ({\n uuid,\n first = 0,\n last = 0,\n}: {\n uuid: string;\n first?: number;\n last?: number;\n}) => {\n channelEpgIndexesCache[uuid] = {\n first,\n last,\n uuid,\n };\n};\nexport const getChannelEpgIndexes = (uuid: string) => {\n return channelEpgIndexesCache[uuid];\n};\n\nexport const resetChannelsEpgIndexes: () => void = () =>\n (channelEpgIndexesCache = {} as ChannelEpgIndex);\n\n// Channels group tree\ntype ChannelGroupTree = Record<\n string,\n {\n isOpen: boolean;\n uuid: string;\n groupTree: boolean;\n nestedChildren?: string[];\n }\n>;\nlet channelsGroupTreeCache = {} as ChannelGroupTree;\n\nexport const setChannelGroupTree = (channel: ChannelWithOmittedUuid) => {\n channelsGroupTreeCache[channel.uuid as string] = {\n uuid: channel.uuid as string,\n isOpen: channel.isOpen,\n groupTree: channel.groupTree,\n };\n};\n\nexport const setChannelGroupTreeNestedChildren = (\n channelUuid: string,\n nestedChildUuid: string\n) => {\n const channel = channelsGroupTreeCache[channelUuid as string];\n channelsGroupTreeCache[channelUuid as string] = {\n ...channel,\n nestedChildren: [...(channel.nestedChildren ?? []), nestedChildUuid],\n };\n};\n\nexport const getChannelsGroupTree = () => channelsGroupTreeCache;\n\n// Timezones\nlet timezoneOptionsCache = { enabled: false, zone: \"\", mode: \"\" } as Timezone;\n\nexport const setTimezoneOptionsCache = (props: Timezone) => {\n timezoneOptionsCache = props;\n};\nexport const getTimezoneOptionsCache = () => {\n return timezoneOptionsCache;\n};\n\nexport const resetTimezoneOptionsCache: () => void = () =>\n (timezoneOptionsCache = {} as Timezone);\n","import {\n format as fnsFormat,\n // differenceInHours as fnsDifferenceInHours,\n // differenceInMinutes as fnsDifferenceInMinutes,\n} from \"date-fns\";\nimport {\n format as tzFormat,\n utcToZonedTime,\n zonedTimeToUtc,\n} from \"date-fns-tz\";\nimport {\n TIMEZONE_MODES,\n TIME_FORMAT,\n getTimezoneOptionsCache,\n} from \"../helpers\";\n\nexport const getNewDateTimeTz = (date: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = new Date(date);\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime.getTime();\n }\n\n return newDate.getTime();\n};\n\nexport const getNewDateTz = (date?: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = date ? new Date(date) : new Date();\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime;\n }\n\n return newDate;\n};\n\nexport const formatTz = (\n date: Date | number,\n formatTime: string = TIME_FORMAT.DEFAULT\n) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(date, timezone.zone);\n const formattedZonedTime = tzFormat(zonedTime, formatTime, {\n timeZone: timezone.zone,\n });\n return formattedZonedTime;\n }\n\n return fnsFormat(date, formatTime);\n};\n\nexport const zonedDateTimeToUtc = (date: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = zonedTimeToUtc(date, timezone.zone);\n return zonedTime;\n }\n\n return date;\n};\n","import { differenceInMinutes, getTime, endOfDay, addDays } from \"date-fns\";\n// Import interfaces\nimport {\n Channel,\n ChannelWithOmittedUuid,\n HoursInDayDiffTime,\n Mode,\n Program,\n ProgramWithOmittedUuid,\n} from \"./interfaces\";\n\n// Import types\nimport {\n ProgramWithPosition,\n Position,\n DateTime,\n ChannelWithPosition,\n} from \"./types\";\n\n// Import variables\nimport { HOUR_IN_MINUTES, OVERLAP_MODES, TIME_FORMAT } from \"./variables\";\n\n// Import helpers\nimport {\n roundToMinutes,\n isYesterday as isYesterdayTime,\n formatTimeTz,\n} from \"./time\";\nimport { generateUUID, getDate } from \"./common\";\nimport {\n getChannelsGroupTree,\n setChannelEpgIndexes,\n setChannelGroupTree,\n setChannelGroupTreeNestedChildren,\n} from \"./layout\";\nimport { formatTz } from \"../utils/time\";\n\n// -------- Program width --------\nconst getItemDiffWidth = (diff: number, hourWidth: number) =>\n (diff * hourWidth) / HOUR_IN_MINUTES;\n\nexport const getPositionX = (\n since: DateTime,\n till: DateTime,\n startDate: DateTime,\n endDate: DateTime,\n hourWidth: number\n) => {\n const isTomorrow = getTime(getDate(till)) > getTime(getDate(endDate));\n const isYesterday = getTime(getDate(since)) < getTime(getDate(startDate));\n\n // When time range is set to 1 hour and program time is greater than 1 hour\n if (isYesterday && isTomorrow) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(endDate)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isYesterday) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isTomorrow) {\n const diffTime = differenceInMinutes(\n getDate(endDate),\n roundToMinutes(getDate(since))\n );\n\n if (diffTime < 0) return 0;\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n roundToMinutes(getDate(since))\n );\n\n return getItemDiffWidth(diffTime, hourWidth);\n};\n\n// -------- Channel position in the Epg --------\nexport const getChannelPosition = (\n channelIndex: number,\n itemHeight: number\n) => {\n const top = itemHeight * channelIndex;\n const position = {\n top,\n height: itemHeight,\n };\n return position;\n};\n// -------- Program position in the Epg --------\nexport const getProgramPosition = (\n program: Program,\n channelIndex: number,\n itemHeight: number,\n hourWidth: number,\n startDate: DateTime,\n endDate: DateTime,\n isVerticalMode: boolean\n) => {\n const item = {\n ...program,\n since: formatTimeTz(program.since),\n till: formatTimeTz(program.till),\n };\n\n const isYesterday = isYesterdayTime(item.since, startDate);\n\n let width = getPositionX(\n item.since,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n const top = itemHeight * channelIndex;\n let left = getPositionX(startDate, item.since, startDate, endDate, hourWidth);\n const edgeEnd = getPositionX(\n startDate,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n\n if (isYesterday) left = 0;\n // If item has negative top position, it means that it is not visible in this day\n if (top < 0) width = 0;\n\n let position = {\n width,\n height: itemHeight,\n top,\n left,\n edgeEnd,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n top: left,\n left: top,\n width: itemHeight,\n height: width,\n };\n }\n return { position, data: item };\n};\n\n// -------- Program position with day hours --------\ninterface ProgramPositionWithDayHours {\n isVerticalMode: boolean;\n hoursInDays: HoursInDayDiffTime[];\n position: ProgramWithPosition[\"position\"];\n since: string;\n hourWidth: number;\n}\nconst getProgramPositionWithDayHours = ({\n isVerticalMode,\n hoursInDays,\n position,\n since,\n hourWidth,\n}: ProgramPositionWithDayHours) => {\n const day = hoursInDays.find((day) => since.includes(day.date));\n if (!day) return { position };\n\n if (isVerticalMode) {\n const diffHours = day.diffLeft * hourWidth;\n const top = position.top - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, top, edgeEnd };\n }\n\n const diffHours = day.diffLeft * hourWidth;\n const left = position.left - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, left, edgeEnd };\n};\n\n// -------- Converted programs with position data --------\ninterface ConvertedPrograms {\n isVerticalMode: boolean;\n isOverlapEnabled: boolean;\n programChannelMapKey: string;\n data: ProgramWithOmittedUuid[];\n channels: Channel[];\n startDate: DateTime;\n endDate: DateTime;\n itemHeight: number;\n hourWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n}\nexport const getConvertedPrograms = ({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data,\n channels,\n startDate,\n endDate,\n itemHeight,\n hourWidth,\n hoursInDays,\n}: ConvertedPrograms) => {\n let first = 0;\n return data.map((next, index, arr) => {\n next[\"channelUuid\"] = next[programChannelMapKey];\n\n if (arr[index - 1]?.[programChannelMapKey] !== next[programChannelMapKey]) {\n first = index;\n setChannelEpgIndexes({ uuid: next[programChannelMapKey], first });\n }\n if (next[programChannelMapKey] !== arr[index + 1]?.[programChannelMapKey]) {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n } else {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n }\n\n const channelIndex = channels.findIndex(\n ({ uuid }) => uuid === next.channelUuid\n );\n\n next[\"channelIndex\"] = channelIndex;\n next[\"channelPosition\"] = channels[channelIndex]?.position;\n next[\"index\"] = index;\n\n // Group tree\n if (channels[channelIndex]?.parentChannelUuid) {\n next[\"parentChannelUuid\"] = channels[channelIndex]?.parentChannelUuid;\n }\n\n const programData = getProgramPosition(\n next as Program,\n channelIndex,\n itemHeight,\n hourWidth,\n startDate,\n endDate,\n isVerticalMode\n );\n\n if (isOverlapEnabled && channelIndex > 0) {\n const { position } = channels[channelIndex - 1];\n const newPositionTop = position.top + position.height;\n if (isVerticalMode) {\n programData.position.left = newPositionTop;\n } else {\n programData.position.top = newPositionTop;\n }\n }\n\n if (hoursInDays.length === 0) return programData;\n\n const newPosition = getProgramPositionWithDayHours({\n isVerticalMode,\n hoursInDays,\n position: programData.position,\n since: programData.data.since,\n hourWidth,\n }) as ProgramWithPosition[\"position\"];\n\n programData[\"position\"] = newPosition;\n\n return programData;\n }, [] as ProgramWithPosition[]);\n};\n\n// -------- Converted channels with position data --------\n\nexport const getConvertedChannels = (\n isOverlapEnabled: boolean,\n overlapMode: string,\n layerOverlapLevel: number,\n channels: ChannelWithOmittedUuid[],\n itemHeight: number,\n channelMapKey: string,\n channelOverlapsCount: Record\n) => {\n let top = 0;\n const isStackMode = overlapMode === OVERLAP_MODES.STACK;\n const isLayerMode = overlapMode === OVERLAP_MODES.LAYER;\n return channels.reduce((acc, channel, index) => {\n const overlap = channelOverlapsCount[channel[channelMapKey]];\n\n // Check channels group tree\n if (channel.groupTree && channel.uuid) {\n setChannelGroupTree(channel);\n }\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = channelsGroupTree[channel.parentChannelUuid];\n // if parent channel is closed, skip this channel\n if (channelGroupTree && channel.parentChannelUuid) {\n setChannelGroupTreeNestedChildren(\n channelGroupTree.uuid,\n channel.uuid as string\n );\n channel[\"isNestedChild\"] = true;\n if (!channelGroupTree?.isOpen) return acc;\n } else {\n channel[\"isNestedChild\"] = false;\n }\n\n let largestSizeLength = 1;\n const overlapsLength = overlap ?? 0;\n\n if (\n isOverlapEnabled &&\n (isStackMode || isLayerMode) &&\n overlapsLength > 0\n ) {\n largestSizeLength = overlap;\n }\n\n const position = getChannelPosition(index, itemHeight * largestSizeLength);\n\n if (isOverlapEnabled && isStackMode) {\n position.top = top;\n top = top + position.height;\n }\n\n if (isOverlapEnabled && isLayerMode) {\n if (overlapsLength > 0) {\n position.top = top;\n position.height =\n overlapsLength <= 1\n ? position.height\n : itemHeight * layerOverlapLevel * (overlapsLength - 1) +\n itemHeight;\n top = top + position.height;\n } else {\n position.top = top;\n top = top + position.height;\n }\n }\n\n const item = {\n ...channel,\n uuid: channel[channelMapKey],\n index,\n position,\n } as ChannelWithPosition;\n acc.push(item);\n return acc;\n }, [] as ChannelWithPosition[]);\n};\n\n// -------- Dynamic virtual program visibility in the EPG --------\ninterface ItemVisibility {\n position: Position;\n scrollY: number;\n scrollX: number;\n containerHeight: number;\n containerWidth: number;\n isVerticalMode: boolean;\n itemOverscan: number;\n overlapsCount: number;\n}\nexport const getItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n itemOverscan,\n overlapsCount,\n isVerticalMode,\n}: ItemVisibility) => {\n // Set item visibility for vertical mode\n const _overlapsCount = overlapsCount === 0 ? 1 : overlapsCount;\n if (isVerticalMode) {\n if (position.height <= 0) {\n return false;\n }\n\n if (scrollX > position.left + position.width * 2 * _overlapsCount) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n\n if (\n scrollY + containerHeight >= position.top &&\n scrollY <= position.edgeEnd\n ) {\n return true;\n }\n } else {\n // Set item visibility for horizontal mode\n if (position.width <= 0) {\n return false;\n }\n\n if (scrollY > position.top + itemOverscan * 3 * _overlapsCount) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n\n if (\n scrollX + containerWidth >= position.left &&\n scrollX <= position.edgeEnd\n ) {\n return true;\n }\n }\n\n return false;\n};\n\ninterface SidebarItemVisibility {\n isVerticalMode: boolean;\n itemOverscan: number;\n position: Pick & Partial>;\n scrollX: number;\n scrollY: number;\n containerHeight: number;\n containerWidth: number;\n}\nexport const getSidebarItemVisibility = ({\n position,\n scrollX,\n scrollY,\n containerHeight,\n containerWidth,\n itemOverscan,\n isVerticalMode,\n}: SidebarItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n const left = (position.left as number) + position.height;\n if (scrollX > left + itemOverscan * 3) {\n return false;\n }\n\n if (scrollX + containerWidth <= left - position.height) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollY > position.top + position.height + itemOverscan * 3) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n }\n\n return true;\n};\n\ninterface TimelineItemVisibility {\n position: Pick;\n scrollY: number;\n scrollX: number;\n containerWidth: number;\n containerHeight: number;\n isVerticalMode: boolean;\n}\nexport const getTimelineItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n isVerticalMode,\n}: TimelineItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n if (scrollY > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.left) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollX > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const setUpdatedLayoutItem = (\n data: ProgramWithOmittedUuid,\n modeType: Mode[\"type\"]\n) => {\n const id = generateUUID();\n const since = `${data.date} ${data.since}`;\n let till = `${data.date} ${data.till}`;\n\n if (modeType === \"week\") {\n till = formatTz(endOfDay(new Date(till)), TIME_FORMAT.DEFAULT);\n } else if (modeType === \"month\") {\n till = formatTz(addDays(endOfDay(new Date(till)), 20), TIME_FORMAT.DEFAULT);\n }\n\n return { id, title: \"\", image: \"\", ...data, since, till };\n};\n","import {\n format,\n roundToNearestMinutes,\n startOfDay,\n addDays,\n differenceInHours,\n isWithinInterval,\n} from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import common helpers\nimport { getDate } from \"./common\";\n// Import interfaces\nimport { HoursInDay, HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import types\nimport { DateTime as DateRangeTime } from \"./types\";\n// Variables\nimport { TIME_FORMAT } from \"./variables\";\nimport { getPositionX } from \"./epg\";\nimport { formatTz, getNewDateTimeTz, getNewDateTz } from \"../utils/time\";\n\ntype DateTime = number | string | Date;\n\nconst getTime = (date: DateTime) => toDate(date).getTime();\n\nexport const getLiveStatus = (since: DateTime, till: DateTime) => {\n const nowTime = getNewDateTimeTz(getNewDateTz());\n const sinceTime = getNewDateTimeTz(since);\n const sinceTill = getNewDateTimeTz(till);\n return nowTime >= sinceTime && sinceTill > nowTime;\n};\n\nexport const formatTime = (date: DateTime) =>\n format(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const formatTimeTz = (date: DateTime) =>\n formatTz(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const roundToMinutes = (date: DateTime) =>\n roundToNearestMinutes(new Date(date));\n\nexport const isYesterday = (since: DateTime, startDate: DateTime) => {\n const sinceTime = getTime(new Date(since));\n const startDateTime = getTime(new Date(startDate));\n\n return startDateTime > sinceTime;\n};\n\nexport const isFutureTime = (date: DateTime) => {\n const dateTime = getTime(new Date(date));\n const now = getTime(new Date());\n return dateTime > now;\n};\n\nexport const getTimeRangeDates = (\n startDate: DateRangeTime,\n endDate: DateRangeTime\n) => {\n let endDateValue = endDate;\n if (endDate === \"\") {\n endDateValue = formatTime(startOfDay(addDays(getDate(startDate), 1)));\n }\n\n return { startDate, endDate: endDateValue };\n};\n\ninterface FormatWeekMonthDate {\n date: string;\n mode: Mode;\n isBaseTimeFormat: boolean;\n}\nexport const getFormattedWeekMonthDate = ({\n date,\n mode,\n isBaseTimeFormat,\n}: FormatWeekMonthDate) => {\n if (mode.type === \"week\") {\n if (mode.style === \"modern\") {\n return format(toDate(date), TIME_FORMAT.DAY_DATE);\n }\n const dateFormat = isBaseTimeFormat\n ? TIME_FORMAT.BASE_DAY_MONTH\n : TIME_FORMAT.DAY_MONTH;\n return format(toDate(date), dateFormat);\n }\n\n return format(toDate(date), TIME_FORMAT.MONTH);\n};\n\ninterface NumberOfHoursInDays {\n startDate: DateRangeTime;\n customHoursInDays: HoursInDay[];\n}\nexport const getNumberOfHoursInDays = ({\n startDate,\n customHoursInDays,\n}: NumberOfHoursInDays) => {\n if (customHoursInDays.length === 0) return [];\n let itemsDiffInHours = 0;\n const data = customHoursInDays.reduce((acc, item) => {\n let diffLeft = 0;\n const prevItem = acc[acc.length - 1];\n if (!prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(startDate)\n );\n }\n if (prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(prevItem.endTimeHour)\n );\n diffLeft += prevItem.diffLeft;\n itemsDiffInHours += prevItem.diffInHours;\n }\n\n const diffInHours = differenceInHours(\n getDate(item.endTimeHour),\n getDate(item.startTimeHour)\n );\n const startTime = Number(format(getDate(item.startTimeHour), \"H\"));\n const endTime = Number(format(getDate(item.endTimeHour), \"H\"));\n const obj = {\n ...item,\n diffLeft,\n diffInHours,\n prevItemDiffInHours: itemsDiffInHours,\n startTime,\n endTime,\n };\n acc.push(obj);\n return acc;\n }, [] as HoursInDayDiffTime[]);\n\n return data;\n};\n\nexport const getTodayHoursInDays = (hoursInDays: HoursInDayDiffTime[]) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n\n return date.length > 0;\n};\n\ninterface HoursInDaysPositionX {\n hoursInDays: HoursInDayDiffTime[];\n hourWidth: number;\n sidebarWidth: number;\n cb?: (v: boolean) => void;\n}\nexport const getHoursInDaysPositionX = ({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb,\n}: HoursInDaysPositionX) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n if (date.length === 0) {\n cb?.(false);\n return 0;\n }\n const day = date[0];\n const positionX = getPositionX(\n startOfDay(new Date(day.startTimeHour)),\n new Date(),\n day.startTimeHour,\n day.endTimeHour,\n hourWidth\n );\n return positionX + sidebarWidth + day.prevItemDiffInHours * hourWidth;\n};\n","import { format, getDaysInMonth, parse } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import interfaces\nimport { HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import variables\nimport {\n HOURS_IN_DAY,\n TIMELINE_HEIGHT_MODERN_STYLE,\n TIME_FORMAT,\n} from \"./variables\";\n// Import helpers\nimport { generateArray } from \"./common\";\n\nconst { BASE_DAY_MONTH, DAY_MONTH } = TIME_FORMAT;\nconst generateDayHours = (\n isBaseTimeFormat: boolean,\n dayIndex: number,\n days: string[]\n) =>\n Array.from({ length: HOURS_IN_DAY }, (_, i) => {\n if (i === 0) {\n const timeFormat = isBaseTimeFormat ? BASE_DAY_MONTH : DAY_MONTH;\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return dayIndex === 0 ? i : format(date, timeFormat);\n }\n return i;\n });\n\ninterface TimeSlots {\n isBaseTimeFormat: boolean;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n weekDayWidth?: number;\n}\n\nexport const generateTimelineSlots = (\n modeType: Mode[\"type\"],\n options: TimeSlots\n) => {\n const { hoursInDays, ...rest } = options;\n if (modeType === \"week\") {\n return generateWeekTimelineSlots(rest) as string[];\n }\n\n if (modeType === \"month\") {\n return generateMonthTimelineSlots(rest) as string[];\n }\n\n if (hoursInDays.length > 0) {\n return getDayHoursTimeSlots(options) as (string | number)[];\n }\n\n return getDayTimeSlots(rest) as (string | number)[];\n};\n\nconst getDayHoursTimeSlots = ({\n isBaseTimeFormat,\n days,\n hoursInDays,\n numberOfDays,\n}: Pick<\n TimeSlots,\n \"isBaseTimeFormat\" | \"days\" | \"hoursInDays\" | \"numberOfDays\"\n>) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n const hoursInDay = hoursInDays[dayIndex];\n const sliced = hours.slice(hoursInDay.startTime, hoursInDay.endTime);\n if (dayIndex > 0) sliced[0] = hours[0];\n return [...acc, ...sliced];\n }, []);\n return slots;\n};\n\nconst getDayTimeSlots = ({\n isBaseTimeFormat,\n days,\n numberOfDays,\n numberOfHoursInDay,\n offsetStartHoursRange,\n}: Omit) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n if (dayIndex === 0) return [...acc, ...hours.slice(offsetStartHoursRange)];\n return [...acc, ...hours];\n }, []);\n return slots.slice(0, numberOfHoursInDay);\n};\n\nexport const generateWeekTimelineSlots = ({\n days,\n numberOfDays,\n}: Pick) => {\n const slots = generateArray(numberOfDays).map((_, dayIndex) => {\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\nexport const generateMonthTimelineSlots = ({\n months,\n numberOfMonths,\n}: Pick) => {\n const slots = generateArray(numberOfMonths).map((_, dayIndex) => {\n const date = parse(months[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\n\ninterface TimelineMonthsWidth {\n data: { width: number; left: number }[];\n offsetLeft: number;\n}\nexport const getTimelineMonthsWidth = ({\n months,\n weekDayWidth,\n}: Pick) => {\n const { data } = months.reduce(\n (acc, month, index) => {\n const daysInMonth = getDaysInMonth(toDate(month));\n const width = daysInMonth * (weekDayWidth as number);\n if (index === 0) {\n acc.data.push({ width, left: 0 });\n acc.offsetLeft = 0;\n return acc;\n }\n const left = acc.offsetLeft + acc.data[index - 1].width;\n acc.data.push({ width, left });\n acc.offsetLeft = left;\n return acc;\n },\n { data: [], offsetLeft: 0 } as TimelineMonthsWidth\n );\n\n return data;\n};\n\nexport const getTimelineHeight = (timelineHeight: number, mode: Mode) => {\n if (\n (mode.type === \"week\" || mode.type === \"month\") &&\n mode.style === \"modern\"\n ) {\n return TIMELINE_HEIGHT_MODERN_STYLE;\n }\n return timelineHeight;\n};\n","import { Layers } from \"./enums\";\n\ninterface LineStyles {\n isVerticalMode: boolean;\n isTimeline: boolean;\n lineStyles: {\n position: string;\n top: number;\n width: number;\n };\n position: {\n height: number;\n left: number;\n zIndex: Layers;\n };\n}\nexport const getLineStyles = ({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n}: LineStyles) => {\n if (isVerticalMode) {\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: position.left,\n left: isTimeline ? lineStyles.top : 0,\n width: position.height,\n height: lineStyles.width,\n },\n };\n }\n\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: isTimeline ? lineStyles.top : 0,\n width: lineStyles.width,\n },\n };\n};\n","// Import types\nimport { getChannelsGroupTree } from \"./layout\";\nimport { ChannelWithPosition } from \"./types\";\n\nexport const getChannelVerticalPosition = (\n channel: ChannelWithPosition,\n isVerticalMode: boolean\n) => {\n if (isVerticalMode) {\n return {\n ...channel,\n position: {\n ...channel.position,\n left: channel.position.top,\n width: channel.position.height,\n },\n };\n }\n\n return channel;\n};\n\nexport const getChannelGroupTreeProps = (channel: ChannelWithPosition) => {\n const data = {\n ...channel,\n nestedChildren: [],\n isFirstNestedChild: false,\n isLastNestedChild: false,\n };\n\n const getChanelGroupTree = (uuid?: string) =>\n channelsGroupTree[uuid ?? \"\"] ?? null;\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = getChanelGroupTree(channel.uuid);\n const channelNestedGroupTree = getChanelGroupTree(\n channel.parentChannelUuid ?? \"\"\n );\n\n if (channel.parentChannelUuid && channelNestedGroupTree) {\n const isFirstNestedChild =\n channelNestedGroupTree.nestedChildren?.at(0) === channel.uuid;\n const isLastNestedChild =\n channelNestedGroupTree.nestedChildren?.at(-1) === channel.uuid;\n return {\n ...data,\n isFirstNestedChild,\n isLastNestedChild,\n };\n } else if (channelGroupTree) {\n return {\n ...data,\n nestedChildren: channelGroupTree.nestedChildren,\n };\n }\n\n return data;\n};\n","import { ProgramItem } from \"./types\";\nimport { ProgramOverlaps } from \"./interfaces\";\nimport { switchPosition } from \"./common\";\nimport { getChannelEpgIndexes, getChannelsGroupTree } from \"./layout\";\n\nfunction getOverlapCount(\n program: ProgramItem,\n overlapArray: ProgramItem[]\n): number {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n\n let overlapCount = 0;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapCount++;\n }\n }\n\n return overlapCount;\n}\n\nfunction overlapPosition(\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n const newChannelOverlapsCount = channelOverlapsCount;\n\n for (let index = 0; index < newChannelOverlapsCount + 1; index++) {\n const top =\n program.data.channelPosition.top > 0\n ? program.data.channelPosition.top\n : 0;\n let levelTop = top + program.position.height * index;\n let overlapsOnLevel = false;\n let overlapsOnLevelUp = false;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n if (levelTop === otherProgram.position.top) {\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB < tillOther && tillB > sinceOther) ||\n (sinceOther < tillB && tillOther > sinceB)\n ) {\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapsOnLevelUp = true;\n }\n overlapsOnLevel = true;\n break;\n }\n }\n }\n\n if (!overlapsOnLevel) {\n return overlapsOnLevelUp ? index + 4 : index;\n }\n }\n return newChannelOverlapsCount;\n}\n\nconst getOverlapProgramOptions = (\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) => {\n const _program = { ...program };\n\n const { data, position } = _program;\n\n const programOverlapIndex = overlapArray.length + 1;\n\n const isOverlapStackMode = true;\n const programOverlapsLength = overlapArray.length;\n const { channelPosition, overlapTimes } = data;\n const { width, height, left } = position;\n const newHeight = isOverlapStackMode\n ? height\n : height / programOverlapsLength;\n\n const newTop =\n channelPosition.top + (overlapTimes ?? programOverlapIndex) * newHeight;\n\n const newProgram = {\n ...program,\n position: { width, height: newHeight, top: newTop, left },\n };\n\n const overlapTop = overlapPosition(\n newProgram,\n overlapArray,\n channelOverlapsCount\n );\n\n newProgram.position = {\n ...newProgram.position,\n top: channelPosition.top + newProgram.position.height * overlapTop,\n };\n\n return [newProgram, overlapTop + 1];\n};\n\nconst setChannelOverlapCount = (\n programA: ProgramItem,\n channelOverlapsCount: number,\n channelOverlaps: Record\n) =>\n channelOverlapsCount > channelOverlaps[programA.data.channelUuid]\n ? channelOverlapsCount\n : channelOverlaps[programA.data.channelUuid];\n\nexport function getOverlaps(\n isVerticalMode: boolean,\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n): {\n overlaps: ProgramOverlaps;\n channelOverlaps: Record;\n} {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n for (const program of programs) {\n overlaps[program.data.channelUuid] = [];\n }\n\n for (let i = 0; i < programs.length - 1; i++) {\n const programA = { ...programs[i] };\n const sinceA = new Date(programA.data.since);\n const tillA = new Date(programA.data.till);\n\n // Group channel tree\n // If parent group tree is open, then all children group tree are visible\n // If parent group tree is closed, then all children group tree are not visible\n if (programA?.data?.parentChannelUuid) {\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree =\n channelsGroupTree[programA?.data?.parentChannelUuid];\n if (!channelGroupTree?.isOpen) continue;\n }\n\n if (isVerticalMode) {\n programA.position = switchPosition(programA.position);\n }\n\n for (let j = i + 1; j < programs.length; j++) {\n const programB = { ...programs[j] };\n\n if (programA.data.channelUuid !== programB.data.channelUuid) continue;\n\n if (isVerticalMode) {\n programB.position = switchPosition(programB.position);\n }\n\n const sinceB = new Date(programB.data.since);\n const tillB = new Date(programB.data.till);\n\n if (\n (sinceA < tillB && tillA > sinceB) ||\n (sinceB < tillA && tillB > sinceA)\n ) {\n const elementA = overlaps[programA.data.channelUuid];\n const elementB = overlaps[programB.data.channelUuid];\n\n const isSameChannelUuid =\n programA.data.channelUuid === programB.data.channelUuid;\n\n if (elementA && elementB && isSameChannelUuid) {\n programB.data.overlapLinkedId = programA.data.overlapLinkedId;\n\n const overlapArray = overlaps[programA.data.channelUuid];\n\n const isElementAExist = overlapArray.some(\n (el) => el.data.id === programA.data.id\n );\n const isElementBExist = overlapArray.some(\n (el) => el.data.id === programB.data.id\n );\n const channelOverlapsLength =\n overlaps[programA.data.channelUuid].length;\n\n if (!isElementBExist && channelOverlapsLength === 0) {\n programB.position.top =\n programA.data.channelPosition.top + programA.position.height;\n overlaps[programA.data.channelUuid] = [programA, programB];\n channelOverlaps[programA.data.channelUuid] = !channelOverlaps[\n programA.data.channelUuid\n ]\n ? 2\n : channelOverlaps[programA.data.channelUuid];\n } else if (!isElementBExist && channelOverlapsLength > 1) {\n let overlapCount = 0;\n\n if (!isElementAExist) {\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramA, channelOverlapsCount] =\n getOverlapProgramOptions(\n programA,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n overlapArray.push(newProgramA);\n\n channelOverlaps[programA.data.channelUuid] =\n setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n }\n\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramB, channelOverlapsCount] =\n getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n overlapArray.push(newProgramB);\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (isElementBExist && channelOverlapsLength > 1) {\n const overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [, channelOverlapsCount] = getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (channelOverlapsLength > 1) {\n overlapArray.push(programB);\n }\n }\n } else if (\n overlaps[programA.data.channelUuid] &&\n overlaps[programA.data.channelUuid].length === 0\n ) {\n channelOverlaps[programA.data.channelUuid] = 0;\n overlaps[programA.data.channelUuid] = [];\n }\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n\nconst getChannelProgramSliced = (programs: ProgramItem[]) => {\n const acc = new Map();\n\n for (const next of programs) {\n const channelUuid = next.data.channelUuid;\n if (!acc.has(channelUuid)) {\n acc.set(channelUuid, []);\n }\n acc.get(channelUuid).push(next);\n }\n\n return Object.fromEntries(acc) as Record;\n};\n\nconst getChannelEpdIndexesProgramSliced = (\n programs: ProgramItem[],\n overlaps: ProgramOverlaps,\n dndChannelUuidIndex: number\n) => {\n const acc = {} as Record;\n\n for (const next of Object.keys(overlaps)) {\n const channelIndex = overlaps[next]?.[0]?.data.channelIndex;\n const channelUuid = overlaps[next]?.[0]?.data.channelUuid;\n if (channelIndex !== undefined && channelIndex > dndChannelUuidIndex) {\n const channelEpgIndexes = getChannelEpgIndexes(next);\n const slicedPrograms = programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n );\n acc[channelUuid] = slicedPrograms;\n }\n }\n return acc;\n};\n\nexport function checkOverlaps(\n isMultirowsDnd: boolean,\n isVerticalMode: boolean,\n dndChannelUuid: { index: number; uuid: string },\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n) {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n let data = {} as Record;\n\n const channelEpgIndexes = getChannelEpgIndexes(dndChannelUuid.uuid);\n if (!isMultirowsDnd && channelEpgIndexes) {\n const slicedOverlapsPrograms = getChannelEpdIndexesProgramSliced(\n programs,\n overlaps,\n dndChannelUuid.index\n );\n data = {\n [dndChannelUuid.uuid]: programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n ),\n ...slicedOverlapsPrograms,\n };\n } else {\n data = getChannelProgramSliced(programs);\n }\n\n for (const channel in data) {\n const props = getOverlaps(isVerticalMode, itemOverlaps, data[channel]);\n overlaps[channel] = props.overlaps[channel];\n channelOverlaps[channel] = props.channelOverlaps[channel];\n }\n for (const channelUuid in overlaps) {\n if (\n overlaps?.[channelUuid] &&\n Object.keys(overlaps?.[channelUuid])?.length === 0\n ) {\n delete overlaps[channelUuid];\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n","import { format, addMinutes, differenceInMinutes } from \"date-fns\";\n// Import types\nimport { DateTime, DragMouseUp, ResizeMouseUp } from \"./types\";\n// Import variables\nimport { TIMEZONE_MODES, TIME_FORMAT } from \"./variables\";\nimport { getTimezoneOptionsCache } from \"./layout\";\nimport { zonedDateTimeToUtc } from \"../utils/time\";\n\ntype EventProps = Pick<\n DragMouseUp | ResizeMouseUp,\n keyof DragMouseUp & keyof ResizeMouseUp\n>;\ntype EventSinceTill = EventProps & {\n startDate?: DateTime;\n hourWidth: number;\n width?: ResizeMouseUp[\"width\"];\n initialWidth?: ResizeMouseUp[\"initialWidth\"];\n};\n\nconst getFormattedDndDate = (newSince: Date, newTill: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const utcDateSince = zonedDateTimeToUtc(newSince);\n const utcDateTill = zonedDateTimeToUtc(newTill);\n return {\n since: utcDateSince.toISOString(),\n till: utcDateTill.toISOString(),\n };\n }\n\n return {\n since: format(newSince, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n till: format(newTill, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n };\n};\n\nconst getResizeTill = ({\n initialWidth,\n width,\n hourWidth,\n}: Partial> & {\n hourWidth: number;\n}) => {\n if (!initialWidth && !width) return 0;\n\n const diff = (width as number) - (initialWidth as number);\n const diffHours = diff / hourWidth;\n\n return diffHours * 60;\n};\n\nexport const calculateItemDragSinceTill = (props: EventSinceTill) => {\n const {\n initialPositionLeft,\n left,\n initialWidth,\n width,\n hourWidth,\n startDate,\n since,\n till,\n } = props;\n let minDiff = 0;\n if (startDate) {\n const startDateTime = new Date(startDate).getTime();\n const sinceTime = new Date(since).getTime();\n if (sinceTime < startDateTime) {\n minDiff = differenceInMinutes(new Date(startDate), new Date(since));\n }\n }\n\n const diff = left - initialPositionLeft;\n const diffHours = diff / hourWidth;\n const tillDiffHours = getResizeTill({ initialWidth, width, hourWidth });\n\n const newSince = addMinutes(new Date(since), diffHours * 60 + minDiff);\n const newTill = addMinutes(\n new Date(till),\n diffHours * 60 + tillDiffHours + minDiff\n );\n return getFormattedDndDate(newSince, newTill);\n};\n\nexport const getDefaultDragProps = (positionLeft: number) => ({\n currentPositionX: positionLeft,\n dndEvents: { isDragging: false },\n});\n","import { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\nimport { BaseTimeFormat, ChannelWithPosition, Position } from \"./types\";\nimport { generateArray } from \"./common\";\nimport { HOURS_IN_DAY } from \"./variables\";\nimport { generateTimelineSlots, getTimelineMonthsWidth } from \"./timeline\";\n\ninterface ConvertedGridItems {\n isVerticalMode: boolean;\n channels: ChannelWithPosition[];\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n dayWidthResources: {\n numberOfMonths: number;\n numberOfHoursInDay: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n };\n daysResources: {\n numberOfDays: number;\n days: string[];\n months: string[];\n };\n}\nexport const getConvertedGridItems = ({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources,\n daysResources,\n}: ConvertedGridItems) => {\n const isMonthMode = mode.type === \"month\";\n\n const numberOfSlots = () => {\n if (mode.type === \"day\") return dayWidthResources.numberOfHoursInDay;\n if (mode.type === \"week\") return daysResources.numberOfDays;\n return dayWidthResources.numberOfMonths;\n };\n\n const monthsWidth = () =>\n getTimelineMonthsWidth({\n months: daysResources.months,\n weekDayWidth: hourWidth * HOURS_IN_DAY,\n });\n\n const getGridItemPosition = (channel: ChannelWithPosition, index: number) => {\n let width = 0;\n let left = 0;\n if (isMonthMode) {\n width = monthsWidth()[index].width;\n left = monthsWidth()[index].left;\n } else {\n width = dayWidth / numberOfSlots();\n left = width * index;\n }\n let position = {\n top: channel.position.top,\n left,\n width,\n height: channel.position.height,\n edgeEnd: left + width,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n left: position.top + timelineHeight,\n top: position.left + sidebarWidth,\n width: position.height,\n height: position.width,\n };\n } else {\n position = {\n ...position,\n top: position.top + timelineHeight,\n left: left + sidebarWidth,\n width,\n height: position.height,\n };\n }\n\n return { position, channel };\n };\n return channels.flatMap((channel) =>\n generateArray(numberOfSlots()).map((_, index) =>\n getGridItemPosition(channel, index)\n )\n );\n};\n\n// On grid item click\ninterface ClickGridItem {\n isDrop?: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n index: number | undefined;\n item: {\n position: Position;\n channel: ChannelWithPosition;\n };\n grid: IGrid;\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n timelineDividers: number;\n dataAttributes?: Record;\n}\nexport const getClickGridItemData = ({\n isDrop = false,\n isVerticalMode,\n isBaseTimeFormat,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n sidebarWidth,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n}: ClickGridItem) => {\n let { position, channel } = item;\n const isDayMode = mode.type === \"day\";\n let newPosition = {} as Position;\n if (isVerticalMode) {\n newPosition = {\n ...position,\n top: position.left,\n left: position.top - sidebarWidth,\n edgeEnd: position.left + hourWidth - sidebarWidth,\n };\n } else {\n newPosition = {\n ...position,\n top: position.top,\n left: position.left - sidebarWidth,\n edgeEnd: position.edgeEnd - sidebarWidth,\n };\n }\n\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n const timeSlots = generateTimelineSlots(mode.type, options);\n\n const left = isDayMode\n ? newPosition.left + (index as number) * (hourWidth / timelineDividers)\n : newPosition.left;\n const edgeEnd = isDayMode\n ? left + hourWidth / timelineDividers\n : newPosition.edgeEnd;\n const itemClickProps = {\n since: \"00:00:00\",\n till: \"00:00:00\",\n date: \"\",\n channelUuid: channel.uuid,\n };\n\n if (isDayMode) {\n const gridItemProps = getDividerGridProps({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n dayWidth,\n hourWidth,\n index,\n });\n isDrop\n ? grid.onGridItemDrop?.({ ...gridItemProps, ...dataAttributes })\n : grid.onGridItemClick?.(gridItemProps);\n }\n\n if (mode.type === \"week\") {\n const index = Math.floor(left / (hourWidth * 24));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n\n if (mode.type === \"month\") {\n const index = Math.floor(left / (hourWidth * 24 * 30));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n};\n\ninterface DividerGridProps {\n left: number;\n edgeEnd: number;\n timeSlots: (string | number)[];\n channel: ChannelWithPosition;\n days: string[];\n hourWidth: number;\n dayWidth: number;\n index: number | undefined;\n}\nconst getDividerGridProps = ({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n hourWidth,\n dayWidth,\n index,\n}: DividerGridProps) => {\n let since = \"\";\n let till = \"\";\n const dayTimeSlots = timeSlots.map((time) =>\n typeof time === \"number\" ? time : 0\n );\n const sinceTimeInHours = Math.floor(left / hourWidth); // Assuming 4 hours per hourWidth\n const tillTimeInHours = Math.floor(edgeEnd / hourWidth); // Assuming 4 hours per hourWidth\n const getTime = (index: number) =>\n (dayTimeSlots[index] as number) < 10\n ? \"0\" + dayTimeSlots[index]\n : dayTimeSlots[index];\n const newSince = getTime(sinceTimeInHours);\n const newTill = getTime(tillTimeInHours);\n const newSinceMin = index === 0 ? `00` : (index as number) * 15;\n\n const newTillMin =\n (index as number) + 1 === 0 ? `00` : ((index as number) + 1) * 15;\n\n since = `${newSince}:${newSinceMin}:00`;\n till = `${newTill}:${newTillMin}:00`;\n\n if (newTillMin === 60) {\n const newNextTill =\n (dayTimeSlots[sinceTimeInHours + 1] as number) < 10\n ? \"0\" + dayTimeSlots[sinceTimeInHours + 1]\n : dayTimeSlots[tillTimeInHours];\n till = newTill ? `${newNextTill}:00:00 ` : \"00:00:00\";\n }\n const singleDayWidth = dayWidth / (days.length - 1);\n const dayIndex = Math.floor(left / singleDayWidth);\n\n const options = {\n since,\n till,\n date: days[dayIndex],\n channelUuid: channel.uuid,\n };\n return options;\n};\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Container = styled.div<{\n height?: number;\n width?: number;\n}>`\n padding: 5px;\n height: ${({ height }) => (height ? `${height}px` : \"100%\")};\n width: ${({ width }) => (width ? `${width}px` : \"100%\")};\n\n *,\n ::before,\n ::after {\n box-sizing: border-box;\n }\n`;\n\nexport const Wrapper = styled.div`\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n`;\n\nexport const ScrollBox = styled.div<{ theme?: Theme; isRTL?: boolean }>`\n position: relative;\n height: 100%;\n width: 100%;\n overflow: auto;\n scroll-behavior: smooth;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isRTL }) => isRTL && `transform: scale(-1,1)`};\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.scrollbar.thumb.bg};\n border: 10px none ${({ theme }) => theme.white};\n border-radius: 20px;\n }\n ::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.white};\n }\n\n ::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.primary[900]};\n border: 22px none ${({ theme }) => theme.white};\n border-radius: 0px;\n }\n\n ::-webkit-scrollbar-corner {\n background: ${({ theme }) => theme.primary[900]};\n }\n`;\n\nexport const Box = styled.div<{\n isRTL?: boolean;\n left?: number;\n top?: number;\n theme?: Theme;\n}>`\n position: absolute;\n top: ${({ top = 0 }) => top}px;\n background: ${({ theme }) => theme.primary[900]};\n z-index: ${Layers.EpgCornerBox};\n\n ${({ isRTL, left = 0 }) => (isRTL ? `right:0px;` : ` left: ${left}px`)};\n`;\n\nexport const Content = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n theme?: Theme;\n dayWidth: number;\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: ${({ contentHeight }) => contentHeight}px;\n width: ${({ dayWidth }) => dayWidth}px;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isVerticalMode, isTimeline, dayWidth, timelineHeight, contentHeight }) =>\n isVerticalMode &&\n `\n left: ${isTimeline ? timelineHeight : 0}px;\n width: ${contentHeight}px;\n height: ${dayWidth}px;\n `}\n`;\n\nexport const LayoutBg = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n isSidebar: boolean;\n dayWidth: number;\n contentHeight: number;\n timelineHeight: number;\n sidebarWidth: number;\n}>`\n position: absolute;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: 100%;\n width: ${({ dayWidth }) => dayWidth}px;\n\n ${({\n isVerticalMode,\n isTimeline,\n isSidebar,\n dayWidth,\n timelineHeight,\n sidebarWidth,\n }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n width: 100%;\n height: ${dayWidth}px;\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Box = styled.div<{\n isVerticalMode?: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n contentHeight: number;\n bottom: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isTimeline,\n isRTL,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n bottom,\n theme,\n }) => css`\n position: sticky;\n background-color: ${theme.primary[900]};\n\n ${isRTL && `& > div { transform: scale(-1,1) }`};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${isTimeline ? timelineHeight : 0}px;\n height: ${sidebarWidth}px;\n width: ${contentHeight}px;\n `}\n\n ${!isVerticalMode &&\n css`\n left: 0;\n bottom: ${bottom}px;\n float: left;\n width: ${sidebarWidth}px;\n `}\n `}\n z-index: ${Layers.Sidebar};\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const ChannelWrapper = styled.div<{\n isVerticalMode?: boolean;\n top: number;\n height: number;\n groupTree?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, top, height, groupTree, theme }) => css`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${theme.primary[900]};\n cursor: ${groupTree ? \"pointer\" : \"default\"};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${top}px;\n width: ${height}px;\n height: 100%;\n `}\n ${!isVerticalMode &&\n css`\n top: ${top}px;\n height: ${height}px;\n width: 100%;\n `};\n `}\n`;\n\nexport const ChannelLogo = styled.img`\n max-height: 60px;\n max-width: 60px;\n position: relative;\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const ProgramContent = styled.div<{\n isVerticalMode?: boolean;\n isLive: boolean;\n width: number;\n theme?: Theme;\n}>`\n border: 1px solid #171923;\n position: relative;\n display: flex;\n font-size: 11px;\n height: 100%;\n border-radius: 8px;\n padding: 10px ${({ width }) => (width < 30 ? 4 : 20)}px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.4s ease-in-out;\n background: ${({ theme: { primary } }) =>\n `linear-gradient(to right, ${primary[600]}, ${primary[600]})`};\n z-index: ${Layers.Program};\n\n &:hover {\n background: ${({ theme: { gradient } }) =>\n `linear-gradient(to right, ${gradient.blue[900]}, ${gradient.blue[600]})`};\n }\n\n ${({ isLive, isVerticalMode, theme: { gradient } }) =>\n isLive &&\n `background: linear-gradient(to ${isVerticalMode ? \"bottom\" : \"right\"}, ${\n gradient.blue[900]\n }, ${gradient.blue[600]},${gradient.blue[300]})`}\n`;\n\nexport const ProgramFlex = styled.div<{ isVerticalMode?: boolean }>`\n width: 100%;\n display: flex;\n justify-content: flex-start;\n\n ${({ isVerticalMode }) => isVerticalMode && `flex-direction: column;`};\n`;\n\nconst Elipsis = `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const ProgramTitle = styled.p<{ theme?: Theme }>`\n font-size: 14px;\n text-align: left;\n margin-top: 0;\n margin-bottom: 5px;\n font-weight: 500;\n color: ${({ theme }) => theme.grey[300]};\n ${Elipsis}\n`;\n\nexport const ProgramText = styled.span<{ theme?: Theme }>`\n display: block;\n font-size: 12.5px;\n font-weight: 400;\n color: ${({ theme }) => theme.text.grey[500]};\n text-align: left;\n ${Elipsis}\n`;\n\nexport const ProgramImage = styled.img<{ isVerticalMode?: boolean }>`\n margin-right: 15px;\n border-radius: 6px;\n width: 100px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode && `width: 100%; margin-bottom: 10px`};\n`;\n\nexport const ProgramStack = styled.div<{ isRTL?: boolean }>`\n overflow: hidden;\n ${({ isRTL }) =>\n isRTL &&\n `transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end`};\n`;\n\nexport const ProgramBox = styled.div<{\n isResizing?: boolean;\n isDragging?: boolean;\n width: number;\n}>`\n position: absolute;\n padding: ${({ width }) => (width === 0 ? 0 : 4)}px;\n z-index: ${({ isDragging, isResizing }) =>\n isDragging || isResizing ? Layers.Program * 3 : Layers.Program};\n overflow: hidden;\n\n ${({ isDragging, isResizing }) =>\n (!isDragging || !isResizing) &&\n ` &:hover {\n z-index: ${Layers.Program * 2};\n\n ${ProgramResizeHandle} {\n opacity: 1;\n }\n }`}\n\n ${({ isDragging, isResizing, theme }) =>\n (isDragging || isResizing) &&\n ` \n border-radius: 10px;\n background: ${theme.green[200]};\n \n ${ProgramContent}{\n user-select: none;\n cursor: move;\n }\n `}\n`;\n\nexport const ProgramResizeHandle = styled.div<{\n isResize?: boolean;\n isVerticalMode?: boolean;\n left?: boolean;\n}>`\n position: absolute;\n opacity: 0;\n\n ${({ isResize }) => !isResize && \"display: none;\"}\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 0;` : `bottom: 0;`}\n left:0;\n height:25px;\n width: 100%;\n cursor: ${left ? \"n-resize\" : \"s-resize\"};\n `}\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n `\n top: 0;\n bottom: 0;\n ${left ? `left: 0;` : `right: 0;`}\n width: 25px;\n cursor: ${left ? \"w-resize\" : \"e-resize\"};\n `}\n\n &:after {\n content: \"\";\n position: absolute;\n margin: auto;\n border-radius: 8px;\n background: ${({ theme }) => theme.green[200]};\n\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n ` top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n ${left ? `left: 9px;` : `right: 9px;`}\n `}\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 9px;` : `bottom: 9px;`}\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n `}\n }\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const TimelineTime = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isWeekMonthMode?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n position: absolute;\n top: 13px;\n left: ${({ isRTL, isBaseTimeFormat, isVerticalMode, isWeekMonthMode }) => {\n if (isVerticalMode) {\n if (isRTL) return isBaseTimeFormat ? 9 : 17;\n return isBaseTimeFormat ? 9 : 14;\n }\n if (isWeekMonthMode) return 0;\n return isRTL && isBaseTimeFormat ? \"-32\" : \"-18\";\n }}px;\n\n color: ${({ theme }) => theme.text.grey[300]};\n\n ${({ isRTL }) =>\n isRTL &&\n `\n transform: scale(-1, 1);\n `}\n\n ${({ theme, isNewDay }) =>\n isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `};\n`;\nexport const TimelineWeekMonthDate = styled.div<{\n isVerticalMode?: boolean;\n isRTL?: boolean;\n styleType?: \"default\" | \"modern\";\n theme?: Theme;\n}>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n height: 100%;\n transform: ${({ isRTL }) => (isRTL ? \"scale(-1,1)\" : \"scale(1,1)\")};\n\n span {\n color: ${({ theme }) => theme.text.grey[300]};\n font-size: 16px;\n }\n\n ${({ styleType, theme }) =>\n styleType === \"modern\" &&\n css`\n span:first-of-type {\n font-weight: 500;\n color: ${theme.teal[100]};\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ${theme.text.grey[300]};\n font-size: 24px;\n }\n `}\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n margin-top: 0px;\n transform: ${isRTL ? \"scale(-1,1)\" : \"scale(1,1)\"};\n `};\n`;\n\nexport const TimelineDividers = styled.div<{\n isVerticalMode?: boolean;\n}>`\n position: relative;\n height: 100%;\n width: 100%;\n padding-bottom: 6px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode &&\n css`\n grid-template-columns: 1fr;\n align-items: start;\n `}\n`;\n\nexport const TimelineDivider = styled.div<{\n isVerticalMode?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n width: number;\n left: number;\n}>`\n position: absolute;\n bottom: 6px;\n background: ${({ theme }) => theme.timeline.divider.bg};\n height: 10px;\n width: 1px;\n left: ${({ left }) => left}px;\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n `}\n\n ${({ isNewDay, theme }) =>\n isNewDay &&\n `&:first-of-type {\n width:2px;\n background: ${theme.teal[100]};\n }`}\n`;\n\nexport const TimelineWrapper = styled.div<{\n isVerticalMode?: boolean;\n isSidebar: boolean;\n dayWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isSidebar,\n sidebarWidth,\n timelineHeight,\n dayWidth,\n theme,\n }) =>\n css`\n position: sticky;\n background: ${theme.primary[900]};\n z-index: ${Layers.Timeline};\n\n ${isVerticalMode &&\n css`\n left: 0;\n bottom: 0px;\n float: left;\n width: ${timelineHeight}px;\n margin-top: ${isSidebar ? sidebarWidth : 0}px;\n `}\n\n ${!isVerticalMode &&\n css`\n top: 0;\n left: ${isSidebar ? sidebarWidth : 0}px;\n height: ${timelineHeight}px;\n width: ${dayWidth}px;\n `}\n `}\n`;\n\nexport const TimelineBox = styled.div<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n}>`\n ${({ isVerticalMode, left, width, timelineHeight, theme }) => css`\n position: absolute;\n font-size: 14px;\n background-color: ${theme.primary[900]};\n\n ${!isVerticalMode &&\n css`\n left: ${left}px;\n width: ${width}px;\n height: 100%;\n `}\n ${isVerticalMode &&\n css`\n top: ${left}px;\n height: ${width}px;\n width: ${timelineHeight}px;\n `}\n `}\n\n ${({\n isVerticalMode,\n isToday,\n isCurrentTime,\n isTodayInHoursInDays,\n areHoursInDays,\n isWeekMonthMode,\n }) => {\n const typeNumberDefault = isToday && isCurrentTime ? 2 : 1;\n const typeNumberInHoursDays = areHoursInDays\n ? isTodayInHoursInDays && isCurrentTime\n ? 2\n : 1\n : 1;\n const typeNumber = areHoursInDays\n ? typeNumberInHoursDays\n : typeNumberDefault;\n const position = isVerticalMode ? \"top\" : \"left\";\n\n if (!isWeekMonthMode) {\n return `&:nth-of-type(${typeNumber}) {\n ${TimelineTime} {\n ${position}: 0px;\n }\n }`;\n }\n return \"\";\n }}\n`;\nexport const TimelineWeekMonthBox = styled(TimelineBox)<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n styleType?: \"default\" | \"modern\";\n}>`\n ${({ isVerticalMode, styleType, theme }) =>\n css`\n &:not(:last-of-type) {\n &:after {\n content: \"\";\n position: absolute;\n background: ${theme.timeline.divider.bg};\n transform: translate(-50%, -50%);\n\n ${isVerticalMode\n ? css`\n bottom: 0;\n height: 1px;\n width: 80%;\n `\n : css`\n top: 50%;\n right: 0;\n height: 100%;\n height: ${styleType === \"modern\" ? \"35%\" : \"70%\"};\n width: 1px;\n `}\n }\n }\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const lineStyles = {\n position: \"absolute\",\n top: 64,\n width: 3,\n};\n\nexport const LineBox = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n height: number;\n left: number;\n zIndex: Layers;\n theme?: Theme;\n}>`\n position: ${lineStyles.position};\n top: ${({ isTimeline }) => (isTimeline ? lineStyles.top : 0)}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${lineStyles.width}px;\n background: ${({ theme }) => theme.green[300]};\n pointer-events: none;\n z-index: ${({ zIndex }) => zIndex};\n\n ${({ isVerticalMode, isTimeline, left, height }) =>\n isVerticalMode &&\n ` \n top: ${left}px;\n left: ${isTimeline ? lineStyles.top : 0}px;\n height: ${lineStyles.width}px;\n width: ${height}px;\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { keyframes } from \"@emotion/react\";\nimport { Layers, Theme } from \"../helpers\";\n\nconst time = [0, 50, 0];\n\nconst moveLeft = (animate: { right: string[] }) => keyframes`\n${time.map(\n (item, index) => `${item}% {\n transform: translateX(-${animate.right[index]});\n}`\n)}\n`;\n\nexport const Box = styled.div<{ theme?: Theme }>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n background: ${({ theme }) => theme.loader.bg};\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: ${Layers.Loader};\n`;\n\nexport const Shape = styled.div<{\n width: number;\n color: \"teal\" | \"purple\" | \"pink\";\n marginRight?: number;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n theme?: Theme;\n}>`\n width: ${({ width }) => width * 0.42}px;\n background: ${({ theme, color }) => theme.loader[color]};\n height: 18px;\n border-radius: 45px;\n margin-right: ${({ marginRight }) => marginRight ?? 0}px;\n animation-name: ${({ animate }) => moveLeft(animate)};\n animation-duration: ${({ transition }) => transition.duration}s;\n animation-timing-function: ${({ transition }) =>\n transition.ease ?? \"ease-in-out\"};\n animation-delay: ${({ transition }) => transition.delay ?? 0}s;\n animation-iteration-count: infinite;\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const boxStyles = ({ width }: { width?: number | string } = {}) => ({\n position: \"absolute\",\n top: 0,\n width: width ?? 70,\n height: 20,\n});\n\nexport const CurrentTimeBox = styled.div<{\n top: number;\n left: number;\n width: number | string;\n}>`\n position: ${boxStyles().position};\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n width: ${({ width }) => (typeof width === \"string\" ? \"auto\" : `${width}px`)};\n height: ${boxStyles().height}px;\n background-color: ${({ theme }) => theme.primary[900]};\n z-index: 2;\n`;\n\nexport const CurrentTimeContent = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, isBaseTimeFormat, isRTL, isNewDay, theme }) => css`\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ${theme.green[200]};\n background-color: ${theme.primary[900]};\n ${isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${isVerticalMode &&\n css`\n left: 50%;\n transform: translate(-50%, -50%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `}\n\n ${!isVerticalMode &&\n css`\n top: 4px;\n left: ${isRTL && isBaseTimeFormat ? \"-32\" : \"-16\"}px;\n ${isRTL && \"transform: scale(-1,1);\"}\n `}\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\n// Import helpers\nimport { Layers, Theme } from \"../helpers\";\nimport { css } from \"@emotion/react\";\n\nexport const AreaFiled = styled.div<{\n isVerticalMode?: boolean;\n isClickable?: boolean;\n positionX: number;\n height: number;\n width: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n position: absolute;\n pointer-events: ${(props) => (props.isClickable ? \"auto\" : \"none\")};\n cursor: ${(props) => (props.isClickable ? \"pointer\" : \"none\")};\n z-index: ${Layers.Area};\n\n ${({ isVerticalMode, positionX, height, width, timelineHeight }) =>\n isVerticalMode\n ? css`\n top: ${positionX}px;\n left: ${timelineHeight}px;\n height: ${width}px;\n width: ${height}px;\n `\n : css`\n top: ${timelineHeight}px;\n left: ${positionX}px;\n height: ${height}px;\n width: ${width}px;\n `}\n`;\nexport const AreaBg = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`;\n\nexport const AreaAnnotation = styled.div<{\n isVerticalMode: boolean;\n isLeft?: boolean;\n width: number;\n timelineHeight: number;\n}>`\n padding: 4px 6px;\n font-size: 15px;\n width: max-content;\n\n ${({ isVerticalMode, isLeft = false, width, timelineHeight }) => css`\n ${!isVerticalMode\n ? css`\n position: sticky;\n top: ${timelineHeight}px;\n ${isLeft\n ? `float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;`\n : `float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;`}\n `\n : css`\n position: sticky;\n left: ${timelineHeight}px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ${isLeft && css`` ? `top: 0; ` : `margin-top:${width - 60}px;`}\n `}\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\n\nexport const GridContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 1;\n`;\n\nexport const GridWrapper = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n\n ${({ isVerticalMode, isSidebar, isTimeline, sidebarWidth, timelineHeight }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n `}\n`;\n\nexport const GridItem = styled.div<{\n isDayMode: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable: boolean;\n top: number;\n left: number;\n height: number;\n width: number;\n}>`\n position: absolute;\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${({ width }) => width}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.item};\n border-bottom-color: ${({ theme }) => theme.grid.item};\n z-index: 1;\n\n ${({ isDayMode, isHoverHighlight, isDragOver, theme }) =>\n !isDayMode &&\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n ${isDragOver && `border: 1px solid ${theme.grid.highlight};`}\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n\nexport const GridDivider = styled.div<{\n isVerticalMode?: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable?: boolean;\n left: number;\n width: number;\n}>`\n position: absolute;\n top: 0;\n left: ${({ left }) => left}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.divider};\n height: 100%;\n width: ${({ width }) => width}px;\n\n ${({ isHoverHighlight, theme }) =>\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n\n `}\n ${({ isDragOver, theme }) =>\n isDragOver &&\n `\n border: 1px solid ${theme.grid.highlight}; \n\n `}\n\n ${({ isVerticalMode, left, width, theme }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 0;\n width: 100%;\n height: ${width}px;\n border-bottom-color: ${theme.grid.divider};\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n","export const theme = {\n primary: {\n 600: \"#1a202c\",\n 900: \"#171923\",\n },\n grey: { 300: \"#d1d1d1\" },\n white: \"#fff\",\n teal: {\n 100: \"#38B2AC\",\n },\n green: {\n 200: \"#389493\",\n 300: \"#2C7A7B\",\n },\n loader: {\n teal: \"#5DDADB\",\n purple: \"#3437A2\",\n pink: \"#F78EB6\",\n bg: \"#171923db\",\n },\n scrollbar: {\n border: \"#ffffff\",\n thumb: {\n bg: \"#e1e1e1\",\n },\n },\n\n gradient: {\n blue: {\n 300: \"#002eb3\",\n 600: \"#002360\",\n 900: \"#051937\",\n },\n },\n\n text: {\n grey: {\n 300: \"#a0aec0\",\n 500: \"#718096\",\n },\n },\n\n timeline: {\n divider: {\n bg: \"#718096\",\n },\n },\n grid: {\n item: \"#7180961a\",\n divider: \"#7180961a\",\n highlight: \"#38B2AC\",\n },\n};\n","import React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { startOfDay } from \"date-fns\";\n// Import interfaces\nimport { HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime, InitialScrollPositions } from \"../helpers/types\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import helpers\nimport {\n DEBOUNCE_WAIT,\n DEBOUNCE_WAIT_MAX,\n getHoursInDaysPositionX,\n getPositionX,\n useIsomorphicLayoutEffect,\n} from \"../helpers\";\n\ninterface useLayoutProps {\n isVerticalMode: boolean;\n isToday: boolean;\n isInitialScrollToNow: boolean;\n initialScrollPositions: InitialScrollPositions;\n height?: number;\n width?: number;\n hourWidth: number;\n sidebarWidth: number;\n channelsNumber: number;\n startDate: DateTime;\n endDate: DateTime;\n currentDate: string;\n hoursInDays: HoursInDayDiffTime[];\n}\n\nexport function useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n height,\n width,\n channelsNumber,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n hoursInDays,\n}: useLayoutProps) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n\n const containerRef = React.useRef(null);\n const scrollBoxRef = React.useRef(null);\n //-------- State --------\n const [scrollY, setScrollY] = React.useState(0);\n const [scrollX, setScrollX] = React.useState(0);\n const [layoutWidth, setLayoutWidth] = React.useState(width as number);\n const [layoutHeight, setLayoutHeight] = React.useState(\n height as number\n );\n //-------- Variables --------\n const scrollBoxInnerHeight = scrollBoxRef?.current?.scrollHeight;\n\n const initialScrollPositionsSerialized = JSON.stringify(\n initialScrollPositions\n );\n\n // -------- Handlers --------\n const handleScrollDebounced = useDebouncedCallback(\n (value) => {\n setScrollY(value.y);\n setScrollX(value.x);\n },\n DEBOUNCE_WAIT,\n { maxWait: DEBOUNCE_WAIT_MAX }\n );\n\n const handleOnScroll = React.useCallback(\n (e: React.UIEvent & { target: Element }) => {\n handleScrollDebounced({ y: e.target.scrollTop, x: e.target.scrollLeft });\n },\n [handleScrollDebounced]\n );\n\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const areHoursInDays = React.useMemo(\n () => hoursInDays.length > 0,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [hoursInDaysSerialized]\n );\n const handleOnScrollToNow = React.useCallback(\n () => {\n if (scrollBoxRef?.current && isToday) {\n const clientWidth = (width ??\n containerRef.current?.clientWidth) as number;\n\n const date = new Date(startDate);\n let positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n\n if (areHoursInDays) {\n positionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n });\n }\n\n const scrollNow = positionX - clientWidth / 2 + sidebarWidth;\n\n if (isVerticalMode) {\n scrollBoxRef.current.scrollTop = scrollNow + hourWidth;\n } else {\n scrollBoxRef.current.scrollLeft = scrollNow;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n isToday,\n areHoursInDays,\n width,\n hourWidth,\n sidebarWidth,\n startDate,\n endDate,\n ]\n );\n\n const handleScrollToInitialPositions = React.useCallback(\n () => {\n const isInitialScrollPosition = Object.keys(\n initialScrollPositions\n ).length;\n if (scrollBoxRef?.current && isInitialScrollPosition) {\n const { top = 0, left = 0 } = initialScrollPositions;\n scrollBoxRef.current.scrollTo({ behavior: \"smooth\", top, left });\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [initialScrollPositionsSerialized, scrollBoxInnerHeight]\n );\n\n const handleOnScrollTop = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const top = scrollBoxRef.current.scrollTop + value;\n scrollBoxRef.current.scrollTop = top;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollRight = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const right = scrollBoxRef.current.scrollLeft + value;\n scrollBoxRef.current.scrollLeft = right;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollLeft = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const left = scrollBoxRef.current.scrollLeft - value;\n scrollBoxRef.current.scrollLeft = left;\n }\n },\n [hourWidth]\n );\n\n const handleResizeDebounced = useDebouncedCallback(\n () => {\n if (containerRef?.current && !width) {\n const container = containerRef.current;\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n },\n DEBOUNCE_WAIT * 4,\n { maxWait: DEBOUNCE_WAIT_MAX * 4 }\n );\n\n const handleCheckIsLayoutBottom = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the bottom in scrollBox in vertical mode\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n } else {\n // Check if the scroll is at the bottom in scrollBox\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, scrollX, scrollY, channelsNumber]\n );\n\n const handleCheckIsLayoutRight = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the right in scrollBox in vertical mode\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n } else {\n // Check if the scroll is at the right in scrollBox\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollX, scrollY, channelsNumber]\n );\n\n // -------- Effects --------\n useIsomorphicEffect(() => {\n if (containerRef?.current) {\n const container = containerRef.current;\n if (!width) {\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n if (!height) {\n const { clientHeight } = container;\n setLayoutHeight(clientHeight);\n }\n }\n }, [height, width, startDate]);\n\n useIsomorphicEffect(() => {\n const isInitialScrollPosition = Object.keys(initialScrollPositions).length;\n if (scrollBoxRef?.current) {\n if (isInitialScrollPosition) {\n handleScrollToInitialPositions();\n } else if (isInitialScrollToNow) {\n handleOnScrollToNow();\n }\n }\n }, [isToday, isInitialScrollToNow, initialScrollPositionsSerialized]);\n\n useIsomorphicEffect(() => {\n window.addEventListener(\"resize\", handleResizeDebounced);\n return () => {\n window.removeEventListener(\"resize\", handleResizeDebounced);\n };\n }, [width]);\n\n return {\n containerRef,\n scrollBoxRef,\n scrollX,\n scrollY,\n layoutWidth,\n layoutHeight,\n isLayoutBottom: handleCheckIsLayoutBottom,\n isLayoutRight: handleCheckIsLayoutRight,\n onScroll: handleOnScroll,\n onScrollToNow: handleOnScrollToNow,\n onScrollTop: handleOnScrollTop,\n onScrollLeft: handleOnScrollLeft,\n onScrollRight: handleOnScrollRight,\n };\n}\n","import React from \"react\";\nimport { startOfToday } from \"date-fns\";\n\n// Import interfaces\nimport {\n Area,\n ChannelWithOmittedUuid,\n DragAndDrop,\n Grid,\n HoursInDay,\n Mode,\n Overlap,\n ProgramOverlaps,\n ProgramWithOmittedUuid,\n Snap,\n Theme,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n DateTime,\n BaseTimeFormat,\n Position,\n InitialScrollPositions,\n ProgramItem,\n DragMouseUp,\n ResizeMouseUp,\n ChannelWithPosition,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n DAY_WIDTH,\n ITEM_HEIGHT,\n ITEM_OVERSCAN,\n SIDEBAR_WIDTH,\n LIVE_REFRESH_TIME,\n TIMELINE_HEIGHT,\n TIMELINE_DIVIDERS,\n formatTime,\n getConvertedChannels,\n getConvertedPrograms,\n getItemVisibility,\n getSidebarItemVisibility,\n getDayWidthResources,\n getTimeRangeDates,\n getDayResources,\n getTimelineItemVisibility,\n getTimelineHeight,\n getNumberOfHoursInDays,\n resetLayoutScreenCloneElements,\n checkOverlaps,\n calculateItemDragSinceTill,\n getChannelEpgIndexes,\n setChannelEpgIndexes,\n setTimezoneOptionsCache,\n setUpdatedLayoutItem,\n} from \"../helpers\";\n\n// Import theme\nimport { theme as defaultTheme } from \"../theme\";\n\n// Import components\nimport { useLayout } from \"./useLayout\";\nimport { getConvertedGridItems } from \"../helpers/grid\";\n\ninterface useEpgProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isInitialScrollToNow?: boolean;\n isResize?: boolean;\n initialScrollPositions?: InitialScrollPositions;\n channels: ChannelWithOmittedUuid[];\n epg: ProgramWithOmittedUuid[];\n width?: number;\n height?: number;\n startDate?: DateTime;\n endDate?: DateTime;\n liveRefreshTime?: number;\n mode?: Mode;\n timezone?: Timezone;\n overlap?: Overlap;\n timelineDividers?: number;\n snap?: Snap;\n grid?: Grid;\n dnd?: DragAndDrop;\n areas?: Area[];\n hoursInDays?: HoursInDay[];\n theme?: Theme;\n globalStyles?: string;\n dayWidth?: number;\n sidebarWidth?: number;\n timelineHeight?: number;\n itemHeight?: number;\n itemOverscan?: number;\n channelMapKey?: string;\n programChannelMapKey?: string;\n}\n\nconst defaultStartDateTime = formatTime(startOfToday());\nconst defaultMode = { type: \"day\", style: \"default\" } as Mode;\nconst defaultTimezone = {\n enabled: false,\n zone: \"\",\n mode: \"formatInTimeZone\",\n} as Timezone;\nconst defaultOverlap = {\n enabled: false,\n mode: \"stack\",\n layerOverlapLevel: 0.4,\n} as Overlap;\nconst defaultGrid = {\n enabled: false,\n hoverHighlight: false,\n} as Grid;\nconst defaultDnd = {\n enabled: false,\n mode: \"row\",\n} as DragAndDrop;\n\nexport function useEpg(props: useEpgProps) {\n let {\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isCurrentTime = false,\n isInitialScrollToNow = true,\n } = props;\n\n const { width, height } = props;\n\n const { channels: channelsEpg, epg } = props;\n\n const {\n startDate: startDateInput = defaultStartDateTime,\n endDate: endDateInput = \"\",\n hoursInDays: customHoursInDays = [],\n } = props;\n\n const {\n initialScrollPositions = {},\n liveRefreshTime = LIVE_REFRESH_TIME,\n timelineDividers = TIMELINE_DIVIDERS,\n snap,\n mode: customMode = defaultMode,\n overlap: customOverlap = defaultOverlap,\n timezone: customTimezone = defaultTimezone,\n areas = [],\n grid = defaultGrid,\n dnd = defaultDnd,\n theme: customTheme,\n globalStyles,\n } = props;\n\n const {\n dayWidth: customDayWidth = DAY_WIDTH,\n sidebarWidth = SIDEBAR_WIDTH,\n timelineHeight: customTimelineHeight = TIMELINE_HEIGHT,\n itemHeight = ITEM_HEIGHT,\n itemOverscan = ITEM_OVERSCAN,\n } = props;\n\n const { channelMapKey = \"uuid\", programChannelMapKey = \"channelUuid\" } =\n props;\n\n const timezone = { ...defaultTimezone, ...customTimezone };\n const mode = { ...defaultMode, ...customMode };\n const overlap = { ...defaultOverlap, ...customOverlap };\n const isOverlapEnabled = overlap.enabled;\n const isMultirowsDnd = dnd.mode === \"multi-rows\";\n\n // Get converted start and end dates\n const { startDate, endDate } = getTimeRangeDates(\n startDateInput,\n endDateInput\n );\n\n // Get hours in days\n const serializedHoursInDays = JSON.stringify(customHoursInDays);\n const hoursInDays = React.useMemo(\n () => getNumberOfHoursInDays({ customHoursInDays, startDate }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [serializedHoursInDays]\n );\n\n // Get days resources eg. number of days, dates and hours\n const { isToday, currentDate, ...daysResources } = React.useMemo(\n () =>\n getDayResources({\n startDate,\n endDate,\n modeType: mode.type,\n }),\n [startDate, endDate, mode.type]\n );\n\n // Get day and hour width of the day\n const { hourWidth, dayWidth, ...dayWidthResourcesProps } = React.useMemo(\n () =>\n getDayWidthResources({\n dayWidth: customDayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType: mode.type,\n }),\n [customDayWidth, startDate, endDate, hoursInDays, mode.type]\n );\n\n // -------- State --------\n const [update, setForceUpdate] = React.useReducer((x) => x + 1, 0);\n const [updateChannels, setForceChannelsUpdate] = React.useReducer(\n (x) => x + 1,\n 0\n );\n const [dndChannelUuid, setDndChannelUuid] = React.useState({\n index: -1,\n uuid: \"\",\n });\n\n const [newOverlaps, setNewOverlaps] = React.useState(() => 0);\n let [overlaps, setOverlaps] = React.useState({});\n const [channelOverlapsCount, setChannelOverlapsCount] = React.useState<\n Record\n >({});\n\n const timezoneSerialized = JSON.stringify(timezone);\n // Set base timezone functions\n React.useMemo(\n () => {\n if (timezone.enabled) {\n setTimezoneOptionsCache(timezone);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timezoneSerialized]\n );\n\n React.useEffect(() => {\n setForceUpdate();\n setDndChannelUuid({ index: -1, uuid: \"\" });\n }, [isVerticalMode]);\n\n const {\n isLayoutBottom,\n isLayoutRight,\n containerRef,\n scrollBoxRef,\n ...layoutProps\n } = useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n startDate,\n endDate,\n sidebarWidth,\n width,\n height,\n hourWidth,\n currentDate,\n hoursInDays,\n channelsNumber: channelsEpg.length,\n });\n\n React.useEffect(() => {\n return () => {\n resetLayoutScreenCloneElements();\n };\n }, []);\n\n const { scrollX, scrollY, layoutWidth, layoutHeight } = layoutProps;\n const { onScroll, onScrollToNow, onScrollTop, onScrollLeft, onScrollRight } =\n layoutProps;\n\n //-------- Variables --------\n const timelineHeight = getTimelineHeight(customTimelineHeight, mode);\n\n const channelsEpgSerialized = React.useMemo(\n () => JSON.stringify(channelsEpg),\n [channelsEpg]\n );\n const channelOverlapsCountSerialized = React.useMemo(\n () => channelOverlapsCount,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(channelOverlapsCount)]\n );\n const channels = React.useMemo(\n () => {\n // Convert channels\n return getConvertedChannels(\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel as number,\n channelsEpg,\n itemHeight,\n channelMapKey,\n channelOverlapsCount\n );\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel,\n channelsEpgSerialized,\n channelOverlapsCountSerialized,\n itemHeight,\n channelMapKey,\n newOverlaps,\n updateChannels,\n ]\n );\n\n const startDateTime = formatTime(startDate);\n const endDateTime = formatTime(endDate);\n const channelsSerialized = React.useMemo(\n () => JSON.stringify(channels),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n const overlapsSerialized = React.useMemo(\n () => overlaps,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(overlaps)]\n );\n\n const { programs, programOverlaps } = React.useMemo(\n () => {\n const data = getConvertedPrograms({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data: epg,\n channels,\n startDate: startDateTime,\n endDate: endDateTime,\n hoursInDays,\n itemHeight,\n hourWidth,\n });\n\n if (isOverlapEnabled) {\n const _overlaps = overlaps;\n\n const { overlaps: itemsOverlaps, channelOverlaps } = checkOverlaps(\n isMultirowsDnd,\n isVerticalMode,\n dndChannelUuid,\n _overlaps,\n data\n );\n\n setChannelOverlapsCount({\n ...channelOverlapsCount,\n ...channelOverlaps,\n });\n setNewOverlaps((prev) => prev + 1);\n setOverlaps(itemsOverlaps);\n return {\n programs: data,\n programOverlaps: itemsOverlaps,\n };\n }\n return { programs: data, programOverlaps: {} };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isMultirowsDnd,\n isOverlapEnabled,\n isVerticalMode,\n epg,\n channelsSerialized,\n overlapsSerialized,\n startDateTime,\n endDateTime,\n itemHeight,\n hourWidth,\n hoursInDays,\n programChannelMapKey,\n timezoneSerialized,\n update,\n ]\n );\n\n const gridItems = React.useMemo(\n () => {\n if (!grid.enabled) return [];\n return getConvertedGridItems({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources: dayWidthResourcesProps,\n daysResources,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n grid.enabled,\n channelsSerialized,\n mode.type,\n dayWidthResourcesProps.numberOfHoursInDay,\n dayWidthResourcesProps.numberOfMonths,\n daysResources.numberOfDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n isVerticalMode,\n ]\n );\n\n const theme: Theme = { ...defaultTheme, ...customTheme };\n\n // -------- Handlers --------\n const isProgramVisible = React.useCallback(\n (position: Position, overlapsCount: number) => {\n return getItemVisibility({\n isVerticalMode,\n itemOverscan,\n overlapsCount,\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, itemOverscan, layoutHeight, layoutWidth, scrollY, scrollX]\n );\n\n const isChannelVisible = React.useCallback(\n (position: Pick) =>\n getSidebarItemVisibility({\n isVerticalMode,\n itemOverscan,\n position,\n scrollX,\n scrollY,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n }),\n\n [isVerticalMode, itemOverscan, scrollY, scrollX, layoutHeight, layoutWidth]\n );\n\n const isTimelineVisible = React.useCallback(\n (position: Pick) =>\n getTimelineItemVisibility({\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n isVerticalMode,\n }),\n [scrollY, scrollX, layoutHeight, layoutWidth, isVerticalMode]\n );\n\n const dndOnSuccessCb = React.useCallback(\n (event: ProgramWithOmittedUuid) => dnd?.onDnDSuccess?.(event),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const resizeMouseUp = React.useCallback(\n (props: ResizeMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, startDate, hourWidth, programs]\n );\n\n const dragMouseUp = React.useCallback(\n async (props: DragMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const element = { ...epg[props.index] };\n\n const checkChannelTopOutRange = () => {\n const elementChannel = element.channelPosition;\n if (\n props.top > elementChannel.top + elementChannel.height - 1 ||\n props.top < elementChannel.top - 1\n ) {\n return true;\n }\n return false;\n };\n const checkChannelTopInRange = () => {\n const elementChannel = element.channelPosition;\n return elementChannel.top <= props.top &&\n props.top <= elementChannel.top + elementChannel.height\n ? true\n : false;\n };\n\n const isChannelTopInRange = checkChannelTopInRange();\n\n const isChannelTopOutRange = checkChannelTopOutRange();\n if (isMultirowsDnd && isChannelTopOutRange) {\n const newChannel = channels.find(\n (channel) => channel.position.top === props.top\n );\n const newChannelRange = channels.find(\n (channel) =>\n channel.position.top <= props.top &&\n props.top <= channel.position.top + channel.position.height\n );\n\n if (newChannel) {\n const newChannelEpgIndexes = getChannelEpgIndexes(\n newChannel[channelMapKey]\n );\n if (newChannelEpgIndexes) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n } else {\n setChannelEpgIndexes({\n uuid: newChannel[channelMapKey],\n first: props.index,\n last: props.index,\n });\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n }\n } else if (newChannelRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannelRange[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannelRange.index as number;\n epg[props.index].channelPosition = {\n top: newChannelRange.position.top,\n height: newChannelRange.position.height,\n left: newChannelRange.position.left,\n };\n }\n } else if (isMultirowsDnd && isChannelTopInRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n } else {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n }\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isMultirowsDnd, startDate, hourWidth, programs]\n );\n\n const handleGetLayoutData = React.useCallback(\n (events: ProgramItem[]) => events.map((event) => ({ ...event.data })),\n []\n );\n\n const handleOpenChannelGroupTree = React.useCallback(\n (data: ChannelWithPosition) => {\n channelsEpg[data.index].isOpen = !channelsEpg[data.index].isOpen;\n setForceChannelsUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n\n const handleGetDropItemData = React.useCallback(\n (data: ProgramWithOmittedUuid) => setUpdatedLayoutItem(data, mode.type),\n [mode.type]\n );\n\n const getEpgProps = () => ({\n isVerticalMode,\n isRTL,\n isSidebar,\n isLine,\n isTimeline,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n ref: containerRef,\n theme,\n globalStyles,\n });\n\n const getLayoutProps = () => ({\n isVerticalMode,\n isRTL,\n isBaseTimeFormat,\n isSidebar,\n isTimeline,\n isLine,\n isCurrentTime,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n isToday,\n isResize,\n programs,\n programOverlaps,\n channels,\n channelOverlapsCount,\n layerOverlapLevel: overlap.layerOverlapLevel as number,\n snap,\n grid,\n gridItems,\n dnd,\n startDate,\n endDate,\n hoursInDays,\n liveRefreshTime,\n scrollY,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n currentDate,\n mode,\n timezone,\n timelineDividers,\n overlapMode: overlap.mode,\n overlap,\n areas,\n openChannelGroupTree: handleOpenChannelGroupTree,\n onScroll,\n dragMouseUp,\n resizeMouseUp,\n ...daysResources,\n ...dayWidthResourcesProps,\n ref: scrollBoxRef,\n });\n\n return {\n isLayoutBottom,\n isLayoutRight,\n getEpgProps,\n getLayoutProps,\n getLayoutData: handleGetLayoutData,\n getDropItemData: handleGetDropItemData,\n onScrollToNow,\n onScrollTop,\n onScrollLeft,\n onScrollRight,\n scrollY,\n scrollX,\n };\n}\n","import React from \"react\";\n\n// Import helpers\nimport { useIsomorphicLayoutEffect } from \"../helpers\";\n\nexport function useInterval(callback: () => void, delay: number | null) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n const savedCallback = React.useRef(callback);\n\n useIsomorphicEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n React.useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n","import React from \"react\";\n\nexport function useIsTouchDevice() {\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n function checkDevice() {\n const iOS =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document);\n const androidOrWebOS = /Android|webOS/.test(navigator.userAgent);\n\n const isMobileDevice = iOS || androidOrWebOS;\n\n const isTouchScreen =\n \"ontouchstart\" in window ||\n navigator.maxTouchPoints > 0 ||\n (window.matchMedia &&\n window.matchMedia(\"(any-pointer: coarse)\").matches);\n\n setIsMobile(isMobileDevice || isTouchScreen);\n }\n\n checkDevice();\n\n window.addEventListener(\"resize\", checkDevice);\n\n return () => {\n window.removeEventListener(\"resize\", checkDevice);\n };\n }, []);\n\n return isMobile;\n}\n","import { useRef, useState, useCallback, MouseEvent, useEffect } from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { DragMouseUp, Position } from \"../helpers/types\";\n// Import helpers\nimport { getDefaultDragProps } from \"../helpers\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface DndPosition {\n x: number;\n y: number;\n}\n\ninterface UseDragProps {\n isVerticalMode: boolean;\n isDndEnabled: boolean;\n isDndMutlirows: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n dndSnapX?: number;\n dndSnapY?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: DragMouseUp) => void;\n dndMouseUpCb?: (props: DragMouseUp, data: Program) => void;\n}\n\nexport function useDrag(props: UseDragProps) {\n const {\n isDndEnabled,\n isDndMutlirows,\n isVerticalMode,\n initialPosition,\n data,\n dayWidth,\n itemHeight,\n contentHeight,\n dndSnapX,\n dndSnapY = itemHeight,\n elementRef,\n mouseUpCb,\n dndMouseUpCb,\n } = props;\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n const [isDragging, setIsDragging] = useState(false);\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till, channelPosition } = data;\n\n const handleMouseDown = useCallback(\n (e: MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsDragging(true);\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as MouseEvent;\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n },\n [isTouchDevice, coords]\n );\n\n const handleMouseClick = useCallback((e: MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n }, []);\n\n const handleMouseUp = useCallback(\n async () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsYX = {\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n initialPositionLeft: initialPosition.left,\n initialPositionTop: initialPosition.top,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsYX, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsYX);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsY = {\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n initialPositionLeft: initialPosition.top,\n initialPositionTop: initialPosition.left,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsY, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsY);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n isClicked.current = false;\n setIsDragging(false);\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n initialPosition.top,\n initialPosition.left,\n coords,\n id,\n index,\n since,\n till,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: globalThis.MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isDndEnabled) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as globalThis.MouseEvent;\n\n const offsetWidth = (\n isVerticalMode\n ? elementRef.current?.offsetHeight\n : elementRef.current?.offsetWidth\n ) as number;\n const offsetHeight = (\n isVerticalMode\n ? elementRef.current?.offsetWidth\n : elementRef.current?.offsetHeight\n ) as number;\n const elementChannel = channelPosition;\n\n if (isVerticalMode) {\n const nextYValue = event.clientY - coords.startY + coords.lastY;\n const nextY = dndSnapX\n ? Math.round(nextYValue / dndSnapX) * dndSnapX\n : nextYValue;\n\n if (isDndMutlirows) {\n const nextX = event.clientX - coords.startX + coords.lastX;\n const nextXSnap = Math.round(nextX / dndSnapY) * dndSnapY;\n if (\n nextXSnap >= 0 &&\n nextXSnap <= contentHeight - offsetHeight &&\n nextY >= 0 &&\n nextY <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextXSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextXSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${initialPosition.left}px`;\n setPosition((prev) => ({\n ...prev,\n y: nextY,\n x: initialPosition.left,\n }));\n } else {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${nextXSnap}px`;\n setPosition((prev) => ({ ...prev, y: nextY, x: nextXSnap }));\n }\n }\n } else if (nextY >= 0 && nextY <= dayWidth - offsetWidth) {\n elementRef.current!.style.top = `${nextY}px`;\n setPosition((prev) => ({ ...prev, y: nextY }));\n }\n } else {\n const nextXValue = event.clientX - coords.startX + coords.lastX;\n const nextX = dndSnapX\n ? Math.round(nextXValue / dndSnapX) * dndSnapX\n : nextXValue;\n\n if (isDndMutlirows) {\n const nextY = event.clientY - coords.startY + coords.lastY;\n const nextYSnap = Math.round(nextY / dndSnapY) * dndSnapY;\n if (\n nextYSnap >= 0 &&\n nextYSnap <= contentHeight - offsetHeight &&\n nextX >= 0 &&\n nextX <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextYSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextYSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.left = `${nextX}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: nextX,\n y: initialPosition.top,\n }));\n } else {\n elementRef.current!.style.top = `${nextYSnap}px`;\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX, y: nextYSnap }));\n }\n }\n } else if (nextX >= 0 && nextX <= dayWidth - offsetWidth) {\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n if (isDndEnabled) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isDndEnabled,\n isVerticalMode,\n isDragging,\n isDndMutlirows,\n initialPosition.top,\n initialPosition.left,\n channelPosition,\n dndSnapX,\n dndSnapY,\n coords,\n dayWidth,\n itemHeight,\n contentHeight,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isDndEnabled) {\n const events = isTouchDevice\n ? {\n onTouchStart: handleMouseDown,\n onTouchEnd: handleMouseUp,\n }\n : { onMouseDown: handleMouseDown, onMouseUp: handleMouseUp };\n return {\n dndEvents: {\n isDragging,\n ref: elementRef,\n onClick: handleMouseClick,\n ...events,\n },\n currentPositionX: isVerticalMode ? position.y : position.x,\n };\n }\n\n return getDefaultDragProps(initialPosition.left);\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { Position, ResizeMouseUp } from \"../helpers/types\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface UseResizeProps {\n isVerticalMode: boolean;\n isResize: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n contentHeight: number;\n snapX?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: ResizeMouseUp) => void;\n}\n\ninterface DndPosition {\n x: number;\n y: number;\n width: number;\n}\n\nexport function useResize({\n isResize,\n isVerticalMode,\n data,\n dayWidth,\n contentHeight,\n initialPosition,\n snapX,\n elementRef,\n mouseUpCb,\n}: UseResizeProps) {\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n // State\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n const [isResizing, setIsResizing] = useState(false);\n const [isResizingLeft, setIsResizingLeft] = useState(false);\n const [isResizingRight, setIsResizingRight] = useState(false);\n\n const [mouseOffsetX, setMouseOffsetX] = useState(0);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till } = data;\n\n const initialWidth = useMemo(\n () => (isVerticalMode ? initialPosition.height : initialPosition.width),\n [isVerticalMode, initialPosition.height, initialPosition.width]\n );\n\n const handleMouseDown = useCallback(\n (left: boolean = false) =>\n (e: React.MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsResizing(true);\n\n const container = elementRef.current;\n if (!container) return;\n\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as React.MouseEvent;\n setMouseOffsetX(isVerticalMode ? event.pageY : event.pageX);\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n if (left) {\n setIsResizingLeft(true);\n setIsResizingRight(false);\n } else {\n setIsResizingLeft(false);\n setIsResizingRight(true);\n }\n },\n [isTouchDevice, isVerticalMode, coords, elementRef]\n );\n\n const handleMouseClick = useCallback(\n (e: React.MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n []\n );\n\n const handleMouseUp = useCallback(\n () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetHeight as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetWidth as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n width: position.width,\n initialPositionTop: initialPosition.top,\n initialPositionLeft: initialPosition.left,\n initialWidth: initialPosition.width,\n });\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.top !== coords.lastY ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n width: position.width,\n initialPositionTop: initialPosition.left,\n initialPositionLeft: initialPosition.top,\n initialWidth: initialPosition.height,\n });\n }\n setIsResizing(false);\n isClicked.current = false;\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isTouchDevice,\n isVerticalMode,\n id,\n index,\n since,\n till,\n initialWidth,\n initialPosition.left,\n initialPosition.width,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isResizing) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as MouseEvent;\n\n const element = elementRef.current;\n const elementRect = element.getBoundingClientRect();\n\n if (isVerticalMode) {\n const offsetHeight = elementRef.current?.offsetHeight as number;\n const nextY = event.clientY - coords.startY + coords.lastY;\n const snapYTop = snapX\n ? Math.round((event.pageY - mouseOffsetX) / snapX) * snapX\n : event.pageY - mouseOffsetX;\n const newHeightTop = initialWidth - snapYTop;\n const newHeightBottom = snapX\n ? Math.round((event.clientY - elementRect.top + 14) / snapX) * snapX\n : event.clientY - elementRect.top + 14;\n\n const isInLeftLayout = nextY >= 0 && nextY <= dayWidth - offsetHeight;\n // To be used in the future\n // const isInLeftLayout =\n // nextY >= 0 && nextY <= contentHeight - offsetHeight;\n const isInRightLayout = coords.lastY + newHeightBottom <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newHeightTop >= 50) {\n const top = initialPosition.top + snapYTop;\n element.style.height = `${newHeightTop}px`;\n element.style.top = `${top}px`;\n setPosition((prev) => ({ ...prev, y: top, width: newHeightTop }));\n } else if (\n isResizingRight &&\n isInRightLayout &&\n newHeightBottom >= 50\n ) {\n element.style.height = `${newHeightBottom}px`;\n element.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n y: initialPosition.top,\n width: newHeightBottom,\n }));\n }\n } else {\n const offsetWidth = elementRef.current?.offsetWidth as number;\n const nextX = event.clientX - coords.startX + coords.lastX;\n const snapXLeft = snapX\n ? Math.round((event.pageX - mouseOffsetX) / snapX) * snapX\n : event.pageX - mouseOffsetX;\n const newWidthLeft = initialWidth - snapXLeft;\n\n const newWidthRight = snapX\n ? Math.round((event.clientX - elementRect.left + 14) / snapX) * snapX\n : event.clientX - elementRect.left + 14;\n\n const isInLeftLayout = nextX >= 0 && nextX <= dayWidth - offsetWidth;\n const isInRightLayout = coords.lastX + newWidthRight <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newWidthLeft >= 50) {\n const left = initialPosition.left + snapXLeft;\n\n element.style.width = `${newWidthLeft}px`;\n element.style.left = `${left}px`;\n setPosition((prev) => ({ ...prev, x: left, width: newWidthLeft }));\n } else if (isResizingRight && isInRightLayout && newWidthRight >= 50) {\n element.style.width = `${newWidthRight}px`;\n setPosition((prev) => ({ ...prev, width: newWidthRight }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n\n if (isResize) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isResize,\n isVerticalMode,\n isResizing,\n isResizingLeft,\n isResizingRight,\n dayWidth,\n contentHeight,\n initialWidth,\n initialPosition.top,\n initialPosition.left,\n coords,\n snapX,\n mouseOffsetX,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isResize) {\n const getEvents = (isLeft?: boolean) => {\n if (isTouchDevice) {\n return {\n onTouchStart: handleMouseDown(isLeft),\n onTouchEnd: handleMouseUp,\n };\n }\n return {\n onMouseDown: handleMouseDown(isLeft),\n onMouseUp: handleMouseUp,\n };\n };\n\n return {\n width: position.width,\n initialWidth: isVerticalMode\n ? initialPosition.height\n : initialPosition.width,\n currentPositionX: isVerticalMode ? position.y : position.x,\n resizeEvents: {\n isResizing,\n resources: { ref: elementRef, isResizing },\n eventsLeft: {\n isResize,\n isVerticalMode,\n left: true,\n onClick: handleMouseClick,\n ...getEvents(true),\n },\n eventsRight: {\n isResize,\n isVerticalMode,\n onClick: handleMouseClick,\n ...getEvents(),\n },\n },\n };\n }\n\n return {\n currentPositionX: isVerticalMode\n ? initialPosition.top\n : initialPosition.left,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n resizeEvents: {\n isResizing: false,\n resources: {},\n eventsLeft: {},\n eventsRight: {},\n },\n };\n}\n","import React, { useCallback, useRef } from \"react\";\nimport { format } from \"date-fns\";\n\n// Import interfaces\nimport { DragAndDrop, Mode, Program, Snap } from \"../helpers/interfaces\";\n\n// Import types\nimport {\n ProgramItem,\n BaseTimeFormat,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n calculateItemDragSinceTill,\n getLiveStatus,\n omit,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \"./useInterval\";\nimport { useDrag } from \"./useDrag\";\nimport { useResize } from \"./useResize\";\n\ninterface useProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n isResize?: boolean;\n startDate: DateTime;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n program: T;\n liveRefreshTime: number;\n minWidth?: number;\n itemHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n}\n\nexport function useProgram({\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat,\n startDate,\n contentHeight,\n dayWidth,\n itemHeight,\n hourWidth,\n minWidth = 200,\n program,\n liveRefreshTime,\n mode,\n snap,\n dnd,\n dragMouseUp,\n resizeMouseUp,\n}: useProgramProps) {\n const elementRef = useRef(null);\n\n const { data, position } = program;\n const { width, height } = position;\n const { since, till } = data;\n\n // Hooks\n const [isLive, setIsLive] = React.useState(() =>\n getLiveStatus(since, till)\n );\n\n const options = {\n isVerticalMode,\n initialPosition: position,\n data,\n dayWidth,\n contentHeight,\n elementRef,\n };\n\n const resizeOptions = {\n ...options,\n isResize,\n snapX: snap?.x,\n mouseUpCb: resizeMouseUp,\n };\n\n const {\n currentPositionX: resizeCurrentPositionX,\n width: resizeWidth,\n resizeEvents,\n } = useResize(resizeOptions);\n\n const dndMouseUpCb = React.useCallback(\n (props: DragMouseUp, data: Program) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const options = {\n ...newTime,\n id: props.id,\n data,\n };\n\n return dnd?.onDnDMouseUp?.(options) ?? true;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const dragOptions = {\n ...options,\n isDndEnabled: dnd.enabled ? !resizeEvents.resources.isResizing : false,\n isDndMutlirows: dnd.mode === \"multi-rows\",\n dndSnapX: snap?.x,\n dndSnapY: snap?.y,\n itemHeight,\n dndMouseUpCb,\n mouseUpCb: dragMouseUp,\n };\n\n const { currentPositionX, dndEvents } = useDrag(dragOptions);\n\n // Variables\n const newPosition = { ...omit(position, \"egdeEnd\") };\n const styles = { width, position: newPosition };\n\n const formatTime = (\n date: string | number | Date,\n formatType: string = TIME_FORMAT.HOURS_MIN\n ) => format(new Date(date), formatType).replace(/\\s/g, \"\");\n\n const set12HoursTimeFormat = () => {\n if (mode.type === \"week\" || mode.type === \"month\") {\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_DAY_MONTH;\n return TIME_FORMAT.DAY_MONTH;\n }\n\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_HOURS_TIME;\n return TIME_FORMAT.HOURS_MIN;\n };\n\n const getRTLSinceTime = (since: string | number | Date) =>\n isRTL ? till : since;\n\n const getRTLTillTime = (till: string | number | Date) =>\n isRTL ? since : till;\n\n // Effects\n useInterval(() => {\n const status = getLiveStatus(since, till);\n setIsLive(status);\n }, liveRefreshTime);\n\n const isMinWidth = isVerticalMode ? height > minWidth : width > minWidth;\n\n const getMouseEventTempTime = () => {\n const left = resizeEvents.isResizing\n ? resizeCurrentPositionX\n : currentPositionX;\n\n let options = {\n id: data.id,\n index: data.index,\n since: data.since,\n till: data.till,\n top: 0,\n left,\n initialPositionTop: position.top,\n initialPositionLeft: position.left,\n initialWidth: width,\n width: resizeWidth,\n hourWidth,\n };\n\n if (isVerticalMode) {\n options.initialPositionLeft = position.top;\n options.initialPositionTop = position.left;\n options.initialWidth = height;\n }\n\n const { since, till } = calculateItemDragSinceTill(options);\n const formatTempTime = (time: string) =>\n formatTime(getRTLSinceTime(time), set12HoursTimeFormat()).toLowerCase();\n\n return { since: formatTempTime(since), till: formatTempTime(till) };\n };\n\n const getMouseEvents = useCallback(\n () => ({\n ...resizeEvents.resources,\n ...dndEvents,\n }),\n [dndEvents, resizeEvents.resources]\n );\n const isMouseEvent =\n dndEvents.isDragging ||\n (resizeEvents.resources.isResizing as boolean) ||\n false;\n return {\n isMouseEvent,\n isLive,\n isMinWidth,\n isRTL,\n resizeEvents,\n formatTime,\n set12HoursTimeFormat,\n getMouseEvents,\n getMouseEventTempTime,\n getRTLSinceTime,\n getRTLTillTime,\n styles,\n };\n}\n","import { useMemo } from \"react\";\nimport { format } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n generateArray,\n generateTimelineSlots,\n HOURS_IN_DAY,\n getTimelineMonthsWidth,\n getFormattedWeekMonthDate,\n getTodayHoursInDays,\n} from \"../helpers\";\n\ntype UseTimelineProps = ITimeline;\n\nexport function useTimeline(props: UseTimelineProps) {\n const { isBaseTimeFormat, isRTL, isSidebar, isVerticalMode } = props;\n const { timezone, dayWidth, hourWidth, sidebarWidth, timelineHeight } = props;\n const {\n mode,\n startDate,\n endDate,\n hoursInDays,\n days,\n liveRefreshTime,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n renderCurrentTime,\n } = props;\n\n // Handlers\n const getTime = (index: number | string) => {\n if (typeof index === \"string\") return { time: index, isNewDay: true };\n\n const date = new Date();\n const baseDate = format(date, TIME_FORMAT.DATE);\n const time = index < 10 ? `0${index}` : index;\n\n if (isBaseTimeFormat) {\n const date = new Date(`${baseDate}T${time}:00:00`);\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return { time: baseFormat, isNewDay: false };\n }\n\n return { time: `${time}:00`, isNewDay: false };\n };\n\n const formatWeekMonthDate = (date: string) =>\n getFormattedWeekMonthDate({ date, mode, isBaseTimeFormat });\n\n const getDayMonthName = (date: string) => {\n const dateFormat =\n mode.type === \"week\" ? TIME_FORMAT.DAY : TIME_FORMAT.YEAR;\n return format(toDate(date), dateFormat);\n };\n\n const getCurrentTimeProps = () => ({\n isBaseTimeFormat,\n isVerticalMode,\n isRTL,\n timezone,\n mode,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n timelineHeight,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n renderCurrentTime,\n });\n\n const getTimelineProps = () => ({\n isSidebar,\n isVerticalMode,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n });\n\n // Variables\n const timeSlots = useMemo(() => {\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n\n return generateTimelineSlots(mode.type, options);\n }, [\n mode.type,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n ]);\n const isWeekMode = mode.type === \"week\";\n const isMonthMode = mode.type === \"month\";\n const isWeekMonthMode = isWeekMode || isMonthMode;\n const isTodayInHoursInDays = getTodayHoursInDays(hoursInDays);\n const areHoursInDays = hoursInDays.length > 0;\n\n const weekDayWidth = hourWidth * HOURS_IN_DAY;\n const monthsWidth = useMemo(\n () => getTimelineMonthsWidth({ months, weekDayWidth }),\n [months, weekDayWidth]\n );\n const dividers = generateArray(timelineDividers);\n\n return {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time: timeSlots,\n weekDayWidth,\n monthsWidth,\n timelineHeight,\n dividers,\n timelineDividers,\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n };\n}\n","import React from \"react\";\nimport { startOfDay } from \"date-fns\";\n\n// Import interfaces\nimport { HoursInDayDiffTime, Timezone } from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport {\n SECONDS_IN_MINUTE,\n HOUR_IN_MINUTES,\n getPositionX,\n getTodayHoursInDays,\n getHoursInDaysPositionX,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \".\";\nimport { getNewDateTz } from \"../utils/time\";\n\ninterface useLineProps {\n timezone: Timezone;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n liveRefreshTime: number;\n}\n\nexport function useLine({\n timezone,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n}: useLineProps) {\n const [showLine, setShowLine] = React.useState(true);\n const [positionX, setPositionX] = React.useState(getInitialState);\n\n // Variables\n const timezoneSerialized = JSON.stringify(timezone);\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const liveIntervalTime = liveRefreshTime * 1000;\n const isDayEnd = positionX <= dayWidth;\n const isScrollX = React.useMemo(\n () => (isDayEnd ? liveIntervalTime : null),\n [isDayEnd, liveIntervalTime]\n );\n\n // Helpers\n function getInitialState() {\n if (hoursInDays.length > 0)\n return getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n\n const positionX = getPositionX(\n startOfDay(new Date(startDate)),\n new Date(),\n startDate,\n endDate,\n hourWidth\n );\n return positionX + sidebarWidth;\n }\n\n // Effects\n useInterval(() => {\n const offset = hourWidth / HOUR_IN_MINUTES;\n const step = offset / SECONDS_IN_MINUTE;\n const positionOffset = step * liveRefreshTime;\n\n if (hoursInDays.length > 0) {\n const idCurrentDay = getTodayHoursInDays(hoursInDays);\n\n if (idCurrentDay) {\n setShowLine(true);\n\n setPositionX((prev) => prev + positionOffset);\n } else {\n setShowLine(false);\n }\n } else {\n setPositionX((prev) => prev + positionOffset);\n }\n }, isScrollX);\n\n React.useEffect(() => {\n if (hoursInDays.length > 0) {\n const newPositionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n setPositionX(newPositionX);\n } else {\n const date = new Date(startDate);\n const positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n const newPositionX = positionX + sidebarWidth;\n setPositionX(newPositionX);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n startDate,\n endDate,\n sidebarWidth,\n hourWidth,\n hoursInDaysSerialized,\n timezoneSerialized,\n ]);\n\n return { showLine, positionX };\n}\n","import React from \"react\";\nimport { format } from \"date-fns\";\n// Import types\nimport { BaseTimeFormat } from \"../helpers/types\";\n// Import helpers\nimport { Mode, TIME_FORMAT } from \"../helpers\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import styles\nimport { boxStyles } from \"../styles/CurrentTime.styles\";\n\ninterface useCurrentTimeProps {\n isVerticalMode?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n mode: Mode;\n positionX: number;\n timelineHeight: number;\n sidebarWidth: number;\n}\n\nexport function useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n}: useCurrentTimeProps) {\n const formatTime = () => {\n const date = getNewDateTz();\n\n if (mode.type === \"month\") {\n if (isBaseTimeFormat) return format(date, TIME_FORMAT.BASE_DAY_MONTH);\n return format(date, TIME_FORMAT.DAY_MONTH);\n }\n\n const baseTime = format(date, TIME_FORMAT.HOURS_MIN);\n\n if (isBaseTimeFormat) {\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return baseFormat;\n }\n\n return baseTime;\n };\n\n const handleGetCurrentTimeStyles = () => {\n const {\n position,\n top,\n height,\n width: styleWidth,\n } = boxStyles({ width: timelineHeight });\n const width = isVerticalMode ? styleWidth : \"auto\";\n const commonStyles = {\n position: position,\n width,\n height: height,\n };\n\n if (isVerticalMode) {\n return {\n position: {\n top: positionX - sidebarWidth,\n left: top,\n ...commonStyles,\n },\n };\n }\n\n return {\n position: {\n top: top,\n left: positionX - sidebarWidth,\n ...commonStyles,\n },\n };\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const time = React.useMemo(() => formatTime(), [positionX, isBaseTimeFormat]);\n\n return { time, getCurrentTimeStyles: handleGetCurrentTimeStyles };\n}\n","import { useCallback } from \"react\";\n// Import interfaces\nimport { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import helpers\nimport { getClickGridItemData } from \"../helpers\";\n\ninterface UseGridProps {\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n}\n\nexport function useGrid({\n mode,\n grid,\n timelineHeight,\n sidebarWidth,\n hourWidth,\n dayWidth,\n ...rest\n}: UseGridProps) {\n const {\n isVerticalMode,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n } = rest;\n\n const handleItemClick = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number\n ) =>\n () => {\n getClickGridItemData({\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n const handleItemDrop = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number,\n dataAttributes?: Record\n ) =>\n () => {\n getClickGridItemData({\n isDrop: true,\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n return {\n onItemClick: handleItemClick,\n onItemDrop: handleItemDrop,\n };\n}\n","import React, { useCallback } from \"react\";\n// Types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n\ninterface useGridCellItemProps {\n onItemDrop?: GridEvent;\n}\n\nexport function useGridExternalDnD({ onItemDrop }: useGridCellItemProps = {}) {\n const dropAreaRef = React.useRef(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n const handleDrop = useCallback(\n (\n item: {\n position: Position;\n channel: ChannelWithPosition;\n },\n index: number\n ) =>\n (e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n\n const droppedItemId = e.dataTransfer.getData(\"text/plain\");\n const droppedItem = document.getElementById(droppedItemId);\n\n if (droppedItem) {\n // Loop through all attributes\n const attributes = droppedItem.attributes;\n const dataAttributes = {} as Record;\n\n for (let i = 0; i < attributes.length; i++) {\n const attribute = attributes[i];\n if (attribute.name.startsWith(\"data-\")) {\n dataAttributes[attribute.name.replace(\"data-\", \"\")] =\n attribute.value;\n }\n }\n\n // Call the onDrop callback with the dropped item, attributes, and position\n onItemDrop?.(item, index, dataAttributes)();\n }\n }\n },\n\n [onItemDrop]\n );\n\n const handleDragEnter = useCallback((e: React.DragEvent) => {\n if (e) {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(true);\n }\n }\n }, []);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n }\n }, []);\n\n return {\n isDragOver,\n dropAreaRef,\n onDrop: handleDrop,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { GridDividerItemProps } from \"../helpers/interfaces\";\n// Import hooks\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridDivider } = GridStyled;\n\nexport function GridDividerItem({\n index,\n item,\n dividerProps,\n}: GridDividerItemProps) {\n const { styles, props } = dividerProps;\n const { onItemClick, onItemDrop, ...restProps } = props;\n const { isDragOver, onDrop, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD({\n onItemDrop,\n });\n return (\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { GridCell } from \"../helpers/interfaces\";\n// Import types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n// Import helpers\nimport { generateArray } from \"../helpers\";\n// Import styles\nimport { GridStyled } from \"../styles\";\nimport { GridDividerItem } from \"./GridDividerItem\";\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n\nconst { GridItem } = GridStyled;\n\ninterface GridCellItemProps {\n isVerticalMode: boolean;\n isHoverHighlight: boolean | undefined;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isItemClickable: boolean;\n isDayMode: boolean;\n item: { position: Position; channel: ChannelWithPosition };\n index: number;\n channelOverlapsCount: Record;\n hourWidth: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n onItemClick: GridEvent;\n onItemDrop: GridEvent;\n}\n\nexport function GridCellItem({\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n}: GridCellItemProps) {\n const overlapsCount = channelOverlapsCount[item.channel.uuid] ?? 1;\n const isVisible = isProgramVisible(item.position, overlapsCount);\n\n const { isDragOver, dropAreaRef, onDrop, onDragEnter, onDragLeave } =\n useGridExternalDnD({\n onItemDrop,\n });\n\n if (!isVisible) return null;\n\n const gridItemClickProps = isDayMode\n ? { isItemClickable: false }\n : { onClick: onItemClick(item), isItemClickable };\n\n const dividerProps = {\n styles: {\n left: (index: number) => index * (hourWidth / timelineDividers),\n width: hourWidth / timelineDividers,\n },\n props: {\n isVerticalMode,\n isHoverHighlight: isHoverHighlight as boolean,\n isItemClickable,\n onItemClick,\n onItemDrop,\n },\n };\n\n const gridItemDnDProps = isDayMode\n ? {}\n : {\n isDragOver: isDragOver,\n onDragEnter,\n onDragLeave,\n onDrop: onDrop(item, index),\n };\n\n if (renderGridCell) {\n const id = item.channel.uuid + index;\n return renderGridCell({\n isDayMode,\n id,\n index,\n item,\n isHoverHighlight: isHoverHighlight as boolean,\n timelineDividers,\n gridDividerProps: dividerProps,\n timelineDividerArray: generateArray(timelineDividers),\n gridItemClickProps,\n gridItemDnDProps,\n });\n }\n\n return (\n \n {isDayMode &&\n generateArray(timelineDividers).map((_, index) => (\n \n ))}\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport {\n Mode,\n Grid as IGrid,\n HoursInDayDiffTime,\n GridCell,\n} from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import hooks\nimport { useGrid } from \"../hooks\";\nimport { GridCellItem } from \"./GridCellItem\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridContainer } = GridStyled;\n\ninterface GridProps {\n isVerticalMode: boolean;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isBaseTimeFormat: BaseTimeFormat;\n channelOverlapsCount: Record;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n}\n\nexport function Grid({\n isVerticalMode,\n isProgramVisible,\n channelOverlapsCount,\n grid,\n gridItems,\n mode,\n hourWidth,\n timelineDividers,\n renderGridCell,\n ...rest\n}: GridProps) {\n const { onItemClick, onItemDrop } = useGrid({\n isVerticalMode,\n grid,\n mode,\n hourWidth,\n timelineDividers,\n ...rest,\n });\n\n const isDayMode = mode.type === \"day\";\n const isHoverHighlight = grid.hoverHighlight;\n const isItemClickable = !!grid.onGridItemClick;\n\n const renderGridItem = (\n item: { position: Position; channel: ChannelWithPosition },\n index: number\n ) => {\n const props = {\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n };\n\n // @ts-ignore\n return ;\n };\n\n return (\n \n {gridItems.map((item, index) => renderGridItem(item, index))}\n \n );\n}\n","import React from \"react\";\n\n// Import interfaces\nimport {\n Area,\n Grid as IGrid,\n HoursInDayDiffTime,\n Line as ILine,\n Mode,\n Overlap,\n ProgramOverlaps,\n DragAndDrop,\n Timezone,\n Snap,\n GridCell,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n Timeline as ITimeline,\n CurrentTimeIndicator,\n} from \"../helpers/interfaces\";\nimport {\n ProgramItem,\n ProgramWithPosition,\n ChannelWithPosition,\n DateTime,\n Position,\n BaseTimeFormat,\n DragMouseUp,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n deleteLayoutScreenCloneElement,\n getChannelsContentHeight,\n getProgramOptions,\n isFutureTime,\n setLayoutScreenCloneElement,\n} from \"../helpers\";\n\n// Import styles\nimport { EpgStyled } from \"../styles\";\n\n// Import components\nimport { Areas, Channels, Line, Program, Timeline } from \"../components\";\nimport { LayoutBg } from \"../styles/Epg.styles\";\nimport { Grid } from \"./Grid\";\n\ninterface LayoutProps {\n isToday: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isResize?: boolean;\n programs: ProgramItem[];\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n channels: ChannelWithPosition[];\n channelOverlapsCount: Record;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n scrollY: number;\n dayWidth: number;\n hourWidth: number;\n days: string[];\n months: string[];\n currentDate: string;\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n sidebarWidth: number;\n timelineHeight: number;\n itemHeight: number;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n overlapMode: Overlap[\"mode\"];\n timelineDividers: number;\n timezone: Timezone;\n areas: Area[];\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n overlap: Overlap;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isChannelVisible: (position: Pick) => boolean;\n isTimelineVisible: (position: Pick) => boolean;\n dragMouseUp: (position: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n onScroll: (\n e: React.UIEvent & { target: Element }\n ) => void;\n onLayoutBgClick?: () => void;\n renderProgram?: (v: {\n program: ProgramItem;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n liveRefreshTime: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n contentHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n }) => React.ReactNode;\n renderChannel?: (v: { channel: ChannelWithPosition }) => React.ReactNode;\n renderTimeline?: (v: ITimeline) => React.ReactNode;\n renderLine?: (v: ILine) => React.ReactNode;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n renderGridCell?: (v: GridCell) => React.ReactElement;\n}\n\nconst { ScrollBox, Content } = EpgStyled;\n\nexport const Layout = React.forwardRef(\n (props, scrollBoxRef) => {\n const { startDate, endDate, hoursInDays, liveRefreshTime, scrollY } = props;\n\n const {\n channels,\n channelOverlapsCount,\n programs,\n programOverlaps,\n layerOverlapLevel,\n } = props;\n\n const {\n timezone,\n areas,\n grid,\n gridItems,\n mode,\n dnd,\n snap,\n overlap,\n overlapMode,\n timelineDividers,\n } = props;\n\n const {\n dayWidth,\n hourWidth,\n monthWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n } = props;\n\n const {\n days,\n months,\n numberOfHoursInDay,\n numberOfDays,\n numberOfMonths,\n offsetStartHoursRange,\n } = props;\n\n const {\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isToday,\n isBaseTimeFormat = false,\n isCurrentTime = false,\n isResize = false,\n } = props;\n\n const {\n dragMouseUp,\n resizeMouseUp,\n openChannelGroupTree,\n onLayoutBgClick,\n onScroll,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n renderProgram,\n renderChannel,\n renderTimeline,\n renderLine,\n renderCurrentTime,\n renderGridCell,\n } = props;\n\n // Calculate the height of the content\n const channelsLength = channels.length;\n const programsOverlapsLength = Object.keys(programOverlaps).length;\n const programOverlapsSerialized = JSON.stringify(programOverlaps);\n const contentHeight = React.useMemo(\n () => {\n if (programsOverlapsLength > 0) {\n return getChannelsContentHeight(channels);\n }\n return channelsLength * itemHeight;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n channelsLength,\n programsOverlapsLength,\n itemHeight,\n programOverlapsSerialized,\n ]\n );\n\n const showAreas = areas.length > 0;\n const isFuture = isFutureTime(endDate);\n\n const renderPrograms = (program: ProgramWithPosition, index: number) => {\n const { position, data } = program;\n const overlapsCount = channelOverlapsCount[program.data.channelUuid] ?? 1;\n const isVisible =\n data.fixedVisibility ?? isProgramVisible(position, overlapsCount);\n\n if (isVisible) {\n setLayoutScreenCloneElement(program, index);\n const options = getProgramOptions({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n overlap,\n });\n const props = {\n isRTL,\n isResize,\n isVerticalMode,\n isBaseTimeFormat,\n startDate,\n program: options,\n liveRefreshTime,\n snap,\n mode,\n dnd,\n dayWidth,\n contentHeight,\n itemHeight,\n hourWidth,\n dragMouseUp,\n resizeMouseUp,\n };\n if (renderProgram) return renderProgram(props);\n\n return (\n \n );\n }\n deleteLayoutScreenCloneElement(program);\n return null;\n };\n\n const renderTopbar = () => {\n const timeProps = {\n isVerticalMode,\n isSidebar,\n isRTL,\n isTimelineVisible,\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n timezone,\n startDate,\n endDate,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n offsetStartHoursRange,\n monthWidth,\n numberOfHoursInDay,\n numberOfMonths,\n numberOfDays,\n hourWidth,\n days,\n months,\n hoursInDays,\n liveRefreshTime,\n mode,\n timelineDividers,\n renderCurrentTime,\n };\n if (renderTimeline) {\n return renderTimeline(timeProps);\n }\n return ;\n };\n\n return (\n \n {grid.enabled && (\n \n )}\n {onLayoutBgClick && (\n \n )}\n {isLine && isToday && isFuture && (\n \n )}\n\n {showAreas && (\n \n )}\n {isTimeline && renderTopbar()}\n {isSidebar && (\n \n )}\n\n \n {programs.map((program, index) =>\n renderPrograms(program as ProgramWithPosition, index)\n )}\n \n \n );\n }\n);\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n DragAndDrop,\n Mode,\n Program as ProgramType,\n Snap,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n BaseTimeFormat,\n DateTime,\n DragMouseUp,\n ResizeMouseUp,\n} from \"../helpers/types\";\nimport { ProgramItem } from \"../helpers/types\";\n\n// Import styles\nimport { ProgramStyled } from \"../styles\";\n\n// Import hooks\nimport { useProgram } from \"../hooks\";\n\ninterface ProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isResize?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n program: T;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n onClick?: (v: ProgramType) => void;\n}\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramResizeHandle,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n} = ProgramStyled;\n\nexport function Program({\n isVerticalMode,\n program,\n onClick,\n ...rest\n}: ProgramProps) {\n const {\n isRTL,\n isLive,\n isMinWidth,\n isMouseEvent,\n styles,\n resizeEvents,\n formatTime,\n getMouseEvents,\n getMouseEventTempTime,\n set12HoursTimeFormat,\n getRTLSinceTime,\n getRTLTillTime,\n } = useProgram({\n isVerticalMode,\n program,\n ...rest,\n });\n\n const { data } = program;\n const { image, title, since, till } = data;\n\n const handleOnContentClick = () => onClick?.(data);\n\n const sinceTime = formatTime(\n getRTLSinceTime(since),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tillTime = formatTime(\n getRTLTillTime(till),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tempTime = getMouseEventTempTime();\n\n return (\n \n \n \n \n \n {isLive && isMinWidth && (\n \n )}\n \n \n {title}\n \n \n {isMouseEvent ? (\n <>\n {tempTime.since} - {tempTime.till}\n \n ) : (\n <>\n {sinceTime} - {tillTime}\n \n )}\n \n \n \n \n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { ChannelItem, ChannelWithPosition } from \"../helpers/types\";\n\n// Import helpers\nimport {\n getChannelGroupTreeProps,\n getChannelVerticalPosition,\n} from \"../helpers\";\n\n// Import styles\nimport { ChannelsStyled } from \"../styles\";\n\n// Import Components\nimport { Channel } from \"../components\";\n\ninterface ChannelsProps {\n isVerticalMode: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n isChannelVisible: (position: any) => boolean;\n channels: ChannelWithPosition[];\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n scrollY: number;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n renderChannel?: (v: ChannelItem) => React.ReactNode;\n}\n\nconst { Box } = ChannelsStyled;\n\nexport function Channels(props: ChannelsProps) {\n const {\n channels,\n scrollY,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n openChannelGroupTree,\n renderChannel,\n } = props;\n const { isVerticalMode, isRTL, isTimeline, isChannelVisible } = props;\n\n const renderChannels = (channel: ChannelWithPosition) => {\n const channelWithPosition = getChannelVerticalPosition(\n channel,\n isVerticalMode\n );\n const isVisible = isChannelVisible(channelWithPosition.position);\n const newChannel = getChannelGroupTreeProps(\n channelWithPosition\n ) as ChannelWithPosition;\n\n const groupEventProps = newChannel.groupTree\n ? { onOpenGroupTree: openChannelGroupTree }\n : {};\n\n if (isVisible) {\n if (renderChannel) {\n return renderChannel({\n channel: newChannel,\n isVerticalMode,\n isRTL,\n ...groupEventProps,\n });\n }\n\n return (\n \n );\n }\n return null;\n };\n\n return (\n \n {channels.map(renderChannels)}\n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport { ChannelWithPosition } from \"../helpers/types\";\n\n// Import styles\nimport { ChannelStyled } from \"../styles\";\n\ninterface ChannelProps {\n isVerticalMode: boolean;\n channel: T;\n onOpenGroupTree?: (data: ChannelWithPosition) => void;\n onClick?: (v: ChannelWithPosition) => void;\n}\n\nconst { ChannelWrapper, ChannelLogo } = ChannelStyled;\n\nexport function Channel({\n isVerticalMode,\n channel,\n onOpenGroupTree,\n onClick,\n ...rest\n}: ChannelProps) {\n const { position, logo, groupTree } = channel;\n\n return (\n onOpenGroupTree?.(channel) ?? onClick?.(channel)}\n {...position}\n {...rest}\n >\n \n \n );\n}\n","import * as React from \"react\";\n\n// Import types\nimport {\n CurrentTimeIndicator,\n HoursInDayDiffTime,\n Mode,\n Timezone,\n} from \"../helpers/interfaces\";\nimport { DateTime } from \"../helpers/types\";\n\n// Import styles\nimport { CurrentTimeStyled } from \"../styles\";\n\n// Import hooks\nimport { useLine, useCurrentTime } from \"../hooks\";\n\ninterface CurrentTimeProps {\n isBaseTimeFormat?: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n timezone: Timezone;\n mode: Mode;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n dayWidth: number;\n timelineHeight: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n}\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nexport function CurrentTime(props: CurrentTimeProps) {\n const { isVerticalMode, isBaseTimeFormat, isRTL } = props;\n const { timezone, mode, liveRefreshTime, startDate, endDate, hoursInDays } =\n props;\n const { dayWidth, timelineHeight, hourWidth, sidebarWidth } = props;\n const { renderCurrentTime } = props;\n\n const { showLine, positionX } = useLine({\n timezone,\n hoursInDays,\n startDate,\n endDate,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n });\n\n const { time, getCurrentTimeStyles } = useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n });\n\n if (!showLine) return null;\n\n const styles = getCurrentTimeStyles();\n\n if (renderCurrentTime) {\n return renderCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n isRTL,\n time,\n styles,\n });\n }\n\n return (\n \n \n {time}\n \n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import styles\nimport { TimelineStyled } from \"../styles\";\n\n// Import components\nimport { CurrentTime } from \"./CurrentTime\";\n\n// Import hooks\nimport { useTimeline } from \"../hooks\";\nimport {\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} from \"../styles/Timeline.styles\";\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDividers,\n TimelineDivider,\n} = TimelineStyled;\n\nexport function Timeline(props: ITimeline) {\n const {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time,\n ...rest\n } = useTimeline(props);\n const {\n timelineHeight,\n weekDayWidth,\n monthsWidth,\n dividers,\n timelineDividers,\n } = rest;\n const {\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n } = rest;\n\n const {\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n isRTL,\n isTimelineVisible,\n isVerticalMode,\n } = props;\n const { mode } = props;\n const { hourWidth } = props;\n\n // Handlers\n const renderDay = (item: string | number, index: number) => {\n const { isNewDay, time } = getTime(item);\n const position = { left: hourWidth * index, width: hourWidth };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n\n return (\n \n \n {time}\n \n \n {renderDividers(isNewDay)}\n \n \n );\n };\n const renderWeekMonth = (item: string, index: number) => {\n const width = isMonthMode ? monthsWidth[index].width : weekDayWidth;\n const left = isMonthMode ? monthsWidth[index].left : width * index;\n const position = {\n left,\n width,\n };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n const isModernStyle = mode.style === \"modern\";\n return (\n \n \n {isModernStyle && {getDayMonthName(item)}}\n {formatWeekMonthDate(item)}\n \n \n );\n };\n\n const renderDividers = (isNewDay: boolean) =>\n dividers.map((_, index) => (\n \n ));\n\n const renderTimelineItems = (item: string | number, index: number) => {\n return isWeekMonthMode\n ? renderWeekMonth(item as string, index)\n : renderDay(item, index);\n };\n\n return (\n \n {isCurrentTime && isToday && }\n {time.map((item, index) => renderTimelineItems(item, index))}\n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n HoursInDayDiffTime,\n Line as ILine,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport { Layers, getLineStyles } from \"../helpers\";\n\n// Import styles\nimport { LineStyled } from \"../styles\";\n\n// Import components\nimport { useLine } from \"../hooks/useLine\";\n\ninterface LineProps {\n isTimeline: boolean;\n isVerticalMode: boolean;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n hoursInDays: HoursInDayDiffTime[];\n timezone: Timezone;\n renderLine?: (v: ILine) => React.ReactNode;\n}\n\nconst { lineStyles, LineBox } = LineStyled;\n\nexport function Line({\n isTimeline,\n isVerticalMode,\n height,\n renderLine,\n ...rest\n}: LineProps) {\n const { positionX, showLine } = useLine(rest);\n\n if (!showLine) return null;\n\n const position = {\n height,\n left: positionX,\n zIndex: Layers.Line,\n };\n\n const styles = getLineStyles({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n });\n\n if (renderLine)\n return <>{renderLine({ styles, isVerticalMode, isTimeline })};\n\n return (\n \n );\n}\n","import * as React from \"react\";\n\n// Import styles\nimport { LoaderStyled } from \"../styles\";\n\nconst { Box, Shape } = LoaderStyled;\n\nconst Element = ({\n width,\n color,\n animate,\n marginRight,\n transition,\n}: {\n width: number;\n color: string;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n marginRight?: number;\n}) => (\n \n);\n\nexport function Loader() {\n return (\n \n
\n \n \n \n
\n \n \n
\n
\n \n \n
\n \n \n );\n}\n","import { isWithinInterval } from \"date-fns\";\nimport { getPositionX } from \"./epg\";\nimport { Area } from \"./interfaces\";\nimport { DateTime } from \"./types\";\n\ninterface AreasData {\n area: Area;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport const getAreasFields = ({\n area,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n height,\n}: AreasData) => {\n const areaStartDate = area.startDate;\n const areaEndDate = area?.endDate ?? areaStartDate;\n\n const left =\n getPositionX(startDate, areaStartDate, startDate, endDate, hourWidth) +\n sidebarWidth;\n\n const width = getPositionX(\n areaStartDate,\n areaEndDate,\n startDate,\n endDate,\n hourWidth\n );\n\n const intervalOptions = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n const isStartAreaDateValid = isWithinInterval(\n new Date(areaStartDate),\n intervalOptions\n );\n\n const showArea = isStartAreaDateValid;\n const areaFieldStyles = {\n positionX: left,\n width,\n height,\n timelineHeight,\n };\n return {\n ...area,\n showArea,\n areaFieldStyles,\n areaBgStyles: area.styles,\n };\n};\n","import { useMemo } from \"react\";\n// Import interfaces\nimport { Area } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import helpers\nimport { getAreasFields } from \"../helpers/areas\";\n\ninterface UseAreasProps {\n areas: Area[];\n hourWidth: number;\n sidebarWidth: number;\n height: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport function useAreas(props: UseAreasProps) {\n const { startDate, endDate, areas } = props;\n const { hourWidth, sidebarWidth, timelineHeight, height } = props;\n\n const areasSerialized = JSON.stringify(areas);\n const data = useMemo(\n () => {\n return areas.map((area) => {\n const options = {\n area,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n };\n return getAreasFields(options);\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n areasSerialized,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n ]\n );\n\n return { data };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { Area, AreaItem } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import hooks\nimport { useAreas } from \"../hooks/useAreas\";\n\n// Import styles\nimport { AreaStyled } from \"../styles\";\n\ninterface AreasProps {\n isVerticalMode: boolean;\n areas: Area[];\n height: number;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\ntype AreaAnnotationProps = Pick & {\n isLeft: boolean;\n text: string;\n styles: AreaItem[\"areaBgStyles\"];\n};\n\nconst { AreaAnnotation, AreaBg, AreaFiled } = AreaStyled;\n\nexport function Areas({ isVerticalMode, ...props }: AreasProps) {\n const { data } = useAreas(props);\n\n const renderAreaAnnotation = (props: AreaAnnotationProps) => {\n const { isLeft, text } = props;\n const { areaFieldStyles, styles } = props;\n const className = isLeft ? \"left\" : \"right\";\n return (\n \n {text}\n \n );\n };\n\n const renderArea = (props: AreaItem, index: number) => {\n const { showArea, annotations, onClick } = props;\n const { areaBgStyles = {}, areaFieldStyles } = props;\n if (!showArea) return null;\n\n const annotationProps = {\n areaFieldStyles,\n styles: annotations?.styles ?? {},\n };\n\n return (\n \n \n {annotations && (\n <>\n {annotations.textStart &&\n renderAreaAnnotation({\n isLeft: true,\n text: annotations.textStart,\n ...annotationProps,\n })}\n {annotations.textEnd &&\n renderAreaAnnotation({\n isLeft: false,\n text: annotations.textEnd,\n ...annotationProps,\n })}\n \n )}\n \n );\n };\n\n return (\n \n {data.map((props, index) => renderArea(props, index))}\n \n );\n}\n","import React from \"react\";\nimport { ThemeProvider, Global } from \"@emotion/react\";\n// Import interfaces\nimport { Theme } from \"./helpers/interfaces\";\n// Import styles\nimport { globalStyles, EpgStyled } from \"./styles\";\n// Import components\nimport { Loader } from \"./components\";\nimport { useGridExternalDnD } from \"./hooks\";\n\ninterface EpgProps {\n width?: number;\n height?: number;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isSidebar: boolean;\n isTimeline?: boolean;\n isLoading?: boolean;\n children: React.ReactNode;\n loader?: React.ReactNode;\n theme: Theme;\n globalStyles?: string;\n sidebarWidth: number;\n timelineHeight: number;\n}\n\nconst { Container, Wrapper, Box } = EpgStyled;\n\nexport const Epg = React.forwardRef(\n (\n {\n children,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n theme,\n globalStyles: customGlobalStyles,\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLoading = false,\n loader: LoaderComponent,\n ...rest\n },\n containerRef\n ) => {\n const renderLoader = () => LoaderComponent ?? ;\n const epgGlobalStyles = customGlobalStyles ?? globalStyles;\n\n const blankSpaceStyles = isVerticalMode\n ? { height: sidebarWidth, width: timelineHeight }\n : { width: sidebarWidth, height: timelineHeight };\n\n return (\n \n \n \n \n {isSidebar && isTimeline && (\n \n )}\n {isLoading && renderLoader()}\n {children}\n \n \n \n );\n }\n);\n\ninterface WrapperDnDProps {\n children: React.ReactNode;\n}\nfunction WrapperDnD({ children }: WrapperDnDProps) {\n const { isDragOver, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD();\n\n React.useEffect(() => {\n const gridElement = document.querySelector(\".planby-grid\") as HTMLElement;\n if (gridElement) {\n if (isDragOver) {\n gridElement.style.zIndex = \"5\";\n } else {\n gridElement.style.zIndex = \"1\";\n }\n }\n }, [isDragOver]);\n\n return (\n \n {children}\n \n );\n}\n","import {\n ChannelStyled,\n CurrentTimeStyled,\n ProgramStyled,\n TimelineStyled,\n GridStyled,\n} from \"./styles\";\n\n// Import interfaces\nimport {\n Line as ILine,\n Theme as ITheme,\n Program as IProgram,\n Timeline as ITimeline,\n CurrentTimeIndicator as ICurrentTimeIndicator,\n Mode,\n GridItemProps as IGridItemProps,\n GridDividerItemProps as IGridDividerItemProps,\n DragAndDrop,\n Snap,\n GridCell as IGridCell,\n} from \"./helpers/interfaces\";\nimport {\n ProgramItem as ProgramItemType,\n ChannelItem as IChannelItem,\n ChannelWithPosition,\n BaseTimeFormat as BaseTimeFormatType,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"./helpers/types\";\n\n// Types\nexport type Channel = ChannelWithPosition;\nexport type ChannelItem = IChannelItem;\nexport type CurrentTimeIndicator = ICurrentTimeIndicator;\nexport type Line = ILine;\nexport type Program = IProgram;\nexport type ProgramItem = {\n program: ProgramItemType;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormatType;\n liveRefreshTime: number;\n mode: Mode;\n startDate: DateTime;\n snap?: Snap;\n dnd: DragAndDrop;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n hourWidth: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n};\nexport type GridItemProps = IGridItemProps;\nexport type GridDividerItemProps = IGridDividerItemProps;\n\nexport type Timeline = ITimeline;\nexport type Theme = ITheme;\nexport type GridCell = Omit;\n\n// Components\nexport { Layout, CurrentTime } from \"./components\";\nexport { Epg } from \"./Epg\";\nexport { useEpg, useProgram, useTimeline, useGridExternalDnD } from \"./hooks\";\n\n// Styles\nconst { ChannelWrapper: ChannelBox, ChannelLogo } = ChannelStyled;\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nconst { GridItem, GridDivider } = GridStyled;\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n} = ProgramStyled;\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDivider: TimelineDividerStyled,\n TimelineDividers,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} = TimelineStyled;\n\nexport {\n // Channel\n ChannelBox,\n ChannelLogo,\n // CurrentTime\n CurrentTimeBox,\n CurrentTimeContent,\n // Program\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n // Timeline\n TimelineWrapper,\n TimelineBox,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n TimelineTime,\n TimelineDividers,\n // Grid\n GridItem,\n GridDivider,\n};\n\nexport const TimelineDivider = TimelineDividerStyled;\n"],"names":["globalStyles","css","_templateObject","_taggedTemplateLiteralLoose","Layers","DAY_WIDTH","HOURS_IN_DAY","HOUR_IN_MINUTES","SECONDS_IN_MINUTE","TIMELINE_HEIGHT","TIMELINE_HEIGHT_MODERN_STYLE","TIMELINE_DIVIDERS","SIDEBAR_WIDTH","ITEM_HEIGHT","ITEM_OVERSCAN","DEBOUNCE_WAIT","DEBOUNCE_WAIT_MAX","LIVE_REFRESH_TIME","TIME_FORMAT","DEFAULT","DATE","DAY","DAY_DATE","MONTH","DAY_MONTH","BASE_DAY_MONTH","HOURS_MIN","BASE_HOURS_TIME","YEAR","OVERLAP_MODES","STACK","LAYER","TIMEZONE_MODES","UTC_TO_ZONED_TIME","omit","obj","result","_extends","_len","arguments","length","props","Array","_key","_i","_props","property","generateArray","num","fill","getOverlapProgramOptions","_ref","isVerticalMode","program","programOverlaps","layerOverlapLevel","overlapMode","data","position","linkedProgramOverlaps","channelUuid","programOverlapIndex","findIndex","element","id","overlapProgram","channelPosition","top","newTop","Math","abs","switchPosition","isOverlap","width","height","left","getProgramOptions","_ref2","overlap","rest","_objectWithoutPropertiesLoose","_excluded","enabled","_program$position","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","getDate","date","Date","getDayWidthResources","_ref3","dayWidth","startDate","endDate","hoursInDays","modeType","defaultOptions","hourWidth","numberOfMonths","numberOfHoursInDay","monthWidth","offsetStartHoursRange","startDateTime","endDateTime","console","error","endOfMonthTime","startOfMonth","addMonths","numberOfMonthInMonthMode","differenceInMonths","numberOfDaysInWeekMode","differenceInDays","dayWidthInWeekMode","floor","newDayWidthInWeekMode","reduce","acc","curr","diffInHours","newDayWidth","differenceInHours","startOfDay","convertDate","newDate","replace","toDate","getDayResources","_ref4","startDateFormat","format","endDateFormat","modeIncrementValue","diffDays","startToEndInterval","start","end","days","eachDayOfInterval","map","day","months","eachMonthOfInterval","dates","isTodayFns","isToday","some","currentDate","indexOf","numberOfDays","programPosition","generateUUID","generateRandomHex","characters","i","random","formatUUID","parts","substring","LayoutScreenCloneCache","setChannel","event","isChannel","updateLayoutScreenCloneElement","setLayoutScreenCloneElement","index","channels","deleteLayoutScreenCloneElement","resetLayoutScreenCloneElements","getChannelsContentHeight","channel","channelEpgIndexesCache","setChannelEpgIndexes","uuid","_ref$first","first","_ref$last","last","getChannelEpgIndexes","channelsGroupTreeCache","setChannelGroupTree","isOpen","groupTree","setChannelGroupTreeNestedChildren","nestedChildUuid","nestedChildren","concat","_channel$nestedChildr","getChannelsGroupTree","timezoneOptionsCache","zone","mode","setTimezoneOptionsCache","getTimezoneOptionsCache","getNewDateTimeTz","timezone","zonedTime","utcToZonedTime","getTime","getNewDateTz","formatTz","formatTime","formattedZonedTime","tzFormat","timeZone","fnsFormat","zonedDateTimeToUtc","zonedTimeToUtc","getItemDiffWidth","diff","getPositionX","since","till","isTomorrow","isYesterday","diffTime","differenceInMinutes","roundToMinutes","getChannelPosition","channelIndex","itemHeight","getProgramPosition","item","formatTimeTz","isYesterdayTime","edgeEnd","getProgramPositionWithDayHours","find","includes","diffHours","diffLeft","getConvertedPrograms","isOverlapEnabled","programChannelMapKey","next","arr","_arr","_arr2","_channels$channelInde","_channels$channelInde2","parentChannelUuid","_channels$channelInde3","programData","newPositionTop","newPosition","getConvertedChannels","channelMapKey","channelOverlapsCount","isStackMode","isLayerMode","channelsGroupTree","channelGroupTree","largestSizeLength","overlapsLength","push","getItemVisibility","scrollY","scrollX","containerHeight","containerWidth","itemOverscan","overlapsCount","_overlapsCount","getSidebarItemVisibility","_ref5","getTimelineItemVisibility","_ref6","setUpdatedLayoutItem","endOfDay","addDays","title","image","getLiveStatus","nowTime","sinceTime","sinceTill","roundToNearestMinutes","isFutureTime","dateTime","now","getTimeRangeDates","endDateValue","getFormattedWeekMonthDate","isBaseTimeFormat","type","style","dateFormat","getNumberOfHoursInDays","customHoursInDays","itemsDiffInHours","prevItem","startTimeHour","endTimeHour","startTime","Number","endTime","prevItemDiffInHours","getTodayHoursInDays","filter","isWithinInterval","getHoursInDaysPositionX","sidebarWidth","cb","positionX","generateDayHours","dayIndex","from","_","timeFormat","parse","generateTimelineSlots","options","generateWeekTimelineSlots","generateMonthTimelineSlots","getDayHoursTimeSlots","getDayTimeSlots","slots","hours","hoursInDay","sliced","slice","getTimelineMonthsWidth","weekDayWidth","_months$reduce","month","daysInMonth","getDaysInMonth","offsetLeft","getTimelineHeight","timelineHeight","getLineStyles","isTimeline","lineStyles","getChannelVerticalPosition","getChannelGroupTreeProps","isFirstNestedChild","isLastNestedChild","getChanelGroupTree","_channelsGroupTree","channelNestedGroupTree","_channel$parentChanne","_channelNestedGroupTr","_channelNestedGroupTr2","at","getOverlapCount","overlapArray","sinceB","tillB","overlapCount","_iterator","_createForOfIteratorHelperLoose","_step","done","otherProgram","value","sinceOther","tillOther","overlapPosition","newChannelOverlapsCount","levelTop","overlapsOnLevel","overlapsOnLevelUp","_iterator2","_step2","_program","overlapTimes","newHeight","isOverlapStackMode","newProgram","overlapTop","setChannelOverlapCount","programA","channelOverlaps","getOverlaps","itemOverlaps","programs","overlaps","_iterator3","_step3","_loop","_programA$data","sinceA","tillA","_programA$data2","_loop2","programB","j","elementA","elementB","isSameChannelUuid","overlapLinkedId","isElementAExist","el","isElementBExist","channelOverlapsLength","_getOverlapProgramOpt","newProgramA","_getOverlapProgramOpt2","newProgramB","_getOverlapProgramOpt3","getChannelProgramSliced","Map","_iterator4","_step4","has","set","get","Object","fromEntries","getChannelEpdIndexesProgramSliced","dndChannelUuidIndex","_Object$keys","keys","_overlaps$next","_overlaps$next2","undefined","channelEpgIndexes","slicedPrograms","checkOverlaps","isMultirowsDnd","dndChannelUuid","_extends2","slicedOverlapsPrograms","_Object$keys2","getFormattedDndDate","newSince","newTill","utcDateSince","utcDateTill","toISOString","getResizeTill","initialWidth","calculateItemDragSinceTill","initialPositionLeft","minDiff","tillDiffHours","addMinutes","getDefaultDragProps","positionLeft","currentPositionX","dndEvents","isDragging","getConvertedGridItems","dayWidthResources","daysResources","isMonthMode","numberOfSlots","monthsWidth","getGridItemPosition","flatMap","getClickGridItemData","isDrop","_ref2$isDrop","grid","timelineDividers","dataAttributes","isDayMode","timeSlots","itemClickProps","gridItemProps","getDividerGridProps","onGridItemDrop","onGridItemClick","dayTimeSlots","time","sinceTimeInHours","tillTimeInHours","newSinceMin","newTillMin","newNextTill","singleDayWidth","Container","_styled","process","target","label","Wrapper","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ScrollBox","theme","primary","isRTL","scrollbar","thumb","bg","white","_ref7","_ref8","_ref9","_ref10","Box","_ref11","_ref11$top","_ref12","EpgCornerBox","_ref13","_ref13$left","Content","_ref14","isSidebar","_ref15","contentHeight","_ref16","_ref17","_ref18","LayoutBg","_ref19","_ref20","_ref21","_ref22","bottom","_templateObject2","_templateObject3","Sidebar","ChannelWrapper","ChannelLogo","ProgramContent","Program","gradient","blue","isLive","ProgramFlex","Elipsis","ProgramTitle","grey","ProgramText","text","ProgramImage","ProgramStack","ProgramBox","isResizing","ProgramResizeHandle","green","isResize","TimelineTime","isWeekMonthMode","isNewDay","teal","TimelineWeekMonthDate","styleType","TimelineDividers","_templateObject4","TimelineDivider","timeline","divider","_templateObject5","TimelineWrapper","_templateObject6","Timeline","_templateObject7","_templateObject8","TimelineBox","_templateObject9","_templateObject10","_templateObject11","isCurrentTime","isTodayInHoursInDays","areHoursInDays","typeNumberDefault","typeNumberInHoursDays","typeNumber","TimelineWeekMonthBox","_templateObject12","_templateObject13","_templateObject14","LineBox","zIndex","moveLeft","animate","keyframes","right","loader","Loader","Shape","color","marginRight","transition","duration","_transition$ease","ease","_transition$delay","delay","boxStyles","_temp","CurrentTimeBox","CurrentTimeContent","AreaFiled","isClickable","Area","AreaBg","AreaAnnotation","_ref2$isLeft","isLeft","GridContainer","GridItem","isHoverHighlight","isDragOver","highlight","isItemClickable","GridDivider","purple","pink","border","useLayout","isInitialScrollToNow","initialScrollPositions","channelsNumber","useIsomorphicEffect","containerRef","React","useRef","scrollBoxRef","_React$useState","useState","setScrollY","_React$useState2","setScrollX","_React$useState3","layoutWidth","setLayoutWidth","_React$useState4","layoutHeight","setLayoutHeight","scrollBoxInnerHeight","_scrollBoxRef$current","current","scrollHeight","initialScrollPositionsSerialized","JSON","stringify","handleScrollDebounced","useDebouncedCallback","y","x","maxWait","handleOnScroll","useCallback","e","scrollTop","scrollLeft","hoursInDaysSerialized","useMemo","handleOnScrollToNow","_containerRef$current","clientWidth","scrollNow","handleScrollToInitialPositions","isInitialScrollPosition","_initialScrollPositio","_initialScrollPositio2","scrollTo","behavior","handleOnScrollTop","handleOnScrollRight","handleOnScrollLeft","handleResizeDebounced","container","handleCheckIsLayoutBottom","offset","_scrollBoxRef$current2","scrollWidth","_scrollBoxRef$current3","clientHeight","handleCheckIsLayoutRight","_scrollBoxRef$current4","_scrollBoxRef$current5","addEventListener","removeEventListener","isLayoutBottom","isLayoutRight","onScroll","onScrollToNow","onScrollTop","onScrollLeft","onScrollRight","defaultStartDateTime","startOfToday","defaultMode","defaultTimezone","defaultOverlap","defaultGrid","hoverHighlight","defaultDnd","useEpg","_props$isVerticalMode","_props$isRTL","_props$isResize","_props$isBaseTimeForm","_props$isSidebar","_props$isTimeline","_props$isLine","isLine","_props$isCurrentTime","_props$isInitialScrol","channelsEpg","epg","_props$startDate","startDateInput","_props$endDate","endDateInput","_props$hoursInDays","_props$initialScrollP","_props$liveRefreshTim","liveRefreshTime","_props$timelineDivide","snap","_props$mode","customMode","_props$overlap","customOverlap","_props$timezone","customTimezone","_props$areas","areas","_props$grid","_props$dnd","dnd","customTheme","_props$dayWidth","customDayWidth","_props$sidebarWidth","_props$timelineHeight","customTimelineHeight","_props$itemHeight","_props$itemOverscan","_props$channelMapKey","_props$programChannel","_getTimeRangeDates","serializedHoursInDays","_React$useMemo","_React$useMemo2","dayWidthResourcesProps","_excluded2","_React$useReducer","useReducer","update","setForceUpdate","_React$useReducer2","updateChannels","setForceChannelsUpdate","setDndChannelUuid","newOverlaps","setNewOverlaps","setOverlaps","setChannelOverlapsCount","timezoneSerialized","_useLayout","layoutProps","_excluded3","channelsEpgSerialized","channelOverlapsCountSerialized","channelsSerialized","overlapsSerialized","_React$useMemo3","_overlaps","_checkOverlaps","itemsOverlaps","prev","gridItems","defaultTheme","isProgramVisible","isChannelVisible","isTimelineVisible","dndOnSuccessCb","onDnDSuccess","resizeMouseUp","newTime","dragMouseUp","_asyncToGenerator","_regeneratorRuntime","mark","_callee","checkChannelTopOutRange","checkChannelTopInRange","isChannelTopInRange","isChannelTopOutRange","newChannel","newChannelRange","newChannelEpgIndexes","wrap","_callee$","_context","elementChannel","stop","_x","apply","handleGetLayoutData","events","handleOpenChannelGroupTree","handleGetDropItemData","getEpgProps","ref","getLayoutProps","openChannelGroupTree","getLayoutData","getDropItemData","useInterval","callback","savedCallback","setInterval","clearInterval","useIsTouchDevice","isMobile","setIsMobile","checkDevice","iOS","test","navigator","userAgent","document","androidOrWebOS","isMobileDevice","isTouchScreen","maxTouchPoints","matchMedia","matches","useDrag","isDndEnabled","isDndMutlirows","initialPosition","dndSnapX","_props$dndSnapY","dndSnapY","elementRef","mouseUpCb","dndMouseUpCb","isClicked","isMouseMove","isTouchDevice","_useState","setIsDragging","_useState2","isPreventScroll","setIsPreventScroll","_useState3","setPosition","_useState4","startY","lastY","startX","lastX","coords","setCoords","handleMouseDown","stopPropagation","touches","clientY","clientX","handleMouseClick","preventDefault","handleMouseUp","_elementRef$current","_elementRef$current2","_elementRef$current3","_elementRef$current4","optionsYX","isDndMouseUpSuccess","optionsY","_isDndMouseUpSuccess","offsetTop","initialPositionTop","sent","setTimeout","initialPositionSerialized","handleMouseMove","offsetWidth","_elementRef$current5","offsetHeight","_elementRef$current6","_elementRef$current7","_elementRef$current8","nextYValue","nextY","round","nextX","nextXSnap","checkTopRange","isOutTopRange","nextXValue","nextYSnap","mouseMoveEvent","mouseUpEvent","passive","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","onClick","useResize","snapX","setIsResizing","isResizingLeft","setIsResizingLeft","isResizingRight","setIsResizingRight","_useState5","mouseOffsetX","setMouseOffsetX","_useState6","_useState7","pageY","pageX","elementRect","getBoundingClientRect","snapYTop","newHeightTop","newHeightBottom","isInLeftLayout","isInRightLayout","snapXLeft","newWidthLeft","newWidthRight","getEvents","resizeEvents","resources","eventsLeft","eventsRight","useProgram","_ref$isVerticalMode","_ref$isRTL","_ref$isResize","_ref$minWidth","minWidth","setIsLive","resizeOptions","_useResize","resizeCurrentPositionX","resizeWidth","_dnd$onDnDMouseUp","onDnDMouseUp","dragOptions","_useDrag","formatType","set12HoursTimeFormat","getRTLSinceTime","getRTLTillTime","status","isMinWidth","getMouseEventTempTime","_calculateItemDragSin","formatTempTime","toLowerCase","getMouseEvents","isMouseEvent","useTimeline","renderCurrentTime","baseDate","baseFormat","formatWeekMonthDate","getDayMonthName","getCurrentTimeProps","getTimelineProps","isWeekMode","dividers","useLine","showLine","setShowLine","getInitialState","setPositionX","liveIntervalTime","isDayEnd","isScrollX","step","positionOffset","idCurrentDay","newPositionX","useCurrentTime","baseTime","handleGetCurrentTimeStyles","_boxStyles","styleWidth","commonStyles","getCurrentTimeStyles","useGrid","handleItemClick","handleItemDrop","onItemClick","onItemDrop","useGridExternalDnD","dropAreaRef","setIsDragOver","handleDrop","droppedItemId","dataTransfer","getData","droppedItem","getElementById","attributes","attribute","startsWith","handleDragEnter","handleDragLeave","onDrop","onDragEnter","onDragLeave","GridStyled","GridDividerItem","dividerProps","restProps","_useGridExternalDnD","className","key","GridCellItem","renderGridCell","_channelOverlapsCount","isVisible","gridItemClickProps","gridItemDnDProps","gridDividerProps","timelineDividerArray","Grid","_useGrid","renderGridItem","EpgStyled","Layout","forwardRef","onLayoutBgClick","renderProgram","renderChannel","renderTimeline","renderLine","channelsLength","programsOverlapsLength","programOverlapsSerialized","showAreas","isFuture","renderPrograms","_data$fixedVisibility","fixedVisibility","renderTopbar","timeProps","Line","Areas","Channels","ProgramStyled","_useProgram","handleOnContentClick","tillTime","tempTime","src","alt","ChannelsStyled","renderChannels","channelWithPosition","groupEventProps","onOpenGroupTree","Channel","ChannelStyled","logo","_onOpenGroupTree","CurrentTimeStyled","CurrentTime","_useLine","_useCurrentTime","TimelineStyled","_useTimeline","renderDay","_getTime","renderDividers","renderWeekMonth","isModernStyle","renderTimelineItems","LineStyled","LoaderStyled","Element","display","justifyContent","marginBottom","getAreasFields","area","areaStartDate","areaEndDate","_area$endDate","intervalOptions","isStartAreaDateValid","showArea","areaFieldStyles","areaBgStyles","useAreas","areasSerialized","AreaStyled","_useAreas","renderAreaAnnotation","renderArea","annotations","_props$areaBgStyles","annotationProps","_annotations$styles","textStart","textEnd","Fragment","Epg","children","customGlobalStyles","_ref$isSidebar","_ref$isTimeline","_ref$isLoading","isLoading","LoaderComponent","renderLoader","epgGlobalStyles","blankSpaceStyles","ThemeProvider","Global","WrapperDnD","gridElement","querySelector","onDragOver","onDragLeaveCapture","ChannelBox","TimelineDividerStyled"],"mappings":"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"} \ No newline at end of file diff --git a/dist/planby-pro.cjs.production.min.js b/dist/planby-pro.cjs.production.min.js new file mode 100644 index 0000000..b869c4d --- /dev/null +++ b/dist/planby-pro.cjs.production.min.js @@ -0,0 +1,2 @@ +"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n=require("@emotion/react"),i=e(require("@emotion/styled/base")),r=require("react"),o=e(r),a=require("date-fns"),s=require("date-fns-tz"),l=require("use-debounce");function u(){u=function(){return t};var e,t={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function d(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(e){d=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var o=Object.create((t&&t.prototype instanceof v?t:v).prototype),a=new E(i||[]);return r(o,"_invoke",{value:H(e,n,a)}),o}function h(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=c;var f="suspendedStart",p="executing",m="completed",g={};function v(){}function y(){}function b(){}var x={};d(x,a,(function(){return this}));var w=Object.getPrototypeOf,D=w&&w(w(I([])));D&&D!==n&&i.call(D,a)&&(x=D);var M=b.prototype=v.prototype=Object.create(x);function T(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function W(e,t){function n(r,o,a,s){var l=h(e[r],e,o);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==typeof d&&i.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,s)}))}s(l.arg)}var o;r(this,"_invoke",{value:function(e,i){function r(){return new t((function(t,r){n(e,i,t,r)}))}return o=o?o.then(r,r):r()}})}function H(t,n,i){var r=f;return function(o,a){if(r===p)throw Error("Generator is already running");if(r===m){if("throw"===o)throw a;return{value:e,done:!0}}for(i.method=o,i.arg=a;;){var s=i.delegate;if(s){var l=L(s,i);if(l){if(l===g)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===f)throw r=m,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var u=h(t,n,i);if("normal"===u.type){if(r=i.done?m:"suspendedYield",u.arg===g)continue;return{value:u.arg,done:i.done}}"throw"===u.type&&(r=m,i.method="throw",i.arg=u.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),g;var o=h(r,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,g;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function I(t){if(t||""===t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var l=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(l&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;k(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:I(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),g}},t}function d(e,t,n,i,r,o,a){try{var s=e[o](a),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(i,r)}function c(e){return function(){var t=this,n=arguments;return new Promise((function(i,r){var o=e.apply(t,n);function a(e){d(o,i,r,a,s,"next",e)}function s(e){d(o,i,r,a,s,"throw",e)}a(void 0)}))}}function h(){return(h=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(r[n]=e[n]);return r}function p(e,t){return t||(t=e.slice(0)),e.raw=t,e}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var v,y=n.css(t||(t=p(['\n @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap");\n\n .planby {\n font-family: "Inter", system-ui, -apple-system,\n /* Firefox supports this but not yet system-ui */ "Segoe UI", Roboto,\n Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; /* 2 */\n }\n'])));!function(e){e[e.Sidebar=9]="Sidebar",e[e.EpgCornerBox=10]="EpgCornerBox",e[e.Line=9]="Line",e[e.Loader=12]="Loader",e[e.Program=1]="Program",e[e.Timeline=9]="Timeline",e[e.Area=2]="Area"}(v||(v={}));var b=["isVerticalMode","program","overlap"],x=function(e){return new Array(e).fill("")},w=function(){return"undefined"!=typeof window?r.useLayoutEffect:r.useEffect},D=function(e){return new Date(e)},M=function(e){return Math.abs(e)},T=function(e){var t=e.replace(/T.*/,"");return s.toDate(t)},W=function(e){return h({},e,{top:e.left,left:e.top,width:e.height,height:e.width})},H={},L=function(e){return H[e.data.channelUuid]||(H[e.data.channelUuid]={}),H},O=function(e){return H=e},k={},E=function(e){var t=e.uuid,n=e.first,i=e.last;k[t]={first:void 0===n?0:n,last:void 0===i?0:i,uuid:t}},I=function(e){return k[e]},C={},S=function(){return C},R={enabled:!1,zone:"",mode:""},V=function(){return R},z=function(e){var t=V(),n=new Date(e);return t.enabled&&"utc"===t.mode?s.utcToZonedTime(n,t.zone).getTime():n.getTime()},P=function(e){var t=V(),n=e?new Date(e):new Date;return t.enabled&&"utc"===t.mode?s.utcToZonedTime(n,t.zone):n},N=function(e,t){void 0===t&&(t="yyyy-MM-dd HH:mm:ss");var n=V();if(n.enabled&&"utc"===n.mode){var i=s.utcToZonedTime(e,n.zone);return s.format(i,t,{timeZone:n.zone})}return a.format(e,t)},U=function(e){var t=V();return t.enabled&&"utc"===t.mode?s.zonedTimeToUtc(e,t.zone):e},j=function(e,t){return e*t/60},X=function(e,t,n,i,r){var o=a.getTime(D(t))>a.getTime(D(i)),s=a.getTime(D(e))=i&&r>n},F=function(e){return a.format(new Date(e),"yyyy-MM-dd HH:mm:ss").replace(/\s/g,"T")},G=function(e){return N(new Date(e),"yyyy-MM-dd HH:mm:ss").replace(/\s/g,"T")},A=function(e){return a.roundToNearestMinutes(new Date(e))},_=function(e){return e.filter((function(e){return a.isWithinInterval(new Date,{start:new Date(e.startTimeHour),end:new Date(e.endTimeHour)})})).length>0},J=function(e){var t=e.hourWidth,n=e.sidebarWidth,i=e.cb,r=e.hoursInDays.filter((function(e){return a.isWithinInterval(new Date,{start:new Date(e.startTimeHour),end:new Date(e.endTimeHour)})}));if(0===r.length)return null==i||i(!1),0;var o=r[0];return X(a.startOfDay(new Date(o.startTimeHour)),new Date,o.startTimeHour,o.endTimeHour,t)+n+o.prevItemDiffInHours*t},q=["hoursInDays"],Z=function(e,t,n){return Array.from({length:24},(function(i,r){if(0===r){var o=e?"MM/dd":"dd.MM",s=a.parse(n[t],"yyyy-MM-dd",new Date);return 0===t?r:a.format(s,o)}return r}))},K=function(e,t){var n=t.hoursInDays,i=f(t,q);return"week"===e?ee(i):"month"===e?te(i):n.length>0?$(t):Q(i)},$=function(e){var t=e.isBaseTimeFormat,n=e.days,i=e.hoursInDays;return x(e.numberOfDays).reduce((function(e,r,o){var a=Z(t,o,n),s=i[o],l=a.slice(s.startTime,s.endTime);return o>0&&(l[0]=a[0]),[].concat(e,l)}),[])},Q=function(e){var t=e.isBaseTimeFormat,n=e.days,i=e.numberOfHoursInDay,r=e.offsetStartHoursRange;return x(e.numberOfDays).reduce((function(e,i,o){var a=Z(t,o,n);return[].concat(e,0===o?a.slice(r):a)}),[]).slice(0,i)},ee=function(e){var t=e.days;return x(e.numberOfDays).map((function(e,n){var i=a.parse(t[n],"yyyy-MM-dd",new Date);return a.format(i,"yyyy-MM-dd")}))},te=function(e){var t=e.months;return x(e.numberOfMonths).map((function(e,n){var i=a.parse(t[n],"yyyy-MM-dd",new Date);return a.format(i,"yyyy-MM-dd")}))},ne=function(e){var t=e.weekDayWidth;return e.months.reduce((function(e,n,i){var r=a.getDaysInMonth(s.toDate(n))*t;if(0===i)return e.data.push({width:r,left:0}),e.offsetLeft=0,e;var o=e.offsetLeft+e.data[i-1].width;return e.data.push({width:r,left:o}),e.offsetLeft=o,e}),{data:[],offsetLeft:0}).data};function ie(e,t){for(var n,i=new Date(e.data.since),r=new Date(e.data.till),o=0,a=g(t);!(n=a()).done;){var s=n.value;if(e.data.id!==s.data.id){var l=new Date(s.data.since),u=new Date(s.data.till);(i<=u&&r>=l||l<=r&&u>=i)&&o++}}return o}var re=function(e,t,n){var i=h({},e),r=i.data,o=i.position,a=r.channelPosition,s=r.overlapTimes,l=o.height,u=h({},e,{position:{width:o.width,height:l,top:a.top+(null!=s?s:t.length+1)*l,left:o.left}}),d=function(e,t,n){for(var i=new Date(e.data.since),r=new Date(e.data.till),o=n,a=0;a0?e.data.channelPosition.top:0)+e.position.height*a,u=!1,d=!1,c=g(t);!(s=c()).done;){var h=s.value;if(e.data.id!==h.data.id&&l===h.position.top){var f=new Date(h.data.since),p=new Date(h.data.till);if(if||fi){(i<=p&&r>=f||f<=r&&p>=i)&&(d=!0),u=!0;break}}}if(!u)return d?a+4:a}return o}(u,t,n);return u.position=h({},u.position,{top:a.top+u.position.height*d}),[u,d+1]},oe=function(e,t,n){return t>n[e.data.channelUuid]?t:n[e.data.channelUuid]};function ae(e,t,n){for(var i,r=h({},t),o={},a=g(n);!(i=a()).done;)r[i.value.data.channelUuid]=[];for(var s=function(){var t,i=h({},n[l]),a=new Date(i.data.since),s=new Date(i.data.till);if(null!=i&&null!=(t=i.data)&&t.parentChannelUuid){var u,d=S()[null==i||null==(u=i.data)?void 0:u.parentChannelUuid];if(null==d||!d.isOpen)return 1}e&&(i.position=W(i.position));for(var c=function(){var t=h({},n[f]);if(i.data.channelUuid!==t.data.channelUuid)return 1;e&&(t.position=W(t.position));var l=new Date(t.data.since),u=new Date(t.data.till);if(al||la){if(r[i.data.channelUuid]&&r[t.data.channelUuid]&&i.data.channelUuid===t.data.channelUuid){t.data.overlapLinkedId=i.data.overlapLinkedId;var d=r[i.data.channelUuid],c=d.some((function(e){return e.data.id===i.data.id})),p=d.some((function(e){return e.data.id===t.data.id})),m=r[i.data.channelUuid].length;if(p||0!==m)if(!p&&m>1){var g=0;if(!c){g=ie(t,d),t.data.overlapTimes=g;var v=re(i,d,o[i.data.channelUuid]),y=v[1];d.push(v[0]),o[i.data.channelUuid]=oe(i,y,o)}g=ie(t,d),t.data.overlapTimes=g;var b=re(t,d,o[i.data.channelUuid]),x=b[1];d.push(b[0]),o[i.data.channelUuid]=oe(i,x,o)}else if(p&&m>1){var w=ie(t,d);t.data.overlapTimes=w;var D=re(t,d,o[i.data.channelUuid]);o[i.data.channelUuid]=oe(i,D[1],o)}else m>1&&d.push(t);else t.position.top=i.data.channelPosition.top+i.position.height,r[i.data.channelUuid]=[i,t],o[i.data.channelUuid]=o[i.data.channelUuid]?o[i.data.channelUuid]:2}}else r[i.data.channelUuid]&&0===r[i.data.channelUuid].length&&(o[i.data.channelUuid]=0,r[i.data.channelUuid]=[])},f=l+1;f div { transform: scale(-1,1) }",t&&n.css(le||(le=p(["\n top: 0;\n left: ","px;\n height: ","px;\n width: ","px;\n "])),i?a:0,o,s),!t&&n.css(ue||(ue=p(["\n left: 0;\n bottom: ","px;\n float: left;\n width: ","px;\n "])),l,o))})," z-index:",v.Sidebar,";"),Ze=i("div",{target:"eqmxcnp1"})((function(e){var t=e.isVerticalMode,i=e.top,r=e.height,o=e.groupTree,a=e.theme;return n.css(de||(de=p(["\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ",";\n cursor: ",";\n\n ","\n ",";\n "])),a.primary[900],o?"pointer":"default",t&&n.css(ce||(ce=p(["\n top: 0;\n left: ","px;\n width: ","px;\n height: 100%;\n "])),i,r),!t&&n.css(he||(he=p(["\n top: ","px;\n height: ","px;\n width: 100%;\n "])),i,r))}),";"),Ke=i("img",{target:"eqmxcnp0"})({name:"vfop22",styles:"max-height:60px;max-width:60px;position:relative"}),$e=i("div",{target:"e1cx08bt7"})("border:1px solid #171923;position:relative;display:flex;font-size:11px;height:100%;border-radius:8px;padding:10px ",(function(e){return e.width<30?4:20}),"px;overflow:hidden;cursor:pointer;transition:all 0.4s ease-in-out;background:",(function(e){var t=e.theme.primary;return"linear-gradient(to right, "+t[600]+", "+t[600]+")"}),";z-index:",v.Program,";&:hover{background:",(function(e){var t=e.theme.gradient;return"linear-gradient(to right, "+t.blue[900]+", "+t.blue[600]+")"}),";}",(function(e){var t=e.theme.gradient;return e.isLive&&"background: linear-gradient(to "+(e.isVerticalMode?"bottom":"right")+", "+t.blue[900]+", "+t.blue[600]+","+t.blue[300]+")"}),";"),Qe=i("div",{target:"e1cx08bt6"})("width:100%;display:flex;justify-content:flex-start;",(function(e){return e.isVerticalMode&&"flex-direction: column;"}),";"),et="\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n",tt=i("p",{target:"e1cx08bt5"})("font-size:14px;text-align:left;margin-top:0;margin-bottom:5px;font-weight:500;color:",(function(e){return e.theme.grey[300]}),";",et,";"),nt=i("span",{target:"e1cx08bt4"})("display:block;font-size:12.5px;font-weight:400;color:",(function(e){return e.theme.text.grey[500]}),";text-align:left;",et,";"),it=i("img",{target:"e1cx08bt3"})("margin-right:15px;border-radius:6px;width:100px;",(function(e){return e.isVerticalMode&&"width: 100%; margin-bottom: 10px"}),";"),rt=i("div",{target:"e1cx08bt2"})("overflow:hidden;",(function(e){return e.isRTL&&"transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end"}),";"),ot=i("div",{target:"e1cx08bt1"})("position:absolute;padding:",(function(e){return 0===e.width?0:4}),"px;z-index:",(function(e){return e.isDragging||e.isResizing?3*v.Program:v.Program}),";overflow:hidden;",(function(e){return(!e.isDragging||!e.isResizing)&&" &:hover {\n z-index: "+2*v.Program+";\n\n "+at+" {\n opacity: 1;\n }\n }"})," ",(function(e){return(e.isDragging||e.isResizing)&&" \n border-radius: 10px;\n background: "+e.theme.green[200]+";\n \n "+$e+"{\n user-select: none;\n cursor: move;\n }\n "}),";"),at=i("div",{target:"e1cx08bt0"})("position:absolute;opacity:0;",(function(e){return!e.isResize&&"display: none;"})," ",(function(e){var t=e.left;return e.isVerticalMode&&"\n "+(t?"top: 0;":"bottom: 0;")+"\n left:0;\n height:25px;\n width: 100%;\n cursor: "+(t?"n-resize":"s-resize")+";\n "})," ",(function(e){var t=e.left;return!e.isVerticalMode&&"\n top: 0;\n bottom: 0;\n "+(t?"left: 0;":"right: 0;")+"\n width: 25px;\n cursor: "+(t?"w-resize":"e-resize")+";\n "}),' &:after{content:"";position:absolute;margin:auto;border-radius:8px;background:',(function(e){return e.theme.green[200]}),";",(function(e){return!e.isVerticalMode&&" top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n "+(e.left?"left: 9px;":"right: 9px;")+"\n "})," ",(function(e){return e.isVerticalMode&&"\n "+(e.left?"top: 9px;":"bottom: 9px;")+"\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n "}),";}"),st=i("span",{target:"e1bnz7pf6"})("position:absolute;top:13px;left:",(function(e){var t=e.isRTL,n=e.isBaseTimeFormat;return e.isVerticalMode?t?n?9:17:n?9:14:e.isWeekMonthMode?0:t&&n?"-32":"-18"}),"px;color:",(function(e){return e.theme.text.grey[300]}),";",(function(e){return e.isRTL&&"\n transform: scale(-1, 1);\n "})," ",(function(e){return e.isNewDay&&"color: "+e.theme.teal[100]+"; font-weight: 600"}),";",(function(e){var t=e.isRTL;return e.isVerticalMode&&n.css(fe||(fe=p(["\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ",";\n "])),t?"scale(-1,1)":"")}),";"),lt=i("div",{target:"e1bnz7pf5"})("display:flex;justify-content:center;align-items:center;flex-direction:column;height:100%;transform:",(function(e){return e.isRTL?"scale(-1,1)":"scale(1,1)"}),";span{color:",(function(e){return e.theme.text.grey[300]}),";font-size:16px;}",(function(e){var t=e.theme;return"modern"===e.styleType&&n.css(pe||(pe=p(["\n span:first-of-type {\n font-weight: 500;\n color: ",";\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ",";\n font-size: 24px;\n }\n "])),t.teal[100],t.text.grey[300])})," ",(function(e){var t=e.isRTL;return e.isVerticalMode&&n.css(me||(me=p(["\n margin-top: 0px;\n transform: ",";\n "])),t?"scale(-1,1)":"scale(1,1)")}),";"),ut=i("div",{target:"e1bnz7pf4"})("position:relative;height:100%;width:100%;padding-bottom:6px;",(function(e){return e.isVerticalMode&&n.css(ge||(ge=p(["\n grid-template-columns: 1fr;\n align-items: start;\n "])))}),";"),dt=i("div",{target:"e1bnz7pf3"})("position:absolute;bottom:6px;background:",(function(e){return e.theme.timeline.divider.bg}),";height:10px;width:1px;left:",(function(e){return e.left}),"px;",(function(e){var t=e.left;return e.isVerticalMode&&n.css(ve||(ve=p(["\n top: ","px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n "])),t)})," ",(function(e){return e.isNewDay&&"&:first-of-type {\n width:2px;\n background: "+e.theme.teal[100]+";\n }"}),";"),ct=i("div",{target:"e1bnz7pf2"})((function(e){var t=e.isVerticalMode,i=e.isSidebar,r=e.sidebarWidth,o=e.timelineHeight,a=e.dayWidth,s=e.theme;return n.css(ye||(ye=p(["\n position: sticky;\n background: ",";\n z-index: ",";\n\n ","\n\n ","\n "])),s.primary[900],v.Timeline,t&&n.css(be||(be=p(["\n left: 0;\n bottom: 0px;\n float: left;\n width: ","px;\n margin-top: ","px;\n "])),o,i?r:0),!t&&n.css(xe||(xe=p(["\n top: 0;\n left: ","px;\n height: ","px;\n width: ","px;\n "])),i?r:0,o,a))}),";"),ht=i("div",{target:"e1bnz7pf1"})((function(e){var t=e.isVerticalMode,i=e.left,r=e.width,o=e.timelineHeight,a=e.theme;return n.css(we||(we=p(["\n position: absolute;\n font-size: 14px;\n background-color: ",";\n\n ","\n ","\n "])),a.primary[900],!t&&n.css(De||(De=p(["\n left: ","px;\n width: ","px;\n height: 100%;\n "])),i,r),t&&n.css(Me||(Me=p(["\n top: ","px;\n height: ","px;\n width: ","px;\n "])),i,r,o))})," ",(function(e){var t=e.isCurrentTime,n=e.areHoursInDays;return e.isWeekMonthMode?"":"&:nth-of-type("+(n?n&&e.isTodayInHoursInDays&&t?2:1:e.isToday&&t?2:1)+") {\n "+st+" {\n "+(e.isVerticalMode?"top":"left")+": 0px;\n }\n }"}),";"),ft=i(ht,{target:"e1bnz7pf0"})((function(e){var t=e.isVerticalMode,i=e.styleType,r=e.theme;return n.css(Te||(Te=p(['\n &:not(:last-of-type) {\n &:after {\n content: "";\n position: absolute;\n background: ',";\n transform: translate(-50%, -50%);\n\n ","\n }\n }\n "])),r.timeline.divider.bg,t?n.css(We||(We=p(["\n bottom: 0;\n height: 1px;\n width: 80%;\n "]))):n.css(He||(He=p(["\n top: 50%;\n right: 0;\n height: 100%;\n height: ",";\n width: 1px;\n "])),"modern"===i?"35%":"70%"))}),";"),pt={position:"absolute",top:64,width:3},mt=i("div",{target:"ef4is9g0"})("position:",pt.position,";top:",(function(e){return e.isTimeline?pt.top:0}),"px;left:",(function(e){return e.left}),"px;height:",(function(e){return e.height}),"px;width:",pt.width,"px;background:",(function(e){return e.theme.green[300]}),";pointer-events:none;z-index:",(function(e){return e.zIndex}),";",(function(e){return e.isVerticalMode&&" \n top: "+e.left+"px;\n left: "+(e.isTimeline?pt.top:0)+"px;\n height: "+pt.width+"px;\n width: "+e.height+"px;\n "}),";"),gt=[0,50,0],vt=i("div",{target:"e8ysujy1"})("position:absolute;top:0;left:0;bottom:0;width:100%;background:",(function(e){return e.theme.loader.bg}),";display:flex;justify-content:center;align-items:center;z-index:",v.Loader,";"),yt=i("div",{target:"e8ysujy0"})("width:",(function(e){return.42*e.width}),"px;background:",(function(e){return e.theme.loader[e.color]}),";height:18px;border-radius:45px;margin-right:",(function(e){var t=e.marginRight;return null!=t?t:0}),"px;animation-name:",(function(e){return t=e.animate,n.keyframes(Le||(Le=p(["\n","\n"])),gt.map((function(e,n){return e+"% {\n transform: translateX(-"+t.right[n]+");\n}"})));var t}),";animation-duration:",(function(e){return e.transition.duration}),"s;animation-timing-function:",(function(e){var t;return null!=(t=e.transition.ease)?t:"ease-in-out"}),";animation-delay:",(function(e){var t;return null!=(t=e.transition.delay)?t:0}),"s;animation-iteration-count:infinite;"),bt=function(e){var t=(void 0===e?{}:e).width;return{position:"absolute",top:0,width:null!=t?t:70,height:20}},xt=i("div",{target:"e1b7bm21"})("position:",bt().position,";top:",(function(e){return e.top}),"px;left:",(function(e){return e.left}),"px;width:",(function(e){var t=e.width;return"string"==typeof t?"auto":t+"px"}),";height:",bt().height,"px;background-color:",(function(e){return e.theme.primary[900]}),";z-index:2;"),wt=i("span",{target:"e1b7bm20"})((function(e){var t=e.isVerticalMode,i=e.isBaseTimeFormat,r=e.isRTL,o=e.isNewDay,a=e.theme;return n.css(Oe||(Oe=p(["\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ",";\n background-color: ",";\n ",";\n\n ","\n\n ","\n "])),a.green[200],a.primary[900],o&&"color: "+a.teal[100]+"; font-weight: 600",t&&n.css(ke||(ke=p(["\n left: 50%;\n transform: translate(-50%, -50%) ",";\n "])),r?"scale(-1,1)":""),!t&&n.css(Ee||(Ee=p(["\n top: 4px;\n left: ","px;\n ","\n "])),r&&i?"-32":"-16",r&&"transform: scale(-1,1);"))}),";"),Dt=i("div",{target:"euzzuzq2"})("position:absolute;pointer-events:",(function(e){return e.isClickable?"auto":"none"}),";cursor:",(function(e){return e.isClickable?"pointer":"none"}),";z-index:",v.Area,";",(function(e){var t=e.positionX,i=e.height,r=e.width,o=e.timelineHeight;return e.isVerticalMode?n.css(Ie||(Ie=p(["\n top: ","px;\n left: ","px;\n height: ","px;\n width: ","px;\n "])),t,o,r,i):n.css(Ce||(Ce=p(["\n top: ","px;\n left: ","px;\n height: ","px;\n width: ","px;\n "])),o,t,i,r)}),";"),Mt=i("div",{target:"euzzuzq1"})({name:"1b4920d",styles:"position:absolute;top:0;left:0;width:100%;height:100%"}),Tt=i("div",{target:"euzzuzq0"})("padding:4px 6px;font-size:15px;width:max-content;",(function(e){var t=e.isVerticalMode,i=e.isLeft,r=void 0!==i&&i,o=e.width,a=e.timelineHeight;return n.css(Se||(Se=p(["\n ","\n "])),t?n.css(Ve||(Ve=p(["\n position: sticky;\n left: ","px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ","\n "])),a,r&&n.css(ze||(ze=p([""])))?"top: 0; ":"margin-top:"+(o-60)+"px;"):n.css(Re||(Re=p(["\n position: sticky;\n top: ","px;\n ","\n "])),a,r?"float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;":"float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;"))}),";"),Wt=i("div",{target:"eopf81a3"})({name:"1jykxby",styles:"position:absolute;top:0;left:0;height:100%;width:100%;z-index:1"}),Ht=i("div",{target:"eopf81a1"})("position:absolute;top:",(function(e){return e.top}),"px;left:",(function(e){return e.left}),"px;height:",(function(e){return e.height}),"px;width:",(function(e){return e.width}),"px;border:1px solid transparent;border-right-color:",(function(e){return e.theme.grid.item}),";border-bottom-color:",(function(e){return e.theme.grid.item}),";z-index:1;",(function(e){var t=e.theme;return!e.isDayMode&&e.isHoverHighlight&&"\n &:hover {\n border: 1px solid "+t.grid.highlight+";\n } \n\n "+(e.isDragOver&&"border: 1px solid "+t.grid.highlight+";")+"\n "})," ",(function(e){return e.isItemClickable&&n.css(Pe||(Pe=p(["\n cursor: pointer;\n "])))}),";"),Lt=i("div",{target:"eopf81a0"})("position:absolute;top:0;left:",(function(e){return e.left}),"px;border:1px solid transparent;border-right-color:",(function(e){return e.theme.grid.divider}),";height:100%;width:",(function(e){return e.width}),"px;",(function(e){return e.isHoverHighlight&&"\n &:hover {\n border: 1px solid "+e.theme.grid.highlight+";\n } \n\n\n "})," ",(function(e){return e.isDragOver&&"\n border: 1px solid "+e.theme.grid.highlight+"; \n\n "})," ",(function(e){var t=e.left,i=e.width,r=e.theme;return e.isVerticalMode&&n.css(Ne||(Ne=p(["\n top: ","px;\n left: 0;\n width: 100%;\n height: ","px;\n border-bottom-color: ",";\n "])),t,i,r.grid.divider)})," ",(function(e){return e.isItemClickable&&n.css(Ue||(Ue=p(["\n cursor: pointer;\n "])))}),";"),Ot={primary:{600:"#1a202c",900:"#171923"},grey:{300:"#d1d1d1"},white:"#fff",teal:{100:"#38B2AC"},green:{200:"#389493",300:"#2C7A7B"},loader:{teal:"#5DDADB",purple:"#3437A2",pink:"#F78EB6",bg:"#171923db"},scrollbar:{border:"#ffffff",thumb:{bg:"#e1e1e1"}},gradient:{blue:{300:"#002eb3",600:"#002360",900:"#051937"}},text:{grey:{300:"#a0aec0",500:"#718096"}},timeline:{divider:{bg:"#718096"}},grid:{item:"#7180961a",divider:"#7180961a",highlight:"#38B2AC"}},kt=["isToday","currentDate"],Et=["hourWidth","dayWidth"],It=["isLayoutBottom","isLayoutRight","containerRef","scrollBoxRef"],Ct=F(a.startOfToday()),St={type:"day",style:"default"},Rt={enabled:!1,zone:"",mode:"formatInTimeZone"},Vt={enabled:!1,mode:"stack",layerOverlapLevel:.4},zt={enabled:!1,hoverHighlight:!1},Pt={enabled:!1,mode:"row"};function Nt(e,t){var n=w(),i=o.useRef(e);n((function(){i.current=e}),[e]),o.useEffect((function(){if(t||0===t){var e=setInterval((function(){return i.current()}),t);return function(){return clearInterval(e)}}}),[t])}function Ut(){var e=o.useState(!1),t=e[0],n=e[1];return o.useEffect((function(){function e(){var e=/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,t=/Android|webOS/.test(navigator.userAgent),i=e||t,r="ontouchstart"in window||navigator.maxTouchPoints>0||window.matchMedia&&window.matchMedia("(any-pointer: coarse)").matches;n(i||r)}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),t}function jt(e){var t=e.isVerticalMode,n=void 0!==t&&t,i=e.isRTL,s=void 0!==i&&i,l=e.isResize,d=void 0!==l&&l,f=e.isBaseTimeFormat,p=e.startDate,m=e.contentHeight,g=e.dayWidth,v=e.itemHeight,y=e.hourWidth,b=e.minWidth,x=void 0===b?200:b,w=e.program,D=e.liveRefreshTime,M=e.mode,T=e.snap,W=e.dnd,H=e.dragMouseUp,L=e.resizeMouseUp,O=r.useRef(null),k=w.data,E=w.position,I=E.width,C=E.height,S=k.since,R=k.till,V=o.useState((function(){return Y(S,R)})),z=V[0],P=V[1],N={isVerticalMode:n,initialPosition:E,data:k,dayWidth:g,contentHeight:m,elementRef:O},U=function(e){var t=e.isResize,n=e.isVerticalMode,i=e.data,o=e.dayWidth,a=e.contentHeight,s=e.initialPosition,l=e.snapX,u=e.elementRef,d=e.mouseUpCb,c=r.useRef(!1),f=r.useRef(!1),p=Ut(),m=r.useState(!1),g=m[0],v=m[1],y=r.useState(!1),b=y[0],x=y[1],w=r.useState(!1),D=w[0],M=w[1],T=r.useState(!1),W=T[0],H=T[1],L=r.useState(0),O=L[0],k=L[1],E=r.useState({x:s.left,y:s.top,width:n?s.height:s.width}),I=E[0],C=E[1],S=r.useState({startY:s.top,lastY:s.top,startX:s.left,lastX:s.left}),R=S[0],V=S[1],z=i.id,P=i.index,N=i.since,U=i.till,j=r.useMemo((function(){return n?s.height:s.width}),[n,s.height,s.width]),X=r.useCallback((function(e){return void 0===e&&(e=!1),function(t){if(t.stopPropagation(),c.current=!0,p&&v(!0),x(!0),u.current){var i=p?t.touches[0]:t;k(n?i.pageY:i.pageX),R.startY=i.clientY,R.startX=i.clientX,e?(M(!0),H(!1)):(M(!1),H(!0))}}}),[p,n,R,u]),B=r.useCallback((function(e){f.current&&(e.stopPropagation(),e.preventDefault())}),[]),Y=r.useCallback((function(){var e,t,i,r,o,a;n?(R.lastY=null==(e=u.current)?void 0:e.offsetTop,R.lastX=null==(t=u.current)?void 0:t.offsetLeft,I.width=null==(i=u.current)?void 0:i.offsetHeight):(R.lastY=null==(r=u.current)?void 0:r.offsetTop,R.lastX=null==(o=u.current)?void 0:o.offsetLeft,I.width=null==(a=u.current)?void 0:a.offsetWidth);var l={id:z,index:P,since:N,till:U};n||!c.current||s.left===R.lastX&&s.width===I.width||d(h({},l,{top:R.lastY,left:R.lastX,width:I.width,initialPositionTop:s.top,initialPositionLeft:s.left,initialWidth:s.width})),n&&c.current&&(s.top!==R.lastY||s.width!==I.width)&&d(h({},l,{top:R.lastX,left:R.lastY,width:I.width,initialPositionTop:s.left,initialPositionLeft:s.top,initialWidth:s.height})),x(!1),c.current=!1,p&&v(!1),setTimeout((function(){return f.current=!1}),0)}),[p,n,z,P,N,U,j,s.left,s.width,d]),F=JSON.stringify(s);if(r.useEffect((function(){V({startY:s.top,lastY:s.top,startX:s.left,lastX:s.left}),C({x:s.left,y:s.top,width:n?s.height:s.width})}),[n,F]),r.useEffect((function(){function e(e){if(g&&e.preventDefault(),b&&c.current&&u.current){f.current=!0;var t=p?e.touches[0]:e,i=u.current,r=i.getBoundingClientRect();if(n){var a,d=null==(a=u.current)?void 0:a.offsetHeight,m=t.clientY-R.startY+R.lastY,v=l?Math.round((t.pageY-O)/l)*l:t.pageY-O,y=j-v,x=l?Math.round((t.clientY-r.top+14)/l)*l:t.clientY-r.top+14,w=R.lastY+x<=o;if(D&&m>=0&&m<=o-d&&y>=50){var M=s.top+v;i.style.height=y+"px",i.style.top=M+"px",C((function(e){return h({},e,{y:M,width:y})}))}else W&&w&&x>=50&&(i.style.height=x+"px",i.style.top=s.top+"px",C((function(e){return h({},e,{y:s.top,width:x})})))}else{var T,H=null==(T=u.current)?void 0:T.offsetWidth,L=t.clientX-R.startX+R.lastX,k=l?Math.round((t.pageX-O)/l)*l:t.pageX-O,E=j-k,I=l?Math.round((t.clientX-r.left+14)/l)*l:t.clientX-r.left+14,S=R.lastX+I<=o;if(D&&L>=0&&L<=o-H&&E>=50){var V=s.left+k;i.style.width=E+"px",i.style.left=V+"px",C((function(e){return h({},e,{x:V,width:E})}))}else W&&S&&I>=50&&(i.style.width=I+"px",C((function(e){return h({},e,{width:I})})))}}}var i=p?"touchmove":"mousemove",r=p?"touchend":"mouseup";return t&&(document.addEventListener(i,e,p?{passive:!1}:void 0),document.addEventListener(r,Y)),function(){document.removeEventListener(i,e),document.removeEventListener(r,Y)}}),[p,g,t,n,b,D,W,o,a,j,s.top,s.left,R,l,O,u,Y]),t){var G=function(e){return p?{onTouchStart:X(e),onTouchEnd:Y}:{onMouseDown:X(e),onMouseUp:Y}};return{width:I.width,initialWidth:n?s.height:s.width,currentPositionX:n?I.y:I.x,resizeEvents:{isResizing:b,resources:{ref:u,isResizing:b},eventsLeft:h({isResize:t,isVerticalMode:n,left:!0,onClick:B},G(!0)),eventsRight:h({isResize:t,isVerticalMode:n,onClick:B},G())}}}return{currentPositionX:n?s.top:s.left,width:n?s.height:s.width,resizeEvents:{isResizing:!1,resources:{},eventsLeft:{},eventsRight:{}}}}(h({},N,{isResize:d,snapX:null==T?void 0:T.x,mouseUpCb:L})),j=U.currentPositionX,X=U.width,B=U.resizeEvents,F=o.useCallback((function(e,t){var n,i=je(h({},e,{hourWidth:y,startDate:p})),r=h({},i,{id:e.id,data:t});return null==(n=null==W||null==W.onDnDMouseUp?void 0:W.onDnDMouseUp(r))||n}),[]),G=function(e){var t=e.isDndEnabled,n=e.isDndMutlirows,i=e.isVerticalMode,o=e.initialPosition,a=e.data,s=e.dayWidth,l=e.itemHeight,d=e.contentHeight,f=e.dndSnapX,p=e.dndSnapY,m=void 0===p?l:p,g=e.elementRef,v=e.mouseUpCb,y=e.dndMouseUpCb,b=r.useRef(!1),x=r.useRef(!1),w=Ut(),D=r.useState(!1),M=D[0],T=D[1],W=r.useState(!1),H=W[0],L=W[1],O=r.useState({x:o.left,y:o.top}),k=O[0],E=O[1],I=r.useState({startY:o.top,lastY:o.top,startX:o.left,lastX:o.left}),C=I[0],S=I[1],R=a.id,V=a.index,z=a.since,P=a.till,N=a.channelPosition,U=r.useCallback((function(e){e.stopPropagation(),b.current=!0,w&&L(!0),T(!0);var t=w?e.touches[0]:e;C.startY=t.clientY,C.startX=t.clientX}),[w,C]),j=r.useCallback((function(e){x.current&&(e.stopPropagation(),e.preventDefault())}),[]),X=r.useCallback(c(u().mark((function e(){var t,n,r,s,l,d,c;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i?(C.lastY=null==(t=g.current)?void 0:t.offsetTop,C.lastX=null==(n=g.current)?void 0:n.offsetLeft):(C.lastY=null==(r=g.current)?void 0:r.offsetTop,C.lastX=null==(s=g.current)?void 0:s.offsetLeft),l={id:R,index:V,since:z,till:P},i||!b.current||o.left===C.lastX&&o.top===C.lastY){e.next=8;break}return d=h({},l,{top:C.lastY,left:C.lastX,initialPositionLeft:o.left,initialPositionTop:o.top}),e.next=6,null==y?void 0:y(d,a);case 6:e.sent?v(d):(g.current.style.left=o.left+"px",g.current.style.top=o.top+"px",E((function(e){return h({},e,{x:o.left,y:o.top})})));case 8:if(!i||!b.current||o.left===C.lastX&&o.top===C.lastY){e.next=14;break}return c=h({},l,{top:C.lastX,left:C.lastY,initialPositionLeft:o.top,initialPositionTop:o.left}),e.next=12,null==y?void 0:y(c,a);case 12:e.sent?v(c):(g.current.style.left=o.left+"px",g.current.style.top=o.top+"px",E((function(e){return h({},e,{x:o.left,y:o.top})})));case 14:b.current=!1,T(!1),w&&L(!1),setTimeout((function(){return x.current=!1}),0);case 18:case"end":return e.stop()}}),e)}))),[i,o.top,o.left,C,R,V,z,P,v]),B=JSON.stringify(o);return r.useEffect((function(){S({startY:o.top,lastY:o.top,startX:o.left,lastX:o.left}),E({x:o.left,y:o.top})}),[i,B]),r.useEffect((function(){function e(e){var r,a,l,u;if(H&&e.preventDefault(),t&&b.current&&g.current){x.current=!0;var c=w?e.touches[0]:e,p=i?null==(r=g.current)?void 0:r.offsetHeight:null==(a=g.current)?void 0:a.offsetWidth,v=i?null==(l=g.current)?void 0:l.offsetWidth:null==(u=g.current)?void 0:u.offsetHeight,y=N;if(i){var D=c.clientY-C.startY+C.lastY,M=f?Math.round(D/f)*f:D;if(n){var T=Math.round((c.clientX-C.startX+C.lastX)/m)*m;T>=0&&T<=d-v&&M>=0&&M<=s-p&&(T>y.top+y.height-1||T=0&&M<=s-p&&(g.current.style.top=M+"px",E((function(e){return h({},e,{y:M})})))}else{var W=c.clientX-C.startX+C.lastX,L=f?Math.round(W/f)*f:W;if(n){var O=Math.round((c.clientY-C.startY+C.lastY)/m)*m;O>=0&&O<=d-v&&L>=0&&L<=s-p&&(O>y.top+y.height-1||O=0&&L<=s-p&&(g.current.style.left=L+"px",E((function(e){return h({},e,{x:L})})))}}}var r=w?"touchmove":"mousemove",a=w?"touchend":"mouseup";return t&&(document.addEventListener(r,e,w?{passive:!1}:void 0),document.addEventListener(a,X)),function(){document.removeEventListener(r,e),document.removeEventListener(a,X)}}),[w,H,t,i,M,n,o.top,o.left,N,f,m,C,s,l,d,g,X]),t?{dndEvents:h({isDragging:M,ref:g,onClick:j},w?{onTouchStart:U,onTouchEnd:X}:{onMouseDown:U,onMouseUp:X}),currentPositionX:i?k.y:k.x}:{currentPositionX:o.left,dndEvents:{isDragging:!1}}}(h({},N,{isDndEnabled:!!W.enabled&&!B.resources.isResizing,isDndMutlirows:"multi-rows"===W.mode,dndSnapX:null==T?void 0:T.x,dndSnapY:null==T?void 0:T.y,itemHeight:v,dndMouseUpCb:F,mouseUpCb:H})),A=G.currentPositionX,_=G.dndEvents,J=h({},function(e){for(var t=h({},e),n=arguments.length,i=new Array(n>1?n-1:0),r=1;rx:I>x,ee=r.useCallback((function(){return h({},B.resources,_)}),[_,B.resources]);return{isMouseEvent:_.isDragging||B.resources.isResizing||!1,isLive:z,isMinWidth:Q,isRTL:s,resizeEvents:B,formatTime:Z,set12HoursTimeFormat:K,getMouseEvents:ee,getMouseEventTempTime:function(){var e={id:k.id,index:k.index,since:k.since,till:k.till,top:0,left:B.isResizing?j:A,initialPositionTop:E.top,initialPositionLeft:E.left,initialWidth:I,width:X,hourWidth:y};n&&(e.initialPositionLeft=E.top,e.initialPositionTop=E.left,e.initialWidth=C);var t=je(e),i=t.till,r=function(e){return Z($(e),K()).toLowerCase()};return{since:r(t.since),till:r(i)}},getRTLSinceTime:$,getRTLTillTime:function(e){return s?S:e},styles:q}}function Xt(e){var t=e.isBaseTimeFormat,n=e.isRTL,i=e.isSidebar,o=e.isVerticalMode,l=e.timezone,u=e.dayWidth,d=e.hourWidth,c=e.sidebarWidth,h=e.timelineHeight,f=e.mode,p=e.startDate,m=e.endDate,g=e.hoursInDays,v=e.days,y=e.liveRefreshTime,b=e.months,w=e.numberOfDays,D=e.numberOfHoursInDay,M=e.numberOfMonths,T=e.offsetStartHoursRange,W=e.timelineDividers,H=e.renderCurrentTime,L=r.useMemo((function(){return K(f.type,{isBaseTimeFormat:t,days:v,hoursInDays:g,months:b,numberOfDays:w,numberOfHoursInDay:D,numberOfMonths:M,offsetStartHoursRange:T})}),[f.type,t,v,g,b,w,D,M,T]),O="month"===f.type,k="week"===f.type||O,E=_(g),I=g.length>0,C=24*d,S=r.useMemo((function(){return ne({months:b,weekDayWidth:C})}),[b,C]),R=x(W);return{isWeekMonthMode:k,isMonthMode:O,isTodayInHoursInDays:E,areHoursInDays:I,time:L,weekDayWidth:C,monthsWidth:S,timelineHeight:h,dividers:R,timelineDividers:W,formatWeekMonthDate:function(e){return function(e){var t=e.date,n=e.mode,i=e.isBaseTimeFormat;if("week"===n.type){if("modern"===n.style)return a.format(s.toDate(t),"dd");var r=i?"MM/dd":"dd.MM";return a.format(s.toDate(t),r)}return a.format(s.toDate(t),"LLL")}({date:e,mode:f,isBaseTimeFormat:t})},getTime:function(e){if("string"==typeof e)return{time:e,isNewDay:!0};var n=new Date,i=a.format(n,"yyyy-MM-dd"),r=e<10?"0"+e:e;if(t){var o=new Date(i+"T"+r+":00:00");return{time:a.format(o,"h:mm a").toLowerCase().replace(/\s/g,""),isNewDay:!1}}return{time:r+":00",isNewDay:!1}},getDayMonthName:function(e){var t="week"===f.type?"EEE":"yyyy";return a.format(s.toDate(e),t)},getTimelineProps:function(){return{isSidebar:i,isVerticalMode:o,dayWidth:u,sidebarWidth:c,timelineHeight:h}},getCurrentTimeProps:function(){return{isBaseTimeFormat:t,isVerticalMode:o,isRTL:n,timezone:l,mode:f,startDate:p,endDate:m,hoursInDays:g,dayWidth:u,timelineHeight:h,hourWidth:d,sidebarWidth:c,liveRefreshTime:y,renderCurrentTime:H}}}}function Bt(e){var t=e.timezone,n=e.startDate,i=e.endDate,r=e.hoursInDays,s=e.dayWidth,l=e.hourWidth,u=e.sidebarWidth,d=e.liveRefreshTime,c=o.useState(!0),h=c[0],f=c[1],p=o.useState((function(){return r.length>0?J({hoursInDays:r,hourWidth:l,sidebarWidth:u,cb:f}):X(a.startOfDay(new Date(n)),new Date,n,i,l)+u})),m=p[0],g=p[1],v=JSON.stringify(t),y=JSON.stringify(r),b=1e3*d,x=m<=s;return Nt((function(){var e=l/60/60*d;r.length>0?_(r)?(f(!0),g((function(t){return t+e}))):f(!1):g((function(t){return t+e}))}),o.useMemo((function(){return x?b:null}),[x,b])),o.useEffect((function(){if(r.length>0){var e=J({hoursInDays:r,hourWidth:l,sidebarWidth:u,cb:f});g(e)}else{var t=new Date(n),o=X(a.startOfDay(t),P(),n,i,l);g(o+u)}}),[n,i,u,l,y,v]),{showLine:h,positionX:m}}var Yt=["mode","grid","timelineHeight","sidebarWidth","hourWidth","dayWidth"];function Ft(e){var t=(void 0===e?{}:e).onItemDrop,n=o.useRef(null),i=o.useState(!1),a=i[0],s=i[1],l=r.useCallback((function(e,i){return function(r){if(r.preventDefault(),n.current){s(!1);var o=r.dataTransfer.getData("text/plain"),a=document.getElementById(o);if(a){for(var l=a.attributes,u={},d=0;d0?function(e){return e.reduce((function(e,t){return e+t.position.height}),0)}(u):xe*V}),[xe,we,V,De]),Te=v.length>0,We=B(new Date(r))>B(new Date);return o.createElement(Qt,{ref:t,id:"planby-layout-scrollbox",className:"planby-layout",isRTL:A,onScroll:de},y.enabled&&o.createElement($t,{isVerticalMode:F,isProgramVisible:ce,channelOverlapsCount:d,isBaseTimeFormat:te,hourWidth:I,dayWidth:E,days:z,hoursInDays:a,months:P,numberOfDays:U,numberOfHoursInDay:N,numberOfMonths:j,offsetStartHoursRange:X,grid:y,gridItems:x,mode:w,sidebarWidth:S,timelineHeight:R,timelineDividers:k,renderGridCell:be}),ue&&o.createElement(Je,{className:"planby-layout-bg",isSidebar:J,isVerticalMode:F,isTimeline:Z,dayWidth:E,contentHeight:Me,sidebarWidth:S,timelineHeight:R,onClick:ue}),$&&Q&&We&&o.createElement(Cn,{isVerticalMode:F,isTimeline:Z,dayWidth:E,hourWidth:I,sidebarWidth:S,startDate:i,endDate:r,height:Me,liveRefreshTime:s,hoursInDays:a,timezone:g,renderLine:ve}),Te&&o.createElement(Xn,{isVerticalMode:F,sidebarWidth:S,hourWidth:I,areas:v,startDate:i,endDate:r,height:Me,timelineHeight:R}),Z&&(n={isVerticalMode:F,isSidebar:J,isRTL:A,isTimelineVisible:fe,isToday:Q,isBaseTimeFormat:te,isCurrentTime:ie,timezone:g,startDate:i,endDate:r,dayWidth:E,sidebarWidth:S,timelineHeight:R,offsetStartHoursRange:X,monthWidth:C,numberOfHoursInDay:N,numberOfMonths:j,numberOfDays:U,hourWidth:I,days:z,months:P,hoursInDays:a,liveRefreshTime:s,mode:w,timelineDividers:k,renderCurrentTime:ye},ge?ge(n):o.createElement(On,Object.assign({},n))),J&&o.createElement(pn,{isVerticalMode:F,isRTL:A,isTimeline:Z,isChannelVisible:he,timelineHeight:R,sidebarWidth:S,contentHeight:Me,channels:u,scrollY:l,openChannelGroupTree:le,renderChannel:me}),o.createElement(en,{className:"planby-content",isVerticalMode:F,isSidebar:J,isTimeline:Z,dayWidth:E,sidebarWidth:S,timelineHeight:R,contentHeight:Me},c.map((function(e,t){return function(e,t){var n,r,a=null!=(n=d[e.data.channelUuid])?n:1;if(null!=(r=e.data.fixedVisibility)?r:ce(e.position,a)){!function(e,t){var n=L(e);n[e.data.channelUuid][e.data.id]||(e.data.index=t,n[e.data.channelUuid][e.data.id]=e),O(n)}(e,t);var l=function(e){var t=e.isVerticalMode,n=e.program,i=e.overlap,r=f(e,b);if(i.enabled)return function(e){var t=e.isVerticalMode,n=e.program,i=e.layerOverlapLevel,r=e.overlapMode,o=n.data,a=n.position,s=e.programOverlaps[o.channelUuid];if(s){var l=s.findIndex((function(e){return e.data.id===o.id})),u=s[l];if(u){if("layer"===r&&u.data.channelPosition.top0){var m=i.reduce((function(e,t){return e+t.diffInHours}),0),g=t/m,v=g*m;return h({},o,{hourWidth:M(g),dayWidth:M(v),numberOfHoursInDay:M(m)})}var y=a.differenceInHours(s,a.startOfDay(s)),b=a.differenceInHours(l,s),x=Math.floor(t/b),w=x*b;return h({},o,{hourWidth:M(x),dayWidth:M(w),numberOfHoursInDay:M(b),offsetStartHoursRange:M(y)})}({dayWidth:We,startDate:Ge,endDate:Ae,hoursInDays:Je,modeType:Ue.type})}),[We,Ge,Ae,Je,Ue.type]),et=Qe.hourWidth,tt=Qe.dayWidth,nt=f(Qe,Et),it=o.useReducer((function(e){return e+1}),0),rt=it[0],ot=it[1],at=o.useReducer((function(e){return e+1}),0),st=at[0],lt=at[1],ut=o.useState({index:-1,uuid:""}),dt=ut[0],ct=ut[1],ht=o.useState((function(){return 0})),ft=ht[0],pt=ht[1],mt=o.useState({}),gt=mt[0],vt=mt[1],yt=o.useState({}),bt=yt[0],xt=yt[1],wt=JSON.stringify(Ne);o.useMemo((function(){Ne.enabled&&function(e){R=e}(Ne)}),[wt]),o.useEffect((function(){ot(),ct({index:-1,uuid:""})}),[n]);var Dt=function(e){var t,n=e.isVerticalMode,i=e.isToday,r=e.isInitialScrollToNow,s=e.initialScrollPositions,u=e.height,d=e.width,c=e.channelsNumber,h=e.startDate,f=e.endDate,p=e.hourWidth,m=e.sidebarWidth,g=e.hoursInDays,v=w(),y=o.useRef(null),b=o.useRef(null),x=o.useState(0),D=x[0],M=x[1],T=o.useState(0),W=T[0],H=T[1],L=o.useState(d),O=L[0],k=L[1],E=o.useState(u),I=E[0],C=E[1],S=null==b||null==(t=b.current)?void 0:t.scrollHeight,R=JSON.stringify(s),V=l.useDebouncedCallback((function(e){M(e.y),H(e.x)}),100,{maxWait:100}),z=o.useCallback((function(e){V({y:e.target.scrollTop,x:e.target.scrollLeft})}),[V]),N=JSON.stringify(g),U=o.useMemo((function(){return g.length>0}),[N]),j=o.useCallback((function(){if(null!=b&&b.current&&i){var e,t=null!=d?d:null==(e=y.current)?void 0:e.clientWidth,r=new Date(h),o=X(a.startOfDay(r),P(),h,f,p);U&&(o=J({hoursInDays:g,hourWidth:p,sidebarWidth:m}));var s=o-t/2+m;n?b.current.scrollTop=s+p:b.current.scrollLeft=s}}),[n,i,U,d,p,m,h,f]),B=o.useCallback((function(){var e=Object.keys(s).length;if(null!=b&&b.current&&e){var t=s.top,n=s.left;b.current.scrollTo({behavior:"smooth",top:void 0===t?0:t,left:void 0===n?0:n})}}),[R,S]),Y=o.useCallback((function(e){void 0===e&&(e=p),null!=b&&b.current&&(b.current.scrollTop=b.current.scrollTop+e)}),[p]),F=o.useCallback((function(e){void 0===e&&(e=p),null!=b&&b.current&&(b.current.scrollLeft=b.current.scrollLeft+e)}),[p]),G=o.useCallback((function(e){void 0===e&&(e=p),null!=b&&b.current&&(b.current.scrollLeft=b.current.scrollLeft-e)}),[p]),A=l.useDebouncedCallback((function(){null!=y&&y.current&&!d&&k(y.current.clientWidth)}),400,{maxWait:400}),_=o.useCallback((function(e){if(void 0===e&&(e=0),null!=b&&b.current){if(n){var t=b.current,i=t.scrollLeft;return 0!==i&&t.scrollWidth-i-e<=t.clientWidth}var r=b.current,o=r.scrollTop;return 0!==o&&r.scrollHeight-o-e<=r.clientHeight}return!1}),[n,W,D,c]),q=o.useCallback((function(e){if(void 0===e&&(e=0),null!=b&&b.current){if(n){var t=b.current,i=t.scrollTop;return 0!==i&&t.scrollHeight-i-e<=t.clientHeight}var r=b.current,o=r.scrollLeft;return 0!==o&&r.scrollWidth-o-e<=r.clientWidth}return!1}),[W,D,c]);return v((function(){if(null!=y&&y.current){var e=y.current;d||k(e.clientWidth),u||C(e.clientHeight)}}),[u,d,h]),v((function(){var e=Object.keys(s).length;null!=b&&b.current&&(e?B():r&&j())}),[i,r,R]),v((function(){return window.addEventListener("resize",A),function(){window.removeEventListener("resize",A)}}),[d]),{containerRef:y,scrollBoxRef:b,scrollX:W,scrollY:D,layoutWidth:O,layoutHeight:I,isLayoutBottom:_,isLayoutRight:q,onScroll:z,onScrollToNow:j,onScrollTop:Y,onScrollLeft:G,onScrollRight:F}}({isVerticalMode:n,isToday:Ze,isInitialScrollToNow:j,initialScrollPositions:re,startDate:Ge,endDate:Ae,sidebarWidth:Le,width:Y,height:A,hourWidth:et,currentDate:Ke,hoursInDays:Je,channelsNumber:_.length}),Mt=Dt.isLayoutBottom,Tt=Dt.isLayoutRight,Wt=Dt.containerRef,Ht=Dt.scrollBoxRef,Lt=f(Dt,It);o.useEffect((function(){return function(){H={}}}),[]);var Nt=Lt.scrollX,Ut=Lt.scrollY,jt=Lt.layoutWidth,Xt=Lt.layoutHeight,Bt=Lt.onScroll,Yt=Lt.onScrollToNow,Ft=Lt.onScrollTop,Gt=Lt.onScrollLeft,At=Lt.onScrollRight,_t=function(e,t){return"week"!==t.type&&"month"!==t.type||"modern"!==t.style?e:80}(ke,Ue),Jt=o.useMemo((function(){return JSON.stringify(_)}),[_]),qt=o.useMemo((function(){return bt}),[JSON.stringify(bt)]),Zt=o.useMemo((function(){return function(e,t,n,i,r,o,a){var s=0,l="stack"===t,u="layer"===t;return i.reduce((function(t,i,d){var c=a[i[o]];i.groupTree&&i.uuid&&function(e){C[e.uuid]={uuid:e.uuid,isOpen:e.isOpen,groupTree:e.groupTree}}(i);var f=S()[i.parentChannelUuid];if(f&&i.parentChannelUuid){if(function(e,t){var n,i=C[e];C[e]=h({},i,{nestedChildren:[].concat(null!=(n=i.nestedChildren)?n:[],[t])})}(f.uuid,i.uuid),i.isNestedChild=!0,null==f||!f.isOpen)return t}else i.isNestedChild=!1;var p=1,m=null!=c?c:0;e&&(l||u)&&m>0&&(p=c);var g=function(e,t){return{top:t*e,height:t}}(d,r*p);e&&l&&(g.top=s,s+=g.height),e&&u&&(m>0?(g.top=s,g.height=m<=1?g.height:r*n*(m-1)+r,s+=g.height):(g.top=s,s+=g.height));var v=h({},i,{uuid:i[o],index:d,position:g});return t.push(v),t}),[])}(Be,Xe.mode,Xe.layerOverlapLevel,_,Ie,Ve,bt)}),[Be,Xe.mode,Xe.layerOverlapLevel,Jt,qt,Ie,Ve,ft,st]),Kt=F(Ge),$t=F(Ae),Qt=o.useMemo((function(){return JSON.stringify(Zt)}),[Zt]),en=o.useMemo((function(){return gt}),[JSON.stringify(gt)]),tn=o.useMemo((function(){var e=function(e){var t=e.isVerticalMode,n=e.isOverlapEnabled,i=e.programChannelMapKey,r=e.channels,o=e.startDate,a=e.endDate,s=e.itemHeight,l=e.hourWidth,u=e.hoursInDays,d=0;return e.data.map((function(e,c,f){var p,m,g;e.channelUuid=e[i],(null==(p=f[c-1])?void 0:p[i])!==e[i]&&E({uuid:e[i],first:d=c}),E({uuid:e[i],first:d,last:c});var v,y=r.findIndex((function(t){return t.uuid===e.channelUuid}));e.channelIndex=y,e.channelPosition=null==(m=r[y])?void 0:m.position,e.index=c,null!=(g=r[y])&&g.parentChannelUuid&&(e.parentChannelUuid=null==(v=r[y])?void 0:v.parentChannelUuid);var b=function(e,t,n,i,r,o,a){var s=h({},e,{since:G(e.since),till:G(e.till)}),l=function(e,t){var n=B(new Date(e));return B(new Date(t))>n}(s.since,r),u=X(s.since,s.till,r,o,i),d=n*t,c=X(r,s.since,r,o,i);l&&(c=0),d<0&&(u=0);var f={width:u,height:n,top:d,left:c,edgeEnd:X(r,s.till,r,o,i)};return a&&(f=h({},f,{top:c,left:d,width:n,height:u})),{position:f,data:s}}(e,y,s,l,o,a,t);if(n&&y>0){var x=r[y-1].position,w=x.top+x.height;t?b.position.left=w:b.position.top=w}if(0===u.length)return b;var D=function(e){var t=e.isVerticalMode,n=e.position,i=e.since,r=e.hourWidth,o=e.hoursInDays.find((function(e){return i.includes(e.date)}));if(!o)return{position:n};if(t){var a=o.diffLeft*r;return h({},n,{top:n.top-a,edgeEnd:n.edgeEnd-a})}var s=o.diffLeft*r;return h({},n,{left:n.left-s,edgeEnd:n.edgeEnd-s})}({isVerticalMode:t,hoursInDays:u,position:b.position,since:b.data.since,hourWidth:l});return b.position=D,b}),[])}({isVerticalMode:n,isOverlapEnabled:Be,programChannelMapKey:Pe,data:q,channels:Zt,startDate:Kt,endDate:$t,hoursInDays:Je,itemHeight:Ie,hourWidth:et});if(Be){var t=function(e,t,n,i,r){var o=h({},i),a={},s={},l=I(n.uuid);if(!e&&l){var u,d=function(e,t,n){for(var i={},r=0,o=Object.keys(t);rn){var c=I(l),h=e.slice(c.first,c.last+1);i[d]=h}}return i}(r,o,n.index);s=h(((u={})[n.uuid]=r.slice(l.first,l.last+1),u),d)}else s=function(e){for(var t,n=new Map,i=g(e);!(t=i()).done;){var r=t.value,o=r.data.channelUuid;n.has(o)||n.set(o,[]),n.get(o).push(r)}return Object.fromEntries(n)}(r);for(var c in s){var f=ae(t,i,s[c]);o[c]=f.overlaps[c],a[c]=f.channelOverlaps[c]}for(var p in o){var m;null!=o&&o[p]&&0===(null==(m=Object.keys(null==o?void 0:o[p]))?void 0:m.length)&&delete o[p]}return{overlaps:o,channelOverlaps:a}}(Ye,n,dt,gt,e),i=t.overlaps;return xt(h({},bt,t.channelOverlaps)),pt((function(e){return e+1})),vt(i),{programs:e,programOverlaps:i}}return{programs:e,programOverlaps:{}}}),[Ye,Be,n,q,Qt,en,Kt,$t,Ie,et,Je,Pe,wt,rt]),nn=tn.programs,rn=tn.programOverlaps,on=o.useMemo((function(){return be.enabled?function(e){var t=e.isVerticalMode,n=e.dayWidth,i=e.hourWidth,r=e.timelineHeight,o=e.sidebarWidth,a=e.mode,s=e.dayWidthResources,l=e.daysResources,u="month"===a.type,d=function(){return"day"===a.type?s.numberOfHoursInDay:"week"===a.type?l.numberOfDays:s.numberOfMonths},c=function(){return ne({months:l.months,weekDayWidth:24*i})};return e.channels.flatMap((function(e){return x(d()).map((function(i,a){return function(e,i){var a=0,s=0;u?(a=c()[i].width,s=c()[i].left):s=(a=n/d())*i;var l={top:e.position.top,left:s,width:a,height:e.position.height,edgeEnd:s+a};return{position:l=h({},l,t?{left:l.top+r,top:l.left+o,width:l.height,height:l.width}:{top:l.top+r,left:s+o,width:a,height:l.height}),channel:e}}(e,a)}))}))}({isVerticalMode:n,channels:Zt,dayWidth:tt,hourWidth:et,timelineHeight:_t,sidebarWidth:Le,mode:Ue,dayWidthResources:nt,daysResources:$e}):[]}),[be.enabled,Qt,Ue.type,nt.numberOfHoursInDay,nt.numberOfMonths,$e.numberOfDays,tt,et,Le,_t,n]),an=h({},Ot,De),sn=o.useCallback((function(e,t){return function(e){var t=e.position,n=e.scrollY,i=e.scrollX,r=e.containerHeight,o=e.containerWidth,a=e.overlapsCount,s=0===a?1:a;if(e.isVerticalMode){if(t.height<=0)return!1;if(i>t.left+2*t.width*s)return!1;if(i+o<=t.left)return!1;if(n+r>=t.top&&n<=t.edgeEnd)return!0}else{if(t.width<=0)return!1;if(n>t.top+3*e.itemOverscan*s)return!1;if(n+r<=t.top)return!1;if(i+o>=t.left&&i<=t.edgeEnd)return!0}return!1}({isVerticalMode:n,itemOverscan:Se,overlapsCount:t,position:e,scrollY:Ut,scrollX:Nt,containerHeight:Xt,containerWidth:jt})}),[n,Se,Xt,jt,Ut,Nt]),ln=o.useCallback((function(e){return function(e){var t=e.position,n=e.scrollX,i=e.scrollY,r=e.itemOverscan;if(e.isVerticalMode){var o=t.left+t.height;if(n>o+3*r)return!1;if(n+e.containerWidth<=o-t.height)return!1}else{if(i>t.top+t.height+3*r)return!1;if(i+e.containerHeight<=t.top)return!1}return!0}({isVerticalMode:n,itemOverscan:Se,position:e,scrollX:Nt,scrollY:Ut,containerHeight:Xt,containerWidth:jt})}),[n,Se,Ut,Nt,Xt,jt]),un=o.useCallback((function(e){return function(e){var t=e.position,n=e.scrollY,i=e.scrollX;if(e.isVerticalMode){if(n>t.left+2*t.width)return!1;if(n+e.containerHeight<=t.left)return!1}else{if(i>t.left+2*t.width)return!1;if(i+e.containerWidth<=t.left)return!1}return!0}({position:e,scrollY:Ut,scrollX:Nt,containerHeight:Xt,containerWidth:jt,isVerticalMode:n})}),[Ut,Nt,Xt,jt,n]),dn=o.useCallback((function(e){return null==we||null==we.onDnDSuccess?void 0:we.onDnDSuccess(e)}),[]),cn=o.useCallback((function(e){var t=je(h({},e,{hourWidth:et,startDate:Ge}));q[e.index].since=t.since,q[e.index].till=t.till,ct({index:q[e.index].channelIndex,uuid:q[e.index][Pe]}),dn(q[e.index]),ot()}),[n,Ge,et,nn]),hn=o.useCallback(function(){var e=c(u().mark((function e(t){var n,i,r,o,a,s,l;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=je(h({},t,{hourWidth:et,startDate:Ge})),i=h({},q[t.index]),r=function(){var e=i.channelPosition;return t.top>e.top+e.height-1||t.top {\n const result = { ...obj };\n\n for (const property of props) {\n delete result[property];\n }\n\n return result;\n};\n\nexport const generateArray = (num: number) => new Array(num).fill(\"\");\n\ninterface OverlapProgramOptions {\n isVerticalMode: boolean;\n program: ProgramItem;\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n overlap: Overlap;\n overlapMode: Overlap[\"mode\"];\n}\nconst getOverlapProgramOptions = ({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n}: OverlapProgramOptions) => {\n const { data, position } = program;\n const linkedProgramOverlaps = programOverlaps[data.channelUuid];\n\n if (linkedProgramOverlaps) {\n const programOverlapIndex = linkedProgramOverlaps.findIndex(\n (element) => element.data.id === data.id\n );\n const overlapProgram = linkedProgramOverlaps[programOverlapIndex];\n\n if (overlapProgram) {\n if (\n overlapMode === OVERLAP_MODES.LAYER &&\n overlapProgram.data.channelPosition.top < overlapProgram.position.top\n ) {\n let newTop = overlapProgram.position.top * layerOverlapLevel;\n if (overlapProgram.data.channelPosition.top !== 0) {\n newTop =\n overlapProgram.data.channelPosition.top +\n Math.abs(\n overlapProgram.data.channelPosition.top -\n overlapProgram.position.top\n ) *\n layerOverlapLevel;\n }\n\n let position = {\n ...overlapProgram.position,\n top: newTop,\n };\n\n if (isVerticalMode) {\n position = switchPosition({\n ...overlapProgram.position,\n top: newTop,\n });\n }\n\n return {\n ...program,\n isOverlap: true,\n position,\n };\n }\n\n return {\n ...program,\n position: isVerticalMode\n ? switchPosition(overlapProgram.position)\n : overlapProgram.position,\n };\n } else {\n return {\n ...program,\n position,\n };\n }\n }\n const { width, height, top, left } = position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const getProgramOptions = ({\n isVerticalMode,\n program,\n overlap,\n ...rest\n}: OverlapProgramOptions) => {\n if (overlap.enabled) {\n return getOverlapProgramOptions({\n isVerticalMode,\n program,\n overlap,\n ...rest,\n });\n }\n\n const { width, height, top, left } = program.position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const useIsomorphicLayoutEffect = () =>\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const getHourWidth = (dayWidth: number) => dayWidth / HOURS_IN_DAY;\n\nexport const getDate = (date: DateTime) => new Date(date);\n\nconst abs = (num: number) => Math.abs(num);\ninterface DayWidth {\n dayWidth: number;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n modeType: Mode[\"type\"];\n}\nexport const getDayWidthResources = ({\n dayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType,\n}: DayWidth) => {\n const defaultOptions = {\n hourWidth: 0,\n numberOfMonths: 0,\n numberOfHoursInDay: 0,\n monthWidth: 0,\n offsetStartHoursRange: 0,\n dayWidth: 0,\n };\n\n const startDateTime = new Date(startDate);\n const endDateTime = new Date(endDate);\n\n if (endDateTime < startDateTime) {\n console.error(\n `Invalid endDate property. Value of endDate must be greater than startDate. Props: startDateTime: ${startDateTime}, endDateTime: ${endDateTime}`\n );\n }\n if (modeType === \"week\" || modeType === \"month\") {\n const endOfMonthTime = startOfMonth(addMonths(endDateTime, 1));\n const numberOfMonthInMonthMode = differenceInMonths(\n endOfMonthTime,\n startDateTime\n );\n\n const numberOfDaysInWeekMode = differenceInDays(endDateTime, startDateTime);\n const dayWidthInWeekMode = Math.floor(dayWidth / numberOfDaysInWeekMode);\n const hourWidth = dayWidthInWeekMode / HOURS_IN_DAY;\n const newDayWidthInWeekMode =\n hourWidth * HOURS_IN_DAY * numberOfDaysInWeekMode;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidthInWeekMode),\n numberOfMonths: numberOfMonthInMonthMode,\n };\n }\n\n if (hoursInDays.length > 0) {\n const numberOfHoursInDay = hoursInDays.reduce(\n (acc, curr) => acc + curr.diffInHours,\n 0\n );\n const hourWidth = dayWidth / numberOfHoursInDay;\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n };\n }\n\n const offsetStartHoursRange = differenceInHours(\n startDateTime,\n startOfDay(startDateTime)\n );\n\n const numberOfHoursInDay = differenceInHours(endDateTime, startDateTime);\n const hourWidth = Math.floor(dayWidth / numberOfHoursInDay);\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n offsetStartHoursRange: abs(offsetStartHoursRange),\n };\n};\n\nconst convertDate = (date: DateTime) => {\n const newDate = (date as string).replace(/T.*/, \"\");\n return toDate(newDate);\n};\n\nexport const getDayResources = ({\n startDate,\n endDate,\n modeType,\n}: Pick) => {\n const startDateFormat = format(convertDate(startDate), TIME_FORMAT.DATE);\n const endDateFormat = format(convertDate(endDate), TIME_FORMAT.DATE);\n\n const modeIncrementValue = modeType === \"day\" ? 1 : 0;\n const diffDays =\n differenceInDays(toDate(endDateFormat), toDate(startDateFormat)) +\n modeIncrementValue;\n\n const startToEndInterval: Interval = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n\n const days = eachDayOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const months = eachMonthOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const dates = days.map((day) => isTodayFns(toDate(day)));\n let isToday = dates.some((day) => day === true);\n let currentDate = days[dates.indexOf(true)];\n\n return {\n isToday,\n currentDate,\n numberOfDays: diffDays,\n days,\n months,\n };\n};\n\nexport const switchPosition = (programPosition: ProgramItem[\"position\"]) => ({\n ...programPosition,\n top: programPosition.left,\n left: programPosition.top,\n width: programPosition.height,\n height: programPosition.width,\n});\n\nexport function generateUUID() {\n // Generate a random hexadecimal string with the specified length\n const generateRandomHex = (length: number) => {\n let result = \"\";\n const characters = \"abcdef0123456789\";\n\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n\n return result;\n };\n\n // Format a UUID string according to the version 4 UUID format\n const formatUUID = (parts: string[]) => {\n return `${parts[0]}-${parts[1]}-4${parts[2].substring(1)}-${\n \"89ab\"[Math.floor(Math.random() * 4)]\n }${parts[3].substring(1)}-${parts[4]}`;\n };\n\n // Generate the parts of the UUID\n const parts = [\n generateRandomHex(8),\n generateRandomHex(4),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n generateRandomHex(12),\n ];\n\n // Return the formatted UUID\n return formatUUID(parts);\n}\n","// Import interfaces\nimport { ChannelWithOmittedUuid, Timezone } from \"./interfaces\";\n// Import types\nimport { ChannelWithPosition, ProgramWithPosition } from \"./types\";\n\ntype LayoutScreenClone = Record>;\n\nlet LayoutScreenCloneCache = {} as LayoutScreenClone;\n\nconst setChannel = (event: ProgramWithPosition) => {\n const isChannel = LayoutScreenCloneCache[event.data.channelUuid];\n if (!isChannel) {\n LayoutScreenCloneCache[event.data.channelUuid] = {};\n return LayoutScreenCloneCache;\n }\n return LayoutScreenCloneCache;\n};\n\nconst updateLayoutScreenCloneElement = (data: LayoutScreenClone) =>\n (LayoutScreenCloneCache = data);\n\nexport const setLayoutScreenCloneElement = (\n event: ProgramWithPosition,\n index: number\n) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (!program) {\n event[\"data\"].index = index;\n channels[event.data.channelUuid][event.data.id] = event;\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const deleteLayoutScreenCloneElement = (event: ProgramWithPosition) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (program) {\n delete channels[event.data.channelUuid][event.data.id];\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const getLayoutScreenCloneElements = () => LayoutScreenCloneCache;\nexport const resetLayoutScreenCloneElements: () => void = () =>\n (LayoutScreenCloneCache = {} as LayoutScreenClone);\n\nexport const getChannelsContentHeight = (channels: ChannelWithPosition[]) =>\n channels.reduce((acc, channel) => (acc += channel.position.height), 0);\n\n// Channel epg indexes\ntype ChannelEpgIndex = Record<\n string,\n { uuid: string; first: number; last: number }\n>;\nlet channelEpgIndexesCache = {} as ChannelEpgIndex;\n\nexport const setChannelEpgIndexes = ({\n uuid,\n first = 0,\n last = 0,\n}: {\n uuid: string;\n first?: number;\n last?: number;\n}) => {\n channelEpgIndexesCache[uuid] = {\n first,\n last,\n uuid,\n };\n};\nexport const getChannelEpgIndexes = (uuid: string) => {\n return channelEpgIndexesCache[uuid];\n};\n\nexport const resetChannelsEpgIndexes: () => void = () =>\n (channelEpgIndexesCache = {} as ChannelEpgIndex);\n\n// Channels group tree\ntype ChannelGroupTree = Record<\n string,\n {\n isOpen: boolean;\n uuid: string;\n groupTree: boolean;\n nestedChildren?: string[];\n }\n>;\nlet channelsGroupTreeCache = {} as ChannelGroupTree;\n\nexport const setChannelGroupTree = (channel: ChannelWithOmittedUuid) => {\n channelsGroupTreeCache[channel.uuid as string] = {\n uuid: channel.uuid as string,\n isOpen: channel.isOpen,\n groupTree: channel.groupTree,\n };\n};\n\nexport const setChannelGroupTreeNestedChildren = (\n channelUuid: string,\n nestedChildUuid: string\n) => {\n const channel = channelsGroupTreeCache[channelUuid as string];\n channelsGroupTreeCache[channelUuid as string] = {\n ...channel,\n nestedChildren: [...(channel.nestedChildren ?? []), nestedChildUuid],\n };\n};\n\nexport const getChannelsGroupTree = () => channelsGroupTreeCache;\n\n// Timezones\nlet timezoneOptionsCache = { enabled: false, zone: \"\", mode: \"\" } as Timezone;\n\nexport const setTimezoneOptionsCache = (props: Timezone) => {\n timezoneOptionsCache = props;\n};\nexport const getTimezoneOptionsCache = () => {\n return timezoneOptionsCache;\n};\n\nexport const resetTimezoneOptionsCache: () => void = () =>\n (timezoneOptionsCache = {} as Timezone);\n","import {\n format as fnsFormat,\n // differenceInHours as fnsDifferenceInHours,\n // differenceInMinutes as fnsDifferenceInMinutes,\n} from \"date-fns\";\nimport {\n format as tzFormat,\n utcToZonedTime,\n zonedTimeToUtc,\n} from \"date-fns-tz\";\nimport {\n TIMEZONE_MODES,\n TIME_FORMAT,\n getTimezoneOptionsCache,\n} from \"../helpers\";\n\nexport const getNewDateTimeTz = (date: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = new Date(date);\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime.getTime();\n }\n\n return newDate.getTime();\n};\n\nexport const getNewDateTz = (date?: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = date ? new Date(date) : new Date();\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime;\n }\n\n return newDate;\n};\n\nexport const formatTz = (\n date: Date | number,\n formatTime: string = TIME_FORMAT.DEFAULT\n) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(date, timezone.zone);\n const formattedZonedTime = tzFormat(zonedTime, formatTime, {\n timeZone: timezone.zone,\n });\n return formattedZonedTime;\n }\n\n return fnsFormat(date, formatTime);\n};\n\nexport const zonedDateTimeToUtc = (date: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = zonedTimeToUtc(date, timezone.zone);\n return zonedTime;\n }\n\n return date;\n};\n","import { differenceInMinutes, getTime, endOfDay, addDays } from \"date-fns\";\n// Import interfaces\nimport {\n Channel,\n ChannelWithOmittedUuid,\n HoursInDayDiffTime,\n Mode,\n Program,\n ProgramWithOmittedUuid,\n} from \"./interfaces\";\n\n// Import types\nimport {\n ProgramWithPosition,\n Position,\n DateTime,\n ChannelWithPosition,\n} from \"./types\";\n\n// Import variables\nimport { HOUR_IN_MINUTES, OVERLAP_MODES, TIME_FORMAT } from \"./variables\";\n\n// Import helpers\nimport {\n roundToMinutes,\n isYesterday as isYesterdayTime,\n formatTimeTz,\n} from \"./time\";\nimport { generateUUID, getDate } from \"./common\";\nimport {\n getChannelsGroupTree,\n setChannelEpgIndexes,\n setChannelGroupTree,\n setChannelGroupTreeNestedChildren,\n} from \"./layout\";\nimport { formatTz } from \"../utils/time\";\n\n// -------- Program width --------\nconst getItemDiffWidth = (diff: number, hourWidth: number) =>\n (diff * hourWidth) / HOUR_IN_MINUTES;\n\nexport const getPositionX = (\n since: DateTime,\n till: DateTime,\n startDate: DateTime,\n endDate: DateTime,\n hourWidth: number\n) => {\n const isTomorrow = getTime(getDate(till)) > getTime(getDate(endDate));\n const isYesterday = getTime(getDate(since)) < getTime(getDate(startDate));\n\n // When time range is set to 1 hour and program time is greater than 1 hour\n if (isYesterday && isTomorrow) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(endDate)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isYesterday) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isTomorrow) {\n const diffTime = differenceInMinutes(\n getDate(endDate),\n roundToMinutes(getDate(since))\n );\n\n if (diffTime < 0) return 0;\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n roundToMinutes(getDate(since))\n );\n\n return getItemDiffWidth(diffTime, hourWidth);\n};\n\n// -------- Channel position in the Epg --------\nexport const getChannelPosition = (\n channelIndex: number,\n itemHeight: number\n) => {\n const top = itemHeight * channelIndex;\n const position = {\n top,\n height: itemHeight,\n };\n return position;\n};\n// -------- Program position in the Epg --------\nexport const getProgramPosition = (\n program: Program,\n channelIndex: number,\n itemHeight: number,\n hourWidth: number,\n startDate: DateTime,\n endDate: DateTime,\n isVerticalMode: boolean\n) => {\n const item = {\n ...program,\n since: formatTimeTz(program.since),\n till: formatTimeTz(program.till),\n };\n\n const isYesterday = isYesterdayTime(item.since, startDate);\n\n let width = getPositionX(\n item.since,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n const top = itemHeight * channelIndex;\n let left = getPositionX(startDate, item.since, startDate, endDate, hourWidth);\n const edgeEnd = getPositionX(\n startDate,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n\n if (isYesterday) left = 0;\n // If item has negative top position, it means that it is not visible in this day\n if (top < 0) width = 0;\n\n let position = {\n width,\n height: itemHeight,\n top,\n left,\n edgeEnd,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n top: left,\n left: top,\n width: itemHeight,\n height: width,\n };\n }\n return { position, data: item };\n};\n\n// -------- Program position with day hours --------\ninterface ProgramPositionWithDayHours {\n isVerticalMode: boolean;\n hoursInDays: HoursInDayDiffTime[];\n position: ProgramWithPosition[\"position\"];\n since: string;\n hourWidth: number;\n}\nconst getProgramPositionWithDayHours = ({\n isVerticalMode,\n hoursInDays,\n position,\n since,\n hourWidth,\n}: ProgramPositionWithDayHours) => {\n const day = hoursInDays.find((day) => since.includes(day.date));\n if (!day) return { position };\n\n if (isVerticalMode) {\n const diffHours = day.diffLeft * hourWidth;\n const top = position.top - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, top, edgeEnd };\n }\n\n const diffHours = day.diffLeft * hourWidth;\n const left = position.left - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, left, edgeEnd };\n};\n\n// -------- Converted programs with position data --------\ninterface ConvertedPrograms {\n isVerticalMode: boolean;\n isOverlapEnabled: boolean;\n programChannelMapKey: string;\n data: ProgramWithOmittedUuid[];\n channels: Channel[];\n startDate: DateTime;\n endDate: DateTime;\n itemHeight: number;\n hourWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n}\nexport const getConvertedPrograms = ({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data,\n channels,\n startDate,\n endDate,\n itemHeight,\n hourWidth,\n hoursInDays,\n}: ConvertedPrograms) => {\n let first = 0;\n return data.map((next, index, arr) => {\n next[\"channelUuid\"] = next[programChannelMapKey];\n\n if (arr[index - 1]?.[programChannelMapKey] !== next[programChannelMapKey]) {\n first = index;\n setChannelEpgIndexes({ uuid: next[programChannelMapKey], first });\n }\n if (next[programChannelMapKey] !== arr[index + 1]?.[programChannelMapKey]) {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n } else {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n }\n\n const channelIndex = channels.findIndex(\n ({ uuid }) => uuid === next.channelUuid\n );\n\n next[\"channelIndex\"] = channelIndex;\n next[\"channelPosition\"] = channels[channelIndex]?.position;\n next[\"index\"] = index;\n\n // Group tree\n if (channels[channelIndex]?.parentChannelUuid) {\n next[\"parentChannelUuid\"] = channels[channelIndex]?.parentChannelUuid;\n }\n\n const programData = getProgramPosition(\n next as Program,\n channelIndex,\n itemHeight,\n hourWidth,\n startDate,\n endDate,\n isVerticalMode\n );\n\n if (isOverlapEnabled && channelIndex > 0) {\n const { position } = channels[channelIndex - 1];\n const newPositionTop = position.top + position.height;\n if (isVerticalMode) {\n programData.position.left = newPositionTop;\n } else {\n programData.position.top = newPositionTop;\n }\n }\n\n if (hoursInDays.length === 0) return programData;\n\n const newPosition = getProgramPositionWithDayHours({\n isVerticalMode,\n hoursInDays,\n position: programData.position,\n since: programData.data.since,\n hourWidth,\n }) as ProgramWithPosition[\"position\"];\n\n programData[\"position\"] = newPosition;\n\n return programData;\n }, [] as ProgramWithPosition[]);\n};\n\n// -------- Converted channels with position data --------\n\nexport const getConvertedChannels = (\n isOverlapEnabled: boolean,\n overlapMode: string,\n layerOverlapLevel: number,\n channels: ChannelWithOmittedUuid[],\n itemHeight: number,\n channelMapKey: string,\n channelOverlapsCount: Record\n) => {\n let top = 0;\n const isStackMode = overlapMode === OVERLAP_MODES.STACK;\n const isLayerMode = overlapMode === OVERLAP_MODES.LAYER;\n return channels.reduce((acc, channel, index) => {\n const overlap = channelOverlapsCount[channel[channelMapKey]];\n\n // Check channels group tree\n if (channel.groupTree && channel.uuid) {\n setChannelGroupTree(channel);\n }\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = channelsGroupTree[channel.parentChannelUuid];\n // if parent channel is closed, skip this channel\n if (channelGroupTree && channel.parentChannelUuid) {\n setChannelGroupTreeNestedChildren(\n channelGroupTree.uuid,\n channel.uuid as string\n );\n channel[\"isNestedChild\"] = true;\n if (!channelGroupTree?.isOpen) return acc;\n } else {\n channel[\"isNestedChild\"] = false;\n }\n\n let largestSizeLength = 1;\n const overlapsLength = overlap ?? 0;\n\n if (\n isOverlapEnabled &&\n (isStackMode || isLayerMode) &&\n overlapsLength > 0\n ) {\n largestSizeLength = overlap;\n }\n\n const position = getChannelPosition(index, itemHeight * largestSizeLength);\n\n if (isOverlapEnabled && isStackMode) {\n position.top = top;\n top = top + position.height;\n }\n\n if (isOverlapEnabled && isLayerMode) {\n if (overlapsLength > 0) {\n position.top = top;\n position.height =\n overlapsLength <= 1\n ? position.height\n : itemHeight * layerOverlapLevel * (overlapsLength - 1) +\n itemHeight;\n top = top + position.height;\n } else {\n position.top = top;\n top = top + position.height;\n }\n }\n\n const item = {\n ...channel,\n uuid: channel[channelMapKey],\n index,\n position,\n } as ChannelWithPosition;\n acc.push(item);\n return acc;\n }, [] as ChannelWithPosition[]);\n};\n\n// -------- Dynamic virtual program visibility in the EPG --------\ninterface ItemVisibility {\n position: Position;\n scrollY: number;\n scrollX: number;\n containerHeight: number;\n containerWidth: number;\n isVerticalMode: boolean;\n itemOverscan: number;\n overlapsCount: number;\n}\nexport const getItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n itemOverscan,\n overlapsCount,\n isVerticalMode,\n}: ItemVisibility) => {\n // Set item visibility for vertical mode\n const _overlapsCount = overlapsCount === 0 ? 1 : overlapsCount;\n if (isVerticalMode) {\n if (position.height <= 0) {\n return false;\n }\n\n if (scrollX > position.left + position.width * 2 * _overlapsCount) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n\n if (\n scrollY + containerHeight >= position.top &&\n scrollY <= position.edgeEnd\n ) {\n return true;\n }\n } else {\n // Set item visibility for horizontal mode\n if (position.width <= 0) {\n return false;\n }\n\n if (scrollY > position.top + itemOverscan * 3 * _overlapsCount) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n\n if (\n scrollX + containerWidth >= position.left &&\n scrollX <= position.edgeEnd\n ) {\n return true;\n }\n }\n\n return false;\n};\n\ninterface SidebarItemVisibility {\n isVerticalMode: boolean;\n itemOverscan: number;\n position: Pick & Partial>;\n scrollX: number;\n scrollY: number;\n containerHeight: number;\n containerWidth: number;\n}\nexport const getSidebarItemVisibility = ({\n position,\n scrollX,\n scrollY,\n containerHeight,\n containerWidth,\n itemOverscan,\n isVerticalMode,\n}: SidebarItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n const left = (position.left as number) + position.height;\n if (scrollX > left + itemOverscan * 3) {\n return false;\n }\n\n if (scrollX + containerWidth <= left - position.height) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollY > position.top + position.height + itemOverscan * 3) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n }\n\n return true;\n};\n\ninterface TimelineItemVisibility {\n position: Pick;\n scrollY: number;\n scrollX: number;\n containerWidth: number;\n containerHeight: number;\n isVerticalMode: boolean;\n}\nexport const getTimelineItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n isVerticalMode,\n}: TimelineItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n if (scrollY > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.left) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollX > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const setUpdatedLayoutItem = (\n data: ProgramWithOmittedUuid,\n modeType: Mode[\"type\"]\n) => {\n const id = generateUUID();\n const since = `${data.date} ${data.since}`;\n let till = `${data.date} ${data.till}`;\n\n if (modeType === \"week\") {\n till = formatTz(endOfDay(new Date(till)), TIME_FORMAT.DEFAULT);\n } else if (modeType === \"month\") {\n till = formatTz(addDays(endOfDay(new Date(till)), 20), TIME_FORMAT.DEFAULT);\n }\n\n return { id, title: \"\", image: \"\", ...data, since, till };\n};\n","import {\n format,\n roundToNearestMinutes,\n startOfDay,\n addDays,\n differenceInHours,\n isWithinInterval,\n} from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import common helpers\nimport { getDate } from \"./common\";\n// Import interfaces\nimport { HoursInDay, HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import types\nimport { DateTime as DateRangeTime } from \"./types\";\n// Variables\nimport { TIME_FORMAT } from \"./variables\";\nimport { getPositionX } from \"./epg\";\nimport { formatTz, getNewDateTimeTz, getNewDateTz } from \"../utils/time\";\n\ntype DateTime = number | string | Date;\n\nconst getTime = (date: DateTime) => toDate(date).getTime();\n\nexport const getLiveStatus = (since: DateTime, till: DateTime) => {\n const nowTime = getNewDateTimeTz(getNewDateTz());\n const sinceTime = getNewDateTimeTz(since);\n const sinceTill = getNewDateTimeTz(till);\n return nowTime >= sinceTime && sinceTill > nowTime;\n};\n\nexport const formatTime = (date: DateTime) =>\n format(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const formatTimeTz = (date: DateTime) =>\n formatTz(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const roundToMinutes = (date: DateTime) =>\n roundToNearestMinutes(new Date(date));\n\nexport const isYesterday = (since: DateTime, startDate: DateTime) => {\n const sinceTime = getTime(new Date(since));\n const startDateTime = getTime(new Date(startDate));\n\n return startDateTime > sinceTime;\n};\n\nexport const isFutureTime = (date: DateTime) => {\n const dateTime = getTime(new Date(date));\n const now = getTime(new Date());\n return dateTime > now;\n};\n\nexport const getTimeRangeDates = (\n startDate: DateRangeTime,\n endDate: DateRangeTime\n) => {\n let endDateValue = endDate;\n if (endDate === \"\") {\n endDateValue = formatTime(startOfDay(addDays(getDate(startDate), 1)));\n }\n\n return { startDate, endDate: endDateValue };\n};\n\ninterface FormatWeekMonthDate {\n date: string;\n mode: Mode;\n isBaseTimeFormat: boolean;\n}\nexport const getFormattedWeekMonthDate = ({\n date,\n mode,\n isBaseTimeFormat,\n}: FormatWeekMonthDate) => {\n if (mode.type === \"week\") {\n if (mode.style === \"modern\") {\n return format(toDate(date), TIME_FORMAT.DAY_DATE);\n }\n const dateFormat = isBaseTimeFormat\n ? TIME_FORMAT.BASE_DAY_MONTH\n : TIME_FORMAT.DAY_MONTH;\n return format(toDate(date), dateFormat);\n }\n\n return format(toDate(date), TIME_FORMAT.MONTH);\n};\n\ninterface NumberOfHoursInDays {\n startDate: DateRangeTime;\n customHoursInDays: HoursInDay[];\n}\nexport const getNumberOfHoursInDays = ({\n startDate,\n customHoursInDays,\n}: NumberOfHoursInDays) => {\n if (customHoursInDays.length === 0) return [];\n let itemsDiffInHours = 0;\n const data = customHoursInDays.reduce((acc, item) => {\n let diffLeft = 0;\n const prevItem = acc[acc.length - 1];\n if (!prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(startDate)\n );\n }\n if (prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(prevItem.endTimeHour)\n );\n diffLeft += prevItem.diffLeft;\n itemsDiffInHours += prevItem.diffInHours;\n }\n\n const diffInHours = differenceInHours(\n getDate(item.endTimeHour),\n getDate(item.startTimeHour)\n );\n const startTime = Number(format(getDate(item.startTimeHour), \"H\"));\n const endTime = Number(format(getDate(item.endTimeHour), \"H\"));\n const obj = {\n ...item,\n diffLeft,\n diffInHours,\n prevItemDiffInHours: itemsDiffInHours,\n startTime,\n endTime,\n };\n acc.push(obj);\n return acc;\n }, [] as HoursInDayDiffTime[]);\n\n return data;\n};\n\nexport const getTodayHoursInDays = (hoursInDays: HoursInDayDiffTime[]) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n\n return date.length > 0;\n};\n\ninterface HoursInDaysPositionX {\n hoursInDays: HoursInDayDiffTime[];\n hourWidth: number;\n sidebarWidth: number;\n cb?: (v: boolean) => void;\n}\nexport const getHoursInDaysPositionX = ({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb,\n}: HoursInDaysPositionX) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n if (date.length === 0) {\n cb?.(false);\n return 0;\n }\n const day = date[0];\n const positionX = getPositionX(\n startOfDay(new Date(day.startTimeHour)),\n new Date(),\n day.startTimeHour,\n day.endTimeHour,\n hourWidth\n );\n return positionX + sidebarWidth + day.prevItemDiffInHours * hourWidth;\n};\n","import { format, getDaysInMonth, parse } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import interfaces\nimport { HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import variables\nimport {\n HOURS_IN_DAY,\n TIMELINE_HEIGHT_MODERN_STYLE,\n TIME_FORMAT,\n} from \"./variables\";\n// Import helpers\nimport { generateArray } from \"./common\";\n\nconst { BASE_DAY_MONTH, DAY_MONTH } = TIME_FORMAT;\nconst generateDayHours = (\n isBaseTimeFormat: boolean,\n dayIndex: number,\n days: string[]\n) =>\n Array.from({ length: HOURS_IN_DAY }, (_, i) => {\n if (i === 0) {\n const timeFormat = isBaseTimeFormat ? BASE_DAY_MONTH : DAY_MONTH;\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return dayIndex === 0 ? i : format(date, timeFormat);\n }\n return i;\n });\n\ninterface TimeSlots {\n isBaseTimeFormat: boolean;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n weekDayWidth?: number;\n}\n\nexport const generateTimelineSlots = (\n modeType: Mode[\"type\"],\n options: TimeSlots\n) => {\n const { hoursInDays, ...rest } = options;\n if (modeType === \"week\") {\n return generateWeekTimelineSlots(rest) as string[];\n }\n\n if (modeType === \"month\") {\n return generateMonthTimelineSlots(rest) as string[];\n }\n\n if (hoursInDays.length > 0) {\n return getDayHoursTimeSlots(options) as (string | number)[];\n }\n\n return getDayTimeSlots(rest) as (string | number)[];\n};\n\nconst getDayHoursTimeSlots = ({\n isBaseTimeFormat,\n days,\n hoursInDays,\n numberOfDays,\n}: Pick<\n TimeSlots,\n \"isBaseTimeFormat\" | \"days\" | \"hoursInDays\" | \"numberOfDays\"\n>) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n const hoursInDay = hoursInDays[dayIndex];\n const sliced = hours.slice(hoursInDay.startTime, hoursInDay.endTime);\n if (dayIndex > 0) sliced[0] = hours[0];\n return [...acc, ...sliced];\n }, []);\n return slots;\n};\n\nconst getDayTimeSlots = ({\n isBaseTimeFormat,\n days,\n numberOfDays,\n numberOfHoursInDay,\n offsetStartHoursRange,\n}: Omit) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n if (dayIndex === 0) return [...acc, ...hours.slice(offsetStartHoursRange)];\n return [...acc, ...hours];\n }, []);\n return slots.slice(0, numberOfHoursInDay);\n};\n\nexport const generateWeekTimelineSlots = ({\n days,\n numberOfDays,\n}: Pick) => {\n const slots = generateArray(numberOfDays).map((_, dayIndex) => {\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\nexport const generateMonthTimelineSlots = ({\n months,\n numberOfMonths,\n}: Pick) => {\n const slots = generateArray(numberOfMonths).map((_, dayIndex) => {\n const date = parse(months[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\n\ninterface TimelineMonthsWidth {\n data: { width: number; left: number }[];\n offsetLeft: number;\n}\nexport const getTimelineMonthsWidth = ({\n months,\n weekDayWidth,\n}: Pick) => {\n const { data } = months.reduce(\n (acc, month, index) => {\n const daysInMonth = getDaysInMonth(toDate(month));\n const width = daysInMonth * (weekDayWidth as number);\n if (index === 0) {\n acc.data.push({ width, left: 0 });\n acc.offsetLeft = 0;\n return acc;\n }\n const left = acc.offsetLeft + acc.data[index - 1].width;\n acc.data.push({ width, left });\n acc.offsetLeft = left;\n return acc;\n },\n { data: [], offsetLeft: 0 } as TimelineMonthsWidth\n );\n\n return data;\n};\n\nexport const getTimelineHeight = (timelineHeight: number, mode: Mode) => {\n if (\n (mode.type === \"week\" || mode.type === \"month\") &&\n mode.style === \"modern\"\n ) {\n return TIMELINE_HEIGHT_MODERN_STYLE;\n }\n return timelineHeight;\n};\n","import { ProgramItem } from \"./types\";\nimport { ProgramOverlaps } from \"./interfaces\";\nimport { switchPosition } from \"./common\";\nimport { getChannelEpgIndexes, getChannelsGroupTree } from \"./layout\";\n\nfunction getOverlapCount(\n program: ProgramItem,\n overlapArray: ProgramItem[]\n): number {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n\n let overlapCount = 0;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapCount++;\n }\n }\n\n return overlapCount;\n}\n\nfunction overlapPosition(\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n const newChannelOverlapsCount = channelOverlapsCount;\n\n for (let index = 0; index < newChannelOverlapsCount + 1; index++) {\n const top =\n program.data.channelPosition.top > 0\n ? program.data.channelPosition.top\n : 0;\n let levelTop = top + program.position.height * index;\n let overlapsOnLevel = false;\n let overlapsOnLevelUp = false;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n if (levelTop === otherProgram.position.top) {\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB < tillOther && tillB > sinceOther) ||\n (sinceOther < tillB && tillOther > sinceB)\n ) {\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapsOnLevelUp = true;\n }\n overlapsOnLevel = true;\n break;\n }\n }\n }\n\n if (!overlapsOnLevel) {\n return overlapsOnLevelUp ? index + 4 : index;\n }\n }\n return newChannelOverlapsCount;\n}\n\nconst getOverlapProgramOptions = (\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) => {\n const _program = { ...program };\n\n const { data, position } = _program;\n\n const programOverlapIndex = overlapArray.length + 1;\n\n const isOverlapStackMode = true;\n const programOverlapsLength = overlapArray.length;\n const { channelPosition, overlapTimes } = data;\n const { width, height, left } = position;\n const newHeight = isOverlapStackMode\n ? height\n : height / programOverlapsLength;\n\n const newTop =\n channelPosition.top + (overlapTimes ?? programOverlapIndex) * newHeight;\n\n const newProgram = {\n ...program,\n position: { width, height: newHeight, top: newTop, left },\n };\n\n const overlapTop = overlapPosition(\n newProgram,\n overlapArray,\n channelOverlapsCount\n );\n\n newProgram.position = {\n ...newProgram.position,\n top: channelPosition.top + newProgram.position.height * overlapTop,\n };\n\n return [newProgram, overlapTop + 1];\n};\n\nconst setChannelOverlapCount = (\n programA: ProgramItem,\n channelOverlapsCount: number,\n channelOverlaps: Record\n) =>\n channelOverlapsCount > channelOverlaps[programA.data.channelUuid]\n ? channelOverlapsCount\n : channelOverlaps[programA.data.channelUuid];\n\nexport function getOverlaps(\n isVerticalMode: boolean,\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n): {\n overlaps: ProgramOverlaps;\n channelOverlaps: Record;\n} {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n for (const program of programs) {\n overlaps[program.data.channelUuid] = [];\n }\n\n for (let i = 0; i < programs.length - 1; i++) {\n const programA = { ...programs[i] };\n const sinceA = new Date(programA.data.since);\n const tillA = new Date(programA.data.till);\n\n // Group channel tree\n // If parent group tree is open, then all children group tree are visible\n // If parent group tree is closed, then all children group tree are not visible\n if (programA?.data?.parentChannelUuid) {\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree =\n channelsGroupTree[programA?.data?.parentChannelUuid];\n if (!channelGroupTree?.isOpen) continue;\n }\n\n if (isVerticalMode) {\n programA.position = switchPosition(programA.position);\n }\n\n for (let j = i + 1; j < programs.length; j++) {\n const programB = { ...programs[j] };\n\n if (programA.data.channelUuid !== programB.data.channelUuid) continue;\n\n if (isVerticalMode) {\n programB.position = switchPosition(programB.position);\n }\n\n const sinceB = new Date(programB.data.since);\n const tillB = new Date(programB.data.till);\n\n if (\n (sinceA < tillB && tillA > sinceB) ||\n (sinceB < tillA && tillB > sinceA)\n ) {\n const elementA = overlaps[programA.data.channelUuid];\n const elementB = overlaps[programB.data.channelUuid];\n\n const isSameChannelUuid =\n programA.data.channelUuid === programB.data.channelUuid;\n\n if (elementA && elementB && isSameChannelUuid) {\n programB.data.overlapLinkedId = programA.data.overlapLinkedId;\n\n const overlapArray = overlaps[programA.data.channelUuid];\n\n const isElementAExist = overlapArray.some(\n (el) => el.data.id === programA.data.id\n );\n const isElementBExist = overlapArray.some(\n (el) => el.data.id === programB.data.id\n );\n const channelOverlapsLength =\n overlaps[programA.data.channelUuid].length;\n\n if (!isElementBExist && channelOverlapsLength === 0) {\n programB.position.top =\n programA.data.channelPosition.top + programA.position.height;\n overlaps[programA.data.channelUuid] = [programA, programB];\n channelOverlaps[programA.data.channelUuid] = !channelOverlaps[\n programA.data.channelUuid\n ]\n ? 2\n : channelOverlaps[programA.data.channelUuid];\n } else if (!isElementBExist && channelOverlapsLength > 1) {\n let overlapCount = 0;\n\n if (!isElementAExist) {\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramA, channelOverlapsCount] =\n getOverlapProgramOptions(\n programA,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n overlapArray.push(newProgramA);\n\n channelOverlaps[programA.data.channelUuid] =\n setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n }\n\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramB, channelOverlapsCount] =\n getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n overlapArray.push(newProgramB);\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (isElementBExist && channelOverlapsLength > 1) {\n const overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [, channelOverlapsCount] = getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (channelOverlapsLength > 1) {\n overlapArray.push(programB);\n }\n }\n } else if (\n overlaps[programA.data.channelUuid] &&\n overlaps[programA.data.channelUuid].length === 0\n ) {\n channelOverlaps[programA.data.channelUuid] = 0;\n overlaps[programA.data.channelUuid] = [];\n }\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n\nconst getChannelProgramSliced = (programs: ProgramItem[]) => {\n const acc = new Map();\n\n for (const next of programs) {\n const channelUuid = next.data.channelUuid;\n if (!acc.has(channelUuid)) {\n acc.set(channelUuid, []);\n }\n acc.get(channelUuid).push(next);\n }\n\n return Object.fromEntries(acc) as Record;\n};\n\nconst getChannelEpdIndexesProgramSliced = (\n programs: ProgramItem[],\n overlaps: ProgramOverlaps,\n dndChannelUuidIndex: number\n) => {\n const acc = {} as Record;\n\n for (const next of Object.keys(overlaps)) {\n const channelIndex = overlaps[next]?.[0]?.data.channelIndex;\n const channelUuid = overlaps[next]?.[0]?.data.channelUuid;\n if (channelIndex !== undefined && channelIndex > dndChannelUuidIndex) {\n const channelEpgIndexes = getChannelEpgIndexes(next);\n const slicedPrograms = programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n );\n acc[channelUuid] = slicedPrograms;\n }\n }\n return acc;\n};\n\nexport function checkOverlaps(\n isMultirowsDnd: boolean,\n isVerticalMode: boolean,\n dndChannelUuid: { index: number; uuid: string },\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n) {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n let data = {} as Record;\n\n const channelEpgIndexes = getChannelEpgIndexes(dndChannelUuid.uuid);\n if (!isMultirowsDnd && channelEpgIndexes) {\n const slicedOverlapsPrograms = getChannelEpdIndexesProgramSliced(\n programs,\n overlaps,\n dndChannelUuid.index\n );\n data = {\n [dndChannelUuid.uuid]: programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n ),\n ...slicedOverlapsPrograms,\n };\n } else {\n data = getChannelProgramSliced(programs);\n }\n\n for (const channel in data) {\n const props = getOverlaps(isVerticalMode, itemOverlaps, data[channel]);\n overlaps[channel] = props.overlaps[channel];\n channelOverlaps[channel] = props.channelOverlaps[channel];\n }\n for (const channelUuid in overlaps) {\n if (\n overlaps?.[channelUuid] &&\n Object.keys(overlaps?.[channelUuid])?.length === 0\n ) {\n delete overlaps[channelUuid];\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n","import { format, addMinutes, differenceInMinutes } from \"date-fns\";\n// Import types\nimport { DateTime, DragMouseUp, ResizeMouseUp } from \"./types\";\n// Import variables\nimport { TIMEZONE_MODES, TIME_FORMAT } from \"./variables\";\nimport { getTimezoneOptionsCache } from \"./layout\";\nimport { zonedDateTimeToUtc } from \"../utils/time\";\n\ntype EventProps = Pick<\n DragMouseUp | ResizeMouseUp,\n keyof DragMouseUp & keyof ResizeMouseUp\n>;\ntype EventSinceTill = EventProps & {\n startDate?: DateTime;\n hourWidth: number;\n width?: ResizeMouseUp[\"width\"];\n initialWidth?: ResizeMouseUp[\"initialWidth\"];\n};\n\nconst getFormattedDndDate = (newSince: Date, newTill: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const utcDateSince = zonedDateTimeToUtc(newSince);\n const utcDateTill = zonedDateTimeToUtc(newTill);\n return {\n since: utcDateSince.toISOString(),\n till: utcDateTill.toISOString(),\n };\n }\n\n return {\n since: format(newSince, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n till: format(newTill, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n };\n};\n\nconst getResizeTill = ({\n initialWidth,\n width,\n hourWidth,\n}: Partial> & {\n hourWidth: number;\n}) => {\n if (!initialWidth && !width) return 0;\n\n const diff = (width as number) - (initialWidth as number);\n const diffHours = diff / hourWidth;\n\n return diffHours * 60;\n};\n\nexport const calculateItemDragSinceTill = (props: EventSinceTill) => {\n const {\n initialPositionLeft,\n left,\n initialWidth,\n width,\n hourWidth,\n startDate,\n since,\n till,\n } = props;\n let minDiff = 0;\n if (startDate) {\n const startDateTime = new Date(startDate).getTime();\n const sinceTime = new Date(since).getTime();\n if (sinceTime < startDateTime) {\n minDiff = differenceInMinutes(new Date(startDate), new Date(since));\n }\n }\n\n const diff = left - initialPositionLeft;\n const diffHours = diff / hourWidth;\n const tillDiffHours = getResizeTill({ initialWidth, width, hourWidth });\n\n const newSince = addMinutes(new Date(since), diffHours * 60 + minDiff);\n const newTill = addMinutes(\n new Date(till),\n diffHours * 60 + tillDiffHours + minDiff\n );\n return getFormattedDndDate(newSince, newTill);\n};\n\nexport const getDefaultDragProps = (positionLeft: number) => ({\n currentPositionX: positionLeft,\n dndEvents: { isDragging: false },\n});\n","import { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\nimport { BaseTimeFormat, ChannelWithPosition, Position } from \"./types\";\nimport { generateArray } from \"./common\";\nimport { HOURS_IN_DAY } from \"./variables\";\nimport { generateTimelineSlots, getTimelineMonthsWidth } from \"./timeline\";\n\ninterface ConvertedGridItems {\n isVerticalMode: boolean;\n channels: ChannelWithPosition[];\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n dayWidthResources: {\n numberOfMonths: number;\n numberOfHoursInDay: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n };\n daysResources: {\n numberOfDays: number;\n days: string[];\n months: string[];\n };\n}\nexport const getConvertedGridItems = ({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources,\n daysResources,\n}: ConvertedGridItems) => {\n const isMonthMode = mode.type === \"month\";\n\n const numberOfSlots = () => {\n if (mode.type === \"day\") return dayWidthResources.numberOfHoursInDay;\n if (mode.type === \"week\") return daysResources.numberOfDays;\n return dayWidthResources.numberOfMonths;\n };\n\n const monthsWidth = () =>\n getTimelineMonthsWidth({\n months: daysResources.months,\n weekDayWidth: hourWidth * HOURS_IN_DAY,\n });\n\n const getGridItemPosition = (channel: ChannelWithPosition, index: number) => {\n let width = 0;\n let left = 0;\n if (isMonthMode) {\n width = monthsWidth()[index].width;\n left = monthsWidth()[index].left;\n } else {\n width = dayWidth / numberOfSlots();\n left = width * index;\n }\n let position = {\n top: channel.position.top,\n left,\n width,\n height: channel.position.height,\n edgeEnd: left + width,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n left: position.top + timelineHeight,\n top: position.left + sidebarWidth,\n width: position.height,\n height: position.width,\n };\n } else {\n position = {\n ...position,\n top: position.top + timelineHeight,\n left: left + sidebarWidth,\n width,\n height: position.height,\n };\n }\n\n return { position, channel };\n };\n return channels.flatMap((channel) =>\n generateArray(numberOfSlots()).map((_, index) =>\n getGridItemPosition(channel, index)\n )\n );\n};\n\n// On grid item click\ninterface ClickGridItem {\n isDrop?: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n index: number | undefined;\n item: {\n position: Position;\n channel: ChannelWithPosition;\n };\n grid: IGrid;\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n timelineDividers: number;\n dataAttributes?: Record;\n}\nexport const getClickGridItemData = ({\n isDrop = false,\n isVerticalMode,\n isBaseTimeFormat,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n sidebarWidth,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n}: ClickGridItem) => {\n let { position, channel } = item;\n const isDayMode = mode.type === \"day\";\n let newPosition = {} as Position;\n if (isVerticalMode) {\n newPosition = {\n ...position,\n top: position.left,\n left: position.top - sidebarWidth,\n edgeEnd: position.left + hourWidth - sidebarWidth,\n };\n } else {\n newPosition = {\n ...position,\n top: position.top,\n left: position.left - sidebarWidth,\n edgeEnd: position.edgeEnd - sidebarWidth,\n };\n }\n\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n const timeSlots = generateTimelineSlots(mode.type, options);\n\n const left = isDayMode\n ? newPosition.left + (index as number) * (hourWidth / timelineDividers)\n : newPosition.left;\n const edgeEnd = isDayMode\n ? left + hourWidth / timelineDividers\n : newPosition.edgeEnd;\n const itemClickProps = {\n since: \"00:00:00\",\n till: \"00:00:00\",\n date: \"\",\n channelUuid: channel.uuid,\n };\n\n if (isDayMode) {\n const gridItemProps = getDividerGridProps({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n dayWidth,\n hourWidth,\n index,\n });\n isDrop\n ? grid.onGridItemDrop?.({ ...gridItemProps, ...dataAttributes })\n : grid.onGridItemClick?.(gridItemProps);\n }\n\n if (mode.type === \"week\") {\n const index = Math.floor(left / (hourWidth * 24));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n\n if (mode.type === \"month\") {\n const index = Math.floor(left / (hourWidth * 24 * 30));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n};\n\ninterface DividerGridProps {\n left: number;\n edgeEnd: number;\n timeSlots: (string | number)[];\n channel: ChannelWithPosition;\n days: string[];\n hourWidth: number;\n dayWidth: number;\n index: number | undefined;\n}\nconst getDividerGridProps = ({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n hourWidth,\n dayWidth,\n index,\n}: DividerGridProps) => {\n let since = \"\";\n let till = \"\";\n const dayTimeSlots = timeSlots.map((time) =>\n typeof time === \"number\" ? time : 0\n );\n const sinceTimeInHours = Math.floor(left / hourWidth); // Assuming 4 hours per hourWidth\n const tillTimeInHours = Math.floor(edgeEnd / hourWidth); // Assuming 4 hours per hourWidth\n const getTime = (index: number) =>\n (dayTimeSlots[index] as number) < 10\n ? \"0\" + dayTimeSlots[index]\n : dayTimeSlots[index];\n const newSince = getTime(sinceTimeInHours);\n const newTill = getTime(tillTimeInHours);\n const newSinceMin = index === 0 ? `00` : (index as number) * 15;\n\n const newTillMin =\n (index as number) + 1 === 0 ? `00` : ((index as number) + 1) * 15;\n\n since = `${newSince}:${newSinceMin}:00`;\n till = `${newTill}:${newTillMin}:00`;\n\n if (newTillMin === 60) {\n const newNextTill =\n (dayTimeSlots[sinceTimeInHours + 1] as number) < 10\n ? \"0\" + dayTimeSlots[sinceTimeInHours + 1]\n : dayTimeSlots[tillTimeInHours];\n till = newTill ? `${newNextTill}:00:00 ` : \"00:00:00\";\n }\n const singleDayWidth = dayWidth / (days.length - 1);\n const dayIndex = Math.floor(left / singleDayWidth);\n\n const options = {\n since,\n till,\n date: days[dayIndex],\n channelUuid: channel.uuid,\n };\n return options;\n};\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Container = styled.div<{\n height?: number;\n width?: number;\n}>`\n padding: 5px;\n height: ${({ height }) => (height ? `${height}px` : \"100%\")};\n width: ${({ width }) => (width ? `${width}px` : \"100%\")};\n\n *,\n ::before,\n ::after {\n box-sizing: border-box;\n }\n`;\n\nexport const Wrapper = styled.div`\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n`;\n\nexport const ScrollBox = styled.div<{ theme?: Theme; isRTL?: boolean }>`\n position: relative;\n height: 100%;\n width: 100%;\n overflow: auto;\n scroll-behavior: smooth;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isRTL }) => isRTL && `transform: scale(-1,1)`};\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.scrollbar.thumb.bg};\n border: 10px none ${({ theme }) => theme.white};\n border-radius: 20px;\n }\n ::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.white};\n }\n\n ::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.primary[900]};\n border: 22px none ${({ theme }) => theme.white};\n border-radius: 0px;\n }\n\n ::-webkit-scrollbar-corner {\n background: ${({ theme }) => theme.primary[900]};\n }\n`;\n\nexport const Box = styled.div<{\n isRTL?: boolean;\n left?: number;\n top?: number;\n theme?: Theme;\n}>`\n position: absolute;\n top: ${({ top = 0 }) => top}px;\n background: ${({ theme }) => theme.primary[900]};\n z-index: ${Layers.EpgCornerBox};\n\n ${({ isRTL, left = 0 }) => (isRTL ? `right:0px;` : ` left: ${left}px`)};\n`;\n\nexport const Content = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n theme?: Theme;\n dayWidth: number;\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: ${({ contentHeight }) => contentHeight}px;\n width: ${({ dayWidth }) => dayWidth}px;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isVerticalMode, isTimeline, dayWidth, timelineHeight, contentHeight }) =>\n isVerticalMode &&\n `\n left: ${isTimeline ? timelineHeight : 0}px;\n width: ${contentHeight}px;\n height: ${dayWidth}px;\n `}\n`;\n\nexport const LayoutBg = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n isSidebar: boolean;\n dayWidth: number;\n contentHeight: number;\n timelineHeight: number;\n sidebarWidth: number;\n}>`\n position: absolute;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: 100%;\n width: ${({ dayWidth }) => dayWidth}px;\n\n ${({\n isVerticalMode,\n isTimeline,\n isSidebar,\n dayWidth,\n timelineHeight,\n sidebarWidth,\n }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n width: 100%;\n height: ${dayWidth}px;\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Box = styled.div<{\n isVerticalMode?: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n contentHeight: number;\n bottom: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isTimeline,\n isRTL,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n bottom,\n theme,\n }) => css`\n position: sticky;\n background-color: ${theme.primary[900]};\n\n ${isRTL && `& > div { transform: scale(-1,1) }`};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${isTimeline ? timelineHeight : 0}px;\n height: ${sidebarWidth}px;\n width: ${contentHeight}px;\n `}\n\n ${!isVerticalMode &&\n css`\n left: 0;\n bottom: ${bottom}px;\n float: left;\n width: ${sidebarWidth}px;\n `}\n `}\n z-index: ${Layers.Sidebar};\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const ChannelWrapper = styled.div<{\n isVerticalMode?: boolean;\n top: number;\n height: number;\n groupTree?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, top, height, groupTree, theme }) => css`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${theme.primary[900]};\n cursor: ${groupTree ? \"pointer\" : \"default\"};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${top}px;\n width: ${height}px;\n height: 100%;\n `}\n ${!isVerticalMode &&\n css`\n top: ${top}px;\n height: ${height}px;\n width: 100%;\n `};\n `}\n`;\n\nexport const ChannelLogo = styled.img`\n max-height: 60px;\n max-width: 60px;\n position: relative;\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const ProgramContent = styled.div<{\n isVerticalMode?: boolean;\n isLive: boolean;\n width: number;\n theme?: Theme;\n}>`\n border: 1px solid #171923;\n position: relative;\n display: flex;\n font-size: 11px;\n height: 100%;\n border-radius: 8px;\n padding: 10px ${({ width }) => (width < 30 ? 4 : 20)}px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.4s ease-in-out;\n background: ${({ theme: { primary } }) =>\n `linear-gradient(to right, ${primary[600]}, ${primary[600]})`};\n z-index: ${Layers.Program};\n\n &:hover {\n background: ${({ theme: { gradient } }) =>\n `linear-gradient(to right, ${gradient.blue[900]}, ${gradient.blue[600]})`};\n }\n\n ${({ isLive, isVerticalMode, theme: { gradient } }) =>\n isLive &&\n `background: linear-gradient(to ${isVerticalMode ? \"bottom\" : \"right\"}, ${\n gradient.blue[900]\n }, ${gradient.blue[600]},${gradient.blue[300]})`}\n`;\n\nexport const ProgramFlex = styled.div<{ isVerticalMode?: boolean }>`\n width: 100%;\n display: flex;\n justify-content: flex-start;\n\n ${({ isVerticalMode }) => isVerticalMode && `flex-direction: column;`};\n`;\n\nconst Elipsis = `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const ProgramTitle = styled.p<{ theme?: Theme }>`\n font-size: 14px;\n text-align: left;\n margin-top: 0;\n margin-bottom: 5px;\n font-weight: 500;\n color: ${({ theme }) => theme.grey[300]};\n ${Elipsis}\n`;\n\nexport const ProgramText = styled.span<{ theme?: Theme }>`\n display: block;\n font-size: 12.5px;\n font-weight: 400;\n color: ${({ theme }) => theme.text.grey[500]};\n text-align: left;\n ${Elipsis}\n`;\n\nexport const ProgramImage = styled.img<{ isVerticalMode?: boolean }>`\n margin-right: 15px;\n border-radius: 6px;\n width: 100px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode && `width: 100%; margin-bottom: 10px`};\n`;\n\nexport const ProgramStack = styled.div<{ isRTL?: boolean }>`\n overflow: hidden;\n ${({ isRTL }) =>\n isRTL &&\n `transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end`};\n`;\n\nexport const ProgramBox = styled.div<{\n isResizing?: boolean;\n isDragging?: boolean;\n width: number;\n}>`\n position: absolute;\n padding: ${({ width }) => (width === 0 ? 0 : 4)}px;\n z-index: ${({ isDragging, isResizing }) =>\n isDragging || isResizing ? Layers.Program * 3 : Layers.Program};\n overflow: hidden;\n\n ${({ isDragging, isResizing }) =>\n (!isDragging || !isResizing) &&\n ` &:hover {\n z-index: ${Layers.Program * 2};\n\n ${ProgramResizeHandle} {\n opacity: 1;\n }\n }`}\n\n ${({ isDragging, isResizing, theme }) =>\n (isDragging || isResizing) &&\n ` \n border-radius: 10px;\n background: ${theme.green[200]};\n \n ${ProgramContent}{\n user-select: none;\n cursor: move;\n }\n `}\n`;\n\nexport const ProgramResizeHandle = styled.div<{\n isResize?: boolean;\n isVerticalMode?: boolean;\n left?: boolean;\n}>`\n position: absolute;\n opacity: 0;\n\n ${({ isResize }) => !isResize && \"display: none;\"}\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 0;` : `bottom: 0;`}\n left:0;\n height:25px;\n width: 100%;\n cursor: ${left ? \"n-resize\" : \"s-resize\"};\n `}\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n `\n top: 0;\n bottom: 0;\n ${left ? `left: 0;` : `right: 0;`}\n width: 25px;\n cursor: ${left ? \"w-resize\" : \"e-resize\"};\n `}\n\n &:after {\n content: \"\";\n position: absolute;\n margin: auto;\n border-radius: 8px;\n background: ${({ theme }) => theme.green[200]};\n\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n ` top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n ${left ? `left: 9px;` : `right: 9px;`}\n `}\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 9px;` : `bottom: 9px;`}\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n `}\n }\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const TimelineTime = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isWeekMonthMode?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n position: absolute;\n top: 13px;\n left: ${({ isRTL, isBaseTimeFormat, isVerticalMode, isWeekMonthMode }) => {\n if (isVerticalMode) {\n if (isRTL) return isBaseTimeFormat ? 9 : 17;\n return isBaseTimeFormat ? 9 : 14;\n }\n if (isWeekMonthMode) return 0;\n return isRTL && isBaseTimeFormat ? \"-32\" : \"-18\";\n }}px;\n\n color: ${({ theme }) => theme.text.grey[300]};\n\n ${({ isRTL }) =>\n isRTL &&\n `\n transform: scale(-1, 1);\n `}\n\n ${({ theme, isNewDay }) =>\n isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `};\n`;\nexport const TimelineWeekMonthDate = styled.div<{\n isVerticalMode?: boolean;\n isRTL?: boolean;\n styleType?: \"default\" | \"modern\";\n theme?: Theme;\n}>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n height: 100%;\n transform: ${({ isRTL }) => (isRTL ? \"scale(-1,1)\" : \"scale(1,1)\")};\n\n span {\n color: ${({ theme }) => theme.text.grey[300]};\n font-size: 16px;\n }\n\n ${({ styleType, theme }) =>\n styleType === \"modern\" &&\n css`\n span:first-of-type {\n font-weight: 500;\n color: ${theme.teal[100]};\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ${theme.text.grey[300]};\n font-size: 24px;\n }\n `}\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n margin-top: 0px;\n transform: ${isRTL ? \"scale(-1,1)\" : \"scale(1,1)\"};\n `};\n`;\n\nexport const TimelineDividers = styled.div<{\n isVerticalMode?: boolean;\n}>`\n position: relative;\n height: 100%;\n width: 100%;\n padding-bottom: 6px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode &&\n css`\n grid-template-columns: 1fr;\n align-items: start;\n `}\n`;\n\nexport const TimelineDivider = styled.div<{\n isVerticalMode?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n width: number;\n left: number;\n}>`\n position: absolute;\n bottom: 6px;\n background: ${({ theme }) => theme.timeline.divider.bg};\n height: 10px;\n width: 1px;\n left: ${({ left }) => left}px;\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n `}\n\n ${({ isNewDay, theme }) =>\n isNewDay &&\n `&:first-of-type {\n width:2px;\n background: ${theme.teal[100]};\n }`}\n`;\n\nexport const TimelineWrapper = styled.div<{\n isVerticalMode?: boolean;\n isSidebar: boolean;\n dayWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isSidebar,\n sidebarWidth,\n timelineHeight,\n dayWidth,\n theme,\n }) =>\n css`\n position: sticky;\n background: ${theme.primary[900]};\n z-index: ${Layers.Timeline};\n\n ${isVerticalMode &&\n css`\n left: 0;\n bottom: 0px;\n float: left;\n width: ${timelineHeight}px;\n margin-top: ${isSidebar ? sidebarWidth : 0}px;\n `}\n\n ${!isVerticalMode &&\n css`\n top: 0;\n left: ${isSidebar ? sidebarWidth : 0}px;\n height: ${timelineHeight}px;\n width: ${dayWidth}px;\n `}\n `}\n`;\n\nexport const TimelineBox = styled.div<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n}>`\n ${({ isVerticalMode, left, width, timelineHeight, theme }) => css`\n position: absolute;\n font-size: 14px;\n background-color: ${theme.primary[900]};\n\n ${!isVerticalMode &&\n css`\n left: ${left}px;\n width: ${width}px;\n height: 100%;\n `}\n ${isVerticalMode &&\n css`\n top: ${left}px;\n height: ${width}px;\n width: ${timelineHeight}px;\n `}\n `}\n\n ${({\n isVerticalMode,\n isToday,\n isCurrentTime,\n isTodayInHoursInDays,\n areHoursInDays,\n isWeekMonthMode,\n }) => {\n const typeNumberDefault = isToday && isCurrentTime ? 2 : 1;\n const typeNumberInHoursDays = areHoursInDays\n ? isTodayInHoursInDays && isCurrentTime\n ? 2\n : 1\n : 1;\n const typeNumber = areHoursInDays\n ? typeNumberInHoursDays\n : typeNumberDefault;\n const position = isVerticalMode ? \"top\" : \"left\";\n\n if (!isWeekMonthMode) {\n return `&:nth-of-type(${typeNumber}) {\n ${TimelineTime} {\n ${position}: 0px;\n }\n }`;\n }\n return \"\";\n }}\n`;\nexport const TimelineWeekMonthBox = styled(TimelineBox)<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n styleType?: \"default\" | \"modern\";\n}>`\n ${({ isVerticalMode, styleType, theme }) =>\n css`\n &:not(:last-of-type) {\n &:after {\n content: \"\";\n position: absolute;\n background: ${theme.timeline.divider.bg};\n transform: translate(-50%, -50%);\n\n ${isVerticalMode\n ? css`\n bottom: 0;\n height: 1px;\n width: 80%;\n `\n : css`\n top: 50%;\n right: 0;\n height: 100%;\n height: ${styleType === \"modern\" ? \"35%\" : \"70%\"};\n width: 1px;\n `}\n }\n }\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const lineStyles = {\n position: \"absolute\",\n top: 64,\n width: 3,\n};\n\nexport const LineBox = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n height: number;\n left: number;\n zIndex: Layers;\n theme?: Theme;\n}>`\n position: ${lineStyles.position};\n top: ${({ isTimeline }) => (isTimeline ? lineStyles.top : 0)}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${lineStyles.width}px;\n background: ${({ theme }) => theme.green[300]};\n pointer-events: none;\n z-index: ${({ zIndex }) => zIndex};\n\n ${({ isVerticalMode, isTimeline, left, height }) =>\n isVerticalMode &&\n ` \n top: ${left}px;\n left: ${isTimeline ? lineStyles.top : 0}px;\n height: ${lineStyles.width}px;\n width: ${height}px;\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { keyframes } from \"@emotion/react\";\nimport { Layers, Theme } from \"../helpers\";\n\nconst time = [0, 50, 0];\n\nconst moveLeft = (animate: { right: string[] }) => keyframes`\n${time.map(\n (item, index) => `${item}% {\n transform: translateX(-${animate.right[index]});\n}`\n)}\n`;\n\nexport const Box = styled.div<{ theme?: Theme }>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n background: ${({ theme }) => theme.loader.bg};\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: ${Layers.Loader};\n`;\n\nexport const Shape = styled.div<{\n width: number;\n color: \"teal\" | \"purple\" | \"pink\";\n marginRight?: number;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n theme?: Theme;\n}>`\n width: ${({ width }) => width * 0.42}px;\n background: ${({ theme, color }) => theme.loader[color]};\n height: 18px;\n border-radius: 45px;\n margin-right: ${({ marginRight }) => marginRight ?? 0}px;\n animation-name: ${({ animate }) => moveLeft(animate)};\n animation-duration: ${({ transition }) => transition.duration}s;\n animation-timing-function: ${({ transition }) =>\n transition.ease ?? \"ease-in-out\"};\n animation-delay: ${({ transition }) => transition.delay ?? 0}s;\n animation-iteration-count: infinite;\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const boxStyles = ({ width }: { width?: number | string } = {}) => ({\n position: \"absolute\",\n top: 0,\n width: width ?? 70,\n height: 20,\n});\n\nexport const CurrentTimeBox = styled.div<{\n top: number;\n left: number;\n width: number | string;\n}>`\n position: ${boxStyles().position};\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n width: ${({ width }) => (typeof width === \"string\" ? \"auto\" : `${width}px`)};\n height: ${boxStyles().height}px;\n background-color: ${({ theme }) => theme.primary[900]};\n z-index: 2;\n`;\n\nexport const CurrentTimeContent = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, isBaseTimeFormat, isRTL, isNewDay, theme }) => css`\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ${theme.green[200]};\n background-color: ${theme.primary[900]};\n ${isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${isVerticalMode &&\n css`\n left: 50%;\n transform: translate(-50%, -50%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `}\n\n ${!isVerticalMode &&\n css`\n top: 4px;\n left: ${isRTL && isBaseTimeFormat ? \"-32\" : \"-16\"}px;\n ${isRTL && \"transform: scale(-1,1);\"}\n `}\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\n// Import helpers\nimport { Layers, Theme } from \"../helpers\";\nimport { css } from \"@emotion/react\";\n\nexport const AreaFiled = styled.div<{\n isVerticalMode?: boolean;\n isClickable?: boolean;\n positionX: number;\n height: number;\n width: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n position: absolute;\n pointer-events: ${(props) => (props.isClickable ? \"auto\" : \"none\")};\n cursor: ${(props) => (props.isClickable ? \"pointer\" : \"none\")};\n z-index: ${Layers.Area};\n\n ${({ isVerticalMode, positionX, height, width, timelineHeight }) =>\n isVerticalMode\n ? css`\n top: ${positionX}px;\n left: ${timelineHeight}px;\n height: ${width}px;\n width: ${height}px;\n `\n : css`\n top: ${timelineHeight}px;\n left: ${positionX}px;\n height: ${height}px;\n width: ${width}px;\n `}\n`;\nexport const AreaBg = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`;\n\nexport const AreaAnnotation = styled.div<{\n isVerticalMode: boolean;\n isLeft?: boolean;\n width: number;\n timelineHeight: number;\n}>`\n padding: 4px 6px;\n font-size: 15px;\n width: max-content;\n\n ${({ isVerticalMode, isLeft = false, width, timelineHeight }) => css`\n ${!isVerticalMode\n ? css`\n position: sticky;\n top: ${timelineHeight}px;\n ${isLeft\n ? `float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;`\n : `float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;`}\n `\n : css`\n position: sticky;\n left: ${timelineHeight}px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ${isLeft && css`` ? `top: 0; ` : `margin-top:${width - 60}px;`}\n `}\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\n\nexport const GridContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 1;\n`;\n\nexport const GridWrapper = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n\n ${({ isVerticalMode, isSidebar, isTimeline, sidebarWidth, timelineHeight }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n `}\n`;\n\nexport const GridItem = styled.div<{\n isDayMode: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable: boolean;\n top: number;\n left: number;\n height: number;\n width: number;\n}>`\n position: absolute;\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${({ width }) => width}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.item};\n border-bottom-color: ${({ theme }) => theme.grid.item};\n z-index: 1;\n\n ${({ isDayMode, isHoverHighlight, isDragOver, theme }) =>\n !isDayMode &&\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n ${isDragOver && `border: 1px solid ${theme.grid.highlight};`}\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n\nexport const GridDivider = styled.div<{\n isVerticalMode?: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable?: boolean;\n left: number;\n width: number;\n}>`\n position: absolute;\n top: 0;\n left: ${({ left }) => left}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.divider};\n height: 100%;\n width: ${({ width }) => width}px;\n\n ${({ isHoverHighlight, theme }) =>\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n\n `}\n ${({ isDragOver, theme }) =>\n isDragOver &&\n `\n border: 1px solid ${theme.grid.highlight}; \n\n `}\n\n ${({ isVerticalMode, left, width, theme }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 0;\n width: 100%;\n height: ${width}px;\n border-bottom-color: ${theme.grid.divider};\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n","export const theme = {\n primary: {\n 600: \"#1a202c\",\n 900: \"#171923\",\n },\n grey: { 300: \"#d1d1d1\" },\n white: \"#fff\",\n teal: {\n 100: \"#38B2AC\",\n },\n green: {\n 200: \"#389493\",\n 300: \"#2C7A7B\",\n },\n loader: {\n teal: \"#5DDADB\",\n purple: \"#3437A2\",\n pink: \"#F78EB6\",\n bg: \"#171923db\",\n },\n scrollbar: {\n border: \"#ffffff\",\n thumb: {\n bg: \"#e1e1e1\",\n },\n },\n\n gradient: {\n blue: {\n 300: \"#002eb3\",\n 600: \"#002360\",\n 900: \"#051937\",\n },\n },\n\n text: {\n grey: {\n 300: \"#a0aec0\",\n 500: \"#718096\",\n },\n },\n\n timeline: {\n divider: {\n bg: \"#718096\",\n },\n },\n grid: {\n item: \"#7180961a\",\n divider: \"#7180961a\",\n highlight: \"#38B2AC\",\n },\n};\n","import React from \"react\";\nimport { startOfToday } from \"date-fns\";\n\n// Import interfaces\nimport {\n Area,\n ChannelWithOmittedUuid,\n DragAndDrop,\n Grid,\n HoursInDay,\n Mode,\n Overlap,\n ProgramOverlaps,\n ProgramWithOmittedUuid,\n Snap,\n Theme,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n DateTime,\n BaseTimeFormat,\n Position,\n InitialScrollPositions,\n ProgramItem,\n DragMouseUp,\n ResizeMouseUp,\n ChannelWithPosition,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n DAY_WIDTH,\n ITEM_HEIGHT,\n ITEM_OVERSCAN,\n SIDEBAR_WIDTH,\n LIVE_REFRESH_TIME,\n TIMELINE_HEIGHT,\n TIMELINE_DIVIDERS,\n formatTime,\n getConvertedChannels,\n getConvertedPrograms,\n getItemVisibility,\n getSidebarItemVisibility,\n getDayWidthResources,\n getTimeRangeDates,\n getDayResources,\n getTimelineItemVisibility,\n getTimelineHeight,\n getNumberOfHoursInDays,\n resetLayoutScreenCloneElements,\n checkOverlaps,\n calculateItemDragSinceTill,\n getChannelEpgIndexes,\n setChannelEpgIndexes,\n setTimezoneOptionsCache,\n setUpdatedLayoutItem,\n} from \"../helpers\";\n\n// Import theme\nimport { theme as defaultTheme } from \"../theme\";\n\n// Import components\nimport { useLayout } from \"./useLayout\";\nimport { getConvertedGridItems } from \"../helpers/grid\";\n\ninterface useEpgProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isInitialScrollToNow?: boolean;\n isResize?: boolean;\n initialScrollPositions?: InitialScrollPositions;\n channels: ChannelWithOmittedUuid[];\n epg: ProgramWithOmittedUuid[];\n width?: number;\n height?: number;\n startDate?: DateTime;\n endDate?: DateTime;\n liveRefreshTime?: number;\n mode?: Mode;\n timezone?: Timezone;\n overlap?: Overlap;\n timelineDividers?: number;\n snap?: Snap;\n grid?: Grid;\n dnd?: DragAndDrop;\n areas?: Area[];\n hoursInDays?: HoursInDay[];\n theme?: Theme;\n globalStyles?: string;\n dayWidth?: number;\n sidebarWidth?: number;\n timelineHeight?: number;\n itemHeight?: number;\n itemOverscan?: number;\n channelMapKey?: string;\n programChannelMapKey?: string;\n}\n\nconst defaultStartDateTime = formatTime(startOfToday());\nconst defaultMode = { type: \"day\", style: \"default\" } as Mode;\nconst defaultTimezone = {\n enabled: false,\n zone: \"\",\n mode: \"formatInTimeZone\",\n} as Timezone;\nconst defaultOverlap = {\n enabled: false,\n mode: \"stack\",\n layerOverlapLevel: 0.4,\n} as Overlap;\nconst defaultGrid = {\n enabled: false,\n hoverHighlight: false,\n} as Grid;\nconst defaultDnd = {\n enabled: false,\n mode: \"row\",\n} as DragAndDrop;\n\nexport function useEpg(props: useEpgProps) {\n let {\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isCurrentTime = false,\n isInitialScrollToNow = true,\n } = props;\n\n const { width, height } = props;\n\n const { channels: channelsEpg, epg } = props;\n\n const {\n startDate: startDateInput = defaultStartDateTime,\n endDate: endDateInput = \"\",\n hoursInDays: customHoursInDays = [],\n } = props;\n\n const {\n initialScrollPositions = {},\n liveRefreshTime = LIVE_REFRESH_TIME,\n timelineDividers = TIMELINE_DIVIDERS,\n snap,\n mode: customMode = defaultMode,\n overlap: customOverlap = defaultOverlap,\n timezone: customTimezone = defaultTimezone,\n areas = [],\n grid = defaultGrid,\n dnd = defaultDnd,\n theme: customTheme,\n globalStyles,\n } = props;\n\n const {\n dayWidth: customDayWidth = DAY_WIDTH,\n sidebarWidth = SIDEBAR_WIDTH,\n timelineHeight: customTimelineHeight = TIMELINE_HEIGHT,\n itemHeight = ITEM_HEIGHT,\n itemOverscan = ITEM_OVERSCAN,\n } = props;\n\n const { channelMapKey = \"uuid\", programChannelMapKey = \"channelUuid\" } =\n props;\n\n const timezone = { ...defaultTimezone, ...customTimezone };\n const mode = { ...defaultMode, ...customMode };\n const overlap = { ...defaultOverlap, ...customOverlap };\n const isOverlapEnabled = overlap.enabled;\n const isMultirowsDnd = dnd.mode === \"multi-rows\";\n\n // Get converted start and end dates\n const { startDate, endDate } = getTimeRangeDates(\n startDateInput,\n endDateInput\n );\n\n // Get hours in days\n const serializedHoursInDays = JSON.stringify(customHoursInDays);\n const hoursInDays = React.useMemo(\n () => getNumberOfHoursInDays({ customHoursInDays, startDate }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [serializedHoursInDays]\n );\n\n // Get days resources eg. number of days, dates and hours\n const { isToday, currentDate, ...daysResources } = React.useMemo(\n () =>\n getDayResources({\n startDate,\n endDate,\n modeType: mode.type,\n }),\n [startDate, endDate, mode.type]\n );\n\n // Get day and hour width of the day\n const { hourWidth, dayWidth, ...dayWidthResourcesProps } = React.useMemo(\n () =>\n getDayWidthResources({\n dayWidth: customDayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType: mode.type,\n }),\n [customDayWidth, startDate, endDate, hoursInDays, mode.type]\n );\n\n // -------- State --------\n const [update, setForceUpdate] = React.useReducer((x) => x + 1, 0);\n const [updateChannels, setForceChannelsUpdate] = React.useReducer(\n (x) => x + 1,\n 0\n );\n const [dndChannelUuid, setDndChannelUuid] = React.useState({\n index: -1,\n uuid: \"\",\n });\n\n const [newOverlaps, setNewOverlaps] = React.useState(() => 0);\n let [overlaps, setOverlaps] = React.useState({});\n const [channelOverlapsCount, setChannelOverlapsCount] = React.useState<\n Record\n >({});\n\n const timezoneSerialized = JSON.stringify(timezone);\n // Set base timezone functions\n React.useMemo(\n () => {\n if (timezone.enabled) {\n setTimezoneOptionsCache(timezone);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timezoneSerialized]\n );\n\n React.useEffect(() => {\n setForceUpdate();\n setDndChannelUuid({ index: -1, uuid: \"\" });\n }, [isVerticalMode]);\n\n const {\n isLayoutBottom,\n isLayoutRight,\n containerRef,\n scrollBoxRef,\n ...layoutProps\n } = useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n startDate,\n endDate,\n sidebarWidth,\n width,\n height,\n hourWidth,\n currentDate,\n hoursInDays,\n channelsNumber: channelsEpg.length,\n });\n\n React.useEffect(() => {\n return () => {\n resetLayoutScreenCloneElements();\n };\n }, []);\n\n const { scrollX, scrollY, layoutWidth, layoutHeight } = layoutProps;\n const { onScroll, onScrollToNow, onScrollTop, onScrollLeft, onScrollRight } =\n layoutProps;\n\n //-------- Variables --------\n const timelineHeight = getTimelineHeight(customTimelineHeight, mode);\n\n const channelsEpgSerialized = React.useMemo(\n () => JSON.stringify(channelsEpg),\n [channelsEpg]\n );\n const channelOverlapsCountSerialized = React.useMemo(\n () => channelOverlapsCount,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(channelOverlapsCount)]\n );\n const channels = React.useMemo(\n () => {\n // Convert channels\n return getConvertedChannels(\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel as number,\n channelsEpg,\n itemHeight,\n channelMapKey,\n channelOverlapsCount\n );\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel,\n channelsEpgSerialized,\n channelOverlapsCountSerialized,\n itemHeight,\n channelMapKey,\n newOverlaps,\n updateChannels,\n ]\n );\n\n const startDateTime = formatTime(startDate);\n const endDateTime = formatTime(endDate);\n const channelsSerialized = React.useMemo(\n () => JSON.stringify(channels),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n const overlapsSerialized = React.useMemo(\n () => overlaps,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(overlaps)]\n );\n\n const { programs, programOverlaps } = React.useMemo(\n () => {\n const data = getConvertedPrograms({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data: epg,\n channels,\n startDate: startDateTime,\n endDate: endDateTime,\n hoursInDays,\n itemHeight,\n hourWidth,\n });\n\n if (isOverlapEnabled) {\n const _overlaps = overlaps;\n\n const { overlaps: itemsOverlaps, channelOverlaps } = checkOverlaps(\n isMultirowsDnd,\n isVerticalMode,\n dndChannelUuid,\n _overlaps,\n data\n );\n\n setChannelOverlapsCount({\n ...channelOverlapsCount,\n ...channelOverlaps,\n });\n setNewOverlaps((prev) => prev + 1);\n setOverlaps(itemsOverlaps);\n return {\n programs: data,\n programOverlaps: itemsOverlaps,\n };\n }\n return { programs: data, programOverlaps: {} };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isMultirowsDnd,\n isOverlapEnabled,\n isVerticalMode,\n epg,\n channelsSerialized,\n overlapsSerialized,\n startDateTime,\n endDateTime,\n itemHeight,\n hourWidth,\n hoursInDays,\n programChannelMapKey,\n timezoneSerialized,\n update,\n ]\n );\n\n const gridItems = React.useMemo(\n () => {\n if (!grid.enabled) return [];\n return getConvertedGridItems({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources: dayWidthResourcesProps,\n daysResources,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n grid.enabled,\n channelsSerialized,\n mode.type,\n dayWidthResourcesProps.numberOfHoursInDay,\n dayWidthResourcesProps.numberOfMonths,\n daysResources.numberOfDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n isVerticalMode,\n ]\n );\n\n const theme: Theme = { ...defaultTheme, ...customTheme };\n\n // -------- Handlers --------\n const isProgramVisible = React.useCallback(\n (position: Position, overlapsCount: number) => {\n return getItemVisibility({\n isVerticalMode,\n itemOverscan,\n overlapsCount,\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, itemOverscan, layoutHeight, layoutWidth, scrollY, scrollX]\n );\n\n const isChannelVisible = React.useCallback(\n (position: Pick) =>\n getSidebarItemVisibility({\n isVerticalMode,\n itemOverscan,\n position,\n scrollX,\n scrollY,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n }),\n\n [isVerticalMode, itemOverscan, scrollY, scrollX, layoutHeight, layoutWidth]\n );\n\n const isTimelineVisible = React.useCallback(\n (position: Pick) =>\n getTimelineItemVisibility({\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n isVerticalMode,\n }),\n [scrollY, scrollX, layoutHeight, layoutWidth, isVerticalMode]\n );\n\n const dndOnSuccessCb = React.useCallback(\n (event: ProgramWithOmittedUuid) => dnd?.onDnDSuccess?.(event),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const resizeMouseUp = React.useCallback(\n (props: ResizeMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, startDate, hourWidth, programs]\n );\n\n const dragMouseUp = React.useCallback(\n async (props: DragMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const element = { ...epg[props.index] };\n\n const checkChannelTopOutRange = () => {\n const elementChannel = element.channelPosition;\n if (\n props.top > elementChannel.top + elementChannel.height - 1 ||\n props.top < elementChannel.top - 1\n ) {\n return true;\n }\n return false;\n };\n const checkChannelTopInRange = () => {\n const elementChannel = element.channelPosition;\n return elementChannel.top <= props.top &&\n props.top <= elementChannel.top + elementChannel.height\n ? true\n : false;\n };\n\n const isChannelTopInRange = checkChannelTopInRange();\n\n const isChannelTopOutRange = checkChannelTopOutRange();\n if (isMultirowsDnd && isChannelTopOutRange) {\n const newChannel = channels.find(\n (channel) => channel.position.top === props.top\n );\n const newChannelRange = channels.find(\n (channel) =>\n channel.position.top <= props.top &&\n props.top <= channel.position.top + channel.position.height\n );\n\n if (newChannel) {\n const newChannelEpgIndexes = getChannelEpgIndexes(\n newChannel[channelMapKey]\n );\n if (newChannelEpgIndexes) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n } else {\n setChannelEpgIndexes({\n uuid: newChannel[channelMapKey],\n first: props.index,\n last: props.index,\n });\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n }\n } else if (newChannelRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannelRange[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannelRange.index as number;\n epg[props.index].channelPosition = {\n top: newChannelRange.position.top,\n height: newChannelRange.position.height,\n left: newChannelRange.position.left,\n };\n }\n } else if (isMultirowsDnd && isChannelTopInRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n } else {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n }\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isMultirowsDnd, startDate, hourWidth, programs]\n );\n\n const handleGetLayoutData = React.useCallback(\n (events: ProgramItem[]) => events.map((event) => ({ ...event.data })),\n []\n );\n\n const handleOpenChannelGroupTree = React.useCallback(\n (data: ChannelWithPosition) => {\n channelsEpg[data.index].isOpen = !channelsEpg[data.index].isOpen;\n setForceChannelsUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n\n const handleGetDropItemData = React.useCallback(\n (data: ProgramWithOmittedUuid) => setUpdatedLayoutItem(data, mode.type),\n [mode.type]\n );\n\n const getEpgProps = () => ({\n isVerticalMode,\n isRTL,\n isSidebar,\n isLine,\n isTimeline,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n ref: containerRef,\n theme,\n globalStyles,\n });\n\n const getLayoutProps = () => ({\n isVerticalMode,\n isRTL,\n isBaseTimeFormat,\n isSidebar,\n isTimeline,\n isLine,\n isCurrentTime,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n isToday,\n isResize,\n programs,\n programOverlaps,\n channels,\n channelOverlapsCount,\n layerOverlapLevel: overlap.layerOverlapLevel as number,\n snap,\n grid,\n gridItems,\n dnd,\n startDate,\n endDate,\n hoursInDays,\n liveRefreshTime,\n scrollY,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n currentDate,\n mode,\n timezone,\n timelineDividers,\n overlapMode: overlap.mode,\n overlap,\n areas,\n openChannelGroupTree: handleOpenChannelGroupTree,\n onScroll,\n dragMouseUp,\n resizeMouseUp,\n ...daysResources,\n ...dayWidthResourcesProps,\n ref: scrollBoxRef,\n });\n\n return {\n isLayoutBottom,\n isLayoutRight,\n getEpgProps,\n getLayoutProps,\n getLayoutData: handleGetLayoutData,\n getDropItemData: handleGetDropItemData,\n onScrollToNow,\n onScrollTop,\n onScrollLeft,\n onScrollRight,\n scrollY,\n scrollX,\n };\n}\n","import React from \"react\";\n\n// Import helpers\nimport { useIsomorphicLayoutEffect } from \"../helpers\";\n\nexport function useInterval(callback: () => void, delay: number | null) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n const savedCallback = React.useRef(callback);\n\n useIsomorphicEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n React.useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n","import React from \"react\";\n\nexport function useIsTouchDevice() {\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n function checkDevice() {\n const iOS =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document);\n const androidOrWebOS = /Android|webOS/.test(navigator.userAgent);\n\n const isMobileDevice = iOS || androidOrWebOS;\n\n const isTouchScreen =\n \"ontouchstart\" in window ||\n navigator.maxTouchPoints > 0 ||\n (window.matchMedia &&\n window.matchMedia(\"(any-pointer: coarse)\").matches);\n\n setIsMobile(isMobileDevice || isTouchScreen);\n }\n\n checkDevice();\n\n window.addEventListener(\"resize\", checkDevice);\n\n return () => {\n window.removeEventListener(\"resize\", checkDevice);\n };\n }, []);\n\n return isMobile;\n}\n","import React, { useCallback, useRef } from \"react\";\nimport { format } from \"date-fns\";\n\n// Import interfaces\nimport { DragAndDrop, Mode, Program, Snap } from \"../helpers/interfaces\";\n\n// Import types\nimport {\n ProgramItem,\n BaseTimeFormat,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n calculateItemDragSinceTill,\n getLiveStatus,\n omit,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \"./useInterval\";\nimport { useDrag } from \"./useDrag\";\nimport { useResize } from \"./useResize\";\n\ninterface useProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n isResize?: boolean;\n startDate: DateTime;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n program: T;\n liveRefreshTime: number;\n minWidth?: number;\n itemHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n}\n\nexport function useProgram({\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat,\n startDate,\n contentHeight,\n dayWidth,\n itemHeight,\n hourWidth,\n minWidth = 200,\n program,\n liveRefreshTime,\n mode,\n snap,\n dnd,\n dragMouseUp,\n resizeMouseUp,\n}: useProgramProps) {\n const elementRef = useRef(null);\n\n const { data, position } = program;\n const { width, height } = position;\n const { since, till } = data;\n\n // Hooks\n const [isLive, setIsLive] = React.useState(() =>\n getLiveStatus(since, till)\n );\n\n const options = {\n isVerticalMode,\n initialPosition: position,\n data,\n dayWidth,\n contentHeight,\n elementRef,\n };\n\n const resizeOptions = {\n ...options,\n isResize,\n snapX: snap?.x,\n mouseUpCb: resizeMouseUp,\n };\n\n const {\n currentPositionX: resizeCurrentPositionX,\n width: resizeWidth,\n resizeEvents,\n } = useResize(resizeOptions);\n\n const dndMouseUpCb = React.useCallback(\n (props: DragMouseUp, data: Program) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const options = {\n ...newTime,\n id: props.id,\n data,\n };\n\n return dnd?.onDnDMouseUp?.(options) ?? true;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const dragOptions = {\n ...options,\n isDndEnabled: dnd.enabled ? !resizeEvents.resources.isResizing : false,\n isDndMutlirows: dnd.mode === \"multi-rows\",\n dndSnapX: snap?.x,\n dndSnapY: snap?.y,\n itemHeight,\n dndMouseUpCb,\n mouseUpCb: dragMouseUp,\n };\n\n const { currentPositionX, dndEvents } = useDrag(dragOptions);\n\n // Variables\n const newPosition = { ...omit(position, \"egdeEnd\") };\n const styles = { width, position: newPosition };\n\n const formatTime = (\n date: string | number | Date,\n formatType: string = TIME_FORMAT.HOURS_MIN\n ) => format(new Date(date), formatType).replace(/\\s/g, \"\");\n\n const set12HoursTimeFormat = () => {\n if (mode.type === \"week\" || mode.type === \"month\") {\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_DAY_MONTH;\n return TIME_FORMAT.DAY_MONTH;\n }\n\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_HOURS_TIME;\n return TIME_FORMAT.HOURS_MIN;\n };\n\n const getRTLSinceTime = (since: string | number | Date) =>\n isRTL ? till : since;\n\n const getRTLTillTime = (till: string | number | Date) =>\n isRTL ? since : till;\n\n // Effects\n useInterval(() => {\n const status = getLiveStatus(since, till);\n setIsLive(status);\n }, liveRefreshTime);\n\n const isMinWidth = isVerticalMode ? height > minWidth : width > minWidth;\n\n const getMouseEventTempTime = () => {\n const left = resizeEvents.isResizing\n ? resizeCurrentPositionX\n : currentPositionX;\n\n let options = {\n id: data.id,\n index: data.index,\n since: data.since,\n till: data.till,\n top: 0,\n left,\n initialPositionTop: position.top,\n initialPositionLeft: position.left,\n initialWidth: width,\n width: resizeWidth,\n hourWidth,\n };\n\n if (isVerticalMode) {\n options.initialPositionLeft = position.top;\n options.initialPositionTop = position.left;\n options.initialWidth = height;\n }\n\n const { since, till } = calculateItemDragSinceTill(options);\n const formatTempTime = (time: string) =>\n formatTime(getRTLSinceTime(time), set12HoursTimeFormat()).toLowerCase();\n\n return { since: formatTempTime(since), till: formatTempTime(till) };\n };\n\n const getMouseEvents = useCallback(\n () => ({\n ...resizeEvents.resources,\n ...dndEvents,\n }),\n [dndEvents, resizeEvents.resources]\n );\n const isMouseEvent =\n dndEvents.isDragging ||\n (resizeEvents.resources.isResizing as boolean) ||\n false;\n return {\n isMouseEvent,\n isLive,\n isMinWidth,\n isRTL,\n resizeEvents,\n formatTime,\n set12HoursTimeFormat,\n getMouseEvents,\n getMouseEventTempTime,\n getRTLSinceTime,\n getRTLTillTime,\n styles,\n };\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { Position, ResizeMouseUp } from \"../helpers/types\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface UseResizeProps {\n isVerticalMode: boolean;\n isResize: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n contentHeight: number;\n snapX?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: ResizeMouseUp) => void;\n}\n\ninterface DndPosition {\n x: number;\n y: number;\n width: number;\n}\n\nexport function useResize({\n isResize,\n isVerticalMode,\n data,\n dayWidth,\n contentHeight,\n initialPosition,\n snapX,\n elementRef,\n mouseUpCb,\n}: UseResizeProps) {\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n // State\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n const [isResizing, setIsResizing] = useState(false);\n const [isResizingLeft, setIsResizingLeft] = useState(false);\n const [isResizingRight, setIsResizingRight] = useState(false);\n\n const [mouseOffsetX, setMouseOffsetX] = useState(0);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till } = data;\n\n const initialWidth = useMemo(\n () => (isVerticalMode ? initialPosition.height : initialPosition.width),\n [isVerticalMode, initialPosition.height, initialPosition.width]\n );\n\n const handleMouseDown = useCallback(\n (left: boolean = false) =>\n (e: React.MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsResizing(true);\n\n const container = elementRef.current;\n if (!container) return;\n\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as React.MouseEvent;\n setMouseOffsetX(isVerticalMode ? event.pageY : event.pageX);\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n if (left) {\n setIsResizingLeft(true);\n setIsResizingRight(false);\n } else {\n setIsResizingLeft(false);\n setIsResizingRight(true);\n }\n },\n [isTouchDevice, isVerticalMode, coords, elementRef]\n );\n\n const handleMouseClick = useCallback(\n (e: React.MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n []\n );\n\n const handleMouseUp = useCallback(\n () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetHeight as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetWidth as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n width: position.width,\n initialPositionTop: initialPosition.top,\n initialPositionLeft: initialPosition.left,\n initialWidth: initialPosition.width,\n });\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.top !== coords.lastY ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n width: position.width,\n initialPositionTop: initialPosition.left,\n initialPositionLeft: initialPosition.top,\n initialWidth: initialPosition.height,\n });\n }\n setIsResizing(false);\n isClicked.current = false;\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isTouchDevice,\n isVerticalMode,\n id,\n index,\n since,\n till,\n initialWidth,\n initialPosition.left,\n initialPosition.width,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isResizing) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as MouseEvent;\n\n const element = elementRef.current;\n const elementRect = element.getBoundingClientRect();\n\n if (isVerticalMode) {\n const offsetHeight = elementRef.current?.offsetHeight as number;\n const nextY = event.clientY - coords.startY + coords.lastY;\n const snapYTop = snapX\n ? Math.round((event.pageY - mouseOffsetX) / snapX) * snapX\n : event.pageY - mouseOffsetX;\n const newHeightTop = initialWidth - snapYTop;\n const newHeightBottom = snapX\n ? Math.round((event.clientY - elementRect.top + 14) / snapX) * snapX\n : event.clientY - elementRect.top + 14;\n\n const isInLeftLayout = nextY >= 0 && nextY <= dayWidth - offsetHeight;\n // To be used in the future\n // const isInLeftLayout =\n // nextY >= 0 && nextY <= contentHeight - offsetHeight;\n const isInRightLayout = coords.lastY + newHeightBottom <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newHeightTop >= 50) {\n const top = initialPosition.top + snapYTop;\n element.style.height = `${newHeightTop}px`;\n element.style.top = `${top}px`;\n setPosition((prev) => ({ ...prev, y: top, width: newHeightTop }));\n } else if (\n isResizingRight &&\n isInRightLayout &&\n newHeightBottom >= 50\n ) {\n element.style.height = `${newHeightBottom}px`;\n element.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n y: initialPosition.top,\n width: newHeightBottom,\n }));\n }\n } else {\n const offsetWidth = elementRef.current?.offsetWidth as number;\n const nextX = event.clientX - coords.startX + coords.lastX;\n const snapXLeft = snapX\n ? Math.round((event.pageX - mouseOffsetX) / snapX) * snapX\n : event.pageX - mouseOffsetX;\n const newWidthLeft = initialWidth - snapXLeft;\n\n const newWidthRight = snapX\n ? Math.round((event.clientX - elementRect.left + 14) / snapX) * snapX\n : event.clientX - elementRect.left + 14;\n\n const isInLeftLayout = nextX >= 0 && nextX <= dayWidth - offsetWidth;\n const isInRightLayout = coords.lastX + newWidthRight <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newWidthLeft >= 50) {\n const left = initialPosition.left + snapXLeft;\n\n element.style.width = `${newWidthLeft}px`;\n element.style.left = `${left}px`;\n setPosition((prev) => ({ ...prev, x: left, width: newWidthLeft }));\n } else if (isResizingRight && isInRightLayout && newWidthRight >= 50) {\n element.style.width = `${newWidthRight}px`;\n setPosition((prev) => ({ ...prev, width: newWidthRight }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n\n if (isResize) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isResize,\n isVerticalMode,\n isResizing,\n isResizingLeft,\n isResizingRight,\n dayWidth,\n contentHeight,\n initialWidth,\n initialPosition.top,\n initialPosition.left,\n coords,\n snapX,\n mouseOffsetX,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isResize) {\n const getEvents = (isLeft?: boolean) => {\n if (isTouchDevice) {\n return {\n onTouchStart: handleMouseDown(isLeft),\n onTouchEnd: handleMouseUp,\n };\n }\n return {\n onMouseDown: handleMouseDown(isLeft),\n onMouseUp: handleMouseUp,\n };\n };\n\n return {\n width: position.width,\n initialWidth: isVerticalMode\n ? initialPosition.height\n : initialPosition.width,\n currentPositionX: isVerticalMode ? position.y : position.x,\n resizeEvents: {\n isResizing,\n resources: { ref: elementRef, isResizing },\n eventsLeft: {\n isResize,\n isVerticalMode,\n left: true,\n onClick: handleMouseClick,\n ...getEvents(true),\n },\n eventsRight: {\n isResize,\n isVerticalMode,\n onClick: handleMouseClick,\n ...getEvents(),\n },\n },\n };\n }\n\n return {\n currentPositionX: isVerticalMode\n ? initialPosition.top\n : initialPosition.left,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n resizeEvents: {\n isResizing: false,\n resources: {},\n eventsLeft: {},\n eventsRight: {},\n },\n };\n}\n","import { useRef, useState, useCallback, MouseEvent, useEffect } from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { DragMouseUp, Position } from \"../helpers/types\";\n// Import helpers\nimport { getDefaultDragProps } from \"../helpers\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface DndPosition {\n x: number;\n y: number;\n}\n\ninterface UseDragProps {\n isVerticalMode: boolean;\n isDndEnabled: boolean;\n isDndMutlirows: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n dndSnapX?: number;\n dndSnapY?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: DragMouseUp) => void;\n dndMouseUpCb?: (props: DragMouseUp, data: Program) => void;\n}\n\nexport function useDrag(props: UseDragProps) {\n const {\n isDndEnabled,\n isDndMutlirows,\n isVerticalMode,\n initialPosition,\n data,\n dayWidth,\n itemHeight,\n contentHeight,\n dndSnapX,\n dndSnapY = itemHeight,\n elementRef,\n mouseUpCb,\n dndMouseUpCb,\n } = props;\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n const [isDragging, setIsDragging] = useState(false);\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till, channelPosition } = data;\n\n const handleMouseDown = useCallback(\n (e: MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsDragging(true);\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as MouseEvent;\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n },\n [isTouchDevice, coords]\n );\n\n const handleMouseClick = useCallback((e: MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n }, []);\n\n const handleMouseUp = useCallback(\n async () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsYX = {\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n initialPositionLeft: initialPosition.left,\n initialPositionTop: initialPosition.top,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsYX, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsYX);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsY = {\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n initialPositionLeft: initialPosition.top,\n initialPositionTop: initialPosition.left,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsY, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsY);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n isClicked.current = false;\n setIsDragging(false);\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n initialPosition.top,\n initialPosition.left,\n coords,\n id,\n index,\n since,\n till,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: globalThis.MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isDndEnabled) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as globalThis.MouseEvent;\n\n const offsetWidth = (\n isVerticalMode\n ? elementRef.current?.offsetHeight\n : elementRef.current?.offsetWidth\n ) as number;\n const offsetHeight = (\n isVerticalMode\n ? elementRef.current?.offsetWidth\n : elementRef.current?.offsetHeight\n ) as number;\n const elementChannel = channelPosition;\n\n if (isVerticalMode) {\n const nextYValue = event.clientY - coords.startY + coords.lastY;\n const nextY = dndSnapX\n ? Math.round(nextYValue / dndSnapX) * dndSnapX\n : nextYValue;\n\n if (isDndMutlirows) {\n const nextX = event.clientX - coords.startX + coords.lastX;\n const nextXSnap = Math.round(nextX / dndSnapY) * dndSnapY;\n if (\n nextXSnap >= 0 &&\n nextXSnap <= contentHeight - offsetHeight &&\n nextY >= 0 &&\n nextY <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextXSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextXSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${initialPosition.left}px`;\n setPosition((prev) => ({\n ...prev,\n y: nextY,\n x: initialPosition.left,\n }));\n } else {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${nextXSnap}px`;\n setPosition((prev) => ({ ...prev, y: nextY, x: nextXSnap }));\n }\n }\n } else if (nextY >= 0 && nextY <= dayWidth - offsetWidth) {\n elementRef.current!.style.top = `${nextY}px`;\n setPosition((prev) => ({ ...prev, y: nextY }));\n }\n } else {\n const nextXValue = event.clientX - coords.startX + coords.lastX;\n const nextX = dndSnapX\n ? Math.round(nextXValue / dndSnapX) * dndSnapX\n : nextXValue;\n\n if (isDndMutlirows) {\n const nextY = event.clientY - coords.startY + coords.lastY;\n const nextYSnap = Math.round(nextY / dndSnapY) * dndSnapY;\n if (\n nextYSnap >= 0 &&\n nextYSnap <= contentHeight - offsetHeight &&\n nextX >= 0 &&\n nextX <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextYSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextYSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.left = `${nextX}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: nextX,\n y: initialPosition.top,\n }));\n } else {\n elementRef.current!.style.top = `${nextYSnap}px`;\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX, y: nextYSnap }));\n }\n }\n } else if (nextX >= 0 && nextX <= dayWidth - offsetWidth) {\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n if (isDndEnabled) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isDndEnabled,\n isVerticalMode,\n isDragging,\n isDndMutlirows,\n initialPosition.top,\n initialPosition.left,\n channelPosition,\n dndSnapX,\n dndSnapY,\n coords,\n dayWidth,\n itemHeight,\n contentHeight,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isDndEnabled) {\n const events = isTouchDevice\n ? {\n onTouchStart: handleMouseDown,\n onTouchEnd: handleMouseUp,\n }\n : { onMouseDown: handleMouseDown, onMouseUp: handleMouseUp };\n return {\n dndEvents: {\n isDragging,\n ref: elementRef,\n onClick: handleMouseClick,\n ...events,\n },\n currentPositionX: isVerticalMode ? position.y : position.x,\n };\n }\n\n return getDefaultDragProps(initialPosition.left);\n}\n","import { useMemo } from \"react\";\nimport { format } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n generateArray,\n generateTimelineSlots,\n HOURS_IN_DAY,\n getTimelineMonthsWidth,\n getFormattedWeekMonthDate,\n getTodayHoursInDays,\n} from \"../helpers\";\n\ntype UseTimelineProps = ITimeline;\n\nexport function useTimeline(props: UseTimelineProps) {\n const { isBaseTimeFormat, isRTL, isSidebar, isVerticalMode } = props;\n const { timezone, dayWidth, hourWidth, sidebarWidth, timelineHeight } = props;\n const {\n mode,\n startDate,\n endDate,\n hoursInDays,\n days,\n liveRefreshTime,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n renderCurrentTime,\n } = props;\n\n // Handlers\n const getTime = (index: number | string) => {\n if (typeof index === \"string\") return { time: index, isNewDay: true };\n\n const date = new Date();\n const baseDate = format(date, TIME_FORMAT.DATE);\n const time = index < 10 ? `0${index}` : index;\n\n if (isBaseTimeFormat) {\n const date = new Date(`${baseDate}T${time}:00:00`);\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return { time: baseFormat, isNewDay: false };\n }\n\n return { time: `${time}:00`, isNewDay: false };\n };\n\n const formatWeekMonthDate = (date: string) =>\n getFormattedWeekMonthDate({ date, mode, isBaseTimeFormat });\n\n const getDayMonthName = (date: string) => {\n const dateFormat =\n mode.type === \"week\" ? TIME_FORMAT.DAY : TIME_FORMAT.YEAR;\n return format(toDate(date), dateFormat);\n };\n\n const getCurrentTimeProps = () => ({\n isBaseTimeFormat,\n isVerticalMode,\n isRTL,\n timezone,\n mode,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n timelineHeight,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n renderCurrentTime,\n });\n\n const getTimelineProps = () => ({\n isSidebar,\n isVerticalMode,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n });\n\n // Variables\n const timeSlots = useMemo(() => {\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n\n return generateTimelineSlots(mode.type, options);\n }, [\n mode.type,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n ]);\n const isWeekMode = mode.type === \"week\";\n const isMonthMode = mode.type === \"month\";\n const isWeekMonthMode = isWeekMode || isMonthMode;\n const isTodayInHoursInDays = getTodayHoursInDays(hoursInDays);\n const areHoursInDays = hoursInDays.length > 0;\n\n const weekDayWidth = hourWidth * HOURS_IN_DAY;\n const monthsWidth = useMemo(\n () => getTimelineMonthsWidth({ months, weekDayWidth }),\n [months, weekDayWidth]\n );\n const dividers = generateArray(timelineDividers);\n\n return {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time: timeSlots,\n weekDayWidth,\n monthsWidth,\n timelineHeight,\n dividers,\n timelineDividers,\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n };\n}\n","import React from \"react\";\nimport { startOfDay } from \"date-fns\";\n\n// Import interfaces\nimport { HoursInDayDiffTime, Timezone } from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport {\n SECONDS_IN_MINUTE,\n HOUR_IN_MINUTES,\n getPositionX,\n getTodayHoursInDays,\n getHoursInDaysPositionX,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \".\";\nimport { getNewDateTz } from \"../utils/time\";\n\ninterface useLineProps {\n timezone: Timezone;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n liveRefreshTime: number;\n}\n\nexport function useLine({\n timezone,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n}: useLineProps) {\n const [showLine, setShowLine] = React.useState(true);\n const [positionX, setPositionX] = React.useState(getInitialState);\n\n // Variables\n const timezoneSerialized = JSON.stringify(timezone);\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const liveIntervalTime = liveRefreshTime * 1000;\n const isDayEnd = positionX <= dayWidth;\n const isScrollX = React.useMemo(\n () => (isDayEnd ? liveIntervalTime : null),\n [isDayEnd, liveIntervalTime]\n );\n\n // Helpers\n function getInitialState() {\n if (hoursInDays.length > 0)\n return getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n\n const positionX = getPositionX(\n startOfDay(new Date(startDate)),\n new Date(),\n startDate,\n endDate,\n hourWidth\n );\n return positionX + sidebarWidth;\n }\n\n // Effects\n useInterval(() => {\n const offset = hourWidth / HOUR_IN_MINUTES;\n const step = offset / SECONDS_IN_MINUTE;\n const positionOffset = step * liveRefreshTime;\n\n if (hoursInDays.length > 0) {\n const idCurrentDay = getTodayHoursInDays(hoursInDays);\n\n if (idCurrentDay) {\n setShowLine(true);\n\n setPositionX((prev) => prev + positionOffset);\n } else {\n setShowLine(false);\n }\n } else {\n setPositionX((prev) => prev + positionOffset);\n }\n }, isScrollX);\n\n React.useEffect(() => {\n if (hoursInDays.length > 0) {\n const newPositionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n setPositionX(newPositionX);\n } else {\n const date = new Date(startDate);\n const positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n const newPositionX = positionX + sidebarWidth;\n setPositionX(newPositionX);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n startDate,\n endDate,\n sidebarWidth,\n hourWidth,\n hoursInDaysSerialized,\n timezoneSerialized,\n ]);\n\n return { showLine, positionX };\n}\n","import React, { useCallback } from \"react\";\n// Types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n\ninterface useGridCellItemProps {\n onItemDrop?: GridEvent;\n}\n\nexport function useGridExternalDnD({ onItemDrop }: useGridCellItemProps = {}) {\n const dropAreaRef = React.useRef(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n const handleDrop = useCallback(\n (\n item: {\n position: Position;\n channel: ChannelWithPosition;\n },\n index: number\n ) =>\n (e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n\n const droppedItemId = e.dataTransfer.getData(\"text/plain\");\n const droppedItem = document.getElementById(droppedItemId);\n\n if (droppedItem) {\n // Loop through all attributes\n const attributes = droppedItem.attributes;\n const dataAttributes = {} as Record;\n\n for (let i = 0; i < attributes.length; i++) {\n const attribute = attributes[i];\n if (attribute.name.startsWith(\"data-\")) {\n dataAttributes[attribute.name.replace(\"data-\", \"\")] =\n attribute.value;\n }\n }\n\n // Call the onDrop callback with the dropped item, attributes, and position\n onItemDrop?.(item, index, dataAttributes)();\n }\n }\n },\n\n [onItemDrop]\n );\n\n const handleDragEnter = useCallback((e: React.DragEvent) => {\n if (e) {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(true);\n }\n }\n }, []);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n }\n }, []);\n\n return {\n isDragOver,\n dropAreaRef,\n onDrop: handleDrop,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { GridDividerItemProps } from \"../helpers/interfaces\";\n// Import hooks\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridDivider } = GridStyled;\n\nexport function GridDividerItem({\n index,\n item,\n dividerProps,\n}: GridDividerItemProps) {\n const { styles, props } = dividerProps;\n const { onItemClick, onItemDrop, ...restProps } = props;\n const { isDragOver, onDrop, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD({\n onItemDrop,\n });\n return (\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { GridCell } from \"../helpers/interfaces\";\n// Import types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n// Import helpers\nimport { generateArray } from \"../helpers\";\n// Import styles\nimport { GridStyled } from \"../styles\";\nimport { GridDividerItem } from \"./GridDividerItem\";\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n\nconst { GridItem } = GridStyled;\n\ninterface GridCellItemProps {\n isVerticalMode: boolean;\n isHoverHighlight: boolean | undefined;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isItemClickable: boolean;\n isDayMode: boolean;\n item: { position: Position; channel: ChannelWithPosition };\n index: number;\n channelOverlapsCount: Record;\n hourWidth: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n onItemClick: GridEvent;\n onItemDrop: GridEvent;\n}\n\nexport function GridCellItem({\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n}: GridCellItemProps) {\n const overlapsCount = channelOverlapsCount[item.channel.uuid] ?? 1;\n const isVisible = isProgramVisible(item.position, overlapsCount);\n\n const { isDragOver, dropAreaRef, onDrop, onDragEnter, onDragLeave } =\n useGridExternalDnD({\n onItemDrop,\n });\n\n if (!isVisible) return null;\n\n const gridItemClickProps = isDayMode\n ? { isItemClickable: false }\n : { onClick: onItemClick(item), isItemClickable };\n\n const dividerProps = {\n styles: {\n left: (index: number) => index * (hourWidth / timelineDividers),\n width: hourWidth / timelineDividers,\n },\n props: {\n isVerticalMode,\n isHoverHighlight: isHoverHighlight as boolean,\n isItemClickable,\n onItemClick,\n onItemDrop,\n },\n };\n\n const gridItemDnDProps = isDayMode\n ? {}\n : {\n isDragOver: isDragOver,\n onDragEnter,\n onDragLeave,\n onDrop: onDrop(item, index),\n };\n\n if (renderGridCell) {\n const id = item.channel.uuid + index;\n return renderGridCell({\n isDayMode,\n id,\n index,\n item,\n isHoverHighlight: isHoverHighlight as boolean,\n timelineDividers,\n gridDividerProps: dividerProps,\n timelineDividerArray: generateArray(timelineDividers),\n gridItemClickProps,\n gridItemDnDProps,\n });\n }\n\n return (\n \n {isDayMode &&\n generateArray(timelineDividers).map((_, index) => (\n \n ))}\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport {\n Mode,\n Grid as IGrid,\n HoursInDayDiffTime,\n GridCell,\n} from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import hooks\nimport { useGrid } from \"../hooks\";\nimport { GridCellItem } from \"./GridCellItem\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridContainer } = GridStyled;\n\ninterface GridProps {\n isVerticalMode: boolean;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isBaseTimeFormat: BaseTimeFormat;\n channelOverlapsCount: Record;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n}\n\nexport function Grid({\n isVerticalMode,\n isProgramVisible,\n channelOverlapsCount,\n grid,\n gridItems,\n mode,\n hourWidth,\n timelineDividers,\n renderGridCell,\n ...rest\n}: GridProps) {\n const { onItemClick, onItemDrop } = useGrid({\n isVerticalMode,\n grid,\n mode,\n hourWidth,\n timelineDividers,\n ...rest,\n });\n\n const isDayMode = mode.type === \"day\";\n const isHoverHighlight = grid.hoverHighlight;\n const isItemClickable = !!grid.onGridItemClick;\n\n const renderGridItem = (\n item: { position: Position; channel: ChannelWithPosition },\n index: number\n ) => {\n const props = {\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n };\n\n // @ts-ignore\n return ;\n };\n\n return (\n \n {gridItems.map((item, index) => renderGridItem(item, index))}\n \n );\n}\n","import { useCallback } from \"react\";\n// Import interfaces\nimport { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import helpers\nimport { getClickGridItemData } from \"../helpers\";\n\ninterface UseGridProps {\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n}\n\nexport function useGrid({\n mode,\n grid,\n timelineHeight,\n sidebarWidth,\n hourWidth,\n dayWidth,\n ...rest\n}: UseGridProps) {\n const {\n isVerticalMode,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n } = rest;\n\n const handleItemClick = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number\n ) =>\n () => {\n getClickGridItemData({\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n const handleItemDrop = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number,\n dataAttributes?: Record\n ) =>\n () => {\n getClickGridItemData({\n isDrop: true,\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n return {\n onItemClick: handleItemClick,\n onItemDrop: handleItemDrop,\n };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport {\n Area,\n Grid as IGrid,\n HoursInDayDiffTime,\n Line as ILine,\n Mode,\n Overlap,\n ProgramOverlaps,\n DragAndDrop,\n Timezone,\n Snap,\n GridCell,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n Timeline as ITimeline,\n CurrentTimeIndicator,\n} from \"../helpers/interfaces\";\nimport {\n ProgramItem,\n ProgramWithPosition,\n ChannelWithPosition,\n DateTime,\n Position,\n BaseTimeFormat,\n DragMouseUp,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n deleteLayoutScreenCloneElement,\n getChannelsContentHeight,\n getProgramOptions,\n isFutureTime,\n setLayoutScreenCloneElement,\n} from \"../helpers\";\n\n// Import styles\nimport { EpgStyled } from \"../styles\";\n\n// Import components\nimport { Areas, Channels, Line, Program, Timeline } from \"../components\";\nimport { LayoutBg } from \"../styles/Epg.styles\";\nimport { Grid } from \"./Grid\";\n\ninterface LayoutProps {\n isToday: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isResize?: boolean;\n programs: ProgramItem[];\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n channels: ChannelWithPosition[];\n channelOverlapsCount: Record;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n scrollY: number;\n dayWidth: number;\n hourWidth: number;\n days: string[];\n months: string[];\n currentDate: string;\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n sidebarWidth: number;\n timelineHeight: number;\n itemHeight: number;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n overlapMode: Overlap[\"mode\"];\n timelineDividers: number;\n timezone: Timezone;\n areas: Area[];\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n overlap: Overlap;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isChannelVisible: (position: Pick) => boolean;\n isTimelineVisible: (position: Pick) => boolean;\n dragMouseUp: (position: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n onScroll: (\n e: React.UIEvent & { target: Element }\n ) => void;\n onLayoutBgClick?: () => void;\n renderProgram?: (v: {\n program: ProgramItem;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n liveRefreshTime: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n contentHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n }) => React.ReactNode;\n renderChannel?: (v: { channel: ChannelWithPosition }) => React.ReactNode;\n renderTimeline?: (v: ITimeline) => React.ReactNode;\n renderLine?: (v: ILine) => React.ReactNode;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n renderGridCell?: (v: GridCell) => React.ReactElement;\n}\n\nconst { ScrollBox, Content } = EpgStyled;\n\nexport const Layout = React.forwardRef(\n (props, scrollBoxRef) => {\n const { startDate, endDate, hoursInDays, liveRefreshTime, scrollY } = props;\n\n const {\n channels,\n channelOverlapsCount,\n programs,\n programOverlaps,\n layerOverlapLevel,\n } = props;\n\n const {\n timezone,\n areas,\n grid,\n gridItems,\n mode,\n dnd,\n snap,\n overlap,\n overlapMode,\n timelineDividers,\n } = props;\n\n const {\n dayWidth,\n hourWidth,\n monthWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n } = props;\n\n const {\n days,\n months,\n numberOfHoursInDay,\n numberOfDays,\n numberOfMonths,\n offsetStartHoursRange,\n } = props;\n\n const {\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isToday,\n isBaseTimeFormat = false,\n isCurrentTime = false,\n isResize = false,\n } = props;\n\n const {\n dragMouseUp,\n resizeMouseUp,\n openChannelGroupTree,\n onLayoutBgClick,\n onScroll,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n renderProgram,\n renderChannel,\n renderTimeline,\n renderLine,\n renderCurrentTime,\n renderGridCell,\n } = props;\n\n // Calculate the height of the content\n const channelsLength = channels.length;\n const programsOverlapsLength = Object.keys(programOverlaps).length;\n const programOverlapsSerialized = JSON.stringify(programOverlaps);\n const contentHeight = React.useMemo(\n () => {\n if (programsOverlapsLength > 0) {\n return getChannelsContentHeight(channels);\n }\n return channelsLength * itemHeight;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n channelsLength,\n programsOverlapsLength,\n itemHeight,\n programOverlapsSerialized,\n ]\n );\n\n const showAreas = areas.length > 0;\n const isFuture = isFutureTime(endDate);\n\n const renderPrograms = (program: ProgramWithPosition, index: number) => {\n const { position, data } = program;\n const overlapsCount = channelOverlapsCount[program.data.channelUuid] ?? 1;\n const isVisible =\n data.fixedVisibility ?? isProgramVisible(position, overlapsCount);\n\n if (isVisible) {\n setLayoutScreenCloneElement(program, index);\n const options = getProgramOptions({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n overlap,\n });\n const props = {\n isRTL,\n isResize,\n isVerticalMode,\n isBaseTimeFormat,\n startDate,\n program: options,\n liveRefreshTime,\n snap,\n mode,\n dnd,\n dayWidth,\n contentHeight,\n itemHeight,\n hourWidth,\n dragMouseUp,\n resizeMouseUp,\n };\n if (renderProgram) return renderProgram(props);\n\n return (\n \n );\n }\n deleteLayoutScreenCloneElement(program);\n return null;\n };\n\n const renderTopbar = () => {\n const timeProps = {\n isVerticalMode,\n isSidebar,\n isRTL,\n isTimelineVisible,\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n timezone,\n startDate,\n endDate,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n offsetStartHoursRange,\n monthWidth,\n numberOfHoursInDay,\n numberOfMonths,\n numberOfDays,\n hourWidth,\n days,\n months,\n hoursInDays,\n liveRefreshTime,\n mode,\n timelineDividers,\n renderCurrentTime,\n };\n if (renderTimeline) {\n return renderTimeline(timeProps);\n }\n return ;\n };\n\n return (\n \n {grid.enabled && (\n \n )}\n {onLayoutBgClick && (\n \n )}\n {isLine && isToday && isFuture && (\n \n )}\n\n {showAreas && (\n \n )}\n {isTimeline && renderTopbar()}\n {isSidebar && (\n \n )}\n\n \n {programs.map((program, index) =>\n renderPrograms(program as ProgramWithPosition, index)\n )}\n \n \n );\n }\n);\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n DragAndDrop,\n Mode,\n Program as ProgramType,\n Snap,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n BaseTimeFormat,\n DateTime,\n DragMouseUp,\n ResizeMouseUp,\n} from \"../helpers/types\";\nimport { ProgramItem } from \"../helpers/types\";\n\n// Import styles\nimport { ProgramStyled } from \"../styles\";\n\n// Import hooks\nimport { useProgram } from \"../hooks\";\n\ninterface ProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isResize?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n program: T;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n onClick?: (v: ProgramType) => void;\n}\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramResizeHandle,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n} = ProgramStyled;\n\nexport function Program({\n isVerticalMode,\n program,\n onClick,\n ...rest\n}: ProgramProps) {\n const {\n isRTL,\n isLive,\n isMinWidth,\n isMouseEvent,\n styles,\n resizeEvents,\n formatTime,\n getMouseEvents,\n getMouseEventTempTime,\n set12HoursTimeFormat,\n getRTLSinceTime,\n getRTLTillTime,\n } = useProgram({\n isVerticalMode,\n program,\n ...rest,\n });\n\n const { data } = program;\n const { image, title, since, till } = data;\n\n const handleOnContentClick = () => onClick?.(data);\n\n const sinceTime = formatTime(\n getRTLSinceTime(since),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tillTime = formatTime(\n getRTLTillTime(till),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tempTime = getMouseEventTempTime();\n\n return (\n \n \n \n \n \n {isLive && isMinWidth && (\n \n )}\n \n \n {title}\n \n \n {isMouseEvent ? (\n <>\n {tempTime.since} - {tempTime.till}\n \n ) : (\n <>\n {sinceTime} - {tillTime}\n \n )}\n \n \n \n \n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { ChannelItem, ChannelWithPosition } from \"../helpers/types\";\n\n// Import helpers\nimport {\n getChannelGroupTreeProps,\n getChannelVerticalPosition,\n} from \"../helpers\";\n\n// Import styles\nimport { ChannelsStyled } from \"../styles\";\n\n// Import Components\nimport { Channel } from \"../components\";\n\ninterface ChannelsProps {\n isVerticalMode: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n isChannelVisible: (position: any) => boolean;\n channels: ChannelWithPosition[];\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n scrollY: number;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n renderChannel?: (v: ChannelItem) => React.ReactNode;\n}\n\nconst { Box } = ChannelsStyled;\n\nexport function Channels(props: ChannelsProps) {\n const {\n channels,\n scrollY,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n openChannelGroupTree,\n renderChannel,\n } = props;\n const { isVerticalMode, isRTL, isTimeline, isChannelVisible } = props;\n\n const renderChannels = (channel: ChannelWithPosition) => {\n const channelWithPosition = getChannelVerticalPosition(\n channel,\n isVerticalMode\n );\n const isVisible = isChannelVisible(channelWithPosition.position);\n const newChannel = getChannelGroupTreeProps(\n channelWithPosition\n ) as ChannelWithPosition;\n\n const groupEventProps = newChannel.groupTree\n ? { onOpenGroupTree: openChannelGroupTree }\n : {};\n\n if (isVisible) {\n if (renderChannel) {\n return renderChannel({\n channel: newChannel,\n isVerticalMode,\n isRTL,\n ...groupEventProps,\n });\n }\n\n return (\n \n );\n }\n return null;\n };\n\n return (\n \n {channels.map(renderChannels)}\n \n );\n}\n","// Import types\nimport { getChannelsGroupTree } from \"./layout\";\nimport { ChannelWithPosition } from \"./types\";\n\nexport const getChannelVerticalPosition = (\n channel: ChannelWithPosition,\n isVerticalMode: boolean\n) => {\n if (isVerticalMode) {\n return {\n ...channel,\n position: {\n ...channel.position,\n left: channel.position.top,\n width: channel.position.height,\n },\n };\n }\n\n return channel;\n};\n\nexport const getChannelGroupTreeProps = (channel: ChannelWithPosition) => {\n const data = {\n ...channel,\n nestedChildren: [],\n isFirstNestedChild: false,\n isLastNestedChild: false,\n };\n\n const getChanelGroupTree = (uuid?: string) =>\n channelsGroupTree[uuid ?? \"\"] ?? null;\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = getChanelGroupTree(channel.uuid);\n const channelNestedGroupTree = getChanelGroupTree(\n channel.parentChannelUuid ?? \"\"\n );\n\n if (channel.parentChannelUuid && channelNestedGroupTree) {\n const isFirstNestedChild =\n channelNestedGroupTree.nestedChildren?.at(0) === channel.uuid;\n const isLastNestedChild =\n channelNestedGroupTree.nestedChildren?.at(-1) === channel.uuid;\n return {\n ...data,\n isFirstNestedChild,\n isLastNestedChild,\n };\n } else if (channelGroupTree) {\n return {\n ...data,\n nestedChildren: channelGroupTree.nestedChildren,\n };\n }\n\n return data;\n};\n","import * as React from \"react\";\n\n// Import interfaces\nimport { ChannelWithPosition } from \"../helpers/types\";\n\n// Import styles\nimport { ChannelStyled } from \"../styles\";\n\ninterface ChannelProps {\n isVerticalMode: boolean;\n channel: T;\n onOpenGroupTree?: (data: ChannelWithPosition) => void;\n onClick?: (v: ChannelWithPosition) => void;\n}\n\nconst { ChannelWrapper, ChannelLogo } = ChannelStyled;\n\nexport function Channel({\n isVerticalMode,\n channel,\n onOpenGroupTree,\n onClick,\n ...rest\n}: ChannelProps) {\n const { position, logo, groupTree } = channel;\n\n return (\n onOpenGroupTree?.(channel) ?? onClick?.(channel)}\n {...position}\n {...rest}\n >\n \n \n );\n}\n","import * as React from \"react\";\n\n// Import types\nimport {\n CurrentTimeIndicator,\n HoursInDayDiffTime,\n Mode,\n Timezone,\n} from \"../helpers/interfaces\";\nimport { DateTime } from \"../helpers/types\";\n\n// Import styles\nimport { CurrentTimeStyled } from \"../styles\";\n\n// Import hooks\nimport { useLine, useCurrentTime } from \"../hooks\";\n\ninterface CurrentTimeProps {\n isBaseTimeFormat?: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n timezone: Timezone;\n mode: Mode;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n dayWidth: number;\n timelineHeight: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n}\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nexport function CurrentTime(props: CurrentTimeProps) {\n const { isVerticalMode, isBaseTimeFormat, isRTL } = props;\n const { timezone, mode, liveRefreshTime, startDate, endDate, hoursInDays } =\n props;\n const { dayWidth, timelineHeight, hourWidth, sidebarWidth } = props;\n const { renderCurrentTime } = props;\n\n const { showLine, positionX } = useLine({\n timezone,\n hoursInDays,\n startDate,\n endDate,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n });\n\n const { time, getCurrentTimeStyles } = useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n });\n\n if (!showLine) return null;\n\n const styles = getCurrentTimeStyles();\n\n if (renderCurrentTime) {\n return renderCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n isRTL,\n time,\n styles,\n });\n }\n\n return (\n \n \n {time}\n \n \n );\n}\n","import React from \"react\";\nimport { format } from \"date-fns\";\n// Import types\nimport { BaseTimeFormat } from \"../helpers/types\";\n// Import helpers\nimport { Mode, TIME_FORMAT } from \"../helpers\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import styles\nimport { boxStyles } from \"../styles/CurrentTime.styles\";\n\ninterface useCurrentTimeProps {\n isVerticalMode?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n mode: Mode;\n positionX: number;\n timelineHeight: number;\n sidebarWidth: number;\n}\n\nexport function useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n}: useCurrentTimeProps) {\n const formatTime = () => {\n const date = getNewDateTz();\n\n if (mode.type === \"month\") {\n if (isBaseTimeFormat) return format(date, TIME_FORMAT.BASE_DAY_MONTH);\n return format(date, TIME_FORMAT.DAY_MONTH);\n }\n\n const baseTime = format(date, TIME_FORMAT.HOURS_MIN);\n\n if (isBaseTimeFormat) {\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return baseFormat;\n }\n\n return baseTime;\n };\n\n const handleGetCurrentTimeStyles = () => {\n const {\n position,\n top,\n height,\n width: styleWidth,\n } = boxStyles({ width: timelineHeight });\n const width = isVerticalMode ? styleWidth : \"auto\";\n const commonStyles = {\n position: position,\n width,\n height: height,\n };\n\n if (isVerticalMode) {\n return {\n position: {\n top: positionX - sidebarWidth,\n left: top,\n ...commonStyles,\n },\n };\n }\n\n return {\n position: {\n top: top,\n left: positionX - sidebarWidth,\n ...commonStyles,\n },\n };\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const time = React.useMemo(() => formatTime(), [positionX, isBaseTimeFormat]);\n\n return { time, getCurrentTimeStyles: handleGetCurrentTimeStyles };\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import styles\nimport { TimelineStyled } from \"../styles\";\n\n// Import components\nimport { CurrentTime } from \"./CurrentTime\";\n\n// Import hooks\nimport { useTimeline } from \"../hooks\";\nimport {\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} from \"../styles/Timeline.styles\";\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDividers,\n TimelineDivider,\n} = TimelineStyled;\n\nexport function Timeline(props: ITimeline) {\n const {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time,\n ...rest\n } = useTimeline(props);\n const {\n timelineHeight,\n weekDayWidth,\n monthsWidth,\n dividers,\n timelineDividers,\n } = rest;\n const {\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n } = rest;\n\n const {\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n isRTL,\n isTimelineVisible,\n isVerticalMode,\n } = props;\n const { mode } = props;\n const { hourWidth } = props;\n\n // Handlers\n const renderDay = (item: string | number, index: number) => {\n const { isNewDay, time } = getTime(item);\n const position = { left: hourWidth * index, width: hourWidth };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n\n return (\n \n \n {time}\n \n \n {renderDividers(isNewDay)}\n \n \n );\n };\n const renderWeekMonth = (item: string, index: number) => {\n const width = isMonthMode ? monthsWidth[index].width : weekDayWidth;\n const left = isMonthMode ? monthsWidth[index].left : width * index;\n const position = {\n left,\n width,\n };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n const isModernStyle = mode.style === \"modern\";\n return (\n \n \n {isModernStyle && {getDayMonthName(item)}}\n {formatWeekMonthDate(item)}\n \n \n );\n };\n\n const renderDividers = (isNewDay: boolean) =>\n dividers.map((_, index) => (\n \n ));\n\n const renderTimelineItems = (item: string | number, index: number) => {\n return isWeekMonthMode\n ? renderWeekMonth(item as string, index)\n : renderDay(item, index);\n };\n\n return (\n \n {isCurrentTime && isToday && }\n {time.map((item, index) => renderTimelineItems(item, index))}\n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n HoursInDayDiffTime,\n Line as ILine,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport { Layers, getLineStyles } from \"../helpers\";\n\n// Import styles\nimport { LineStyled } from \"../styles\";\n\n// Import components\nimport { useLine } from \"../hooks/useLine\";\n\ninterface LineProps {\n isTimeline: boolean;\n isVerticalMode: boolean;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n hoursInDays: HoursInDayDiffTime[];\n timezone: Timezone;\n renderLine?: (v: ILine) => React.ReactNode;\n}\n\nconst { lineStyles, LineBox } = LineStyled;\n\nexport function Line({\n isTimeline,\n isVerticalMode,\n height,\n renderLine,\n ...rest\n}: LineProps) {\n const { positionX, showLine } = useLine(rest);\n\n if (!showLine) return null;\n\n const position = {\n height,\n left: positionX,\n zIndex: Layers.Line,\n };\n\n const styles = getLineStyles({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n });\n\n if (renderLine)\n return <>{renderLine({ styles, isVerticalMode, isTimeline })};\n\n return (\n \n );\n}\n","import { Layers } from \"./enums\";\n\ninterface LineStyles {\n isVerticalMode: boolean;\n isTimeline: boolean;\n lineStyles: {\n position: string;\n top: number;\n width: number;\n };\n position: {\n height: number;\n left: number;\n zIndex: Layers;\n };\n}\nexport const getLineStyles = ({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n}: LineStyles) => {\n if (isVerticalMode) {\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: position.left,\n left: isTimeline ? lineStyles.top : 0,\n width: position.height,\n height: lineStyles.width,\n },\n };\n }\n\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: isTimeline ? lineStyles.top : 0,\n width: lineStyles.width,\n },\n };\n};\n","import * as React from \"react\";\n\n// Import styles\nimport { LoaderStyled } from \"../styles\";\n\nconst { Box, Shape } = LoaderStyled;\n\nconst Element = ({\n width,\n color,\n animate,\n marginRight,\n transition,\n}: {\n width: number;\n color: string;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n marginRight?: number;\n}) => (\n \n);\n\nexport function Loader() {\n return (\n \n
\n \n \n \n
\n \n \n \n
\n \n \n
\n \n
\n );\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { Area, AreaItem } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import hooks\nimport { useAreas } from \"../hooks/useAreas\";\n\n// Import styles\nimport { AreaStyled } from \"../styles\";\n\ninterface AreasProps {\n isVerticalMode: boolean;\n areas: Area[];\n height: number;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\ntype AreaAnnotationProps = Pick & {\n isLeft: boolean;\n text: string;\n styles: AreaItem[\"areaBgStyles\"];\n};\n\nconst { AreaAnnotation, AreaBg, AreaFiled } = AreaStyled;\n\nexport function Areas({ isVerticalMode, ...props }: AreasProps) {\n const { data } = useAreas(props);\n\n const renderAreaAnnotation = (props: AreaAnnotationProps) => {\n const { isLeft, text } = props;\n const { areaFieldStyles, styles } = props;\n const className = isLeft ? \"left\" : \"right\";\n return (\n \n {text}\n \n );\n };\n\n const renderArea = (props: AreaItem, index: number) => {\n const { showArea, annotations, onClick } = props;\n const { areaBgStyles = {}, areaFieldStyles } = props;\n if (!showArea) return null;\n\n const annotationProps = {\n areaFieldStyles,\n styles: annotations?.styles ?? {},\n };\n\n return (\n \n \n {annotations && (\n <>\n {annotations.textStart &&\n renderAreaAnnotation({\n isLeft: true,\n text: annotations.textStart,\n ...annotationProps,\n })}\n {annotations.textEnd &&\n renderAreaAnnotation({\n isLeft: false,\n text: annotations.textEnd,\n ...annotationProps,\n })}\n \n )}\n \n );\n };\n\n return (\n \n {data.map((props, index) => renderArea(props, index))}\n \n );\n}\n","import { useMemo } from \"react\";\n// Import interfaces\nimport { Area } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import helpers\nimport { getAreasFields } from \"../helpers/areas\";\n\ninterface UseAreasProps {\n areas: Area[];\n hourWidth: number;\n sidebarWidth: number;\n height: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport function useAreas(props: UseAreasProps) {\n const { startDate, endDate, areas } = props;\n const { hourWidth, sidebarWidth, timelineHeight, height } = props;\n\n const areasSerialized = JSON.stringify(areas);\n const data = useMemo(\n () => {\n return areas.map((area) => {\n const options = {\n area,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n };\n return getAreasFields(options);\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n areasSerialized,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n ]\n );\n\n return { data };\n}\n","import { isWithinInterval } from \"date-fns\";\nimport { getPositionX } from \"./epg\";\nimport { Area } from \"./interfaces\";\nimport { DateTime } from \"./types\";\n\ninterface AreasData {\n area: Area;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport const getAreasFields = ({\n area,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n height,\n}: AreasData) => {\n const areaStartDate = area.startDate;\n const areaEndDate = area?.endDate ?? areaStartDate;\n\n const left =\n getPositionX(startDate, areaStartDate, startDate, endDate, hourWidth) +\n sidebarWidth;\n\n const width = getPositionX(\n areaStartDate,\n areaEndDate,\n startDate,\n endDate,\n hourWidth\n );\n\n const intervalOptions = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n const isStartAreaDateValid = isWithinInterval(\n new Date(areaStartDate),\n intervalOptions\n );\n\n const showArea = isStartAreaDateValid;\n const areaFieldStyles = {\n positionX: left,\n width,\n height,\n timelineHeight,\n };\n return {\n ...area,\n showArea,\n areaFieldStyles,\n areaBgStyles: area.styles,\n };\n};\n","import React from \"react\";\nimport { ThemeProvider, Global } from \"@emotion/react\";\n// Import interfaces\nimport { Theme } from \"./helpers/interfaces\";\n// Import styles\nimport { globalStyles, EpgStyled } from \"./styles\";\n// Import components\nimport { Loader } from \"./components\";\nimport { useGridExternalDnD } from \"./hooks\";\n\ninterface EpgProps {\n width?: number;\n height?: number;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isSidebar: boolean;\n isTimeline?: boolean;\n isLoading?: boolean;\n children: React.ReactNode;\n loader?: React.ReactNode;\n theme: Theme;\n globalStyles?: string;\n sidebarWidth: number;\n timelineHeight: number;\n}\n\nconst { Container, Wrapper, Box } = EpgStyled;\n\nexport const Epg = React.forwardRef(\n (\n {\n children,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n theme,\n globalStyles: customGlobalStyles,\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLoading = false,\n loader: LoaderComponent,\n ...rest\n },\n containerRef\n ) => {\n const renderLoader = () => LoaderComponent ?? ;\n const epgGlobalStyles = customGlobalStyles ?? globalStyles;\n\n const blankSpaceStyles = isVerticalMode\n ? { height: sidebarWidth, width: timelineHeight }\n : { width: sidebarWidth, height: timelineHeight };\n\n return (\n \n \n \n \n {isSidebar && isTimeline && (\n \n )}\n {isLoading && renderLoader()}\n {children}\n \n \n \n );\n }\n);\n\ninterface WrapperDnDProps {\n children: React.ReactNode;\n}\nfunction WrapperDnD({ children }: WrapperDnDProps) {\n const { isDragOver, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD();\n\n React.useEffect(() => {\n const gridElement = document.querySelector(\".planby-grid\") as HTMLElement;\n if (gridElement) {\n if (isDragOver) {\n gridElement.style.zIndex = \"5\";\n } else {\n gridElement.style.zIndex = \"1\";\n }\n }\n }, [isDragOver]);\n\n return (\n \n {children}\n \n );\n}\n","import {\n ChannelStyled,\n CurrentTimeStyled,\n ProgramStyled,\n TimelineStyled,\n GridStyled,\n} from \"./styles\";\n\n// Import interfaces\nimport {\n Line as ILine,\n Theme as ITheme,\n Program as IProgram,\n Timeline as ITimeline,\n CurrentTimeIndicator as ICurrentTimeIndicator,\n Mode,\n GridItemProps as IGridItemProps,\n GridDividerItemProps as IGridDividerItemProps,\n DragAndDrop,\n Snap,\n GridCell as IGridCell,\n} from \"./helpers/interfaces\";\nimport {\n ProgramItem as ProgramItemType,\n ChannelItem as IChannelItem,\n ChannelWithPosition,\n BaseTimeFormat as BaseTimeFormatType,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"./helpers/types\";\n\n// Types\nexport type Channel = ChannelWithPosition;\nexport type ChannelItem = IChannelItem;\nexport type CurrentTimeIndicator = ICurrentTimeIndicator;\nexport type Line = ILine;\nexport type Program = IProgram;\nexport type ProgramItem = {\n program: ProgramItemType;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormatType;\n liveRefreshTime: number;\n mode: Mode;\n startDate: DateTime;\n snap?: Snap;\n dnd: DragAndDrop;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n hourWidth: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n};\nexport type GridItemProps = IGridItemProps;\nexport type GridDividerItemProps = IGridDividerItemProps;\n\nexport type Timeline = ITimeline;\nexport type Theme = ITheme;\nexport type GridCell = Omit;\n\n// Components\nexport { Layout, CurrentTime } from \"./components\";\nexport { Epg } from \"./Epg\";\nexport { useEpg, useProgram, useTimeline, useGridExternalDnD } from \"./hooks\";\n\n// Styles\nconst { ChannelWrapper: ChannelBox, ChannelLogo } = ChannelStyled;\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nconst { GridItem, GridDivider } = GridStyled;\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n} = ProgramStyled;\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDivider: TimelineDividerStyled,\n TimelineDividers,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} = TimelineStyled;\n\nexport {\n // Channel\n ChannelBox,\n ChannelLogo,\n // CurrentTime\n CurrentTimeBox,\n CurrentTimeContent,\n // Program\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n // Timeline\n TimelineWrapper,\n TimelineBox,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n TimelineTime,\n TimelineDividers,\n // Grid\n GridItem,\n GridDivider,\n};\n\nexport const TimelineDivider = TimelineDividerStyled;\n","import React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { startOfDay } from \"date-fns\";\n// Import interfaces\nimport { HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime, InitialScrollPositions } from \"../helpers/types\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import helpers\nimport {\n DEBOUNCE_WAIT,\n DEBOUNCE_WAIT_MAX,\n getHoursInDaysPositionX,\n getPositionX,\n useIsomorphicLayoutEffect,\n} from \"../helpers\";\n\ninterface useLayoutProps {\n isVerticalMode: boolean;\n isToday: boolean;\n isInitialScrollToNow: boolean;\n initialScrollPositions: InitialScrollPositions;\n height?: number;\n width?: number;\n hourWidth: number;\n sidebarWidth: number;\n channelsNumber: number;\n startDate: DateTime;\n endDate: DateTime;\n currentDate: string;\n hoursInDays: HoursInDayDiffTime[];\n}\n\nexport function useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n height,\n width,\n channelsNumber,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n hoursInDays,\n}: useLayoutProps) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n\n const containerRef = React.useRef(null);\n const scrollBoxRef = React.useRef(null);\n //-------- State --------\n const [scrollY, setScrollY] = React.useState(0);\n const [scrollX, setScrollX] = React.useState(0);\n const [layoutWidth, setLayoutWidth] = React.useState(width as number);\n const [layoutHeight, setLayoutHeight] = React.useState(\n height as number\n );\n //-------- Variables --------\n const scrollBoxInnerHeight = scrollBoxRef?.current?.scrollHeight;\n\n const initialScrollPositionsSerialized = JSON.stringify(\n initialScrollPositions\n );\n\n // -------- Handlers --------\n const handleScrollDebounced = useDebouncedCallback(\n (value) => {\n setScrollY(value.y);\n setScrollX(value.x);\n },\n DEBOUNCE_WAIT,\n { maxWait: DEBOUNCE_WAIT_MAX }\n );\n\n const handleOnScroll = React.useCallback(\n (e: React.UIEvent & { target: Element }) => {\n handleScrollDebounced({ y: e.target.scrollTop, x: e.target.scrollLeft });\n },\n [handleScrollDebounced]\n );\n\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const areHoursInDays = React.useMemo(\n () => hoursInDays.length > 0,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [hoursInDaysSerialized]\n );\n const handleOnScrollToNow = React.useCallback(\n () => {\n if (scrollBoxRef?.current && isToday) {\n const clientWidth = (width ??\n containerRef.current?.clientWidth) as number;\n\n const date = new Date(startDate);\n let positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n\n if (areHoursInDays) {\n positionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n });\n }\n\n const scrollNow = positionX - clientWidth / 2 + sidebarWidth;\n\n if (isVerticalMode) {\n scrollBoxRef.current.scrollTop = scrollNow + hourWidth;\n } else {\n scrollBoxRef.current.scrollLeft = scrollNow;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n isToday,\n areHoursInDays,\n width,\n hourWidth,\n sidebarWidth,\n startDate,\n endDate,\n ]\n );\n\n const handleScrollToInitialPositions = React.useCallback(\n () => {\n const isInitialScrollPosition = Object.keys(\n initialScrollPositions\n ).length;\n if (scrollBoxRef?.current && isInitialScrollPosition) {\n const { top = 0, left = 0 } = initialScrollPositions;\n scrollBoxRef.current.scrollTo({ behavior: \"smooth\", top, left });\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [initialScrollPositionsSerialized, scrollBoxInnerHeight]\n );\n\n const handleOnScrollTop = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const top = scrollBoxRef.current.scrollTop + value;\n scrollBoxRef.current.scrollTop = top;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollRight = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const right = scrollBoxRef.current.scrollLeft + value;\n scrollBoxRef.current.scrollLeft = right;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollLeft = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const left = scrollBoxRef.current.scrollLeft - value;\n scrollBoxRef.current.scrollLeft = left;\n }\n },\n [hourWidth]\n );\n\n const handleResizeDebounced = useDebouncedCallback(\n () => {\n if (containerRef?.current && !width) {\n const container = containerRef.current;\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n },\n DEBOUNCE_WAIT * 4,\n { maxWait: DEBOUNCE_WAIT_MAX * 4 }\n );\n\n const handleCheckIsLayoutBottom = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the bottom in scrollBox in vertical mode\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n } else {\n // Check if the scroll is at the bottom in scrollBox\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, scrollX, scrollY, channelsNumber]\n );\n\n const handleCheckIsLayoutRight = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the right in scrollBox in vertical mode\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n } else {\n // Check if the scroll is at the right in scrollBox\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollX, scrollY, channelsNumber]\n );\n\n // -------- Effects --------\n useIsomorphicEffect(() => {\n if (containerRef?.current) {\n const container = containerRef.current;\n if (!width) {\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n if (!height) {\n const { clientHeight } = container;\n setLayoutHeight(clientHeight);\n }\n }\n }, [height, width, startDate]);\n\n useIsomorphicEffect(() => {\n const isInitialScrollPosition = Object.keys(initialScrollPositions).length;\n if (scrollBoxRef?.current) {\n if (isInitialScrollPosition) {\n handleScrollToInitialPositions();\n } else if (isInitialScrollToNow) {\n handleOnScrollToNow();\n }\n }\n }, [isToday, isInitialScrollToNow, initialScrollPositionsSerialized]);\n\n useIsomorphicEffect(() => {\n window.addEventListener(\"resize\", handleResizeDebounced);\n return () => {\n window.removeEventListener(\"resize\", handleResizeDebounced);\n };\n }, [width]);\n\n return {\n containerRef,\n scrollBoxRef,\n scrollX,\n scrollY,\n layoutWidth,\n layoutHeight,\n isLayoutBottom: handleCheckIsLayoutBottom,\n isLayoutRight: handleCheckIsLayoutRight,\n onScroll: handleOnScroll,\n onScrollToNow: handleOnScrollToNow,\n onScrollTop: handleOnScrollTop,\n onScrollLeft: handleOnScrollLeft,\n onScrollRight: handleOnScrollRight,\n };\n}\n"],"names":["Layers","globalStyles","css","_templateObject","_taggedTemplateLiteralLoose","generateArray","num","Array","fill","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","getDate","date","Date","abs","Math","convertDate","newDate","replace","toDate","switchPosition","programPosition","_extends","top","left","width","height","LayoutScreenCloneCache","setChannel","event","data","channelUuid","updateLayoutScreenCloneElement","channelEpgIndexesCache","setChannelEpgIndexes","_ref","uuid","_ref$first","first","_ref$last","last","getChannelEpgIndexes","channelsGroupTreeCache","getChannelsGroupTree","timezoneOptionsCache","enabled","zone","mode","getTimezoneOptionsCache","getNewDateTimeTz","timezone","utcToZonedTime","getTime","getNewDateTz","formatTz","formatTime","zonedTime","tzFormat","timeZone","fnsFormat","zonedDateTimeToUtc","zonedTimeToUtc","getItemDiffWidth","diff","hourWidth","getPositionX","since","till","startDate","endDate","isTomorrow","isYesterday","diffTime","differenceInMinutes","roundToMinutes","getLiveStatus","nowTime","sinceTime","sinceTill","format","formatTimeTz","roundToNearestMinutes","getTodayHoursInDays","hoursInDays","filter","item","isWithinInterval","start","startTimeHour","end","endTimeHour","length","getHoursInDaysPositionX","_ref3","sidebarWidth","cb","day","startOfDay","prevItemDiffInHours","generateDayHours","isBaseTimeFormat","dayIndex","days","from","_","i","timeFormat","parse","generateTimelineSlots","modeType","options","rest","_objectWithoutPropertiesLoose","_excluded","generateWeekTimelineSlots","generateMonthTimelineSlots","getDayHoursTimeSlots","getDayTimeSlots","numberOfDays","reduce","acc","hours","hoursInDay","sliced","slice","startTime","endTime","concat","_ref2","numberOfHoursInDay","offsetStartHoursRange","map","_ref4","months","numberOfMonths","getTimelineMonthsWidth","_ref5","weekDayWidth","month","index","getDaysInMonth","push","offsetLeft","getOverlapCount","program","overlapArray","_step","sinceB","tillB","overlapCount","_iterator","_createForOfIteratorHelperLoose","done","otherProgram","value","id","sinceOther","tillOther","getOverlapProgramOptions","channelOverlapsCount","_program","position","channelPosition","overlapTimes","newProgram","overlapTop","newChannelOverlapsCount","_step2","levelTop","overlapsOnLevel","overlapsOnLevelUp","_iterator2","overlapPosition","setChannelOverlapCount","programA","channelOverlaps","getOverlaps","isVerticalMode","itemOverlaps","programs","_step3","overlaps","_iterator3","_loop","_programA$data","sinceA","tillA","parentChannelUuid","_programA$data2","channelGroupTree","isOpen","_loop2","programB","j","overlapLinkedId","isElementAExist","some","el","isElementBExist","channelOverlapsLength","_getOverlapProgramOpt","_getOverlapProgramOpt2","_getOverlapProgramOpt3","calculateItemDragSinceTill","props","initialPositionLeft","initialWidth","minDiff","startDateTime","diffHours","tillDiffHours","getResizeTill","newSince","newTill","utcDateSince","utcDateTill","toISOString","getFormattedDndDate","addMinutes","getClickGridItemData","newPosition","isDrop","_ref2$isDrop","grid","dayWidth","timelineDividers","dataAttributes","channel","isDayMode","type","edgeEnd","timeSlots","itemClickProps","gridItemProps","getDividerGridProps","onGridItemDrop","onGridItemClick","floor","dayTimeSlots","time","sinceTimeInHours","tillTimeInHours","newTillMin","Container","_styled","target","Wrapper","name","styles","ScrollBox","theme","primary","isRTL","scrollbar","thumb","bg","_ref6","white","_ref7","_ref8","_ref9","_ref10","Box","_ref11","_ref11$top","_ref12","EpgCornerBox","_ref13","_ref13$left","Content","_ref14","isSidebar","_ref15","contentHeight","_ref16","_ref17","_ref18","isTimeline","timelineHeight","LayoutBg","_ref19","_ref20","_ref21","_ref22","bottom","_templateObject2","_templateObject3","Sidebar","ChannelWrapper","groupTree","ChannelLogo","ProgramContent","Program","gradient","blue","isLive","ProgramFlex","Elipsis","ProgramTitle","grey","ProgramText","text","ProgramImage","ProgramStack","ProgramBox","isDragging","isResizing","ProgramResizeHandle","green","isResize","TimelineTime","isWeekMonthMode","isNewDay","teal","TimelineWeekMonthDate","styleType","TimelineDividers","_templateObject4","TimelineDivider","timeline","divider","_templateObject5","TimelineWrapper","_templateObject6","Timeline","_templateObject7","_templateObject8","TimelineBox","_templateObject9","_templateObject10","_templateObject11","isCurrentTime","areHoursInDays","isTodayInHoursInDays","isToday","TimelineWeekMonthBox","_templateObject12","_templateObject13","_templateObject14","lineStyles","LineBox","zIndex","loader","Loader","Shape","color","marginRight","animate","keyframes","right","transition","duration","_transition$ease","ease","_transition$delay","delay","boxStyles","_temp","CurrentTimeBox","CurrentTimeContent","AreaFiled","isClickable","Area","positionX","AreaBg","AreaAnnotation","_ref2$isLeft","isLeft","GridContainer","GridItem","isHoverHighlight","highlight","isDragOver","isItemClickable","GridDivider","600","900","300","100","200","purple","pink","border","500","defaultStartDateTime","startOfToday","defaultMode","style","defaultTimezone","defaultOverlap","layerOverlapLevel","defaultGrid","hoverHighlight","defaultDnd","useInterval","callback","useIsomorphicEffect","savedCallback","React","useRef","current","setInterval","clearInterval","useIsTouchDevice","_React$useState","useState","isMobile","setIsMobile","checkDevice","iOS","test","navigator","userAgent","includes","document","androidOrWebOS","isMobileDevice","isTouchScreen","maxTouchPoints","matchMedia","matches","addEventListener","removeEventListener","useProgram","_ref$isVerticalMode","_ref$isRTL","_ref$isResize","itemHeight","_ref$minWidth","minWidth","liveRefreshTime","snap","dnd","dragMouseUp","resizeMouseUp","elementRef","setIsLive","initialPosition","_useResize","snapX","mouseUpCb","isClicked","isMouseMove","isTouchDevice","_useState","isPreventScroll","setIsPreventScroll","_useState2","setIsResizing","_useState3","isResizingLeft","setIsResizingLeft","_useState4","isResizingRight","setIsResizingRight","_useState5","mouseOffsetX","setMouseOffsetX","_useState6","x","y","setPosition","_useState7","startY","lastY","startX","lastX","coords","setCoords","useMemo","handleMouseDown","useCallback","e","stopPropagation","touches","pageY","pageX","clientY","clientX","handleMouseClick","preventDefault","handleMouseUp","_elementRef$current","_elementRef$current2","_elementRef$current3","_elementRef$current4","_elementRef$current5","_elementRef$current6","offsetTop","offsetHeight","offsetWidth","initialPositionTop","setTimeout","initialPositionSerialized","JSON","stringify","handleMouseMove","element","elementRect","getBoundingClientRect","_elementRef$current7","nextY","snapYTop","round","newHeightTop","newHeightBottom","isInRightLayout","prev","_elementRef$current8","nextX","snapXLeft","newWidthLeft","newWidthRight","mouseMoveEvent","mouseUpEvent","passive","undefined","getEvents","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","currentPositionX","resizeEvents","resources","ref","eventsLeft","onClick","eventsRight","useResize","resizeCurrentPositionX","resizeWidth","dndMouseUpCb","newTime","_dnd$onDnDMouseUp","onDnDMouseUp","_useDrag","isDndEnabled","isDndMutlirows","dndSnapX","_props$dndSnapY","dndSnapY","setIsDragging","_asyncToGenerator","_regeneratorRuntime","mark","_callee","optionsYX","optionsY","wrap","_context","next","sent","stop","elementChannel","nextYValue","nextXSnap","nextXValue","nextYSnap","dndEvents","useDrag","obj","result","_len","arguments","_key","_i","_props","property","omit","formatType","set12HoursTimeFormat","getRTLSinceTime","status","isMinWidth","getMouseEvents","isMouseEvent","getMouseEventTempTime","_calculateItemDragSin","formatTempTime","toLowerCase","getRTLTillTime","useTimeline","renderCurrentTime","isMonthMode","monthsWidth","dividers","formatWeekMonthDate","dateFormat","getFormattedWeekMonthDate","baseDate","getDayMonthName","getTimelineProps","getCurrentTimeProps","useLine","showLine","setShowLine","_React$useState2","setPositionX","timezoneSerialized","hoursInDaysSerialized","liveIntervalTime","isDayEnd","positionOffset","newPositionX","useGridExternalDnD","onItemDrop","dropAreaRef","setIsDragOver","handleDrop","droppedItemId","dataTransfer","getData","droppedItem","getElementById","attributes","attribute","startsWith","handleDragEnter","handleDragLeave","onDrop","onDragEnter","onDragLeave","GridStyled","GridDividerItem","dividerProps","onItemClick","restProps","_useGridExternalDnD","className","key","GridCellItem","renderGridCell","overlapsCount","_channelOverlapsCount","isVisible","isProgramVisible","gridItemClickProps","gridItemDnDProps","gridDividerProps","timelineDividerArray","Grid","gridItems","_useGrid","useGrid","renderGridItem","EpgStyled","Layout","forwardRef","scrollBoxRef","timeProps","scrollY","channels","programOverlaps","areas","overlap","overlapMode","monthWidth","_props$isVerticalMode","_props$isRTL","_props$isSidebar","_props$isTimeline","_props$isLine","isLine","_props$isBaseTimeForm","_props$isCurrentTime","_props$isResize","openChannelGroupTree","onLayoutBgClick","onScroll","isChannelVisible","isTimelineVisible","renderProgram","renderChannel","renderTimeline","renderLine","channelsLength","programsOverlapsLength","Object","keys","programOverlapsSerialized","getChannelsContentHeight","showAreas","isFuture","Line","Areas","Channels","_data$fixedVisibility","fixedVisibility","setLayoutScreenCloneElement","linkedProgramOverlaps","programOverlapIndex","findIndex","overlapProgram","newTop","isOverlap","_program$position","getProgramOptions","deleteLayoutScreenCloneElement","renderPrograms","ProgramStyled","_useProgram","image","title","tillTime","tempTime","src","alt","ChannelsStyled","channelWithPosition","getChannelVerticalPosition","newChannel","_channelNestedGroupTr","_channelNestedGroupTr2","nestedChildren","isFirstNestedChild","isLastNestedChild","getChanelGroupTree","_channelsGroupTree","channelsGroupTree","channelNestedGroupTree","_channel$parentChanne","at","getChannelGroupTreeProps","groupEventProps","onOpenGroupTree","Channel","ChannelStyled","logo","_onOpenGroupTree","CurrentTimeStyled","CurrentTime","_useLine","_useCurrentTime","baseTime","getCurrentTimeStyles","_boxStyles","commonStyles","useCurrentTime","TimelineStyled","_useTimeline","isModernStyle","renderWeekMonth","_getTime","renderDividers","renderDay","renderTimelineItems","LineStyled","getLineStyles","LoaderStyled","Element","display","justifyContent","marginBottom","AreaStyled","areasSerialized","_useAreas","area","areaStartDate","areaEndDate","_area$endDate","intervalOptions","showArea","areaFieldStyles","areaBgStyles","getAreasFields","renderAreaAnnotation","Fragment","annotations","_props$areaBgStyles","annotationProps","_annotations$styles","textStart","textEnd","renderArea","Epg","containerRef","children","customGlobalStyles","_ref$isSidebar","_ref$isTimeline","_ref$isLoading","isLoading","LoaderComponent","blankSpaceStyles","ThemeProvider","Global","WrapperDnD","gridElement","querySelector","onDragOver","onDragLeaveCapture","_props$isInitialScrol","isInitialScrollToNow","channelsEpg","epg","_props$startDate","startDateInput","_props$endDate","endDateInput","_props$hoursInDays","customHoursInDays","_props$initialScrollP","initialScrollPositions","_props$liveRefreshTim","_props$timelineDivide","_props$mode","customMode","_props$overlap","customOverlap","_props$timezone","_props$areas","_props$grid","_props$dnd","customTheme","_props$dayWidth","customDayWidth","_props$sidebarWidth","_props$timelineHeight","customTimelineHeight","_props$itemHeight","_props$itemOverscan","itemOverscan","_props$channelMapKey","channelMapKey","_props$programChannel","programChannelMapKey","isOverlapEnabled","isMultirowsDnd","_getTimeRangeDates","endDateValue","addDays","getTimeRangeDates","serializedHoursInDays","itemsDiffInHours","diffLeft","prevItem","differenceInHours","diffInHours","Number","getNumberOfHoursInDays","_React$useMemo","startDateFormat","endDateFormat","modeIncrementValue","diffDays","differenceInDays","startToEndInterval","eachDayOfInterval","eachMonthOfInterval","dates","isTodayFns","currentDate","indexOf","getDayResources","daysResources","_React$useMemo2","defaultOptions","endDateTime","console","error","endOfMonthTime","startOfMonth","addMonths","numberOfMonthInMonthMode","differenceInMonths","numberOfDaysInWeekMode","newDayWidthInWeekMode","curr","newDayWidth","getDayWidthResources","dayWidthResourcesProps","_excluded2","_React$useReducer","useReducer","update","setForceUpdate","_React$useReducer2","updateChannels","setForceChannelsUpdate","dndChannelUuid","setDndChannelUuid","newOverlaps","setNewOverlaps","_React$useState3","setOverlaps","_React$useState4","setChannelOverlapsCount","setTimezoneOptionsCache","_useLayout","channelsNumber","setScrollY","scrollX","setScrollX","layoutWidth","setLayoutWidth","layoutHeight","setLayoutHeight","scrollBoxInnerHeight","_scrollBoxRef$current","scrollHeight","initialScrollPositionsSerialized","handleScrollDebounced","useDebouncedCallback","maxWait","handleOnScroll","scrollTop","scrollLeft","handleOnScrollToNow","_containerRef$current","clientWidth","scrollNow","handleScrollToInitialPositions","isInitialScrollPosition","_initialScrollPositio","_initialScrollPositio2","scrollTo","behavior","handleOnScrollTop","handleOnScrollRight","handleOnScrollLeft","handleResizeDebounced","DEBOUNCE_WAIT","DEBOUNCE_WAIT_MAX","handleCheckIsLayoutBottom","offset","_scrollBoxRef$current2","scrollWidth","_scrollBoxRef$current3","clientHeight","handleCheckIsLayoutRight","_scrollBoxRef$current4","_scrollBoxRef$current5","container","isLayoutBottom","isLayoutRight","onScrollToNow","onScrollTop","onScrollLeft","onScrollRight","useLayout","layoutProps","_excluded3","getTimelineHeight","channelsEpgSerialized","channelOverlapsCountSerialized","isStackMode","isLayerMode","setChannelGroupTree","nestedChildUuid","_channel$nestedChildr","setChannelGroupTreeNestedChildren","largestSizeLength","overlapsLength","channelIndex","getChannelPosition","getConvertedChannels","channelsSerialized","overlapsSerialized","_React$useMemo3","arr","_arr","_channels$channelInde3","_channels$channelInde","_channels$channelInde2","programData","isYesterdayTime","getProgramPosition","newPositionTop","find","getProgramPositionWithDayHours","getConvertedPrograms","_checkOverlaps","channelEpgIndexes","_extends2","slicedOverlapsPrograms","dndChannelUuidIndex","_Object$keys","_overlaps$next","_overlaps$next2","slicedPrograms","getChannelEpdIndexesProgramSliced","_step4","Map","_iterator4","has","set","get","fromEntries","getChannelProgramSliced","_Object$keys2","checkOverlaps","itemsOverlaps","dayWidthResources","numberOfSlots","flatMap","getGridItemPosition","getConvertedGridItems","defaultTheme","containerHeight","containerWidth","_overlapsCount","getItemVisibility","getSidebarItemVisibility","getTimelineItemVisibility","dndOnSuccessCb","onDnDSuccess","checkChannelTopOutRange","isChannelTopInRange","isChannelTopOutRange","newChannelRange","_x","apply","handleGetLayoutData","events","handleOpenChannelGroupTree","getEpgProps","getLayoutProps","getLayoutData","getDropItemData","parts","generateRandomHex","random","substring","endOfDay","setUpdatedLayoutItem"],"mappings":"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"} \ No newline at end of file diff --git a/dist/planby-pro.esm.js b/dist/planby-pro.esm.js new file mode 100644 index 0000000..8aed901 --- /dev/null +++ b/dist/planby-pro.esm.js @@ -0,0 +1,5691 @@ +import { css, keyframes, ThemeProvider, Global } from '@emotion/react'; +import _styled from '@emotion/styled/base'; +import React__default, { useLayoutEffect, useEffect, useRef, useState, useCallback, useMemo, createElement, Fragment } from 'react'; +import { startOfMonth, addMonths, differenceInMonths, differenceInDays, differenceInHours, startOfDay, format, eachDayOfInterval, eachMonthOfInterval, isToday, endOfDay, addDays, getTime as getTime$1, differenceInMinutes, isWithinInterval, roundToNearestMinutes, parse, getDaysInMonth, addMinutes, startOfToday } from 'date-fns'; +import { toDate, utcToZonedTime, format as format$1, zonedTimeToUtc } from 'date-fns-tz'; +import { useDebouncedCallback } from 'use-debounce'; + +function _regeneratorRuntime() { + _regeneratorRuntime = function () { + return e; + }; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function (t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function (t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(typeof e + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function (e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function () { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function (e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function (t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function (t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + catch: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function (e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} +function _taggedTemplateLiteralLoose(strings, raw) { + if (!raw) { + raw = strings.slice(0); + } + strings.raw = raw; + return strings; +} +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); +} +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} + +var _templateObject; +var globalStyles = /*#__PURE__*/css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n .planby {\n font-family: \"Inter\", system-ui, -apple-system,\n /* Firefox supports this but not yet system-ui */ \"Segoe UI\", Roboto,\n Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"; /* 2 */\n }\n"]))); + +var Layers; +(function (Layers) { + Layers[Layers["Sidebar"] = 9] = "Sidebar"; + Layers[Layers["EpgCornerBox"] = 10] = "EpgCornerBox"; + Layers[Layers["Line"] = 9] = "Line"; + Layers[Layers["Loader"] = 12] = "Loader"; + Layers[Layers["Program"] = 1] = "Program"; + Layers[Layers["Timeline"] = 9] = "Timeline"; + Layers[Layers["Area"] = 2] = "Area"; +})(Layers || (Layers = {})); + +// Dimensions +var DAY_WIDTH = 7200; +var HOURS_IN_DAY = 24; +var HOUR_IN_MINUTES = 60; +var SECONDS_IN_MINUTE = 60; +var TIMELINE_HEIGHT = 60; +var TIMELINE_HEIGHT_MODERN_STYLE = 80; +var TIMELINE_DIVIDERS = 4; +var SIDEBAR_WIDTH = 100; +var ITEM_HEIGHT = 80; +var ITEM_OVERSCAN = ITEM_HEIGHT; +// Debounce +var DEBOUNCE_WAIT = 100; +var DEBOUNCE_WAIT_MAX = 100; +// Live refresh time +var LIVE_REFRESH_TIME = 120; +var TIME_FORMAT = { + DEFAULT: "yyyy-MM-dd HH:mm:ss", + DATE: "yyyy-MM-dd", + DAY: "EEE", + DAY_DATE: "dd", + MONTH: "LLL", + DAY_MONTH: "dd.MM", + BASE_DAY_MONTH: "MM/dd", + HOURS_MIN: "HH:mm", + BASE_HOURS_TIME: "h:mm a", + YEAR: "yyyy" +}; +// Overlap mode +var OVERLAP_MODES = { + STACK: "stack", + LAYER: "layer" +}; +// Timezone mode +var TIMEZONE_MODES = { + UTC_TO_ZONED_TIME: "utc" +}; + +var _excluded = ["isVerticalMode", "program", "overlap"]; +var omit = function omit(obj) { + var result = _extends({}, obj); + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + for (var _i = 0, _props = props; _i < _props.length; _i++) { + var property = _props[_i]; + delete result[property]; + } + return result; +}; +var generateArray = function generateArray(num) { + return new Array(num).fill(""); +}; +var getOverlapProgramOptions = function getOverlapProgramOptions(_ref) { + var isVerticalMode = _ref.isVerticalMode, + program = _ref.program, + programOverlaps = _ref.programOverlaps, + layerOverlapLevel = _ref.layerOverlapLevel, + overlapMode = _ref.overlapMode; + var data = program.data, + position = program.position; + var linkedProgramOverlaps = programOverlaps[data.channelUuid]; + if (linkedProgramOverlaps) { + var programOverlapIndex = linkedProgramOverlaps.findIndex(function (element) { + return element.data.id === data.id; + }); + var overlapProgram = linkedProgramOverlaps[programOverlapIndex]; + if (overlapProgram) { + if (overlapMode === OVERLAP_MODES.LAYER && overlapProgram.data.channelPosition.top < overlapProgram.position.top) { + var newTop = overlapProgram.position.top * layerOverlapLevel; + if (overlapProgram.data.channelPosition.top !== 0) { + newTop = overlapProgram.data.channelPosition.top + Math.abs(overlapProgram.data.channelPosition.top - overlapProgram.position.top) * layerOverlapLevel; + } + var _position = _extends({}, overlapProgram.position, { + top: newTop + }); + if (isVerticalMode) { + _position = switchPosition(_extends({}, overlapProgram.position, { + top: newTop + })); + } + return _extends({}, program, { + isOverlap: true, + position: _position + }); + } + return _extends({}, program, { + position: isVerticalMode ? switchPosition(overlapProgram.position) : overlapProgram.position + }); + } else { + return _extends({}, program, { + position: position + }); + } + } + var width = position.width, + height = position.height, + top = position.top, + left = position.left; + return _extends({}, program, { + position: { + width: width, + height: height, + top: top, + left: left + } + }); +}; +var getProgramOptions = function getProgramOptions(_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + program = _ref2.program, + overlap = _ref2.overlap, + rest = _objectWithoutPropertiesLoose(_ref2, _excluded); + if (overlap.enabled) { + return getOverlapProgramOptions(_extends({ + isVerticalMode: isVerticalMode, + program: program, + overlap: overlap + }, rest)); + } + var _program$position = program.position, + width = _program$position.width, + height = _program$position.height, + top = _program$position.top, + left = _program$position.left; + return _extends({}, program, { + position: { + width: width, + height: height, + top: top, + left: left + } + }); +}; +var useIsomorphicLayoutEffect = function useIsomorphicLayoutEffect() { + return typeof window !== "undefined" ? useLayoutEffect : useEffect; +}; +var getDate = function getDate(date) { + return new Date(date); +}; +var abs = function abs(num) { + return Math.abs(num); +}; +var getDayWidthResources = function getDayWidthResources(_ref3) { + var dayWidth = _ref3.dayWidth, + startDate = _ref3.startDate, + endDate = _ref3.endDate, + hoursInDays = _ref3.hoursInDays, + modeType = _ref3.modeType; + var defaultOptions = { + hourWidth: 0, + numberOfMonths: 0, + numberOfHoursInDay: 0, + monthWidth: 0, + offsetStartHoursRange: 0, + dayWidth: 0 + }; + var startDateTime = new Date(startDate); + var endDateTime = new Date(endDate); + if (endDateTime < startDateTime) { + console.error("Invalid endDate property. Value of endDate must be greater than startDate. Props: startDateTime: " + startDateTime + ", endDateTime: " + endDateTime); + } + if (modeType === "week" || modeType === "month") { + var endOfMonthTime = startOfMonth(addMonths(endDateTime, 1)); + var numberOfMonthInMonthMode = differenceInMonths(endOfMonthTime, startDateTime); + var numberOfDaysInWeekMode = differenceInDays(endDateTime, startDateTime); + var dayWidthInWeekMode = Math.floor(dayWidth / numberOfDaysInWeekMode); + var _hourWidth = dayWidthInWeekMode / HOURS_IN_DAY; + var newDayWidthInWeekMode = _hourWidth * HOURS_IN_DAY * numberOfDaysInWeekMode; + return _extends({}, defaultOptions, { + hourWidth: abs(_hourWidth), + dayWidth: abs(newDayWidthInWeekMode), + numberOfMonths: numberOfMonthInMonthMode + }); + } + if (hoursInDays.length > 0) { + var _numberOfHoursInDay = hoursInDays.reduce(function (acc, curr) { + return acc + curr.diffInHours; + }, 0); + var _hourWidth2 = dayWidth / _numberOfHoursInDay; + var _newDayWidth = _hourWidth2 * _numberOfHoursInDay; + return _extends({}, defaultOptions, { + hourWidth: abs(_hourWidth2), + dayWidth: abs(_newDayWidth), + numberOfHoursInDay: abs(_numberOfHoursInDay) + }); + } + var offsetStartHoursRange = differenceInHours(startDateTime, startOfDay(startDateTime)); + var numberOfHoursInDay = differenceInHours(endDateTime, startDateTime); + var hourWidth = Math.floor(dayWidth / numberOfHoursInDay); + var newDayWidth = hourWidth * numberOfHoursInDay; + return _extends({}, defaultOptions, { + hourWidth: abs(hourWidth), + dayWidth: abs(newDayWidth), + numberOfHoursInDay: abs(numberOfHoursInDay), + offsetStartHoursRange: abs(offsetStartHoursRange) + }); +}; +var convertDate = function convertDate(date) { + var newDate = date.replace(/T.*/, ""); + return toDate(newDate); +}; +var getDayResources = function getDayResources(_ref4) { + var startDate = _ref4.startDate, + endDate = _ref4.endDate, + modeType = _ref4.modeType; + var startDateFormat = format(convertDate(startDate), TIME_FORMAT.DATE); + var endDateFormat = format(convertDate(endDate), TIME_FORMAT.DATE); + var modeIncrementValue = modeType === "day" ? 1 : 0; + var diffDays = differenceInDays(toDate(endDateFormat), toDate(startDateFormat)) + modeIncrementValue; + var startToEndInterval = { + start: new Date(startDate), + end: new Date(endDate) + }; + var days = eachDayOfInterval(startToEndInterval).map(function (day) { + return format(day, TIME_FORMAT.DATE); + }); + var months = eachMonthOfInterval(startToEndInterval).map(function (day) { + return format(day, TIME_FORMAT.DATE); + }); + var dates = days.map(function (day) { + return isToday(toDate(day)); + }); + var isToday$1 = dates.some(function (day) { + return day === true; + }); + var currentDate = days[dates.indexOf(true)]; + return { + isToday: isToday$1, + currentDate: currentDate, + numberOfDays: diffDays, + days: days, + months: months + }; +}; +var switchPosition = function switchPosition(programPosition) { + return _extends({}, programPosition, { + top: programPosition.left, + left: programPosition.top, + width: programPosition.height, + height: programPosition.width + }); +}; +function generateUUID() { + // Generate a random hexadecimal string with the specified length + var generateRandomHex = function generateRandomHex(length) { + var result = ""; + var characters = "abcdef0123456789"; + for (var i = 0; i < length; i++) { + result += characters[Math.floor(Math.random() * characters.length)]; + } + return result; + }; + // Format a UUID string according to the version 4 UUID format + var formatUUID = function formatUUID(parts) { + return parts[0] + "-" + parts[1] + "-4" + parts[2].substring(1) + "-" + "89ab"[Math.floor(Math.random() * 4)] + parts[3].substring(1) + "-" + parts[4]; + }; + // Generate the parts of the UUID + var parts = [generateRandomHex(8), generateRandomHex(4), "89ab"[Math.random() * 4 | 0] + generateRandomHex(3), "89ab"[Math.random() * 4 | 0] + generateRandomHex(3), generateRandomHex(12)]; + // Return the formatted UUID + return formatUUID(parts); +} + +var LayoutScreenCloneCache = {}; +var setChannel = function setChannel(event) { + var isChannel = LayoutScreenCloneCache[event.data.channelUuid]; + if (!isChannel) { + LayoutScreenCloneCache[event.data.channelUuid] = {}; + return LayoutScreenCloneCache; + } + return LayoutScreenCloneCache; +}; +var updateLayoutScreenCloneElement = function updateLayoutScreenCloneElement(data) { + return LayoutScreenCloneCache = data; +}; +var setLayoutScreenCloneElement = function setLayoutScreenCloneElement(event, index) { + var channels = setChannel(event); + var program = channels[event.data.channelUuid][event.data.id]; + if (!program) { + event["data"].index = index; + channels[event.data.channelUuid][event.data.id] = event; + } + updateLayoutScreenCloneElement(channels); +}; +var deleteLayoutScreenCloneElement = function deleteLayoutScreenCloneElement(event) { + var channels = setChannel(event); + var program = channels[event.data.channelUuid][event.data.id]; + if (program) { + delete channels[event.data.channelUuid][event.data.id]; + } + updateLayoutScreenCloneElement(channels); +}; +var resetLayoutScreenCloneElements = function resetLayoutScreenCloneElements() { + return LayoutScreenCloneCache = {}; +}; +var getChannelsContentHeight = function getChannelsContentHeight(channels) { + return channels.reduce(function (acc, channel) { + return acc += channel.position.height; + }, 0); +}; +var channelEpgIndexesCache = {}; +var setChannelEpgIndexes = function setChannelEpgIndexes(_ref) { + var uuid = _ref.uuid, + _ref$first = _ref.first, + first = _ref$first === void 0 ? 0 : _ref$first, + _ref$last = _ref.last, + last = _ref$last === void 0 ? 0 : _ref$last; + channelEpgIndexesCache[uuid] = { + first: first, + last: last, + uuid: uuid + }; +}; +var getChannelEpgIndexes = function getChannelEpgIndexes(uuid) { + return channelEpgIndexesCache[uuid]; +}; +var channelsGroupTreeCache = {}; +var setChannelGroupTree = function setChannelGroupTree(channel) { + channelsGroupTreeCache[channel.uuid] = { + uuid: channel.uuid, + isOpen: channel.isOpen, + groupTree: channel.groupTree + }; +}; +var setChannelGroupTreeNestedChildren = function setChannelGroupTreeNestedChildren(channelUuid, nestedChildUuid) { + var _channel$nestedChildr; + var channel = channelsGroupTreeCache[channelUuid]; + channelsGroupTreeCache[channelUuid] = _extends({}, channel, { + nestedChildren: [].concat((_channel$nestedChildr = channel.nestedChildren) != null ? _channel$nestedChildr : [], [nestedChildUuid]) + }); +}; +var getChannelsGroupTree = function getChannelsGroupTree() { + return channelsGroupTreeCache; +}; +// Timezones +var timezoneOptionsCache = { + enabled: false, + zone: "", + mode: "" +}; +var setTimezoneOptionsCache = function setTimezoneOptionsCache(props) { + timezoneOptionsCache = props; +}; +var getTimezoneOptionsCache = function getTimezoneOptionsCache() { + return timezoneOptionsCache; +}; + +var getNewDateTimeTz = function getNewDateTimeTz(date) { + var timezone = getTimezoneOptionsCache(); + var newDate = new Date(date); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = utcToZonedTime(newDate, timezone.zone); + return zonedTime.getTime(); + } + return newDate.getTime(); +}; +var getNewDateTz = function getNewDateTz(date) { + var timezone = getTimezoneOptionsCache(); + var newDate = date ? new Date(date) : new Date(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = utcToZonedTime(newDate, timezone.zone); + return zonedTime; + } + return newDate; +}; +var formatTz = function formatTz(date, formatTime) { + if (formatTime === void 0) { + formatTime = TIME_FORMAT.DEFAULT; + } + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = utcToZonedTime(date, timezone.zone); + var formattedZonedTime = format$1(zonedTime, formatTime, { + timeZone: timezone.zone + }); + return formattedZonedTime; + } + return format(date, formatTime); +}; +var zonedDateTimeToUtc = function zonedDateTimeToUtc(date) { + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var zonedTime = zonedTimeToUtc(date, timezone.zone); + return zonedTime; + } + return date; +}; + +// -------- Program width -------- +var getItemDiffWidth = function getItemDiffWidth(diff, hourWidth) { + return diff * hourWidth / HOUR_IN_MINUTES; +}; +var getPositionX = function getPositionX(since, till, startDate, endDate, hourWidth) { + var isTomorrow = getTime$1(getDate(till)) > getTime$1(getDate(endDate)); + var isYesterday = getTime$1(getDate(since)) < getTime$1(getDate(startDate)); + // When time range is set to 1 hour and program time is greater than 1 hour + if (isYesterday && isTomorrow) { + var _diffTime = differenceInMinutes(roundToMinutes(getDate(endDate)), getDate(startDate)); + return getItemDiffWidth(_diffTime, hourWidth); + } + if (isYesterday) { + var _diffTime2 = differenceInMinutes(roundToMinutes(getDate(till)), getDate(startDate)); + return getItemDiffWidth(_diffTime2, hourWidth); + } + if (isTomorrow) { + var _diffTime3 = differenceInMinutes(getDate(endDate), roundToMinutes(getDate(since))); + if (_diffTime3 < 0) return 0; + return getItemDiffWidth(_diffTime3, hourWidth); + } + var diffTime = differenceInMinutes(roundToMinutes(getDate(till)), roundToMinutes(getDate(since))); + return getItemDiffWidth(diffTime, hourWidth); +}; +// -------- Channel position in the Epg -------- +var getChannelPosition = function getChannelPosition(channelIndex, itemHeight) { + var top = itemHeight * channelIndex; + var position = { + top: top, + height: itemHeight + }; + return position; +}; +// -------- Program position in the Epg -------- +var getProgramPosition = function getProgramPosition(program, channelIndex, itemHeight, hourWidth, startDate, endDate, isVerticalMode) { + var item = _extends({}, program, { + since: formatTimeTz(program.since), + till: formatTimeTz(program.till) + }); + var isYesterday$1 = isYesterday(item.since, startDate); + var width = getPositionX(item.since, item.till, startDate, endDate, hourWidth); + var top = itemHeight * channelIndex; + var left = getPositionX(startDate, item.since, startDate, endDate, hourWidth); + var edgeEnd = getPositionX(startDate, item.till, startDate, endDate, hourWidth); + if (isYesterday$1) left = 0; + // If item has negative top position, it means that it is not visible in this day + if (top < 0) width = 0; + var position = { + width: width, + height: itemHeight, + top: top, + left: left, + edgeEnd: edgeEnd + }; + if (isVerticalMode) { + position = _extends({}, position, { + top: left, + left: top, + width: itemHeight, + height: width + }); + } + return { + position: position, + data: item + }; +}; +var getProgramPositionWithDayHours = function getProgramPositionWithDayHours(_ref) { + var isVerticalMode = _ref.isVerticalMode, + hoursInDays = _ref.hoursInDays, + position = _ref.position, + since = _ref.since, + hourWidth = _ref.hourWidth; + var day = hoursInDays.find(function (day) { + return since.includes(day.date); + }); + if (!day) return { + position: position + }; + if (isVerticalMode) { + var _diffHours = day.diffLeft * hourWidth; + var top = position.top - _diffHours; + var _edgeEnd = position.edgeEnd - _diffHours; + return _extends({}, position, { + top: top, + edgeEnd: _edgeEnd + }); + } + var diffHours = day.diffLeft * hourWidth; + var left = position.left - diffHours; + var edgeEnd = position.edgeEnd - diffHours; + return _extends({}, position, { + left: left, + edgeEnd: edgeEnd + }); +}; +var getConvertedPrograms = function getConvertedPrograms(_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + isOverlapEnabled = _ref2.isOverlapEnabled, + programChannelMapKey = _ref2.programChannelMapKey, + data = _ref2.data, + channels = _ref2.channels, + startDate = _ref2.startDate, + endDate = _ref2.endDate, + itemHeight = _ref2.itemHeight, + hourWidth = _ref2.hourWidth, + hoursInDays = _ref2.hoursInDays; + var first = 0; + return data.map(function (next, index, arr) { + var _arr, _arr2, _channels$channelInde, _channels$channelInde2; + next["channelUuid"] = next[programChannelMapKey]; + if (((_arr = arr[index - 1]) == null ? void 0 : _arr[programChannelMapKey]) !== next[programChannelMapKey]) { + first = index; + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first + }); + } + if (next[programChannelMapKey] !== ((_arr2 = arr[index + 1]) == null ? void 0 : _arr2[programChannelMapKey])) { + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first, + last: index + }); + } else { + setChannelEpgIndexes({ + uuid: next[programChannelMapKey], + first: first, + last: index + }); + } + var channelIndex = channels.findIndex(function (_ref3) { + var uuid = _ref3.uuid; + return uuid === next.channelUuid; + }); + next["channelIndex"] = channelIndex; + next["channelPosition"] = (_channels$channelInde = channels[channelIndex]) == null ? void 0 : _channels$channelInde.position; + next["index"] = index; + // Group tree + if ((_channels$channelInde2 = channels[channelIndex]) != null && _channels$channelInde2.parentChannelUuid) { + var _channels$channelInde3; + next["parentChannelUuid"] = (_channels$channelInde3 = channels[channelIndex]) == null ? void 0 : _channels$channelInde3.parentChannelUuid; + } + var programData = getProgramPosition(next, channelIndex, itemHeight, hourWidth, startDate, endDate, isVerticalMode); + if (isOverlapEnabled && channelIndex > 0) { + var position = channels[channelIndex - 1].position; + var newPositionTop = position.top + position.height; + if (isVerticalMode) { + programData.position.left = newPositionTop; + } else { + programData.position.top = newPositionTop; + } + } + if (hoursInDays.length === 0) return programData; + var newPosition = getProgramPositionWithDayHours({ + isVerticalMode: isVerticalMode, + hoursInDays: hoursInDays, + position: programData.position, + since: programData.data.since, + hourWidth: hourWidth + }); + programData["position"] = newPosition; + return programData; + }, []); +}; +// -------- Converted channels with position data -------- +var getConvertedChannels = function getConvertedChannels(isOverlapEnabled, overlapMode, layerOverlapLevel, channels, itemHeight, channelMapKey, channelOverlapsCount) { + var top = 0; + var isStackMode = overlapMode === OVERLAP_MODES.STACK; + var isLayerMode = overlapMode === OVERLAP_MODES.LAYER; + return channels.reduce(function (acc, channel, index) { + var overlap = channelOverlapsCount[channel[channelMapKey]]; + // Check channels group tree + if (channel.groupTree && channel.uuid) { + setChannelGroupTree(channel); + } + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = channelsGroupTree[channel.parentChannelUuid]; + // if parent channel is closed, skip this channel + if (channelGroupTree && channel.parentChannelUuid) { + setChannelGroupTreeNestedChildren(channelGroupTree.uuid, channel.uuid); + channel["isNestedChild"] = true; + if (!(channelGroupTree != null && channelGroupTree.isOpen)) return acc; + } else { + channel["isNestedChild"] = false; + } + var largestSizeLength = 1; + var overlapsLength = overlap != null ? overlap : 0; + if (isOverlapEnabled && (isStackMode || isLayerMode) && overlapsLength > 0) { + largestSizeLength = overlap; + } + var position = getChannelPosition(index, itemHeight * largestSizeLength); + if (isOverlapEnabled && isStackMode) { + position.top = top; + top = top + position.height; + } + if (isOverlapEnabled && isLayerMode) { + if (overlapsLength > 0) { + position.top = top; + position.height = overlapsLength <= 1 ? position.height : itemHeight * layerOverlapLevel * (overlapsLength - 1) + itemHeight; + top = top + position.height; + } else { + position.top = top; + top = top + position.height; + } + } + var item = _extends({}, channel, { + uuid: channel[channelMapKey], + index: index, + position: position + }); + acc.push(item); + return acc; + }, []); +}; +var getItemVisibility = function getItemVisibility(_ref4) { + var position = _ref4.position, + scrollY = _ref4.scrollY, + scrollX = _ref4.scrollX, + containerHeight = _ref4.containerHeight, + containerWidth = _ref4.containerWidth, + itemOverscan = _ref4.itemOverscan, + overlapsCount = _ref4.overlapsCount, + isVerticalMode = _ref4.isVerticalMode; + // Set item visibility for vertical mode + var _overlapsCount = overlapsCount === 0 ? 1 : overlapsCount; + if (isVerticalMode) { + if (position.height <= 0) { + return false; + } + if (scrollX > position.left + position.width * 2 * _overlapsCount) { + return false; + } + if (scrollX + containerWidth <= position.left) { + return false; + } + if (scrollY + containerHeight >= position.top && scrollY <= position.edgeEnd) { + return true; + } + } else { + // Set item visibility for horizontal mode + if (position.width <= 0) { + return false; + } + if (scrollY > position.top + itemOverscan * 3 * _overlapsCount) { + return false; + } + if (scrollY + containerHeight <= position.top) { + return false; + } + if (scrollX + containerWidth >= position.left && scrollX <= position.edgeEnd) { + return true; + } + } + return false; +}; +var getSidebarItemVisibility = function getSidebarItemVisibility(_ref5) { + var position = _ref5.position, + scrollX = _ref5.scrollX, + scrollY = _ref5.scrollY, + containerHeight = _ref5.containerHeight, + containerWidth = _ref5.containerWidth, + itemOverscan = _ref5.itemOverscan, + isVerticalMode = _ref5.isVerticalMode; + // Set item visibility for vertical mode + if (isVerticalMode) { + var left = position.left + position.height; + if (scrollX > left + itemOverscan * 3) { + return false; + } + if (scrollX + containerWidth <= left - position.height) { + return false; + } + } else { + // Set item visibility for horizontal mode + if (scrollY > position.top + position.height + itemOverscan * 3) { + return false; + } + if (scrollY + containerHeight <= position.top) { + return false; + } + } + return true; +}; +var getTimelineItemVisibility = function getTimelineItemVisibility(_ref6) { + var position = _ref6.position, + scrollY = _ref6.scrollY, + scrollX = _ref6.scrollX, + containerHeight = _ref6.containerHeight, + containerWidth = _ref6.containerWidth, + isVerticalMode = _ref6.isVerticalMode; + // Set item visibility for vertical mode + if (isVerticalMode) { + if (scrollY > position.left + position.width * 2) { + return false; + } + if (scrollY + containerHeight <= position.left) { + return false; + } + } else { + // Set item visibility for horizontal mode + if (scrollX > position.left + position.width * 2) { + return false; + } + if (scrollX + containerWidth <= position.left) { + return false; + } + } + return true; +}; +var setUpdatedLayoutItem = function setUpdatedLayoutItem(data, modeType) { + var id = generateUUID(); + var since = data.date + " " + data.since; + var till = data.date + " " + data.till; + if (modeType === "week") { + till = formatTz(endOfDay(new Date(till)), TIME_FORMAT.DEFAULT); + } else if (modeType === "month") { + till = formatTz(addDays(endOfDay(new Date(till)), 20), TIME_FORMAT.DEFAULT); + } + return _extends({ + id: id, + title: "", + image: "" + }, data, { + since: since, + till: till + }); +}; + +var getTime = function getTime(date) { + return toDate(date).getTime(); +}; +var getLiveStatus = function getLiveStatus(since, till) { + var nowTime = getNewDateTimeTz(getNewDateTz()); + var sinceTime = getNewDateTimeTz(since); + var sinceTill = getNewDateTimeTz(till); + return nowTime >= sinceTime && sinceTill > nowTime; +}; +var formatTime = function formatTime(date) { + return format(new Date(date), TIME_FORMAT.DEFAULT).replace(/\s/g, "T"); +}; +var formatTimeTz = function formatTimeTz(date) { + return formatTz(new Date(date), TIME_FORMAT.DEFAULT).replace(/\s/g, "T"); +}; +var roundToMinutes = function roundToMinutes(date) { + return roundToNearestMinutes(new Date(date)); +}; +var isYesterday = function isYesterday(since, startDate) { + var sinceTime = getTime(new Date(since)); + var startDateTime = getTime(new Date(startDate)); + return startDateTime > sinceTime; +}; +var isFutureTime = function isFutureTime(date) { + var dateTime = getTime(new Date(date)); + var now = getTime(new Date()); + return dateTime > now; +}; +var getTimeRangeDates = function getTimeRangeDates(startDate, endDate) { + var endDateValue = endDate; + if (endDate === "") { + endDateValue = formatTime(startOfDay(addDays(getDate(startDate), 1))); + } + return { + startDate: startDate, + endDate: endDateValue + }; +}; +var getFormattedWeekMonthDate = function getFormattedWeekMonthDate(_ref) { + var date = _ref.date, + mode = _ref.mode, + isBaseTimeFormat = _ref.isBaseTimeFormat; + if (mode.type === "week") { + if (mode.style === "modern") { + return format(toDate(date), TIME_FORMAT.DAY_DATE); + } + var dateFormat = isBaseTimeFormat ? TIME_FORMAT.BASE_DAY_MONTH : TIME_FORMAT.DAY_MONTH; + return format(toDate(date), dateFormat); + } + return format(toDate(date), TIME_FORMAT.MONTH); +}; +var getNumberOfHoursInDays = function getNumberOfHoursInDays(_ref2) { + var startDate = _ref2.startDate, + customHoursInDays = _ref2.customHoursInDays; + if (customHoursInDays.length === 0) return []; + var itemsDiffInHours = 0; + var data = customHoursInDays.reduce(function (acc, item) { + var diffLeft = 0; + var prevItem = acc[acc.length - 1]; + if (!prevItem) { + diffLeft = differenceInHours(getDate(item.startTimeHour), getDate(startDate)); + } + if (prevItem) { + diffLeft = differenceInHours(getDate(item.startTimeHour), getDate(prevItem.endTimeHour)); + diffLeft += prevItem.diffLeft; + itemsDiffInHours += prevItem.diffInHours; + } + var diffInHours = differenceInHours(getDate(item.endTimeHour), getDate(item.startTimeHour)); + var startTime = Number(format(getDate(item.startTimeHour), "H")); + var endTime = Number(format(getDate(item.endTimeHour), "H")); + var obj = _extends({}, item, { + diffLeft: diffLeft, + diffInHours: diffInHours, + prevItemDiffInHours: itemsDiffInHours, + startTime: startTime, + endTime: endTime + }); + acc.push(obj); + return acc; + }, []); + return data; +}; +var getTodayHoursInDays = function getTodayHoursInDays(hoursInDays) { + var date = hoursInDays.filter(function (item) { + return isWithinInterval(new Date(), { + start: new Date(item.startTimeHour), + end: new Date(item.endTimeHour) + }); + }); + return date.length > 0; +}; +var getHoursInDaysPositionX = function getHoursInDaysPositionX(_ref3) { + var hoursInDays = _ref3.hoursInDays, + hourWidth = _ref3.hourWidth, + sidebarWidth = _ref3.sidebarWidth, + cb = _ref3.cb; + var date = hoursInDays.filter(function (item) { + return isWithinInterval(new Date(), { + start: new Date(item.startTimeHour), + end: new Date(item.endTimeHour) + }); + }); + if (date.length === 0) { + cb == null || cb(false); + return 0; + } + var day = date[0]; + var positionX = getPositionX(startOfDay(new Date(day.startTimeHour)), new Date(), day.startTimeHour, day.endTimeHour, hourWidth); + return positionX + sidebarWidth + day.prevItemDiffInHours * hourWidth; +}; + +var _excluded$1 = ["hoursInDays"]; +var BASE_DAY_MONTH = TIME_FORMAT.BASE_DAY_MONTH, + DAY_MONTH = TIME_FORMAT.DAY_MONTH; +var generateDayHours = function generateDayHours(isBaseTimeFormat, dayIndex, days) { + return Array.from({ + length: HOURS_IN_DAY + }, function (_, i) { + if (i === 0) { + var timeFormat = isBaseTimeFormat ? BASE_DAY_MONTH : DAY_MONTH; + var date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date()); + return dayIndex === 0 ? i : format(date, timeFormat); + } + return i; + }); +}; +var generateTimelineSlots = function generateTimelineSlots(modeType, options) { + var hoursInDays = options.hoursInDays, + rest = _objectWithoutPropertiesLoose(options, _excluded$1); + if (modeType === "week") { + return generateWeekTimelineSlots(rest); + } + if (modeType === "month") { + return generateMonthTimelineSlots(rest); + } + if (hoursInDays.length > 0) { + return getDayHoursTimeSlots(options); + } + return getDayTimeSlots(rest); +}; +var getDayHoursTimeSlots = function getDayHoursTimeSlots(_ref) { + var isBaseTimeFormat = _ref.isBaseTimeFormat, + days = _ref.days, + hoursInDays = _ref.hoursInDays, + numberOfDays = _ref.numberOfDays; + var slots = generateArray(numberOfDays).reduce(function (acc, _, dayIndex) { + var hours = generateDayHours(isBaseTimeFormat, dayIndex, days); + var hoursInDay = hoursInDays[dayIndex]; + var sliced = hours.slice(hoursInDay.startTime, hoursInDay.endTime); + if (dayIndex > 0) sliced[0] = hours[0]; + return [].concat(acc, sliced); + }, []); + return slots; +}; +var getDayTimeSlots = function getDayTimeSlots(_ref2) { + var isBaseTimeFormat = _ref2.isBaseTimeFormat, + days = _ref2.days, + numberOfDays = _ref2.numberOfDays, + numberOfHoursInDay = _ref2.numberOfHoursInDay, + offsetStartHoursRange = _ref2.offsetStartHoursRange; + var slots = generateArray(numberOfDays).reduce(function (acc, _, dayIndex) { + var hours = generateDayHours(isBaseTimeFormat, dayIndex, days); + if (dayIndex === 0) return [].concat(acc, hours.slice(offsetStartHoursRange)); + return [].concat(acc, hours); + }, []); + return slots.slice(0, numberOfHoursInDay); +}; +var generateWeekTimelineSlots = function generateWeekTimelineSlots(_ref3) { + var days = _ref3.days, + numberOfDays = _ref3.numberOfDays; + var slots = generateArray(numberOfDays).map(function (_, dayIndex) { + var date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date()); + return format(date, TIME_FORMAT.DATE); + }); + return slots; +}; +var generateMonthTimelineSlots = function generateMonthTimelineSlots(_ref4) { + var months = _ref4.months, + numberOfMonths = _ref4.numberOfMonths; + var slots = generateArray(numberOfMonths).map(function (_, dayIndex) { + var date = parse(months[dayIndex], TIME_FORMAT.DATE, new Date()); + return format(date, TIME_FORMAT.DATE); + }); + return slots; +}; +var getTimelineMonthsWidth = function getTimelineMonthsWidth(_ref5) { + var months = _ref5.months, + weekDayWidth = _ref5.weekDayWidth; + var _months$reduce = months.reduce(function (acc, month, index) { + var daysInMonth = getDaysInMonth(toDate(month)); + var width = daysInMonth * weekDayWidth; + if (index === 0) { + acc.data.push({ + width: width, + left: 0 + }); + acc.offsetLeft = 0; + return acc; + } + var left = acc.offsetLeft + acc.data[index - 1].width; + acc.data.push({ + width: width, + left: left + }); + acc.offsetLeft = left; + return acc; + }, { + data: [], + offsetLeft: 0 + }), + data = _months$reduce.data; + return data; +}; +var getTimelineHeight = function getTimelineHeight(timelineHeight, mode) { + if ((mode.type === "week" || mode.type === "month") && mode.style === "modern") { + return TIMELINE_HEIGHT_MODERN_STYLE; + } + return timelineHeight; +}; + +var getLineStyles = function getLineStyles(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isTimeline = _ref.isTimeline, + lineStyles = _ref.lineStyles, + position = _ref.position; + if (isVerticalMode) { + return { + position: _extends({}, position, { + position: lineStyles.position, + top: position.left, + left: isTimeline ? lineStyles.top : 0, + width: position.height, + height: lineStyles.width + }) + }; + } + return { + position: _extends({}, position, { + position: lineStyles.position, + top: isTimeline ? lineStyles.top : 0, + width: lineStyles.width + }) + }; +}; + +var getChannelVerticalPosition = function getChannelVerticalPosition(channel, isVerticalMode) { + if (isVerticalMode) { + return _extends({}, channel, { + position: _extends({}, channel.position, { + left: channel.position.top, + width: channel.position.height + }) + }); + } + return channel; +}; +var getChannelGroupTreeProps = function getChannelGroupTreeProps(channel) { + var _channel$parentChanne; + var data = _extends({}, channel, { + nestedChildren: [], + isFirstNestedChild: false, + isLastNestedChild: false + }); + var getChanelGroupTree = function getChanelGroupTree(uuid) { + var _channelsGroupTree; + return (_channelsGroupTree = channelsGroupTree[uuid != null ? uuid : ""]) != null ? _channelsGroupTree : null; + }; + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = getChanelGroupTree(channel.uuid); + var channelNestedGroupTree = getChanelGroupTree((_channel$parentChanne = channel.parentChannelUuid) != null ? _channel$parentChanne : ""); + if (channel.parentChannelUuid && channelNestedGroupTree) { + var _channelNestedGroupTr, _channelNestedGroupTr2; + var isFirstNestedChild = ((_channelNestedGroupTr = channelNestedGroupTree.nestedChildren) == null ? void 0 : _channelNestedGroupTr.at(0)) === channel.uuid; + var isLastNestedChild = ((_channelNestedGroupTr2 = channelNestedGroupTree.nestedChildren) == null ? void 0 : _channelNestedGroupTr2.at(-1)) === channel.uuid; + return _extends({}, data, { + isFirstNestedChild: isFirstNestedChild, + isLastNestedChild: isLastNestedChild + }); + } else if (channelGroupTree) { + return _extends({}, data, { + nestedChildren: channelGroupTree.nestedChildren + }); + } + return data; +}; + +function getOverlapCount(program, overlapArray) { + var sinceB = new Date(program.data.since); + var tillB = new Date(program.data.till); + var overlapCount = 0; + for (var _iterator = _createForOfIteratorHelperLoose(overlapArray), _step; !(_step = _iterator()).done;) { + var otherProgram = _step.value; + if (program.data.id === otherProgram.data.id) continue; + var sinceOther = new Date(otherProgram.data.since); + var tillOther = new Date(otherProgram.data.till); + if (sinceB <= tillOther && tillB >= sinceOther || sinceOther <= tillB && tillOther >= sinceB) { + overlapCount++; + } + } + return overlapCount; +} +function overlapPosition(program, overlapArray, channelOverlapsCount) { + var sinceB = new Date(program.data.since); + var tillB = new Date(program.data.till); + var newChannelOverlapsCount = channelOverlapsCount; + for (var index = 0; index < newChannelOverlapsCount + 1; index++) { + var top = program.data.channelPosition.top > 0 ? program.data.channelPosition.top : 0; + var levelTop = top + program.position.height * index; + var overlapsOnLevel = false; + var overlapsOnLevelUp = false; + for (var _iterator2 = _createForOfIteratorHelperLoose(overlapArray), _step2; !(_step2 = _iterator2()).done;) { + var otherProgram = _step2.value; + if (program.data.id === otherProgram.data.id) continue; + if (levelTop === otherProgram.position.top) { + var sinceOther = new Date(otherProgram.data.since); + var tillOther = new Date(otherProgram.data.till); + if (sinceB < tillOther && tillB > sinceOther || sinceOther < tillB && tillOther > sinceB) { + if (sinceB <= tillOther && tillB >= sinceOther || sinceOther <= tillB && tillOther >= sinceB) { + overlapsOnLevelUp = true; + } + overlapsOnLevel = true; + break; + } + } + } + if (!overlapsOnLevel) { + return overlapsOnLevelUp ? index + 4 : index; + } + } + return newChannelOverlapsCount; +} +var getOverlapProgramOptions$1 = function getOverlapProgramOptions(program, overlapArray, channelOverlapsCount) { + var _program = _extends({}, program); + var data = _program.data, + position = _program.position; + var programOverlapIndex = overlapArray.length + 1; + var channelPosition = data.channelPosition, + overlapTimes = data.overlapTimes; + var width = position.width, + height = position.height, + left = position.left; + var newHeight = height ; + var newTop = channelPosition.top + (overlapTimes != null ? overlapTimes : programOverlapIndex) * newHeight; + var newProgram = _extends({}, program, { + position: { + width: width, + height: newHeight, + top: newTop, + left: left + } + }); + var overlapTop = overlapPosition(newProgram, overlapArray, channelOverlapsCount); + newProgram.position = _extends({}, newProgram.position, { + top: channelPosition.top + newProgram.position.height * overlapTop + }); + return [newProgram, overlapTop + 1]; +}; +var setChannelOverlapCount = function setChannelOverlapCount(programA, channelOverlapsCount, channelOverlaps) { + return channelOverlapsCount > channelOverlaps[programA.data.channelUuid] ? channelOverlapsCount : channelOverlaps[programA.data.channelUuid]; +}; +function getOverlaps(isVerticalMode, itemOverlaps, programs) { + var overlaps = _extends({}, itemOverlaps); + var channelOverlaps = {}; + for (var _iterator3 = _createForOfIteratorHelperLoose(programs), _step3; !(_step3 = _iterator3()).done;) { + var program = _step3.value; + overlaps[program.data.channelUuid] = []; + } + var _loop = function _loop() { + var _programA$data; + var programA = _extends({}, programs[i]); + var sinceA = new Date(programA.data.since); + var tillA = new Date(programA.data.till); + // Group channel tree + // If parent group tree is open, then all children group tree are visible + // If parent group tree is closed, then all children group tree are not visible + if (programA != null && (_programA$data = programA.data) != null && _programA$data.parentChannelUuid) { + var _programA$data2; + var channelsGroupTree = getChannelsGroupTree(); + var channelGroupTree = channelsGroupTree[programA == null || (_programA$data2 = programA.data) == null ? void 0 : _programA$data2.parentChannelUuid]; + if (!(channelGroupTree != null && channelGroupTree.isOpen)) return 1; // continue + } + if (isVerticalMode) { + programA.position = switchPosition(programA.position); + } + var _loop2 = function _loop2() { + var programB = _extends({}, programs[j]); + if (programA.data.channelUuid !== programB.data.channelUuid) return 1; // continue + if (isVerticalMode) { + programB.position = switchPosition(programB.position); + } + var sinceB = new Date(programB.data.since); + var tillB = new Date(programB.data.till); + if (sinceA < tillB && tillA > sinceB || sinceB < tillA && tillB > sinceA) { + var elementA = overlaps[programA.data.channelUuid]; + var elementB = overlaps[programB.data.channelUuid]; + var isSameChannelUuid = programA.data.channelUuid === programB.data.channelUuid; + if (elementA && elementB && isSameChannelUuid) { + programB.data.overlapLinkedId = programA.data.overlapLinkedId; + var overlapArray = overlaps[programA.data.channelUuid]; + var isElementAExist = overlapArray.some(function (el) { + return el.data.id === programA.data.id; + }); + var isElementBExist = overlapArray.some(function (el) { + return el.data.id === programB.data.id; + }); + var channelOverlapsLength = overlaps[programA.data.channelUuid].length; + if (!isElementBExist && channelOverlapsLength === 0) { + programB.position.top = programA.data.channelPosition.top + programA.position.height; + overlaps[programA.data.channelUuid] = [programA, programB]; + channelOverlaps[programA.data.channelUuid] = !channelOverlaps[programA.data.channelUuid] ? 2 : channelOverlaps[programA.data.channelUuid]; + } else if (!isElementBExist && channelOverlapsLength > 1) { + var overlapCount = 0; + if (!isElementAExist) { + overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = overlapCount; + var _getOverlapProgramOpt = getOverlapProgramOptions$1(programA, overlapArray, channelOverlaps[programA.data.channelUuid]), + newProgramA = _getOverlapProgramOpt[0], + _channelOverlapsCount = _getOverlapProgramOpt[1]; + overlapArray.push(newProgramA); + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, _channelOverlapsCount, channelOverlaps); + } + overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = overlapCount; + var _getOverlapProgramOpt2 = getOverlapProgramOptions$1(programB, overlapArray, channelOverlaps[programA.data.channelUuid]), + newProgramB = _getOverlapProgramOpt2[0], + channelOverlapsCount = _getOverlapProgramOpt2[1]; + overlapArray.push(newProgramB); + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, channelOverlapsCount, channelOverlaps); + } else if (isElementBExist && channelOverlapsLength > 1) { + var _overlapCount = getOverlapCount(programB, overlapArray); + programB.data.overlapTimes = _overlapCount; + var _getOverlapProgramOpt3 = getOverlapProgramOptions$1(programB, overlapArray, channelOverlaps[programA.data.channelUuid]), + _channelOverlapsCount2 = _getOverlapProgramOpt3[1]; + channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(programA, _channelOverlapsCount2, channelOverlaps); + } else if (channelOverlapsLength > 1) { + overlapArray.push(programB); + } + } + } else if (overlaps[programA.data.channelUuid] && overlaps[programA.data.channelUuid].length === 0) { + channelOverlaps[programA.data.channelUuid] = 0; + overlaps[programA.data.channelUuid] = []; + } + }; + for (var j = i + 1; j < programs.length; j++) { + if (_loop2()) continue; + } + }; + for (var i = 0; i < programs.length - 1; i++) { + if (_loop()) continue; + } + return { + overlaps: overlaps, + channelOverlaps: channelOverlaps + }; +} +var getChannelProgramSliced = function getChannelProgramSliced(programs) { + var acc = new Map(); + for (var _iterator4 = _createForOfIteratorHelperLoose(programs), _step4; !(_step4 = _iterator4()).done;) { + var next = _step4.value; + var channelUuid = next.data.channelUuid; + if (!acc.has(channelUuid)) { + acc.set(channelUuid, []); + } + acc.get(channelUuid).push(next); + } + return Object.fromEntries(acc); +}; +var getChannelEpdIndexesProgramSliced = function getChannelEpdIndexesProgramSliced(programs, overlaps, dndChannelUuidIndex) { + var acc = {}; + for (var _i = 0, _Object$keys = Object.keys(overlaps); _i < _Object$keys.length; _i++) { + var _overlaps$next, _overlaps$next2; + var next = _Object$keys[_i]; + var channelIndex = (_overlaps$next = overlaps[next]) == null || (_overlaps$next = _overlaps$next[0]) == null ? void 0 : _overlaps$next.data.channelIndex; + var channelUuid = (_overlaps$next2 = overlaps[next]) == null || (_overlaps$next2 = _overlaps$next2[0]) == null ? void 0 : _overlaps$next2.data.channelUuid; + if (channelIndex !== undefined && channelIndex > dndChannelUuidIndex) { + var channelEpgIndexes = getChannelEpgIndexes(next); + var slicedPrograms = programs.slice(channelEpgIndexes.first, channelEpgIndexes.last + 1); + acc[channelUuid] = slicedPrograms; + } + } + return acc; +}; +function checkOverlaps(isMultirowsDnd, isVerticalMode, dndChannelUuid, itemOverlaps, programs) { + var overlaps = _extends({}, itemOverlaps); + var channelOverlaps = {}; + var data = {}; + var channelEpgIndexes = getChannelEpgIndexes(dndChannelUuid.uuid); + if (!isMultirowsDnd && channelEpgIndexes) { + var _extends2; + var slicedOverlapsPrograms = getChannelEpdIndexesProgramSliced(programs, overlaps, dndChannelUuid.index); + data = _extends((_extends2 = {}, _extends2[dndChannelUuid.uuid] = programs.slice(channelEpgIndexes.first, channelEpgIndexes.last + 1), _extends2), slicedOverlapsPrograms); + } else { + data = getChannelProgramSliced(programs); + } + for (var channel in data) { + var props = getOverlaps(isVerticalMode, itemOverlaps, data[channel]); + overlaps[channel] = props.overlaps[channel]; + channelOverlaps[channel] = props.channelOverlaps[channel]; + } + for (var channelUuid in overlaps) { + var _Object$keys2; + if (overlaps != null && overlaps[channelUuid] && ((_Object$keys2 = Object.keys(overlaps == null ? void 0 : overlaps[channelUuid])) == null ? void 0 : _Object$keys2.length) === 0) { + delete overlaps[channelUuid]; + } + } + return { + overlaps: overlaps, + channelOverlaps: channelOverlaps + }; +} + +var getFormattedDndDate = function getFormattedDndDate(newSince, newTill) { + var timezone = getTimezoneOptionsCache(); + if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) { + var utcDateSince = zonedDateTimeToUtc(newSince); + var utcDateTill = zonedDateTimeToUtc(newTill); + return { + since: utcDateSince.toISOString(), + till: utcDateTill.toISOString() + }; + } + return { + since: format(newSince, TIME_FORMAT.DEFAULT).replace(" ", "T"), + till: format(newTill, TIME_FORMAT.DEFAULT).replace(" ", "T") + }; +}; +var getResizeTill = function getResizeTill(_ref) { + var initialWidth = _ref.initialWidth, + width = _ref.width, + hourWidth = _ref.hourWidth; + if (!initialWidth && !width) return 0; + var diff = width - initialWidth; + var diffHours = diff / hourWidth; + return diffHours * 60; +}; +var calculateItemDragSinceTill = function calculateItemDragSinceTill(props) { + var initialPositionLeft = props.initialPositionLeft, + left = props.left, + initialWidth = props.initialWidth, + width = props.width, + hourWidth = props.hourWidth, + startDate = props.startDate, + since = props.since, + till = props.till; + var minDiff = 0; + if (startDate) { + var startDateTime = new Date(startDate).getTime(); + var sinceTime = new Date(since).getTime(); + if (sinceTime < startDateTime) { + minDiff = differenceInMinutes(new Date(startDate), new Date(since)); + } + } + var diff = left - initialPositionLeft; + var diffHours = diff / hourWidth; + var tillDiffHours = getResizeTill({ + initialWidth: initialWidth, + width: width, + hourWidth: hourWidth + }); + var newSince = addMinutes(new Date(since), diffHours * 60 + minDiff); + var newTill = addMinutes(new Date(till), diffHours * 60 + tillDiffHours + minDiff); + return getFormattedDndDate(newSince, newTill); +}; +var getDefaultDragProps = function getDefaultDragProps(positionLeft) { + return { + currentPositionX: positionLeft, + dndEvents: { + isDragging: false + } + }; +}; + +var getConvertedGridItems = function getConvertedGridItems(_ref) { + var isVerticalMode = _ref.isVerticalMode, + channels = _ref.channels, + dayWidth = _ref.dayWidth, + hourWidth = _ref.hourWidth, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth, + mode = _ref.mode, + dayWidthResources = _ref.dayWidthResources, + daysResources = _ref.daysResources; + var isMonthMode = mode.type === "month"; + var numberOfSlots = function numberOfSlots() { + if (mode.type === "day") return dayWidthResources.numberOfHoursInDay; + if (mode.type === "week") return daysResources.numberOfDays; + return dayWidthResources.numberOfMonths; + }; + var monthsWidth = function monthsWidth() { + return getTimelineMonthsWidth({ + months: daysResources.months, + weekDayWidth: hourWidth * HOURS_IN_DAY + }); + }; + var getGridItemPosition = function getGridItemPosition(channel, index) { + var width = 0; + var left = 0; + if (isMonthMode) { + width = monthsWidth()[index].width; + left = monthsWidth()[index].left; + } else { + width = dayWidth / numberOfSlots(); + left = width * index; + } + var position = { + top: channel.position.top, + left: left, + width: width, + height: channel.position.height, + edgeEnd: left + width + }; + if (isVerticalMode) { + position = _extends({}, position, { + left: position.top + timelineHeight, + top: position.left + sidebarWidth, + width: position.height, + height: position.width + }); + } else { + position = _extends({}, position, { + top: position.top + timelineHeight, + left: left + sidebarWidth, + width: width, + height: position.height + }); + } + return { + position: position, + channel: channel + }; + }; + return channels.flatMap(function (channel) { + return generateArray(numberOfSlots()).map(function (_, index) { + return getGridItemPosition(channel, index); + }); + }); +}; +var getClickGridItemData = function getClickGridItemData(_ref2) { + var _ref2$isDrop = _ref2.isDrop, + isDrop = _ref2$isDrop === void 0 ? false : _ref2$isDrop, + isVerticalMode = _ref2.isVerticalMode, + isBaseTimeFormat = _ref2.isBaseTimeFormat, + index = _ref2.index, + item = _ref2.item, + grid = _ref2.grid, + mode = _ref2.mode, + dayWidth = _ref2.dayWidth, + hourWidth = _ref2.hourWidth, + sidebarWidth = _ref2.sidebarWidth, + days = _ref2.days, + hoursInDays = _ref2.hoursInDays, + months = _ref2.months, + numberOfDays = _ref2.numberOfDays, + numberOfHoursInDay = _ref2.numberOfHoursInDay, + numberOfMonths = _ref2.numberOfMonths, + offsetStartHoursRange = _ref2.offsetStartHoursRange, + timelineDividers = _ref2.timelineDividers, + dataAttributes = _ref2.dataAttributes; + var position = item.position, + channel = item.channel; + var isDayMode = mode.type === "day"; + var newPosition = {}; + if (isVerticalMode) { + newPosition = _extends({}, position, { + top: position.left, + left: position.top - sidebarWidth, + edgeEnd: position.left + hourWidth - sidebarWidth + }); + } else { + newPosition = _extends({}, position, { + top: position.top, + left: position.left - sidebarWidth, + edgeEnd: position.edgeEnd - sidebarWidth + }); + } + var options = { + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange + }; + var timeSlots = generateTimelineSlots(mode.type, options); + var left = isDayMode ? newPosition.left + index * (hourWidth / timelineDividers) : newPosition.left; + var edgeEnd = isDayMode ? left + hourWidth / timelineDividers : newPosition.edgeEnd; + var itemClickProps = { + since: "00:00:00", + till: "00:00:00", + date: "", + channelUuid: channel.uuid + }; + if (isDayMode) { + var gridItemProps = getDividerGridProps({ + left: left, + edgeEnd: edgeEnd, + timeSlots: timeSlots, + channel: channel, + days: days, + dayWidth: dayWidth, + hourWidth: hourWidth, + index: index + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, gridItemProps, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(gridItemProps); + } + if (mode.type === "week") { + var _index = Math.floor(left / (hourWidth * 24)); + var _options = _extends({}, itemClickProps, { + date: timeSlots[_index] + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, _options, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(_options); + } + if (mode.type === "month") { + var _index2 = Math.floor(left / (hourWidth * 24 * 30)); + var _options2 = _extends({}, itemClickProps, { + date: timeSlots[_index2] + }); + isDrop ? grid.onGridItemDrop == null ? void 0 : grid.onGridItemDrop(_extends({}, _options2, dataAttributes)) : grid.onGridItemClick == null ? void 0 : grid.onGridItemClick(_options2); + } +}; +var getDividerGridProps = function getDividerGridProps(_ref3) { + var left = _ref3.left, + edgeEnd = _ref3.edgeEnd, + timeSlots = _ref3.timeSlots, + channel = _ref3.channel, + days = _ref3.days, + hourWidth = _ref3.hourWidth, + dayWidth = _ref3.dayWidth, + index = _ref3.index; + var since = ""; + var till = ""; + var dayTimeSlots = timeSlots.map(function (time) { + return typeof time === "number" ? time : 0; + }); + var sinceTimeInHours = Math.floor(left / hourWidth); // Assuming 4 hours per hourWidth + var tillTimeInHours = Math.floor(edgeEnd / hourWidth); // Assuming 4 hours per hourWidth + var getTime = function getTime(index) { + return dayTimeSlots[index] < 10 ? "0" + dayTimeSlots[index] : dayTimeSlots[index]; + }; + var newSince = getTime(sinceTimeInHours); + var newTill = getTime(tillTimeInHours); + var newSinceMin = index === 0 ? "00" : index * 15; + var newTillMin = index + 1 === 0 ? "00" : (index + 1) * 15; + since = newSince + ":" + newSinceMin + ":00"; + till = newTill + ":" + newTillMin + ":00"; + if (newTillMin === 60) { + var newNextTill = dayTimeSlots[sinceTimeInHours + 1] < 10 ? "0" + dayTimeSlots[sinceTimeInHours + 1] : dayTimeSlots[tillTimeInHours]; + till = newTill ? newNextTill + ":00:00 " : "00:00:00"; + } + var singleDayWidth = dayWidth / (days.length - 1); + var dayIndex = Math.floor(left / singleDayWidth); + var options = { + since: since, + till: till, + date: days[dayIndex], + channelUuid: channel.uuid + }; + return options; +}; + +function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var Container = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim5" +} : { + target: "e1mhijim5", + label: "Container" +})("padding:5px;height:", function (_ref) { + var height = _ref.height; + return height ? height + "px" : "100%"; +}, ";width:", function (_ref2) { + var width = _ref2.width; + return width ? width + "px" : "100%"; +}, ";*,::before,::after{box-sizing:border-box;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRW9DIiwiZmlsZSI6IkVwZy5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA1cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gKGhlaWdodCA/IGAke2hlaWdodH1weGAgOiBcIjEwMCVcIil9O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAod2lkdGggPyBgJHt3aWR0aH1weGAgOiBcIjEwMCVcIil9O1xuXG4gICosXG4gIDo6YmVmb3JlLFxuICA6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5gO1xyXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmA7XHJcbmV4cG9ydCBjb25zdCBTY3JvbGxCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmIGB0cmFuc2Zvcm06IHNjYWxlKC0xLDEpYH07XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zY3JvbGxiYXIudGh1bWIuYmd9O1xuICAgIGJvcmRlcjogMTBweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgYm9yZGVyOiAyMnB4IG5vbmUgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyB0b3AgPSAwIH0pID0+IHRvcH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAke0xheWVycy5FcGdDb3JuZXJCb3h9O1xuXG4gICR7KHsgaXNSVEwsIGxlZnQgPSAwIH0pID0+IChpc1JUTCA/IGByaWdodDowcHg7YCA6IGAgbGVmdDogJHtsZWZ0fXB4YCl9O1xuYDtcclxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAkeyh7IGNvbnRlbnRIZWlnaHQgfSkgPT4gY29udGVudEhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGNvbnRlbnRIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIHdpZHRoOiAke2NvbnRlbnRIZWlnaHR9cHg7XG4gICAgICBoZWlnaHQ6ICR7ZGF5V2lkdGh9cHg7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBMYXlvdXRCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyBpc1RpbWVsaW5lLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyBkYXlXaWR0aCB9KSA9PiBkYXlXaWR0aH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBpc1NpZGViYXIsIGRheVdpZHRoLCB0aW1lbGluZUhlaWdodCwgc2lkZWJhcldpZHRoLCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgICB3aWR0aDogMTAwJTtcbiAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcGcuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var Wrapper = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim4" +} : { + target: "e1mhijim4", + label: "Wrapper" +})(process.env.NODE_ENV === "production" ? { + name: "qjsha7", + styles: "height:100%;width:100%;display:flex;flex-direction:column;position:relative;border-radius:6px;overflow:hidden" +} : { + name: "qjsha7", + styles: "height:100%;width:100%;display:flex;flex-direction:column;position:relative;border-radius:6px;overflow:hidden", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYWtDIiwiZmlsZSI6IkVwZy5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA1cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gKGhlaWdodCA/IGAke2hlaWdodH1weGAgOiBcIjEwMCVcIil9O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAod2lkdGggPyBgJHt3aWR0aH1weGAgOiBcIjEwMCVcIil9O1xuXG4gICosXG4gIDo6YmVmb3JlLFxuICA6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5gO1xyXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmA7XHJcbmV4cG9ydCBjb25zdCBTY3JvbGxCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmIGB0cmFuc2Zvcm06IHNjYWxlKC0xLDEpYH07XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zY3JvbGxiYXIudGh1bWIuYmd9O1xuICAgIGJvcmRlcjogMTBweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgYm9yZGVyOiAyMnB4IG5vbmUgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS53aGl0ZX07XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyB0b3AgPSAwIH0pID0+IHRvcH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAke0xheWVycy5FcGdDb3JuZXJCb3h9O1xuXG4gICR7KHsgaXNSVEwsIGxlZnQgPSAwIH0pID0+IChpc1JUTCA/IGByaWdodDowcHg7YCA6IGAgbGVmdDogJHtsZWZ0fXB4YCl9O1xuYDtcclxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAkeyh7IGNvbnRlbnRIZWlnaHQgfSkgPT4gY29udGVudEhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGNvbnRlbnRIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIHdpZHRoOiAke2NvbnRlbnRIZWlnaHR9cHg7XG4gICAgICBoZWlnaHQ6ICR7ZGF5V2lkdGh9cHg7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBMYXlvdXRCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHsoeyBpc1RpbWVsaW5lLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICBsZWZ0OiAkeyh7IGlzU2lkZWJhciwgc2lkZWJhcldpZHRoIH0pID0+IChpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwKX1weDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyBkYXlXaWR0aCB9KSA9PiBkYXlXaWR0aH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RpbWVsaW5lLCBpc1NpZGViYXIsIGRheVdpZHRoLCB0aW1lbGluZUhlaWdodCwgc2lkZWJhcldpZHRoLCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgICB3aWR0aDogMTAwJTtcbiAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1FcGcuc3R5bGVzLmpzLm1hcCJdfQ== */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__ +}); +var ScrollBox = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim3" +} : { + target: "e1mhijim3", + label: "ScrollBox" +})("position:relative;height:100%;width:100%;overflow:auto;scroll-behavior:smooth;background:", function (_ref3) { + var theme = _ref3.theme; + return theme.primary[900]; +}, ";", function (_ref4) { + var isRTL = _ref4.isRTL; + return isRTL && "transform: scale(-1,1)"; +}, ";::-webkit-scrollbar{width:10px;height:10px;}::-webkit-scrollbar-thumb{background:", function (_ref5) { + var theme = _ref5.theme; + return theme.scrollbar.thumb.bg; +}, ";border:10px none ", function (_ref6) { + var theme = _ref6.theme; + return theme.white; +}, ";border-radius:20px;}::-webkit-scrollbar-thumb:hover{background:", function (_ref7) { + var theme = _ref7.theme; + return theme.white; +}, ";}::-webkit-scrollbar-track{background:", function (_ref8) { + var theme = _ref8.theme; + return theme.primary[900]; +}, ";border:22px none ", function (_ref9) { + var theme = _ref9.theme; + return theme.white; +}, ";border-radius:0px;}::-webkit-scrollbar-corner{background:", function (_ref10) { + var theme = _ref10.theme; + return theme.primary[900]; +}, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JvQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Box = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim2" +} : { + target: "e1mhijim2", + label: "Box" +})("position:absolute;top:", function (_ref11) { + var _ref11$top = _ref11.top, + top = _ref11$top === void 0 ? 0 : _ref11$top; + return top; +}, "px;background:", function (_ref12) { + var theme = _ref12.theme; + return theme.primary[900]; +}, ";z-index:", Layers.EpgCornerBox, ";", function (_ref13) { + var isRTL = _ref13.isRTL, + _ref13$left = _ref13.left, + left = _ref13$left === void 0 ? 0 : _ref13$left; + return isRTL ? "right:0px;" : " left: " + left + "px"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0Q4QiIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Content = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim1" +} : { + target: "e1mhijim1", + label: "Content" +})("position:relative;left:", function (_ref14) { + var isSidebar = _ref14.isSidebar, + sidebarWidth = _ref14.sidebarWidth; + return isSidebar ? sidebarWidth : 0; +}, "px;height:", function (_ref15) { + var contentHeight = _ref15.contentHeight; + return contentHeight; +}, "px;width:", function (_ref16) { + var dayWidth = _ref16.dayWidth; + return dayWidth; +}, "px;background:", function (_ref17) { + var theme = _ref17.theme; + return theme.primary[900]; +}, ";", function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + isTimeline = _ref18.isTimeline, + dayWidth = _ref18.dayWidth, + timelineHeight = _ref18.timelineHeight, + contentHeight = _ref18.contentHeight; + return isVerticalMode && "\n left: " + (isTimeline ? timelineHeight : 0) + "px;\n width: " + contentHeight + "px;\n height: " + dayWidth + "px;\n "; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0VrQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); +var LayoutBg = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1mhijim0" +} : { + target: "e1mhijim0", + label: "LayoutBg" +})("position:absolute;top:", function (_ref19) { + var isTimeline = _ref19.isTimeline, + timelineHeight = _ref19.timelineHeight; + return isTimeline ? timelineHeight : 0; +}, "px;left:", function (_ref20) { + var isSidebar = _ref20.isSidebar, + sidebarWidth = _ref20.sidebarWidth; + return isSidebar ? sidebarWidth : 0; +}, "px;height:100%;width:", function (_ref21) { + var dayWidth = _ref21.dayWidth; + return dayWidth; +}, "px;", function (_ref22) { + var isVerticalMode = _ref22.isVerticalMode, + isTimeline = _ref22.isTimeline, + isSidebar = _ref22.isSidebar, + dayWidth = _ref22.dayWidth, + timelineHeight = _ref22.timelineHeight, + sidebarWidth = _ref22.sidebarWidth; + return isVerticalMode && "\n top: " + (isSidebar ? sidebarWidth : 0) + "px;\n left: " + (isTimeline ? timelineHeight : 0) + "px;\n width: 100%;\n height: " + dayWidth + "px;\n "; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVwZy5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEVtQyIsImZpbGUiOiJFcGcuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IChoZWlnaHQgPyBgJHtoZWlnaHR9cHhgIDogXCIxMDAlXCIpfTtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID8gYCR7d2lkdGh9cHhgIDogXCIxMDAlXCIpfTtcblxuICAqLFxuICA6OmJlZm9yZSxcbiAgOjphZnRlciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xyXG5leHBvcnQgY29uc3QgU2Nyb2xsQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJiBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKWB9O1xuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2Nyb2xsYmFyLnRodW1iLmJnfTtcbiAgICBib3JkZXI6IDEwcHggbm9uZSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLndoaXRlfTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICB9XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGJvcmRlcjogMjJweCBub25lICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUud2hpdGV9O1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIH1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wID0gMCB9KSA9PiB0b3B9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgei1pbmRleDogJHtMYXllcnMuRXBnQ29ybmVyQm94fTtcblxuICAkeyh7IGlzUlRMLCBsZWZ0ID0gMCB9KSA9PiAoaXNSVEwgPyBgcmlnaHQ6MHB4O2AgOiBgIGxlZnQ6ICR7bGVmdH1weGApfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBDb250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogJHsoeyBjb250ZW50SGVpZ2h0IH0pID0+IGNvbnRlbnRIZWlnaHR9cHg7XG4gIHdpZHRoOiAkeyh7IGRheVdpZHRoIH0pID0+IGRheVdpZHRofXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgZGF5V2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAke2RheVdpZHRofXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgTGF5b3V0QmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6ICR7KHsgZGF5V2lkdGggfSkgPT4gZGF5V2lkdGh9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgaXNTaWRlYmFyLCBkYXlXaWR0aCwgdGltZWxpbmVIZWlnaHQsIHNpZGViYXJXaWR0aCwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAgdG9wOiAke2lzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDB9cHg7XG4gICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgd2lkdGg6IDEwMCU7XG4gICAgIGhlaWdodDogJHtkYXlXaWR0aH1weDtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXBnLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$1, _templateObject2, _templateObject3; +var Box$1 = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1psuwkz0" +} : { + target: "e1psuwkz0", + label: "Box" +})(function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + isTimeline = _ref.isTimeline, + isRTL = _ref.isRTL, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + contentHeight = _ref.contentHeight, + bottom = _ref.bottom, + theme = _ref.theme; + return css(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n background-color: ", ";\n\n ", ";\n\n ", "\n\n ", "\n "])), theme.primary[900], isRTL && "& > div { transform: scale(-1,1) }", isVerticalMode && css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), isTimeline ? timelineHeight : 0, sidebarWidth, contentHeight), !isVerticalMode && css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n left: 0;\n bottom: ", "px;\n float: left;\n width: ", "px;\n "])), bottom, sidebarWidth)); +}, " z-index:", Layers.Sidebar, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWxzLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHOEIiLCJmaWxlIjoiQ2hhbm5lbHMuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgQm94ID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzVGltZWxpbmUsIGlzUlRMLCBzaWRlYmFyV2lkdGgsIHRpbWVsaW5lSGVpZ2h0LCBjb250ZW50SGVpZ2h0LCBib3R0b20sIHRoZW1lLCB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5wcmltYXJ5WzkwMF19O1xuXG4gICAgJHtpc1JUTCAmJiBgJiA+IGRpdiB7IHRyYW5zZm9ybTogc2NhbGUoLTEsMSkgfWB9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICAgIGhlaWdodDogJHtzaWRlYmFyV2lkdGh9cHg7XG4gICAgICB3aWR0aDogJHtjb250ZW50SGVpZ2h0fXB4O1xuICAgIGB9XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3R0b206ICR7Ym90dG9tfXB4O1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB3aWR0aDogJHtzaWRlYmFyV2lkdGh9cHg7XG4gICAgYH1cbiAgYH1cbiAgei1pbmRleDogJHtMYXllcnMuU2lkZWJhcn07XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGFubmVscy5zdHlsZXMuanMubWFwIl19 */")); + +var _templateObject$2, _templateObject2$1, _templateObject3$1; +function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var ChannelWrapper = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "eqmxcnp1" +} : { + target: "eqmxcnp1", + label: "ChannelWrapper" +})(function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + top = _ref.top, + height = _ref.height, + groupTree = _ref.groupTree, + theme = _ref.theme; + return css(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose(["\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n cursor: ", ";\n\n ", "\n ", ";\n "])), theme.primary[900], groupTree ? "pointer" : "default", isVerticalMode && css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n width: ", "px;\n height: 100%;\n "])), top, height), !isVerticalMode && css(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n height: ", "px;\n width: 100%;\n "])), top, height)); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV5QyIsImZpbGUiOiJDaGFubmVsLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IENoYW5uZWxXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIHRvcCwgaGVpZ2h0LCBncm91cFRyZWUsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgY3Vyc29yOiAke2dyb3VwVHJlZSA/IFwicG9pbnRlclwiIDogXCJkZWZhdWx0XCJ9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6ICR7dG9wfXB4O1xuICAgICAgd2lkdGg6ICR7aGVpZ2h0fXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7dG9wfXB4O1xuICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIGB9O1xuICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IENoYW5uZWxMb2dvID0gc3R5bGVkLmltZyBgXG4gIG1heC1oZWlnaHQ6IDYwcHg7XG4gIG1heC13aWR0aDogNjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2hhbm5lbC5zdHlsZXMuanMubWFwIl19 */")); +var ChannelLogo = /*#__PURE__*/_styled("img", process.env.NODE_ENV === "production" ? { + target: "eqmxcnp0" +} : { + target: "eqmxcnp0", + label: "ChannelLogo" +})(process.env.NODE_ENV === "production" ? { + name: "vfop22", + styles: "max-height:60px;max-width:60px;position:relative" +} : { + name: "vfop22", + styles: "max-height:60px;max-width:60px;position:relative", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYW5uZWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBCc0MiLCJmaWxlIjoiQ2hhbm5lbC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBDaGFubmVsV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCB0b3AsIGhlaWdodCwgZ3JvdXBUcmVlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5wcmltYXJ5WzkwMF19O1xuICAgIGN1cnNvcjogJHtncm91cFRyZWUgPyBcInBvaW50ZXJcIiA6IFwiZGVmYXVsdFwifTtcblxuICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAke3RvcH1weDtcbiAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICBgfVxuICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke3RvcH1weDtcbiAgICAgIGhlaWdodDogJHtoZWlnaHR9cHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICBgfTtcbiAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBDaGFubmVsTG9nbyA9IHN0eWxlZC5pbWcgYFxuICBtYXgtaGVpZ2h0OiA2MHB4O1xuICBtYXgtd2lkdGg6IDYwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoYW5uZWwuc3R5bGVzLmpzLm1hcCJdfQ== */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1 +}); + +var ProgramContent = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt7" +} : { + target: "e1cx08bt7", + label: "ProgramContent" +})("border:1px solid #171923;position:relative;display:flex;font-size:11px;height:100%;border-radius:8px;padding:10px ", function (_ref) { + var width = _ref.width; + return width < 30 ? 4 : 20; +}, "px;overflow:hidden;cursor:pointer;transition:all 0.4s ease-in-out;background:", function (_ref2) { + var primary = _ref2.theme.primary; + return "linear-gradient(to right, " + primary[600] + ", " + primary[600] + ")"; +}, ";z-index:", Layers.Program, ";&:hover{background:", function (_ref3) { + var gradient = _ref3.theme.gradient; + return "linear-gradient(to right, " + gradient.blue[900] + ", " + gradient.blue[600] + ")"; +}, ";}", function (_ref4) { + var isLive = _ref4.isLive, + isVerticalMode = _ref4.isVerticalMode, + gradient = _ref4.theme.gradient; + return isLive && "background: linear-gradient(to " + (isVerticalMode ? "bottom" : "right") + ", " + gradient.blue[900] + ", " + gradient.blue[600] + "," + gradient.blue[300] + ")"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV5QyIsImZpbGUiOiJQcm9ncmFtLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUNvbnRlbnQgPSBzdHlsZWQuZGl2IGBcbiAgYm9yZGVyOiAxcHggc29saWQgIzE3MTkyMztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmb250LXNpemU6IDExcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiAxMHB4ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoIDwgMzAgPyA0IDogMjApfXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lOiB7IHByaW1hcnkgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke3ByaW1hcnlbNjAwXX0sICR7cHJpbWFyeVs2MDBdfSlgfTtcbiAgei1pbmRleDogJHtMYXllcnMuUHJvZ3JhbX07XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBncmFkaWVudCB9IH0pID0+IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICR7Z3JhZGllbnQuYmx1ZVs5MDBdfSwgJHtncmFkaWVudC5ibHVlWzYwMF19KWB9O1xuICB9XG5cbiAgJHsoeyBpc0xpdmUsIGlzVmVydGljYWxNb2RlLCB0aGVtZTogeyBncmFkaWVudCB9IH0pID0+IGlzTGl2ZSAmJlxyXG4gICAgYGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byAke2lzVmVydGljYWxNb2RlID8gXCJib3R0b21cIiA6IFwicmlnaHRcIn0sICR7Z3JhZGllbnQuYmx1ZVs5MDBdfSwgJHtncmFkaWVudC5ibHVlWzYwMF19LCR7Z3JhZGllbnQuYmx1ZVszMDBdfSlgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1GbGV4ID0gc3R5bGVkLmRpdiBgXG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtgfTtcbmA7XHJcbmNvbnN0IEVsaXBzaXMgPSBgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1UaXRsZSA9IHN0eWxlZC5wIGBcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZXlbMzAwXX07XG4gICR7RWxpcHNpc31cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGV4dCA9IHN0eWxlZC5zcGFuIGBcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTIuNXB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50ZXh0LmdyZXlbNTAwXX07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gICR7RWxpcHNpc31cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtSW1hZ2UgPSBzdHlsZWQuaW1nIGBcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIHdpZHRoOiAxMDBweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmIGB3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMTBweGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1TdGFjayA9IHN0eWxlZC5kaXYgYFxuICBvdmVyZmxvdzogaGlkZGVuO1xuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgdHJhbnNmb3JtOiBzY2FsZSgtMSwxKTsgXG4gICAgIGRpc3BsYXk6IGZsZXg7IFxuICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBcbiAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kYH07XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6ICR7KHsgd2lkdGggfSkgPT4gKHdpZHRoID09PSAwID8gMCA6IDQpfXB4O1xuICB6LWluZGV4OiAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gaXNEcmFnZ2luZyB8fCBpc1Jlc2l6aW5nID8gTGF5ZXJzLlByb2dyYW0gKiAzIDogTGF5ZXJzLlByb2dyYW19O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICR7KHsgaXNEcmFnZ2luZywgaXNSZXNpemluZyB9KSA9PiAoIWlzRHJhZ2dpbmcgfHwgIWlzUmVzaXppbmcpICYmXHJcbiAgICBgICY6aG92ZXIge1xuICAgIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW0gKiAyfTtcblxuICAgICR7UHJvZ3JhbVJlc2l6ZUhhbmRsZX0ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1gfVxuXG4gICR7KHsgaXNEcmFnZ2luZywgaXNSZXNpemluZywgdGhlbWUgfSkgPT4gKGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZykgJiZcclxuICAgIGAgXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyZWVuWzIwMF19O1xuICAgIFxuICAgICR7UHJvZ3JhbUNvbnRlbnR9e1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICBjdXJzb3I6IG1vdmU7XG4gIH1cbiAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtUmVzaXplSGFuZGxlID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3BhY2l0eTogMDtcblxuICAkeyh7IGlzUmVzaXplIH0pID0+ICFpc1Jlc2l6ZSAmJiBcImRpc3BsYXk6IG5vbmU7XCJ9XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICR7bGVmdCA/IGB0b3A6IDA7YCA6IGBib3R0b206IDA7YH1cbiAgICBsZWZ0OjA7XG4gICAgaGVpZ2h0OjI1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogJHtsZWZ0ID8gXCJuLXJlc2l6ZVwiIDogXCJzLXJlc2l6ZVwifTtcbiAgYH1cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgICR7bGVmdCA/IGBsZWZ0OiAwO2AgOiBgcmlnaHQ6IDA7YH1cbiAgICB3aWR0aDogMjVweDtcbiAgICBjdXJzb3I6ICR7bGVmdCA/IFwidy1yZXNpemVcIiA6IFwiZS1yZXNpemVcIn07XG4gICAgYH1cblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JlZW5bMjAwXX07XG5cbiAgICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+ICFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYCAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGhlaWdodDogNTAlO1xuICAgICAgd2lkdGg6IDRweDtcbiAgICAgICAgJHtsZWZ0ID8gYGxlZnQ6IDlweDtgIDogYHJpZ2h0OiA5cHg7YH1cbiAgICAgICAgYH1cbiAgICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgICAke2xlZnQgPyBgdG9wOiA5cHg7YCA6IGBib3R0b206IDlweDtgfVxuICAgICBsZWZ0OjUwJTtcbiAgICAgIGhlaWdodDogNHB4O1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgXG4gICAgICAgIGB9XG4gIH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVByb2dyYW0uc3R5bGVzLmpzLm1hcCJdfQ== */")); +var ProgramFlex = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt6" +} : { + target: "e1cx08bt6", + label: "ProgramFlex" +})("width:100%;display:flex;justify-content:flex-start;", function (_ref5) { + var isVerticalMode = _ref5.isVerticalMode; + return isVerticalMode && "flex-direction: column;"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCc0MiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var Elipsis = "\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n"; +var ProgramTitle = /*#__PURE__*/_styled("p", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt5" +} : { + target: "e1cx08bt5", + label: "ProgramTitle" +})("font-size:14px;text-align:left;margin-top:0;margin-bottom:5px;font-weight:500;color:", function (_ref6) { + var theme = _ref6.theme; + return theme.grey[300]; +}, ";", Elipsis, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DcUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramText = /*#__PURE__*/_styled("span", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt4" +} : { + target: "e1cx08bt4", + label: "ProgramText" +})("display:block;font-size:12.5px;font-weight:400;color:", function (_ref7) { + var theme = _ref7.theme; + return theme.text.grey[500]; +}, ";text-align:left;", Elipsis, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRDdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramImage = /*#__PURE__*/_styled("img", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt3" +} : { + target: "e1cx08bt3", + label: "ProgramImage" +})("margin-right:15px;border-radius:6px;width:100px;", function (_ref8) { + var isVerticalMode = _ref8.isVerticalMode; + return isVerticalMode && "width: 100%; margin-bottom: 10px"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramStack = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt2" +} : { + target: "e1cx08bt2", + label: "ProgramStack" +})("overflow:hidden;", function (_ref9) { + var isRTL = _ref9.isRTL; + return isRTL && "transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEdUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramBox = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt1" +} : { + target: "e1cx08bt1", + label: "ProgramBox" +})("position:absolute;padding:", function (_ref10) { + var width = _ref10.width; + return width === 0 ? 0 : 4; +}, "px;z-index:", function (_ref11) { + var isDragging = _ref11.isDragging, + isResizing = _ref11.isResizing; + return isDragging || isResizing ? Layers.Program * 3 : Layers.Program; +}, ";overflow:hidden;", function (_ref12) { + var isDragging = _ref12.isDragging, + isResizing = _ref12.isResizing; + return (!isDragging || !isResizing) && " &:hover {\n z-index: " + Layers.Program * 2 + ";\n\n " + ProgramResizeHandle + " {\n opacity: 1;\n }\n }"; +}, " ", function (_ref13) { + var isDragging = _ref13.isDragging, + isResizing = _ref13.isResizing, + theme = _ref13.theme; + return (isDragging || isResizing) && " \n border-radius: 10px;\n background: " + theme.green[200] + ";\n \n " + ProgramContent + "{\n user-select: none;\n cursor: move;\n }\n "; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1FcUMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); +var ProgramResizeHandle = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1cx08bt0" +} : { + target: "e1cx08bt0", + label: "ProgramResizeHandle" +})("position:absolute;opacity:0;", function (_ref14) { + var isResize = _ref14.isResize; + return !isResize && "display: none;"; +}, " ", function (_ref15) { + var isVerticalMode = _ref15.isVerticalMode, + left = _ref15.left; + return isVerticalMode && "\n " + (left ? "top: 0;" : "bottom: 0;") + "\n left:0;\n height:25px;\n width: 100%;\n cursor: " + (left ? "n-resize" : "s-resize") + ";\n "; +}, " ", function (_ref16) { + var isVerticalMode = _ref16.isVerticalMode, + left = _ref16.left; + return !isVerticalMode && "\n top: 0;\n bottom: 0;\n " + (left ? "left: 0;" : "right: 0;") + "\n width: 25px;\n cursor: " + (left ? "w-resize" : "e-resize") + ";\n "; +}, " &:after{content:\"\";position:absolute;margin:auto;border-radius:8px;background:", function (_ref17) { + var theme = _ref17.theme; + return theme.green[200]; +}, ";", function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + left = _ref18.left; + return !isVerticalMode && " top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n " + (left ? "left: 9px;" : "right: 9px;") + "\n "; +}, " ", function (_ref19) { + var isVerticalMode = _ref19.isVerticalMode, + left = _ref19.left; + return isVerticalMode && "\n " + (left ? "top: 9px;" : "bottom: 9px;") + "\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n "; +}, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2dyYW0uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZGOEMiLCJmaWxlIjoiUHJvZ3JhbS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Db250ZW50ID0gc3R5bGVkLmRpdiBgXG4gIGJvcmRlcjogMXB4IHNvbGlkICMxNzE5MjM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogMTBweCAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA8IDMwID8gNCA6IDIwKX1weDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZTogeyBwcmltYXJ5IH0gfSkgPT4gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtwcmltYXJ5WzYwMF19LCAke3ByaW1hcnlbNjAwXX0pYH07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLlByb2dyYW19O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7KHsgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSlgfTtcbiAgfVxuXG4gICR7KHsgaXNMaXZlLCBpc1ZlcnRpY2FsTW9kZSwgdGhlbWU6IHsgZ3JhZGllbnQgfSB9KSA9PiBpc0xpdmUgJiZcclxuICAgIGBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gJHtpc1ZlcnRpY2FsTW9kZSA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCJ9LCAke2dyYWRpZW50LmJsdWVbOTAwXX0sICR7Z3JhZGllbnQuYmx1ZVs2MDBdfSwke2dyYWRpZW50LmJsdWVbMzAwXX0pYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtRmxleCA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiYgYGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YH07XG5gO1xyXG5jb25zdCBFbGlwc2lzID0gYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtVGl0bGUgPSBzdHlsZWQucCBgXG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmV5WzMwMF19O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVRleHQgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEyLjVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzUwMF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAke0VsaXBzaXN9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbUltYWdlID0gc3R5bGVkLmltZyBgXG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB3aWR0aDogMTAwcHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJiBgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IDEwcHhgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBQcm9ncmFtU3RhY2sgPSBzdHlsZWQuZGl2IGBcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgJHsoeyBpc1JUTCB9KSA9PiBpc1JUTCAmJlxyXG4gICAgYHRyYW5zZm9ybTogc2NhbGUoLTEsMSk7IFxuICAgICBkaXNwbGF5OiBmbGV4OyBcbiAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgXG4gICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFByb2dyYW1Cb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAkeyh7IHdpZHRoIH0pID0+ICh3aWR0aCA9PT0gMCA/IDAgOiA0KX1weDtcbiAgei1pbmRleDogJHsoeyBpc0RyYWdnaW5nLCBpc1Jlc2l6aW5nIH0pID0+IGlzRHJhZ2dpbmcgfHwgaXNSZXNpemluZyA/IExheWVycy5Qcm9ncmFtICogMyA6IExheWVycy5Qcm9ncmFtfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcgfSkgPT4gKCFpc0RyYWdnaW5nIHx8ICFpc1Jlc2l6aW5nKSAmJlxyXG4gICAgYCAmOmhvdmVyIHtcbiAgICB6LWluZGV4OiAke0xheWVycy5Qcm9ncmFtICogMn07XG5cbiAgICAke1Byb2dyYW1SZXNpemVIYW5kbGV9IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9YH1cblxuICAkeyh7IGlzRHJhZ2dpbmcsIGlzUmVzaXppbmcsIHRoZW1lIH0pID0+IChpc0RyYWdnaW5nIHx8IGlzUmVzaXppbmcpICYmXHJcbiAgICBgIFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBcbiAgICAke1Byb2dyYW1Db250ZW50fXtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgY3Vyc29yOiBtb3ZlO1xuICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgUHJvZ3JhbVJlc2l6ZUhhbmRsZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJHsoeyBpc1Jlc2l6ZSB9KSA9PiAhaXNSZXNpemUgJiYgXCJkaXNwbGF5OiBub25lO1wifVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGBcbiAgICAke2xlZnQgPyBgdG9wOiAwO2AgOiBgYm90dG9tOiAwO2B9XG4gICAgbGVmdDowO1xuICAgIGhlaWdodDoyNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6ICR7bGVmdCA/IFwibi1yZXNpemVcIiA6IFwicy1yZXNpemVcIn07XG4gIGB9XG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gIWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICAke2xlZnQgPyBgbGVmdDogMDtgIDogYHJpZ2h0OiAwO2B9XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgY3Vyc29yOiAke2xlZnQgPyBcInctcmVzaXplXCIgOiBcImUtcmVzaXplXCJ9O1xuICAgIGB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyZWVuWzIwMF19O1xuXG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiAhaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICAgICR7bGVmdCA/IGBsZWZ0OiA5cHg7YCA6IGByaWdodDogOXB4O2B9XG4gICAgICAgIGB9XG4gICAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgbGVmdCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICAgJHtsZWZ0ID8gYHRvcDogOXB4O2AgOiBgYm90dG9tOiA5cHg7YH1cbiAgICAgbGVmdDo1MCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgIFxuICAgICAgICBgfVxuICB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9ncmFtLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$3, _templateObject2$2, _templateObject3$2, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14; +var TimelineTime = /*#__PURE__*/_styled("span", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf6" +} : { + target: "e1bnz7pf6", + label: "TimelineTime" +})("position:absolute;top:13px;left:", function (_ref) { + var isRTL = _ref.isRTL, + isBaseTimeFormat = _ref.isBaseTimeFormat, + isVerticalMode = _ref.isVerticalMode, + isWeekMonthMode = _ref.isWeekMonthMode; + if (isVerticalMode) { + if (isRTL) return isBaseTimeFormat ? 9 : 17; + return isBaseTimeFormat ? 9 : 14; + } + if (isWeekMonthMode) return 0; + return isRTL && isBaseTimeFormat ? "-32" : "-18"; +}, "px;color:", function (_ref2) { + var theme = _ref2.theme; + return theme.text.grey[300]; +}, ";", function (_ref3) { + var isRTL = _ref3.isRTL; + return isRTL && "\n transform: scale(-1, 1);\n "; +}, " ", function (_ref4) { + var theme = _ref4.theme, + isNewDay = _ref4.isNewDay; + return isNewDay && "color: " + theme.teal[100] + "; font-weight: 600"; +}, ";", function (_ref5) { + var isVerticalMode = _ref5.isVerticalMode, + isRTL = _ref5.isRTL; + return isVerticalMode && css(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose(["\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ", ";\n "])), isRTL ? "scale(-1,1)" : ""); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHd0MiLCJmaWxlIjoiVGltZWxpbmUuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVUaW1lID0gc3R5bGVkLnNwYW4gYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTNweDtcbiAgbGVmdDogJHsoeyBpc1JUTCwgaXNCYXNlVGltZUZvcm1hdCwgaXNWZXJ0aWNhbE1vZGUsIGlzV2Vla01vbnRoTW9kZSB9KSA9PiB7XHJcbiAgICBpZiAoaXNWZXJ0aWNhbE1vZGUpIHtcclxuICAgICAgICBpZiAoaXNSVEwpXHJcbiAgICAgICAgICAgIHJldHVybiBpc0Jhc2VUaW1lRm9ybWF0ID8gOSA6IDE3O1xyXG4gICAgICAgIHJldHVybiBpc0Jhc2VUaW1lRm9ybWF0ID8gOSA6IDE0O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzV2Vla01vbnRoTW9kZSlcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIHJldHVybiBpc1JUTCAmJiBpc0Jhc2VUaW1lRm9ybWF0ID8gXCItMzJcIiA6IFwiLTE4XCI7XHJcbn19cHg7XG5cbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuXG4gICR7KHsgaXNSVEwgfSkgPT4gaXNSVEwgJiZcclxuICAgIGBcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICAgIGB9XG5cbiAgJHsoeyB0aGVtZSwgaXNOZXdEYXkgfSkgPT4gaXNOZXdEYXkgJiYgYGNvbG9yOiAke3RoZW1lLnRlYWxbMTAwXX07IGZvbnQtd2VpZ2h0OiA2MDBgfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogLTEwcHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwJSkgJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwiXCJ9O1xuICAgIGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV2Vla01vbnRoRGF0ZSA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm06ICR7KHsgaXNSVEwgfSkgPT4gKGlzUlRMID8gXCJzY2FsZSgtMSwxKVwiIDogXCJzY2FsZSgxLDEpXCIpfTtcblxuICBzcGFuIHtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50ZXh0LmdyZXlbMzAwXX07XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICB9XG5cbiAgJHsoeyBzdHlsZVR5cGUsIHRoZW1lIH0pID0+IHN0eWxlVHlwZSA9PT0gXCJtb2Rlcm5cIiAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHNwYW46Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgIH1cbiAgICAgIHNwYW4ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZXh0LmdyZXlbMzAwXX07XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIH1cbiAgICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzUlRMIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgdHJhbnNmb3JtOiAke2lzUlRMID8gXCJzY2FsZSgtMSwxKVwiIDogXCJzY2FsZSgxLDEpXCJ9O1xuICAgIGB9O1xuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lRGl2aWRlcnMgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNnB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICBoZWlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAxcHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIH1cbiAgICBgfVxuXG4gICR7KHsgaXNOZXdEYXksIHRoZW1lIH0pID0+IGlzTmV3RGF5ICYmXHJcbiAgICBgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHdpZHRoOjJweDtcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUudGVhbFsxMDBdfTtcbiAgfWB9XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCwgZGF5V2lkdGgsIHRoZW1lLCB9KSA9PiBjc3MgYFxuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgICAgIHotaW5kZXg6ICR7TGF5ZXJzLlRpbWVsaW5lfTtcblxuICAgICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYm90dG9tOiAwcHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgYH1cblxuICAgICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgICBoZWlnaHQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIHdpZHRoOiAke2RheVdpZHRofXB4O1xuICAgICAgYH1cbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lQm94ID0gc3R5bGVkLmRpdiBgXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQsIHdpZHRoLCB0aW1lbGluZUhlaWdodCwgdGhlbWUgfSkgPT4gY3NzIGBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcblxuICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbGVmdDogJHtsZWZ0fXB4O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYH1cbiAgICAke2lzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBoZWlnaHQ6ICR7d2lkdGh9cHg7XG4gICAgICB3aWR0aDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICBgfVxuICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzVG9kYXksIGlzQ3VycmVudFRpbWUsIGlzVG9kYXlJbkhvdXJzSW5EYXlzLCBhcmVIb3Vyc0luRGF5cywgaXNXZWVrTW9udGhNb2RlLCB9KSA9PiB7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyRGVmYXVsdCA9IGlzVG9kYXkgJiYgaXNDdXJyZW50VGltZSA/IDIgOiAxO1xyXG4gICAgY29uc3QgdHlwZU51bWJlckluSG91cnNEYXlzID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IGlzVG9kYXlJbkhvdXJzSW5EYXlzICYmIGlzQ3VycmVudFRpbWVcclxuICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgIDogMVxyXG4gICAgICAgIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXIgPSBhcmVIb3Vyc0luRGF5c1xyXG4gICAgICAgID8gdHlwZU51bWJlckluSG91cnNEYXlzXHJcbiAgICAgICAgOiB0eXBlTnVtYmVyRGVmYXVsdDtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gaXNWZXJ0aWNhbE1vZGUgPyBcInRvcFwiIDogXCJsZWZ0XCI7XHJcbiAgICBpZiAoIWlzV2Vla01vbnRoTW9kZSkge1xyXG4gICAgICAgIHJldHVybiBgJjpudGgtb2YtdHlwZSgke3R5cGVOdW1iZXJ9KSB7XG4gICAgICAgICR7VGltZWxpbmVUaW1lfSB7XG4gICAgICAgICAgJHtwb3NpdGlvbn06IDBweDtcbiAgICAgICAgfVxuICAgICAgfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxufX1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aEJveCA9IHN0eWxlZChUaW1lbGluZUJveCkgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBzdHlsZVR5cGUsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUudGltZWxpbmUuZGl2aWRlci5iZ307XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAgICAgICAke2lzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAke3N0eWxlVHlwZSA9PT0gXCJtb2Rlcm5cIiA/IFwiMzUlXCIgOiBcIjcwJVwifTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgICBgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWVsaW5lLnN0eWxlcy5qcy5tYXAiXX0= */")); +var TimelineWeekMonthDate = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf5" +} : { + target: "e1bnz7pf5", + label: "TimelineWeekMonthDate" +})("display:flex;justify-content:center;align-items:center;flex-direction:column;height:100%;transform:", function (_ref6) { + var isRTL = _ref6.isRTL; + return isRTL ? "scale(-1,1)" : "scale(1,1)"; +}, ";span{color:", function (_ref7) { + var theme = _ref7.theme; + return theme.text.grey[300]; +}, ";font-size:16px;}", function (_ref8) { + var styleType = _ref8.styleType, + theme = _ref8.theme; + return styleType === "modern" && css(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose(["\n span:first-of-type {\n font-weight: 500;\n color: ", ";\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ", ";\n font-size: 24px;\n }\n "])), theme.teal[100], theme.text.grey[300]); +}, " ", function (_ref9) { + var isVerticalMode = _ref9.isVerticalMode, + isRTL = _ref9.isRTL; + return isVerticalMode && css(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose(["\n margin-top: 0px;\n transform: ", ";\n "])), isRTL ? "scale(-1,1)" : "scale(1,1)"); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ2dEIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineDividers = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf4" +} : { + target: "e1bnz7pf4", + label: "TimelineDividers" +})("position:relative;height:100%;width:100%;padding-bottom:6px;", function (_ref10) { + var isVerticalMode = _ref10.isVerticalMode; + return isVerticalMode && css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n grid-template-columns: 1fr;\n align-items: start;\n "]))); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRTJDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineDivider = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf3" +} : { + target: "e1bnz7pf3", + label: "TimelineDivider" +})("position:absolute;bottom:6px;background:", function (_ref11) { + var theme = _ref11.theme; + return theme.timeline.divider.bg; +}, ";height:10px;width:1px;left:", function (_ref12) { + var left = _ref12.left; + return left; +}, "px;", function (_ref13) { + var isVerticalMode = _ref13.isVerticalMode, + left = _ref13.left; + return isVerticalMode && css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n "])), left); +}, " ", function (_ref14) { + var isNewDay = _ref14.isNewDay, + theme = _ref14.theme; + return isNewDay && "&:first-of-type {\n width:2px;\n background: " + theme.teal[100] + ";\n }"; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RTBDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineWrapper = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf2" +} : { + target: "e1bnz7pf2", + label: "TimelineWrapper" +})(function (_ref15) { + var isVerticalMode = _ref15.isVerticalMode, + isSidebar = _ref15.isSidebar, + sidebarWidth = _ref15.sidebarWidth, + timelineHeight = _ref15.timelineHeight, + dayWidth = _ref15.dayWidth, + theme = _ref15.theme; + return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n position: sticky;\n background: ", ";\n z-index: ", ";\n\n ", "\n\n ", "\n "])), theme.primary[900], Layers.Timeline, isVerticalMode && css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n left: 0;\n bottom: 0px;\n float: left;\n width: ", "px;\n margin-top: ", "px;\n "])), timelineHeight, isSidebar ? sidebarWidth : 0), !isVerticalMode && css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n top: 0;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), isSidebar ? sidebarWidth : 0, timelineHeight, dayWidth)); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RzBDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineBox = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf1" +} : { + target: "e1bnz7pf1", + label: "TimelineBox" +})(function (_ref16) { + var isVerticalMode = _ref16.isVerticalMode, + left = _ref16.left, + width = _ref16.width, + timelineHeight = _ref16.timelineHeight, + theme = _ref16.theme; + return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n position: absolute;\n font-size: 14px;\n background-color: ", ";\n\n ", "\n ", "\n "])), theme.primary[900], !isVerticalMode && css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n left: ", "px;\n width: ", "px;\n height: 100%;\n "])), left, width), isVerticalMode && css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n height: ", "px;\n width: ", "px;\n "])), left, width, timelineHeight)); +}, " ", function (_ref17) { + var isVerticalMode = _ref17.isVerticalMode, + isToday = _ref17.isToday, + isCurrentTime = _ref17.isCurrentTime, + isTodayInHoursInDays = _ref17.isTodayInHoursInDays, + areHoursInDays = _ref17.areHoursInDays, + isWeekMonthMode = _ref17.isWeekMonthMode; + var typeNumberDefault = isToday && isCurrentTime ? 2 : 1; + var typeNumberInHoursDays = areHoursInDays ? isTodayInHoursInDays && isCurrentTime ? 2 : 1 : 1; + var typeNumber = areHoursInDays ? typeNumberInHoursDays : typeNumberDefault; + var position = isVerticalMode ? "top" : "left"; + if (!isWeekMonthMode) { + return "&:nth-of-type(" + typeNumber + ") {\n " + TimelineTime + " {\n " + position + ": 0px;\n }\n }"; + } + return ""; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpSXNDIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); +var TimelineWeekMonthBox = /*#__PURE__*/_styled(TimelineBox, process.env.NODE_ENV === "production" ? { + target: "e1bnz7pf0" +} : { + target: "e1bnz7pf0", + label: "TimelineWeekMonthBox" +})(function (_ref18) { + var isVerticalMode = _ref18.isVerticalMode, + styleType = _ref18.styleType, + theme = _ref18.theme; + return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n &:not(:last-of-type) {\n &:after {\n content: \"\";\n position: absolute;\n background: ", ";\n transform: translate(-50%, -50%);\n\n ", "\n }\n }\n "])), theme.timeline.divider.bg, isVerticalMode ? css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n bottom: 0;\n height: 1px;\n width: 80%;\n "]))) : css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n top: 50%;\n right: 0;\n height: 100%;\n height: ", ";\n width: 1px;\n "])), styleType === "modern" ? "35%" : "70%")); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVsaW5lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwS3dEIiwiZmlsZSI6IlRpbWVsaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lVGltZSA9IHN0eWxlZC5zcGFuIGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEzcHg7XG4gIGxlZnQ6ICR7KHsgaXNSVEwsIGlzQmFzZVRpbWVGb3JtYXQsIGlzVmVydGljYWxNb2RlLCBpc1dlZWtNb250aE1vZGUgfSkgPT4ge1xyXG4gICAgaWYgKGlzVmVydGljYWxNb2RlKSB7XHJcbiAgICAgICAgaWYgKGlzUlRMKVxyXG4gICAgICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNztcclxuICAgICAgICByZXR1cm4gaXNCYXNlVGltZUZvcm1hdCA/IDkgOiAxNDtcclxuICAgIH1cclxuICAgIGlmIChpc1dlZWtNb250aE1vZGUpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gaXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xOFwiO1xyXG59fXB4O1xuXG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnRleHQuZ3JleVszMDBdfTtcblxuICAkeyh7IGlzUlRMIH0pID0+IGlzUlRMICYmXHJcbiAgICBgXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICBgfVxuXG4gICR7KHsgdGhlbWUsIGlzTmV3RGF5IH0pID0+IGlzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNSVEwgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZVdlZWtNb250aERhdGUgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiAkeyh7IGlzUlRMIH0pID0+IChpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwiKX07XG5cbiAgc3BhbiB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gICR7KHsgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgJiZcclxuICAgIGNzcyBgXG4gICAgICBzcGFuOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19O1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICB9XG4gICAgICBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR7dGhlbWUudGV4dC5ncmV5WzMwMF19O1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1JUTCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICAgIHRyYW5zZm9ybTogJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwic2NhbGUoMSwxKVwifTtcbiAgICBgfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXJzID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlIH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZURpdmlkZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDZweDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50aW1lbGluZS5kaXZpZGVyLmJnfTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMXB4O1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgYH1cblxuICAkeyh7IGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBpc05ld0RheSAmJlxyXG4gICAgYCY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB3aWR0aDoycHg7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRlYWxbMTAwXX07XG4gIH1gfVxuYDtcclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCwgdGltZWxpbmVIZWlnaHQsIGRheVdpZHRoLCB0aGVtZSwgfSkgPT4gY3NzIGBcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgICB6LWluZGV4OiAke0xheWVycy5UaW1lbGluZX07XG5cbiAgICAgICR7aXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGB9XG5cbiAgICAgICR7IWlzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgICAgaGVpZ2h0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICB3aWR0aDogJHtkYXlXaWR0aH1weDtcbiAgICAgIGB9XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUJveCA9IHN0eWxlZC5kaXYgYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQsIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6ICR7bGVmdH1weDtcbiAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIGB9XG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgd2lkdGg6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgYH1cbiAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc1RvZGF5LCBpc0N1cnJlbnRUaW1lLCBpc1RvZGF5SW5Ib3Vyc0luRGF5cywgYXJlSG91cnNJbkRheXMsIGlzV2Vla01vbnRoTW9kZSwgfSkgPT4ge1xyXG4gICAgY29uc3QgdHlwZU51bWJlckRlZmF1bHQgPSBpc1RvZGF5ICYmIGlzQ3VycmVudFRpbWUgPyAyIDogMTtcclxuICAgIGNvbnN0IHR5cGVOdW1iZXJJbkhvdXJzRGF5cyA9IGFyZUhvdXJzSW5EYXlzXHJcbiAgICAgICAgPyBpc1RvZGF5SW5Ib3Vyc0luRGF5cyAmJiBpc0N1cnJlbnRUaW1lXHJcbiAgICAgICAgICAgID8gMlxyXG4gICAgICAgICAgICA6IDFcclxuICAgICAgICA6IDE7XHJcbiAgICBjb25zdCB0eXBlTnVtYmVyID0gYXJlSG91cnNJbkRheXNcclxuICAgICAgICA/IHR5cGVOdW1iZXJJbkhvdXJzRGF5c1xyXG4gICAgICAgIDogdHlwZU51bWJlckRlZmF1bHQ7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IGlzVmVydGljYWxNb2RlID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xyXG4gICAgaWYgKCFpc1dlZWtNb250aE1vZGUpIHtcclxuICAgICAgICByZXR1cm4gYCY6bnRoLW9mLXR5cGUoJHt0eXBlTnVtYmVyfSkge1xuICAgICAgICAke1RpbWVsaW5lVGltZX0ge1xuICAgICAgICAgICR7cG9zaXRpb259OiAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn19XG5gO1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVXZWVrTW9udGhCb3ggPSBzdHlsZWQoVGltZWxpbmVCb3gpIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgc3R5bGVUeXBlLCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLnRpbWVsaW5lLmRpdmlkZXIuYmd9O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgICAgJHtpc1ZlcnRpY2FsTW9kZVxyXG4gICAgPyBjc3MgYFxuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHtzdHlsZVR5cGUgPT09IFwibW9kZXJuXCIgPyBcIjM1JVwiIDogXCI3MCVcIn07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UaW1lbGluZS5zdHlsZXMuanMubWFwIl19 */")); + +var lineStyles = { + position: "absolute", + top: 64, + width: 3 +}; +var LineBox = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "ef4is9g0" +} : { + target: "ef4is9g0", + label: "LineBox" +})("position:", lineStyles.position, ";top:", function (_ref) { + var isTimeline = _ref.isTimeline; + return isTimeline ? lineStyles.top : 0; +}, "px;left:", function (_ref2) { + var left = _ref2.left; + return left; +}, "px;height:", function (_ref3) { + var height = _ref3.height; + return height; +}, "px;width:", lineStyles.width, "px;background:", function (_ref4) { + var theme = _ref4.theme; + return theme.green[300]; +}, ";pointer-events:none;z-index:", function (_ref5) { + var zIndex = _ref5.zIndex; + return zIndex; +}, ";", function (_ref6) { + var isVerticalMode = _ref6.isVerticalMode, + isTimeline = _ref6.isTimeline, + left = _ref6.left, + height = _ref6.height; + return isVerticalMode && " \n top: " + left + "px;\n left: " + (isTimeline ? lineStyles.top : 0) + "px;\n height: " + lineStyles.width + "px;\n width: " + height + "px;\n "; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpbmUuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1rQyIsImZpbGUiOiJMaW5lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5leHBvcnQgY29uc3QgbGluZVN0eWxlcyA9IHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICB0b3A6IDY0LFxyXG4gICAgd2lkdGg6IDMsXHJcbn07XHJcbmV4cG9ydCBjb25zdCBMaW5lQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiAke2xpbmVTdHlsZXMucG9zaXRpb259O1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSB9KSA9PiAoaXNUaW1lbGluZSA/IGxpbmVTdHlsZXMudG9wIDogMCl9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7bGluZVN0eWxlcy53aWR0aH1weDtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmVlblszMDBdfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6ICR7KHsgekluZGV4IH0pID0+IHpJbmRleH07XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNUaW1lbGluZSwgbGVmdCwgaGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgIFxuICAgICAgdG9wOiAke2xlZnR9cHg7XG4gICAgICBsZWZ0OiAke2lzVGltZWxpbmUgPyBsaW5lU3R5bGVzLnRvcCA6IDB9cHg7XG4gICAgICBoZWlnaHQ6ICR7bGluZVN0eWxlcy53aWR0aH1weDtcbiAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxpbmUuc3R5bGVzLmpzLm1hcCJdfQ== */")); + +var _templateObject$4; +var time = [0, 50, 0]; +var moveLeft = function moveLeft(animate) { + return keyframes(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteralLoose(["\n", "\n"])), time.map(function (item, index) { + return item + "% {\n transform: translateX(-" + animate.right[index] + ");\n}"; + })); +}; +var Box$2 = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e8ysujy1" +} : { + target: "e8ysujy1", + label: "Box" +})("position:absolute;top:0;left:0;bottom:0;width:100%;background:", function (_ref) { + var theme = _ref.theme; + return theme.loader.bg; +}, ";display:flex;justify-content:center;align-items:center;z-index:", Layers.Loader, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvYWRlci5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUzhCIiwiZmlsZSI6IkxvYWRlci5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuaW1wb3J0IHsga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCB7IExheWVycyB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmNvbnN0IHRpbWUgPSBbMCwgNTAsIDBdO1xyXG5jb25zdCBtb3ZlTGVmdCA9IChhbmltYXRlKSA9PiBrZXlmcmFtZXMgYFxuJHt0aW1lLm1hcCgoaXRlbSwgaW5kZXgpID0+IGAke2l0ZW19JSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJHthbmltYXRlLnJpZ2h0W2luZGV4XX0pO1xufWApfVxuYDtcclxuZXhwb3J0IGNvbnN0IEJveCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5sb2FkZXIuYmd9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogJHtMYXllcnMuTG9hZGVyfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBTaGFwZSA9IHN0eWxlZC5kaXYgYFxuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aCAqIDAuNDJ9cHg7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUsIGNvbG9yIH0pID0+IHRoZW1lLmxvYWRlcltjb2xvcl19O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDQ1cHg7XG4gIG1hcmdpbi1yaWdodDogJHsoeyBtYXJnaW5SaWdodCB9KSA9PiBtYXJnaW5SaWdodCA/PyAwfXB4O1xuICBhbmltYXRpb24tbmFtZTogJHsoeyBhbmltYXRlIH0pID0+IG1vdmVMZWZ0KGFuaW1hdGUpfTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkeyh7IHRyYW5zaXRpb24gfSkgPT4gdHJhbnNpdGlvbi5kdXJhdGlvbn1zO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkeyh7IHRyYW5zaXRpb24gfSkgPT4gdHJhbnNpdGlvbi5lYXNlID8/IFwiZWFzZS1pbi1vdXRcIn07XG4gIGFuaW1hdGlvbi1kZWxheTogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZGVsYXkgPz8gMH1zO1xuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxvYWRlci5zdHlsZXMuanMubWFwIl19 */")); +var Shape = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e8ysujy0" +} : { + target: "e8ysujy0", + label: "Shape" +})("width:", function (_ref2) { + var width = _ref2.width; + return width * 0.42; +}, "px;background:", function (_ref3) { + var theme = _ref3.theme, + color = _ref3.color; + return theme.loader[color]; +}, ";height:18px;border-radius:45px;margin-right:", function (_ref4) { + var marginRight = _ref4.marginRight; + return marginRight != null ? marginRight : 0; +}, "px;animation-name:", function (_ref5) { + var animate = _ref5.animate; + return moveLeft(animate); +}, ";animation-duration:", function (_ref6) { + var transition = _ref6.transition; + return transition.duration; +}, "s;animation-timing-function:", function (_ref7) { + var _transition$ease; + var transition = _ref7.transition; + return (_transition$ease = transition.ease) != null ? _transition$ease : "ease-in-out"; +}, ";animation-delay:", function (_ref8) { + var _transition$delay; + var transition = _ref8.transition; + return (_transition$delay = transition.delay) != null ? _transition$delay : 0; +}, "s;animation-iteration-count:infinite;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvYWRlci5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJnQyIsImZpbGUiOiJMb2FkZXIuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5jb25zdCB0aW1lID0gWzAsIDUwLCAwXTtcclxuY29uc3QgbW92ZUxlZnQgPSAoYW5pbWF0ZSkgPT4ga2V5ZnJhbWVzIGBcbiR7dGltZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBgJHtpdGVtfSUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSR7YW5pbWF0ZS5yaWdodFtpbmRleF19KTtcbn1gKX1cbmA7XHJcbmV4cG9ydCBjb25zdCBCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUubG9hZGVyLmJnfTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6ICR7TGF5ZXJzLkxvYWRlcn07XG5gO1xyXG5leHBvcnQgY29uc3QgU2hhcGUgPSBzdHlsZWQuZGl2IGBcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGggKiAwLjQyfXB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lLCBjb2xvciB9KSA9PiB0aGVtZS5sb2FkZXJbY29sb3JdfTtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiA0NXB4O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgbWFyZ2luUmlnaHQgfSkgPT4gbWFyZ2luUmlnaHQgPz8gMH1weDtcbiAgYW5pbWF0aW9uLW5hbWU6ICR7KHsgYW5pbWF0ZSB9KSA9PiBtb3ZlTGVmdChhbmltYXRlKX07XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZHVyYXRpb259cztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHsoeyB0cmFuc2l0aW9uIH0pID0+IHRyYW5zaXRpb24uZWFzZSA/PyBcImVhc2UtaW4tb3V0XCJ9O1xuICBhbmltYXRpb24tZGVsYXk6ICR7KHsgdHJhbnNpdGlvbiB9KSA9PiB0cmFuc2l0aW9uLmRlbGF5ID8/IDB9cztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Mb2FkZXIuc3R5bGVzLmpzLm1hcCJdfQ== */")); + +var _templateObject$5, _templateObject2$3, _templateObject3$3; +var boxStyles = function boxStyles(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + width = _ref.width; + return { + position: "absolute", + top: 0, + width: width != null ? width : 70, + height: 20 + }; +}; +var CurrentTimeBox = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "e1b7bm21" +} : { + target: "e1b7bm21", + label: "CurrentTimeBox" +})("position:", /*#__PURE__*/boxStyles().position, ";top:", function (_ref2) { + var top = _ref2.top; + return top; +}, "px;left:", function (_ref3) { + var left = _ref3.left; + return left; +}, "px;width:", function (_ref4) { + var width = _ref4.width; + return typeof width === "string" ? "auto" : width + "px"; +}, ";height:", /*#__PURE__*/boxStyles().height, "px;background-color:", function (_ref5) { + var theme = _ref5.theme; + return theme.primary[900]; +}, ";z-index:2;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1cnJlbnRUaW1lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFReUMiLCJmaWxlIjoiQ3VycmVudFRpbWUuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG5leHBvcnQgY29uc3QgYm94U3R5bGVzID0gKHsgd2lkdGggfSA9IHt9KSA9PiAoe1xyXG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcclxuICAgIHRvcDogMCxcclxuICAgIHdpZHRoOiB3aWR0aCA/PyA3MCxcclxuICAgIGhlaWdodDogMjAsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgQ3VycmVudFRpbWVCb3ggPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246ICR7Ym94U3R5bGVzKCkucG9zaXRpb259O1xuICB0b3A6ICR7KHsgdG9wIH0pID0+IHRvcH1weDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIHdpZHRoOiAkeyh7IHdpZHRoIH0pID0+ICh0eXBlb2Ygd2lkdGggPT09IFwic3RyaW5nXCIgPyBcImF1dG9cIiA6IGAke3dpZHRofXB4YCl9O1xuICBoZWlnaHQ6ICR7Ym94U3R5bGVzKCkuaGVpZ2h0fXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnByaW1hcnlbOTAwXX07XG4gIHotaW5kZXg6IDI7XG5gO1xyXG5leHBvcnQgY29uc3QgQ3VycmVudFRpbWVDb250ZW50ID0gc3R5bGVkLnNwYW4gYFxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc0Jhc2VUaW1lRm9ybWF0LCBpc1JUTCwgaXNOZXdEYXksIHRoZW1lIH0pID0+IGNzcyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAke3RoZW1lLmdyZWVuWzIwMF19O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWUucHJpbWFyeVs5MDBdfTtcbiAgICAke2lzTmV3RGF5ICYmIGBjb2xvcjogJHt0aGVtZS50ZWFsWzEwMF19OyBmb250LXdlaWdodDogNjAwYH07XG5cbiAgICAke2lzVmVydGljYWxNb2RlICYmXHJcbiAgICBjc3MgYFxuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgJHtpc1JUTCA/IFwic2NhbGUoLTEsMSlcIiA6IFwiXCJ9O1xuICAgIGB9XG5cbiAgICAkeyFpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogNHB4O1xuICAgICAgbGVmdDogJHtpc1JUTCAmJiBpc0Jhc2VUaW1lRm9ybWF0ID8gXCItMzJcIiA6IFwiLTE2XCJ9cHg7XG4gICAgICAke2lzUlRMICYmIFwidHJhbnNmb3JtOiBzY2FsZSgtMSwxKTtcIn1cbiAgICBgfVxuICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q3VycmVudFRpbWUuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var CurrentTimeContent = /*#__PURE__*/_styled("span", process.env.NODE_ENV === "production" ? { + target: "e1b7bm20" +} : { + target: "e1b7bm20", + label: "CurrentTimeContent" +})(function (_ref6) { + var isVerticalMode = _ref6.isVerticalMode, + isBaseTimeFormat = _ref6.isBaseTimeFormat, + isRTL = _ref6.isRTL, + isNewDay = _ref6.isNewDay, + theme = _ref6.theme; + return css(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ", ";\n background-color: ", ";\n ", ";\n\n ", "\n\n ", "\n "])), theme.green[200], theme.primary[900], isNewDay && "color: " + theme.teal[100] + "; font-weight: 600", isVerticalMode && css(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["\n left: 50%;\n transform: translate(-50%, -50%) ", ";\n "])), isRTL ? "scale(-1,1)" : ""), !isVerticalMode && css(_templateObject3$3 || (_templateObject3$3 = _taggedTemplateLiteralLoose(["\n top: 4px;\n left: ", "px;\n ", "\n "])), isRTL && isBaseTimeFormat ? "-32" : "-16", isRTL && "transform: scale(-1,1);")); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkN1cnJlbnRUaW1lLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjhDIiwiZmlsZSI6IkN1cnJlbnRUaW1lLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IGJveFN0eWxlcyA9ICh7IHdpZHRoIH0gPSB7fSkgPT4gKHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICB0b3A6IDAsXHJcbiAgICB3aWR0aDogd2lkdGggPz8gNzAsXHJcbiAgICBoZWlnaHQ6IDIwLFxyXG59KTtcclxuZXhwb3J0IGNvbnN0IEN1cnJlbnRUaW1lQm94ID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiAke2JveFN0eWxlcygpLnBvc2l0aW9ufTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiAodHlwZW9mIHdpZHRoID09PSBcInN0cmluZ1wiID8gXCJhdXRvXCIgOiBgJHt3aWR0aH1weGApfTtcbiAgaGVpZ2h0OiAke2JveFN0eWxlcygpLmhlaWdodH1weDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5wcmltYXJ5WzkwMF19O1xuICB6LWluZGV4OiAyO1xuYDtcclxuZXhwb3J0IGNvbnN0IEN1cnJlbnRUaW1lQ29udGVudCA9IHN0eWxlZC5zcGFuIGBcbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNCYXNlVGltZUZvcm1hdCwgaXNSVEwsIGlzTmV3RGF5LCB0aGVtZSB9KSA9PiBjc3MgYFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogJHt0aGVtZS5ncmVlblsyMDBdfTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLnByaW1hcnlbOTAwXX07XG4gICAgJHtpc05ld0RheSAmJiBgY29sb3I6ICR7dGhlbWUudGVhbFsxMDBdfTsgZm9udC13ZWlnaHQ6IDYwMGB9O1xuXG4gICAgJHtpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpICR7aXNSVEwgPyBcInNjYWxlKC0xLDEpXCIgOiBcIlwifTtcbiAgICBgfVxuXG4gICAgJHshaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6IDRweDtcbiAgICAgIGxlZnQ6ICR7aXNSVEwgJiYgaXNCYXNlVGltZUZvcm1hdCA/IFwiLTMyXCIgOiBcIi0xNlwifXB4O1xuICAgICAgJHtpc1JUTCAmJiBcInRyYW5zZm9ybTogc2NhbGUoLTEsMSk7XCJ9XG4gICAgYH1cbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUN1cnJlbnRUaW1lLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$6, _templateObject2$4, _templateObject3$4, _templateObject4$1, _templateObject5$1, _templateObject6$1; +function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var AreaFiled = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "euzzuzq2" +} : { + target: "euzzuzq2", + label: "AreaFiled" +})("position:absolute;pointer-events:", function (props) { + return props.isClickable ? "auto" : "none"; +}, ";cursor:", function (props) { + return props.isClickable ? "pointer" : "none"; +}, ";z-index:", Layers.Area, ";", function (_ref) { + var isVerticalMode = _ref.isVerticalMode, + positionX = _ref.positionX, + height = _ref.height, + width = _ref.width, + timelineHeight = _ref.timelineHeight; + return isVerticalMode ? css(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), positionX, timelineHeight, width, height) : css(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: ", "px;\n height: ", "px;\n width: ", "px;\n "])), timelineHeight, positionX, height, width); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlvQyIsImZpbGUiOiJBcmVhLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZC9tYWNyb1wiO1xyXG4vLyBJbXBvcnQgaGVscGVyc1xyXG5pbXBvcnQgeyBMYXllcnMgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuZXhwb3J0IGNvbnN0IEFyZWFGaWxlZCA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJhdXRvXCIgOiBcIm5vbmVcIil9O1xuICBjdXJzb3I6ICR7KHByb3BzKSA9PiAocHJvcHMuaXNDbGlja2FibGUgPyBcInBvaW50ZXJcIiA6IFwibm9uZVwiKX07XG4gIHotaW5kZXg6ICR7TGF5ZXJzLkFyZWF9O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIHBvc2l0aW9uWCwgaGVpZ2h0LCB3aWR0aCwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNWZXJ0aWNhbE1vZGVcclxuICAgID8gY3NzIGBcbiAgICAgICAgICB0b3A6ICR7cG9zaXRpb25YfXB4O1xuICAgICAgICAgIGxlZnQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgICAgIHdpZHRoOiAke2hlaWdodH1weDtcbiAgICAgICAgYFxyXG4gICAgOiBjc3MgYFxuICAgICAgICAgIHRvcDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgICBsZWZ0OiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBoZWlnaHQ6ICR7aGVpZ2h0fXB4O1xuICAgICAgICAgIHdpZHRoOiAke3dpZHRofXB4O1xuICAgICAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEFyZWFCZyA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQW5ub3RhdGlvbiA9IHN0eWxlZC5kaXYgYFxuICBwYWRkaW5nOiA0cHggNnB4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIHdpZHRoOiBtYXgtY29udGVudDtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBpc0xlZnQgPSBmYWxzZSwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGNzcyBgXG4gICAgJHshaXNWZXJ0aWNhbE1vZGVcclxuICAgID8gY3NzIGBcbiAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgIHRvcDogJHt0aW1lbGluZUhlaWdodH1weDtcbiAgICAgICAgICAke2lzTGVmdFxyXG4gICAgICAgID8gYGZsb2F0OmxlZnQ7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtgXHJcbiAgICAgICAgOiBgZmxvYXQ6cmlnaHQ7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O2B9XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgIGxlZnQ6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuICAgICAgICAgICR7aXNMZWZ0ICYmIGNzcyBgYCA/IGB0b3A6IDA7IGAgOiBgbWFyZ2luLXRvcDoke3dpZHRoIC0gNjB9cHg7YH1cbiAgICAgICAgYH1cbiAgYH1cbmA7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFyZWEuc3R5bGVzLmpzLm1hcCJdfQ== */")); +var AreaBg = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "euzzuzq1" +} : { + target: "euzzuzq1", + label: "AreaBg" +})(process.env.NODE_ENV === "production" ? { + name: "1b4920d", + styles: "position:absolute;top:0;left:0;width:100%;height:100%" +} : { + name: "1b4920d", + styles: "position:absolute;top:0;left:0;width:100%;height:100%", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCaUMiLCJmaWxlIjoiQXJlYS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuLy8gSW1wb3J0IGhlbHBlcnNcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmV4cG9ydCBjb25zdCBBcmVhRmlsZWQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogJHsocHJvcHMpID0+IChwcm9wcy5pc0NsaWNrYWJsZSA/IFwiYXV0b1wiIDogXCJub25lXCIpfTtcbiAgY3Vyc29yOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJwb2ludGVyXCIgOiBcIm5vbmVcIil9O1xuICB6LWluZGV4OiAke0xheWVycy5BcmVhfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBwb3NpdGlvblgsIGhlaWdodCwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgdG9wOiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgICAgICB3aWR0aDogJHtoZWlnaHR9cHg7XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgbGVmdDogJHtwb3NpdGlvblh9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xyXG5leHBvcnQgY29uc3QgQXJlYUFubm90YXRpb24gPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNMZWZ0ID0gZmFsc2UsIHdpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBjc3MgYFxuICAgICR7IWlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgJHtpc0xlZnRcclxuICAgICAgICA/IGBmbG9hdDpsZWZ0OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7YFxyXG4gICAgICAgIDogYGZsb2F0OnJpZ2h0OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtgfVxuICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICAke2lzTGVmdCAmJiBjc3MgYGAgPyBgdG9wOiAwOyBgIDogYG1hcmdpbi10b3A6JHt3aWR0aCAtIDYwfXB4O2B9XG4gICAgICAgIGB9XG4gIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcmVhLnN0eWxlcy5qcy5tYXAiXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2 +}); +var AreaAnnotation = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "euzzuzq0" +} : { + target: "euzzuzq0", + label: "AreaAnnotation" +})("padding:4px 6px;font-size:15px;width:max-content;", function (_ref2) { + var isVerticalMode = _ref2.isVerticalMode, + _ref2$isLeft = _ref2.isLeft, + isLeft = _ref2$isLeft === void 0 ? false : _ref2$isLeft, + width = _ref2.width, + timelineHeight = _ref2.timelineHeight; + return css(_templateObject3$4 || (_templateObject3$4 = _taggedTemplateLiteralLoose(["\n ", "\n "])), !isVerticalMode ? css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n top: ", "px;\n ", "\n "])), timelineHeight, isLeft ? "float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;" : "float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;") : css(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n position: sticky;\n left: ", "px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ", "\n "])), timelineHeight, isLeft && css(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose([""]))) ? "top: 0; " : "margin-top:" + (width - 60) + "px;")); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyZWEuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStCeUMiLCJmaWxlIjoiQXJlYS5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuLy8gSW1wb3J0IGhlbHBlcnNcclxuaW1wb3J0IHsgTGF5ZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XHJcbmV4cG9ydCBjb25zdCBBcmVhRmlsZWQgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogJHsocHJvcHMpID0+IChwcm9wcy5pc0NsaWNrYWJsZSA/IFwiYXV0b1wiIDogXCJub25lXCIpfTtcbiAgY3Vyc29yOiAkeyhwcm9wcykgPT4gKHByb3BzLmlzQ2xpY2thYmxlID8gXCJwb2ludGVyXCIgOiBcIm5vbmVcIil9O1xuICB6LWluZGV4OiAke0xheWVycy5BcmVhfTtcblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBwb3NpdGlvblgsIGhlaWdodCwgd2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgdG9wOiAke3Bvc2l0aW9uWH1weDtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgICAgICB3aWR0aDogJHtoZWlnaHR9cHg7XG4gICAgICAgIGBcclxuICAgIDogY3NzIGBcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgbGVmdDogJHtwb3NpdGlvblh9cHg7XG4gICAgICAgICAgaGVpZ2h0OiAke2hlaWdodH1weDtcbiAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBBcmVhQmcgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xyXG5leHBvcnQgY29uc3QgQXJlYUFubm90YXRpb24gPSBzdHlsZWQuZGl2IGBcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNMZWZ0ID0gZmFsc2UsIHdpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBjc3MgYFxuICAgICR7IWlzVmVydGljYWxNb2RlXHJcbiAgICA/IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB0b3A6ICR7dGltZWxpbmVIZWlnaHR9cHg7XG4gICAgICAgICAgJHtpc0xlZnRcclxuICAgICAgICA/IGBmbG9hdDpsZWZ0OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7YFxyXG4gICAgICAgIDogYGZsb2F0OnJpZ2h0OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtgfVxuICAgICAgICBgXHJcbiAgICA6IGNzcyBgXG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICBsZWZ0OiAke3RpbWVsaW5lSGVpZ2h0fXB4O1xuICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbiAgICAgICAgICAke2lzTGVmdCAmJiBjc3MgYGAgPyBgdG9wOiAwOyBgIDogYG1hcmdpbi10b3A6JHt3aWR0aCAtIDYwfXB4O2B9XG4gICAgICAgIGB9XG4gIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcmVhLnN0eWxlcy5qcy5tYXAiXX0= */")); + +var _templateObject$7, _templateObject2$5, _templateObject3$5; +function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } +var GridContainer = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "eopf81a3" +} : { + target: "eopf81a3", + label: "GridContainer" +})(process.env.NODE_ENV === "production" ? { + name: "1jykxby", + styles: "position:absolute;top:0;left:0;height:100%;width:100%;z-index:1" +} : { + name: "1jykxby", + styles: "position:absolute;top:0;left:0;height:100%;width:100%;z-index:1", + map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUV3QyIsImZpbGUiOiJHcmlkLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IEdyaWRDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNTaWRlYmFyLCBpc1RpbWVsaW5lLCBzaWRlYmFyV2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgIHRvcDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZEl0ZW0gPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wIH0pID0+IHRvcH1weDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gaGVpZ2h0fXB4O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyaWQuaXRlbX07XG4gIHotaW5kZXg6IDE7XG5cbiAgJHsoeyBpc0RheU1vZGUsIGlzSG92ZXJIaWdobGlnaHQsIGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+ICFpc0RheU1vZGUgJiZcclxuICAgIGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuICAgICR7aXNEcmFnT3ZlciAmJiBgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07YH1cbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWREaXZpZGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAkeyh7IHdpZHRoIH0pID0+IHdpZHRofXB4O1xuXG4gICR7KHsgaXNIb3ZlckhpZ2hsaWdodCwgdGhlbWUgfSkgPT4gaXNIb3ZlckhpZ2hsaWdodCAmJlxyXG4gICAgYFxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07XG4gICAgfSAgIFxuXG5cbiAgICBgfVxuICAkeyh7IGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+IGlzRHJhZ092ZXIgJiZcclxuICAgIGBcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTsgXG5cbiAgICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQsIHdpZHRoLCB0aGVtZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHt0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICAgIGB9XG5cbiAgJHsoeyBpc0l0ZW1DbGlja2FibGUgfSkgPT4gaXNJdGVtQ2xpY2thYmxlICYmXHJcbiAgICBjc3MgYFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1HcmlkLnN0eWxlcy5qcy5tYXAiXX0= */", + toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3 +}); +var GridWrapper = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "eopf81a2" +} : { + target: "eopf81a2", + label: "GridWrapper" +})("position:relative;top:", function (_ref) { + var isTimeline = _ref.isTimeline, + timelineHeight = _ref.timelineHeight; + return isTimeline ? timelineHeight : 0; +}, "px;left:", function (_ref2) { + var isSidebar = _ref2.isSidebar, + sidebarWidth = _ref2.sidebarWidth; + return isSidebar ? sidebarWidth : 0; +}, "px;", function (_ref3) { + var isVerticalMode = _ref3.isVerticalMode, + isSidebar = _ref3.isSidebar, + isTimeline = _ref3.isTimeline, + sidebarWidth = _ref3.sidebarWidth, + timelineHeight = _ref3.timelineHeight; + return isVerticalMode && "\n top: " + (isSidebar ? sidebarWidth : 0) + "px;\n left: " + (isTimeline ? timelineHeight : 0) + "px;\n "; +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVzQyIsImZpbGUiOiJHcmlkLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWQvbWFjcm9cIjtcclxuZXhwb3J0IGNvbnN0IEdyaWRDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6ICR7KHsgaXNUaW1lbGluZSwgdGltZWxpbmVIZWlnaHQgfSkgPT4gaXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgbGVmdDogJHsoeyBpc1NpZGViYXIsIHNpZGViYXJXaWR0aCB9KSA9PiAoaXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMCl9cHg7XG5cbiAgJHsoeyBpc1ZlcnRpY2FsTW9kZSwgaXNTaWRlYmFyLCBpc1RpbWVsaW5lLCBzaWRlYmFyV2lkdGgsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVmVydGljYWxNb2RlICYmXHJcbiAgICBgXG4gICAgIHRvcDogJHtpc1NpZGViYXIgPyBzaWRlYmFyV2lkdGggOiAwfXB4O1xuICAgICAgbGVmdDogJHtpc1RpbWVsaW5lID8gdGltZWxpbmVIZWlnaHQgOiAwfXB4O1xuICAgIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgR3JpZEl0ZW0gPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7KHsgdG9wIH0pID0+IHRvcH1weDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGhlaWdodDogJHsoeyBoZWlnaHQgfSkgPT4gaGVpZ2h0fXB4O1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmdyaWQuaXRlbX07XG4gIHotaW5kZXg6IDE7XG5cbiAgJHsoeyBpc0RheU1vZGUsIGlzSG92ZXJIaWdobGlnaHQsIGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+ICFpc0RheU1vZGUgJiZcclxuICAgIGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuICAgICR7aXNEcmFnT3ZlciAmJiBgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07YH1cbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWREaXZpZGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAkeyh7IGxlZnQgfSkgPT4gbGVmdH1weDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAkeyh7IHdpZHRoIH0pID0+IHdpZHRofXB4O1xuXG4gICR7KHsgaXNIb3ZlckhpZ2hsaWdodCwgdGhlbWUgfSkgPT4gaXNIb3ZlckhpZ2hsaWdodCAmJlxyXG4gICAgYFxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07XG4gICAgfSAgIFxuXG5cbiAgICBgfVxuICAkeyh7IGlzRHJhZ092ZXIsIHRoZW1lIH0pID0+IGlzRHJhZ092ZXIgJiZcclxuICAgIGBcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTsgXG5cbiAgICBgfVxuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGxlZnQsIHdpZHRoLCB0aGVtZSB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIHRvcDogJHtsZWZ0fXB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAke3dpZHRofXB4O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHt0aGVtZS5ncmlkLmRpdmlkZXJ9O1xuICAgIGB9XG5cbiAgJHsoeyBpc0l0ZW1DbGlja2FibGUgfSkgPT4gaXNJdGVtQ2xpY2thYmxlICYmXHJcbiAgICBjc3MgYFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGB9XG5gO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1HcmlkLnN0eWxlcy5qcy5tYXAiXX0= */")); +var GridItem = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "eopf81a1" +} : { + target: "eopf81a1", + label: "GridItem" +})("position:absolute;top:", function (_ref4) { + var top = _ref4.top; + return top; +}, "px;left:", function (_ref5) { + var left = _ref5.left; + return left; +}, "px;height:", function (_ref6) { + var height = _ref6.height; + return height; +}, "px;width:", function (_ref7) { + var width = _ref7.width; + return width; +}, "px;border:1px solid transparent;border-right-color:", function (_ref8) { + var theme = _ref8.theme; + return theme.grid.item; +}, ";border-bottom-color:", function (_ref9) { + var theme = _ref9.theme; + return theme.grid.item; +}, ";z-index:1;", function (_ref10) { + var isDayMode = _ref10.isDayMode, + isHoverHighlight = _ref10.isHoverHighlight, + isDragOver = _ref10.isDragOver, + theme = _ref10.theme; + return !isDayMode && isHoverHighlight && "\n &:hover {\n border: 1px solid " + theme.grid.highlight + ";\n } \n\n " + (isDragOver && "border: 1px solid " + theme.grid.highlight + ";") + "\n "; +}, " ", function (_ref11) { + var isItemClickable = _ref11.isItemClickable; + return isItemClickable && css(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteralLoose(["\n cursor: pointer;\n "]))); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCbUMiLCJmaWxlIjoiR3JpZC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBHcmlkQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxO1xuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAkeyh7IGlzVGltZWxpbmUsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gIGxlZnQ6ICR7KHsgaXNTaWRlYmFyLCBzaWRlYmFyV2lkdGggfSkgPT4gKGlzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDApfXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgaXNUaW1lbGluZSwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRJdGVtID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGh9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5pdGVtfTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICB6LWluZGV4OiAxO1xuXG4gICR7KHsgaXNEYXlNb2RlLCBpc0hvdmVySGlnaGxpZ2h0LCBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiAhaXNEYXlNb2RlICYmXHJcbiAgICBpc0hvdmVySGlnaGxpZ2h0ICYmXHJcbiAgICBgXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTtcbiAgICB9ICAgXG5cbiAgICAke2lzRHJhZ092ZXIgJiYgYGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O2B9XG4gICAgYH1cblxuICAkeyh7IGlzSXRlbUNsaWNrYWJsZSB9KSA9PiBpc0l0ZW1DbGlja2FibGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBHcmlkRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcblxuICAkeyh7IGlzSG92ZXJIaWdobGlnaHQsIHRoZW1lIH0pID0+IGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuXG4gICAgYH1cbiAgJHsoeyBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiBpc0RyYWdPdmVyICYmXHJcbiAgICBgXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07IFxuXG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGhlbWUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7dGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZC5zdHlsZXMuanMubWFwIl19 */")); +var GridDivider = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "production" ? { + target: "eopf81a0" +} : { + target: "eopf81a0", + label: "GridDivider" +})("position:absolute;top:0;left:", function (_ref12) { + var left = _ref12.left; + return left; +}, "px;border:1px solid transparent;border-right-color:", function (_ref13) { + var theme = _ref13.theme; + return theme.grid.divider; +}, ";height:100%;width:", function (_ref14) { + var width = _ref14.width; + return width; +}, "px;", function (_ref15) { + var isHoverHighlight = _ref15.isHoverHighlight, + theme = _ref15.theme; + return isHoverHighlight && "\n &:hover {\n border: 1px solid " + theme.grid.highlight + ";\n } \n\n\n "; +}, " ", function (_ref16) { + var isDragOver = _ref16.isDragOver, + theme = _ref16.theme; + return isDragOver && "\n border: 1px solid " + theme.grid.highlight + "; \n\n "; +}, " ", function (_ref17) { + var isVerticalMode = _ref17.isVerticalMode, + left = _ref17.left, + width = _ref17.width, + theme = _ref17.theme; + return isVerticalMode && css(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteralLoose(["\n top: ", "px;\n left: 0;\n width: 100%;\n height: ", "px;\n border-bottom-color: ", ";\n "])), left, width, theme.grid.divider); +}, " ", function (_ref18) { + var isItemClickable = _ref18.isItemClickable; + return isItemClickable && css(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteralLoose(["\n cursor: pointer;\n "]))); +}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdyaWQuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDc0MiLCJmaWxlIjoiR3JpZC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcclxuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkL21hY3JvXCI7XHJcbmV4cG9ydCBjb25zdCBHcmlkQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxO1xuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAkeyh7IGlzVGltZWxpbmUsIHRpbWVsaW5lSGVpZ2h0IH0pID0+IGlzVGltZWxpbmUgPyB0aW1lbGluZUhlaWdodCA6IDB9cHg7XG4gIGxlZnQ6ICR7KHsgaXNTaWRlYmFyLCBzaWRlYmFyV2lkdGggfSkgPT4gKGlzU2lkZWJhciA/IHNpZGViYXJXaWR0aCA6IDApfXB4O1xuXG4gICR7KHsgaXNWZXJ0aWNhbE1vZGUsIGlzU2lkZWJhciwgaXNUaW1lbGluZSwgc2lkZWJhcldpZHRoLCB0aW1lbGluZUhlaWdodCB9KSA9PiBpc1ZlcnRpY2FsTW9kZSAmJlxyXG4gICAgYFxuICAgICB0b3A6ICR7aXNTaWRlYmFyID8gc2lkZWJhcldpZHRoIDogMH1weDtcbiAgICAgIGxlZnQ6ICR7aXNUaW1lbGluZSA/IHRpbWVsaW5lSGVpZ2h0IDogMH1weDtcbiAgICBgfVxuYDtcclxuZXhwb3J0IGNvbnN0IEdyaWRJdGVtID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAkeyh7IHRvcCB9KSA9PiB0b3B9cHg7XG4gIGxlZnQ6ICR7KHsgbGVmdCB9KSA9PiBsZWZ0fXB4O1xuICBoZWlnaHQ6ICR7KHsgaGVpZ2h0IH0pID0+IGhlaWdodH1weDtcbiAgd2lkdGg6ICR7KHsgd2lkdGggfSkgPT4gd2lkdGh9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5pdGVtfTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5ncmlkLml0ZW19O1xuICB6LWluZGV4OiAxO1xuXG4gICR7KHsgaXNEYXlNb2RlLCBpc0hvdmVySGlnaGxpZ2h0LCBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiAhaXNEYXlNb2RlICYmXHJcbiAgICBpc0hvdmVySGlnaGxpZ2h0ICYmXHJcbiAgICBgXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lLmdyaWQuaGlnaGxpZ2h0fTtcbiAgICB9ICAgXG5cbiAgICAke2lzRHJhZ092ZXIgJiYgYGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O2B9XG4gICAgYH1cblxuICAkeyh7IGlzSXRlbUNsaWNrYWJsZSB9KSA9PiBpc0l0ZW1DbGlja2FibGUgJiZcclxuICAgIGNzcyBgXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYH1cbmA7XHJcbmV4cG9ydCBjb25zdCBHcmlkRGl2aWRlciA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogJHsoeyBsZWZ0IH0pID0+IGxlZnR9cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmlnaHQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogJHsoeyB3aWR0aCB9KSA9PiB3aWR0aH1weDtcblxuICAkeyh7IGlzSG92ZXJIaWdobGlnaHQsIHRoZW1lIH0pID0+IGlzSG92ZXJIaWdobGlnaHQgJiZcclxuICAgIGBcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dGhlbWUuZ3JpZC5oaWdobGlnaHR9O1xuICAgIH0gICBcblxuXG4gICAgYH1cbiAgJHsoeyBpc0RyYWdPdmVyLCB0aGVtZSB9KSA9PiBpc0RyYWdPdmVyICYmXHJcbiAgICBgXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5ncmlkLmhpZ2hsaWdodH07IFxuXG4gICAgYH1cblxuICAkeyh7IGlzVmVydGljYWxNb2RlLCBsZWZ0LCB3aWR0aCwgdGhlbWUgfSkgPT4gaXNWZXJ0aWNhbE1vZGUgJiZcclxuICAgIGNzcyBgXG4gICAgICB0b3A6ICR7bGVmdH1weDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogJHt3aWR0aH1weDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7dGhlbWUuZ3JpZC5kaXZpZGVyfTtcbiAgICBgfVxuXG4gICR7KHsgaXNJdGVtQ2xpY2thYmxlIH0pID0+IGlzSXRlbUNsaWNrYWJsZSAmJlxyXG4gICAgY3NzIGBcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBgfVxuYDtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZC5zdHlsZXMuanMubWFwIl19 */")); + +var theme = { + primary: { + 600: "#1a202c", + 900: "#171923" + }, + grey: { + 300: "#d1d1d1" + }, + white: "#fff", + teal: { + 100: "#38B2AC" + }, + green: { + 200: "#389493", + 300: "#2C7A7B" + }, + loader: { + teal: "#5DDADB", + purple: "#3437A2", + pink: "#F78EB6", + bg: "#171923db" + }, + scrollbar: { + border: "#ffffff", + thumb: { + bg: "#e1e1e1" + } + }, + gradient: { + blue: { + 300: "#002eb3", + 600: "#002360", + 900: "#051937" + } + }, + text: { + grey: { + 300: "#a0aec0", + 500: "#718096" + } + }, + timeline: { + divider: { + bg: "#718096" + } + }, + grid: { + item: "#7180961a", + divider: "#7180961a", + highlight: "#38B2AC" + } +}; + +function useLayout(_ref) { + var _scrollBoxRef$current; + var isVerticalMode = _ref.isVerticalMode, + isToday = _ref.isToday, + isInitialScrollToNow = _ref.isInitialScrollToNow, + initialScrollPositions = _ref.initialScrollPositions, + height = _ref.height, + width = _ref.width, + channelsNumber = _ref.channelsNumber, + startDate = _ref.startDate, + endDate = _ref.endDate, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + hoursInDays = _ref.hoursInDays; + var useIsomorphicEffect = useIsomorphicLayoutEffect(); + var containerRef = React__default.useRef(null); + var scrollBoxRef = React__default.useRef(null); + //-------- State -------- + var _React$useState = React__default.useState(0), + scrollY = _React$useState[0], + setScrollY = _React$useState[1]; + var _React$useState2 = React__default.useState(0), + scrollX = _React$useState2[0], + setScrollX = _React$useState2[1]; + var _React$useState3 = React__default.useState(width), + layoutWidth = _React$useState3[0], + setLayoutWidth = _React$useState3[1]; + var _React$useState4 = React__default.useState(height), + layoutHeight = _React$useState4[0], + setLayoutHeight = _React$useState4[1]; + //-------- Variables -------- + var scrollBoxInnerHeight = scrollBoxRef == null || (_scrollBoxRef$current = scrollBoxRef.current) == null ? void 0 : _scrollBoxRef$current.scrollHeight; + var initialScrollPositionsSerialized = JSON.stringify(initialScrollPositions); + // -------- Handlers -------- + var handleScrollDebounced = useDebouncedCallback(function (value) { + setScrollY(value.y); + setScrollX(value.x); + }, DEBOUNCE_WAIT, { + maxWait: DEBOUNCE_WAIT_MAX + }); + var handleOnScroll = React__default.useCallback(function (e) { + handleScrollDebounced({ + y: e.target.scrollTop, + x: e.target.scrollLeft + }); + }, [handleScrollDebounced]); + var hoursInDaysSerialized = JSON.stringify(hoursInDays); + var areHoursInDays = React__default.useMemo(function () { + return hoursInDays.length > 0; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [hoursInDaysSerialized]); + var handleOnScrollToNow = React__default.useCallback(function () { + if (scrollBoxRef != null && scrollBoxRef.current && isToday) { + var _containerRef$current; + var clientWidth = width != null ? width : (_containerRef$current = containerRef.current) == null ? void 0 : _containerRef$current.clientWidth; + var date = new Date(startDate); + var positionX = getPositionX(startOfDay(date), getNewDateTz(), startDate, endDate, hourWidth); + if (areHoursInDays) { + positionX = getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth + }); + } + var scrollNow = positionX - clientWidth / 2 + sidebarWidth; + if (isVerticalMode) { + scrollBoxRef.current.scrollTop = scrollNow + hourWidth; + } else { + scrollBoxRef.current.scrollLeft = scrollNow; + } + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, isToday, areHoursInDays, width, hourWidth, sidebarWidth, startDate, endDate]); + var handleScrollToInitialPositions = React__default.useCallback(function () { + var isInitialScrollPosition = Object.keys(initialScrollPositions).length; + if (scrollBoxRef != null && scrollBoxRef.current && isInitialScrollPosition) { + var _initialScrollPositio = initialScrollPositions.top, + top = _initialScrollPositio === void 0 ? 0 : _initialScrollPositio, + _initialScrollPositio2 = initialScrollPositions.left, + left = _initialScrollPositio2 === void 0 ? 0 : _initialScrollPositio2; + scrollBoxRef.current.scrollTo({ + behavior: "smooth", + top: top, + left: left + }); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [initialScrollPositionsSerialized, scrollBoxInnerHeight]); + var handleOnScrollTop = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var top = scrollBoxRef.current.scrollTop + value; + scrollBoxRef.current.scrollTop = top; + } + }, [hourWidth]); + var handleOnScrollRight = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var right = scrollBoxRef.current.scrollLeft + value; + scrollBoxRef.current.scrollLeft = right; + } + }, [hourWidth]); + var handleOnScrollLeft = React__default.useCallback(function (value) { + if (value === void 0) { + value = hourWidth; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + var left = scrollBoxRef.current.scrollLeft - value; + scrollBoxRef.current.scrollLeft = left; + } + }, [hourWidth]); + var handleResizeDebounced = useDebouncedCallback(function () { + if (containerRef != null && containerRef.current && !width) { + var container = containerRef.current; + var clientWidth = container.clientWidth; + setLayoutWidth(clientWidth); + } + }, DEBOUNCE_WAIT * 4, { + maxWait: DEBOUNCE_WAIT_MAX * 4 + }); + var handleCheckIsLayoutBottom = React__default.useCallback(function (offset) { + if (offset === void 0) { + offset = 0; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isVerticalMode) { + // Check if the scroll is at the bottom in scrollBox in vertical mode + var _scrollBoxRef$current2 = scrollBoxRef.current, + scrollWidth = _scrollBoxRef$current2.scrollWidth, + scrollLeft = _scrollBoxRef$current2.scrollLeft, + clientWidth = _scrollBoxRef$current2.clientWidth; + if (scrollLeft === 0) return false; + return scrollWidth - scrollLeft - offset <= clientWidth; + } else { + // Check if the scroll is at the bottom in scrollBox + var _scrollBoxRef$current3 = scrollBoxRef.current, + scrollHeight = _scrollBoxRef$current3.scrollHeight, + scrollTop = _scrollBoxRef$current3.scrollTop, + clientHeight = _scrollBoxRef$current3.clientHeight; + if (scrollTop === 0) return false; + return scrollHeight - scrollTop - offset <= clientHeight; + } + } + return false; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, scrollX, scrollY, channelsNumber]); + var handleCheckIsLayoutRight = React__default.useCallback(function (offset) { + if (offset === void 0) { + offset = 0; + } + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isVerticalMode) { + // Check if the scroll is at the right in scrollBox in vertical mode + var _scrollBoxRef$current4 = scrollBoxRef.current, + scrollHeight = _scrollBoxRef$current4.scrollHeight, + scrollTop = _scrollBoxRef$current4.scrollTop, + clientHeight = _scrollBoxRef$current4.clientHeight; + if (scrollTop === 0) return false; + return scrollHeight - scrollTop - offset <= clientHeight; + } else { + // Check if the scroll is at the right in scrollBox + var _scrollBoxRef$current5 = scrollBoxRef.current, + scrollWidth = _scrollBoxRef$current5.scrollWidth, + scrollLeft = _scrollBoxRef$current5.scrollLeft, + clientWidth = _scrollBoxRef$current5.clientWidth; + if (scrollLeft === 0) return false; + return scrollWidth - scrollLeft - offset <= clientWidth; + } + } + return false; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [scrollX, scrollY, channelsNumber]); + // -------- Effects -------- + useIsomorphicEffect(function () { + if (containerRef != null && containerRef.current) { + var container = containerRef.current; + if (!width) { + var clientWidth = container.clientWidth; + setLayoutWidth(clientWidth); + } + if (!height) { + var clientHeight = container.clientHeight; + setLayoutHeight(clientHeight); + } + } + }, [height, width, startDate]); + useIsomorphicEffect(function () { + var isInitialScrollPosition = Object.keys(initialScrollPositions).length; + if (scrollBoxRef != null && scrollBoxRef.current) { + if (isInitialScrollPosition) { + handleScrollToInitialPositions(); + } else if (isInitialScrollToNow) { + handleOnScrollToNow(); + } + } + }, [isToday, isInitialScrollToNow, initialScrollPositionsSerialized]); + useIsomorphicEffect(function () { + window.addEventListener("resize", handleResizeDebounced); + return function () { + window.removeEventListener("resize", handleResizeDebounced); + }; + }, [width]); + return { + containerRef: containerRef, + scrollBoxRef: scrollBoxRef, + scrollX: scrollX, + scrollY: scrollY, + layoutWidth: layoutWidth, + layoutHeight: layoutHeight, + isLayoutBottom: handleCheckIsLayoutBottom, + isLayoutRight: handleCheckIsLayoutRight, + onScroll: handleOnScroll, + onScrollToNow: handleOnScrollToNow, + onScrollTop: handleOnScrollTop, + onScrollLeft: handleOnScrollLeft, + onScrollRight: handleOnScrollRight + }; +} + +var _excluded$2 = ["isToday", "currentDate"], + _excluded2 = ["hourWidth", "dayWidth"], + _excluded3 = ["isLayoutBottom", "isLayoutRight", "containerRef", "scrollBoxRef"]; +var defaultStartDateTime = /*#__PURE__*/formatTime( /*#__PURE__*/startOfToday()); +var defaultMode = { + type: "day", + style: "default" +}; +var defaultTimezone = { + enabled: false, + zone: "", + mode: "formatInTimeZone" +}; +var defaultOverlap = { + enabled: false, + mode: "stack", + layerOverlapLevel: 0.4 +}; +var defaultGrid = { + enabled: false, + hoverHighlight: false +}; +var defaultDnd = { + enabled: false, + mode: "row" +}; +function useEpg(props) { + var _props$isVerticalMode = props.isVerticalMode, + isVerticalMode = _props$isVerticalMode === void 0 ? false : _props$isVerticalMode, + _props$isRTL = props.isRTL, + isRTL = _props$isRTL === void 0 ? false : _props$isRTL, + _props$isResize = props.isResize, + isResize = _props$isResize === void 0 ? false : _props$isResize, + _props$isBaseTimeForm = props.isBaseTimeFormat, + isBaseTimeFormat = _props$isBaseTimeForm === void 0 ? false : _props$isBaseTimeForm, + _props$isSidebar = props.isSidebar, + isSidebar = _props$isSidebar === void 0 ? true : _props$isSidebar, + _props$isTimeline = props.isTimeline, + isTimeline = _props$isTimeline === void 0 ? true : _props$isTimeline, + _props$isLine = props.isLine, + isLine = _props$isLine === void 0 ? true : _props$isLine, + _props$isCurrentTime = props.isCurrentTime, + isCurrentTime = _props$isCurrentTime === void 0 ? false : _props$isCurrentTime, + _props$isInitialScrol = props.isInitialScrollToNow, + isInitialScrollToNow = _props$isInitialScrol === void 0 ? true : _props$isInitialScrol; + var width = props.width, + height = props.height; + var channelsEpg = props.channels, + epg = props.epg; + var _props$startDate = props.startDate, + startDateInput = _props$startDate === void 0 ? defaultStartDateTime : _props$startDate, + _props$endDate = props.endDate, + endDateInput = _props$endDate === void 0 ? "" : _props$endDate, + _props$hoursInDays = props.hoursInDays, + customHoursInDays = _props$hoursInDays === void 0 ? [] : _props$hoursInDays; + var _props$initialScrollP = props.initialScrollPositions, + initialScrollPositions = _props$initialScrollP === void 0 ? {} : _props$initialScrollP, + _props$liveRefreshTim = props.liveRefreshTime, + liveRefreshTime = _props$liveRefreshTim === void 0 ? LIVE_REFRESH_TIME : _props$liveRefreshTim, + _props$timelineDivide = props.timelineDividers, + timelineDividers = _props$timelineDivide === void 0 ? TIMELINE_DIVIDERS : _props$timelineDivide, + snap = props.snap, + _props$mode = props.mode, + customMode = _props$mode === void 0 ? defaultMode : _props$mode, + _props$overlap = props.overlap, + customOverlap = _props$overlap === void 0 ? defaultOverlap : _props$overlap, + _props$timezone = props.timezone, + customTimezone = _props$timezone === void 0 ? defaultTimezone : _props$timezone, + _props$areas = props.areas, + areas = _props$areas === void 0 ? [] : _props$areas, + _props$grid = props.grid, + grid = _props$grid === void 0 ? defaultGrid : _props$grid, + _props$dnd = props.dnd, + dnd = _props$dnd === void 0 ? defaultDnd : _props$dnd, + customTheme = props.theme, + globalStyles = props.globalStyles; + var _props$dayWidth = props.dayWidth, + customDayWidth = _props$dayWidth === void 0 ? DAY_WIDTH : _props$dayWidth, + _props$sidebarWidth = props.sidebarWidth, + sidebarWidth = _props$sidebarWidth === void 0 ? SIDEBAR_WIDTH : _props$sidebarWidth, + _props$timelineHeight = props.timelineHeight, + customTimelineHeight = _props$timelineHeight === void 0 ? TIMELINE_HEIGHT : _props$timelineHeight, + _props$itemHeight = props.itemHeight, + itemHeight = _props$itemHeight === void 0 ? ITEM_HEIGHT : _props$itemHeight, + _props$itemOverscan = props.itemOverscan, + itemOverscan = _props$itemOverscan === void 0 ? ITEM_OVERSCAN : _props$itemOverscan; + var _props$channelMapKey = props.channelMapKey, + channelMapKey = _props$channelMapKey === void 0 ? "uuid" : _props$channelMapKey, + _props$programChannel = props.programChannelMapKey, + programChannelMapKey = _props$programChannel === void 0 ? "channelUuid" : _props$programChannel; + var timezone = _extends({}, defaultTimezone, customTimezone); + var mode = _extends({}, defaultMode, customMode); + var overlap = _extends({}, defaultOverlap, customOverlap); + var isOverlapEnabled = overlap.enabled; + var isMultirowsDnd = dnd.mode === "multi-rows"; + // Get converted start and end dates + var _getTimeRangeDates = getTimeRangeDates(startDateInput, endDateInput), + startDate = _getTimeRangeDates.startDate, + endDate = _getTimeRangeDates.endDate; + // Get hours in days + var serializedHoursInDays = JSON.stringify(customHoursInDays); + var hoursInDays = React__default.useMemo(function () { + return getNumberOfHoursInDays({ + customHoursInDays: customHoursInDays, + startDate: startDate + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [serializedHoursInDays]); + // Get days resources eg. number of days, dates and hours + var _React$useMemo = React__default.useMemo(function () { + return getDayResources({ + startDate: startDate, + endDate: endDate, + modeType: mode.type + }); + }, [startDate, endDate, mode.type]), + isToday = _React$useMemo.isToday, + currentDate = _React$useMemo.currentDate, + daysResources = _objectWithoutPropertiesLoose(_React$useMemo, _excluded$2); + // Get day and hour width of the day + var _React$useMemo2 = React__default.useMemo(function () { + return getDayWidthResources({ + dayWidth: customDayWidth, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + modeType: mode.type + }); + }, [customDayWidth, startDate, endDate, hoursInDays, mode.type]), + hourWidth = _React$useMemo2.hourWidth, + dayWidth = _React$useMemo2.dayWidth, + dayWidthResourcesProps = _objectWithoutPropertiesLoose(_React$useMemo2, _excluded2); + // -------- State -------- + var _React$useReducer = React__default.useReducer(function (x) { + return x + 1; + }, 0), + update = _React$useReducer[0], + setForceUpdate = _React$useReducer[1]; + var _React$useReducer2 = React__default.useReducer(function (x) { + return x + 1; + }, 0), + updateChannels = _React$useReducer2[0], + setForceChannelsUpdate = _React$useReducer2[1]; + var _React$useState = React__default.useState({ + index: -1, + uuid: "" + }), + dndChannelUuid = _React$useState[0], + setDndChannelUuid = _React$useState[1]; + var _React$useState2 = React__default.useState(function () { + return 0; + }), + newOverlaps = _React$useState2[0], + setNewOverlaps = _React$useState2[1]; + var _React$useState3 = React__default.useState({}), + overlaps = _React$useState3[0], + setOverlaps = _React$useState3[1]; + var _React$useState4 = React__default.useState({}), + channelOverlapsCount = _React$useState4[0], + setChannelOverlapsCount = _React$useState4[1]; + var timezoneSerialized = JSON.stringify(timezone); + // Set base timezone functions + React__default.useMemo(function () { + if (timezone.enabled) { + setTimezoneOptionsCache(timezone); + } + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [timezoneSerialized]); + React__default.useEffect(function () { + setForceUpdate(); + setDndChannelUuid({ + index: -1, + uuid: "" + }); + }, [isVerticalMode]); + var _useLayout = useLayout({ + isVerticalMode: isVerticalMode, + isToday: isToday, + isInitialScrollToNow: isInitialScrollToNow, + initialScrollPositions: initialScrollPositions, + startDate: startDate, + endDate: endDate, + sidebarWidth: sidebarWidth, + width: width, + height: height, + hourWidth: hourWidth, + currentDate: currentDate, + hoursInDays: hoursInDays, + channelsNumber: channelsEpg.length + }), + isLayoutBottom = _useLayout.isLayoutBottom, + isLayoutRight = _useLayout.isLayoutRight, + containerRef = _useLayout.containerRef, + scrollBoxRef = _useLayout.scrollBoxRef, + layoutProps = _objectWithoutPropertiesLoose(_useLayout, _excluded3); + React__default.useEffect(function () { + return function () { + resetLayoutScreenCloneElements(); + }; + }, []); + var scrollX = layoutProps.scrollX, + scrollY = layoutProps.scrollY, + layoutWidth = layoutProps.layoutWidth, + layoutHeight = layoutProps.layoutHeight; + var onScroll = layoutProps.onScroll, + onScrollToNow = layoutProps.onScrollToNow, + onScrollTop = layoutProps.onScrollTop, + onScrollLeft = layoutProps.onScrollLeft, + onScrollRight = layoutProps.onScrollRight; + //-------- Variables -------- + var timelineHeight = getTimelineHeight(customTimelineHeight, mode); + var channelsEpgSerialized = React__default.useMemo(function () { + return JSON.stringify(channelsEpg); + }, [channelsEpg]); + var channelOverlapsCountSerialized = React__default.useMemo(function () { + return channelOverlapsCount; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify(channelOverlapsCount)]); + var channels = React__default.useMemo(function () { + // Convert channels + return getConvertedChannels(isOverlapEnabled, overlap.mode, overlap.layerOverlapLevel, channelsEpg, itemHeight, channelMapKey, channelOverlapsCount); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isOverlapEnabled, overlap.mode, overlap.layerOverlapLevel, channelsEpgSerialized, channelOverlapsCountSerialized, itemHeight, channelMapKey, newOverlaps, updateChannels]); + var startDateTime = formatTime(startDate); + var endDateTime = formatTime(endDate); + var channelsSerialized = React__default.useMemo(function () { + return JSON.stringify(channels); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channels]); + var overlapsSerialized = React__default.useMemo(function () { + return overlaps; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify(overlaps)]); + var _React$useMemo3 = React__default.useMemo(function () { + var data = getConvertedPrograms({ + isVerticalMode: isVerticalMode, + isOverlapEnabled: isOverlapEnabled, + programChannelMapKey: programChannelMapKey, + data: epg, + channels: channels, + startDate: startDateTime, + endDate: endDateTime, + hoursInDays: hoursInDays, + itemHeight: itemHeight, + hourWidth: hourWidth + }); + if (isOverlapEnabled) { + var _overlaps = overlaps; + var _checkOverlaps = checkOverlaps(isMultirowsDnd, isVerticalMode, dndChannelUuid, _overlaps, data), + itemsOverlaps = _checkOverlaps.overlaps, + channelOverlaps = _checkOverlaps.channelOverlaps; + setChannelOverlapsCount(_extends({}, channelOverlapsCount, channelOverlaps)); + setNewOverlaps(function (prev) { + return prev + 1; + }); + setOverlaps(itemsOverlaps); + return { + programs: data, + programOverlaps: itemsOverlaps + }; + } + return { + programs: data, + programOverlaps: {} + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isMultirowsDnd, isOverlapEnabled, isVerticalMode, epg, channelsSerialized, overlapsSerialized, startDateTime, endDateTime, itemHeight, hourWidth, hoursInDays, programChannelMapKey, timezoneSerialized, update]), + programs = _React$useMemo3.programs, + programOverlaps = _React$useMemo3.programOverlaps; + var gridItems = React__default.useMemo(function () { + if (!grid.enabled) return []; + return getConvertedGridItems({ + isVerticalMode: isVerticalMode, + channels: channels, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + mode: mode, + dayWidthResources: dayWidthResourcesProps, + daysResources: daysResources + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [grid.enabled, channelsSerialized, mode.type, dayWidthResourcesProps.numberOfHoursInDay, dayWidthResourcesProps.numberOfMonths, daysResources.numberOfDays, dayWidth, hourWidth, sidebarWidth, timelineHeight, isVerticalMode]); + var theme$1 = _extends({}, theme, customTheme); + // -------- Handlers -------- + var isProgramVisible = React__default.useCallback(function (position, overlapsCount) { + return getItemVisibility({ + isVerticalMode: isVerticalMode, + itemOverscan: itemOverscan, + overlapsCount: overlapsCount, + position: position, + scrollY: scrollY, + scrollX: scrollX, + containerHeight: layoutHeight, + containerWidth: layoutWidth + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, itemOverscan, layoutHeight, layoutWidth, scrollY, scrollX]); + var isChannelVisible = React__default.useCallback(function (position) { + return getSidebarItemVisibility({ + isVerticalMode: isVerticalMode, + itemOverscan: itemOverscan, + position: position, + scrollX: scrollX, + scrollY: scrollY, + containerHeight: layoutHeight, + containerWidth: layoutWidth + }); + }, [isVerticalMode, itemOverscan, scrollY, scrollX, layoutHeight, layoutWidth]); + var isTimelineVisible = React__default.useCallback(function (position) { + return getTimelineItemVisibility({ + position: position, + scrollY: scrollY, + scrollX: scrollX, + containerHeight: layoutHeight, + containerWidth: layoutWidth, + isVerticalMode: isVerticalMode + }); + }, [scrollY, scrollX, layoutHeight, layoutWidth, isVerticalMode]); + var dndOnSuccessCb = React__default.useCallback(function (event) { + return dnd == null || dnd.onDnDSuccess == null ? void 0 : dnd.onDnDSuccess(event); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + []); + var resizeMouseUp = React__default.useCallback(function (props) { + var newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + setDndChannelUuid({ + index: epg[props.index].channelIndex, + uuid: epg[props.index][programChannelMapKey] + }); + dndOnSuccessCb(epg[props.index]); + setForceUpdate(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, startDate, hourWidth, programs]); + var dragMouseUp = React__default.useCallback( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(props) { + var newTime, element, checkChannelTopOutRange, checkChannelTopInRange, isChannelTopInRange, isChannelTopOutRange, newChannel, newChannelRange, newChannelEpgIndexes; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + element = _extends({}, epg[props.index]); + checkChannelTopOutRange = function checkChannelTopOutRange() { + var elementChannel = element.channelPosition; + if (props.top > elementChannel.top + elementChannel.height - 1 || props.top < elementChannel.top - 1) { + return true; + } + return false; + }; + checkChannelTopInRange = function checkChannelTopInRange() { + var elementChannel = element.channelPosition; + return elementChannel.top <= props.top && props.top <= elementChannel.top + elementChannel.height ? true : false; + }; + isChannelTopInRange = checkChannelTopInRange(); + isChannelTopOutRange = checkChannelTopOutRange(); + if (isMultirowsDnd && isChannelTopOutRange) { + newChannel = channels.find(function (channel) { + return channel.position.top === props.top; + }); + newChannelRange = channels.find(function (channel) { + return channel.position.top <= props.top && props.top <= channel.position.top + channel.position.height; + }); + if (newChannel) { + newChannelEpgIndexes = getChannelEpgIndexes(newChannel[channelMapKey]); + if (newChannelEpgIndexes) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannel[channelMapKey]; + epg[props.index].channelIndex = newChannel.index; + epg[props.index].channelPosition = { + top: newChannel.position.top, + height: newChannel.position.height, + left: newChannel.position.left + }; + } else { + setChannelEpgIndexes({ + uuid: newChannel[channelMapKey], + first: props.index, + last: props.index + }); + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannel[channelMapKey]; + epg[props.index].channelIndex = newChannel.index; + epg[props.index].channelPosition = { + top: newChannel.position.top, + height: newChannel.position.height, + left: newChannel.position.left + }; + } + } else if (newChannelRange) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + epg[props.index][programChannelMapKey] = newChannelRange[channelMapKey]; + epg[props.index].channelIndex = newChannelRange.index; + epg[props.index].channelPosition = { + top: newChannelRange.position.top, + height: newChannelRange.position.height, + left: newChannelRange.position.left + }; + } + } else if (isMultirowsDnd && isChannelTopInRange) { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + } else { + epg[props.index].since = newTime.since; + epg[props.index].till = newTime.till; + setDndChannelUuid({ + index: epg[props.index].channelIndex, + uuid: epg[props.index][programChannelMapKey] + }); + } + dndOnSuccessCb(epg[props.index]); + setForceUpdate(); + case 9: + case "end": + return _context.stop(); + } + }, _callee); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; + }(), + // eslint-disable-next-line react-hooks/exhaustive-deps + [isMultirowsDnd, startDate, hourWidth, programs]); + var handleGetLayoutData = React__default.useCallback(function (events) { + return events.map(function (event) { + return _extends({}, event.data); + }); + }, []); + var handleOpenChannelGroupTree = React__default.useCallback(function (data) { + channelsEpg[data.index].isOpen = !channelsEpg[data.index].isOpen; + setForceChannelsUpdate(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channels]); + var handleGetDropItemData = React__default.useCallback(function (data) { + return setUpdatedLayoutItem(data, mode.type); + }, [mode.type]); + var getEpgProps = function getEpgProps() { + return { + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isSidebar: isSidebar, + isLine: isLine, + isTimeline: isTimeline, + width: width, + height: height, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + ref: containerRef, + theme: theme$1, + globalStyles: globalStyles + }; + }; + var getLayoutProps = function getLayoutProps() { + return _extends({ + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isBaseTimeFormat: isBaseTimeFormat, + isSidebar: isSidebar, + isTimeline: isTimeline, + isLine: isLine, + isCurrentTime: isCurrentTime, + isProgramVisible: isProgramVisible, + isChannelVisible: isChannelVisible, + isTimelineVisible: isTimelineVisible, + isToday: isToday, + isResize: isResize, + programs: programs, + programOverlaps: programOverlaps, + channels: channels, + channelOverlapsCount: channelOverlapsCount, + layerOverlapLevel: overlap.layerOverlapLevel, + snap: snap, + grid: grid, + gridItems: gridItems, + dnd: dnd, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + liveRefreshTime: liveRefreshTime, + scrollY: scrollY, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + itemHeight: itemHeight, + currentDate: currentDate, + mode: mode, + timezone: timezone, + timelineDividers: timelineDividers, + overlapMode: overlap.mode, + overlap: overlap, + areas: areas, + openChannelGroupTree: handleOpenChannelGroupTree, + onScroll: onScroll, + dragMouseUp: dragMouseUp, + resizeMouseUp: resizeMouseUp + }, daysResources, dayWidthResourcesProps, { + ref: scrollBoxRef + }); + }; + return { + isLayoutBottom: isLayoutBottom, + isLayoutRight: isLayoutRight, + getEpgProps: getEpgProps, + getLayoutProps: getLayoutProps, + getLayoutData: handleGetLayoutData, + getDropItemData: handleGetDropItemData, + onScrollToNow: onScrollToNow, + onScrollTop: onScrollTop, + onScrollLeft: onScrollLeft, + onScrollRight: onScrollRight, + scrollY: scrollY, + scrollX: scrollX + }; +} + +function useInterval(callback, delay) { + var useIsomorphicEffect = useIsomorphicLayoutEffect(); + var savedCallback = React__default.useRef(callback); + useIsomorphicEffect(function () { + savedCallback.current = callback; + }, [callback]); + React__default.useEffect(function () { + if (!delay && delay !== 0) { + return; + } + var id = setInterval(function () { + return savedCallback.current(); + }, delay); + return function () { + return clearInterval(id); + }; + }, [delay]); +} + +function useIsTouchDevice() { + var _React$useState = React__default.useState(false), + isMobile = _React$useState[0], + setIsMobile = _React$useState[1]; + React__default.useEffect(function () { + function checkDevice() { + var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.userAgent.includes("Mac") && "ontouchend" in document; + var androidOrWebOS = /Android|webOS/.test(navigator.userAgent); + var isMobileDevice = iOS || androidOrWebOS; + var isTouchScreen = "ontouchstart" in window || navigator.maxTouchPoints > 0 || window.matchMedia && window.matchMedia("(any-pointer: coarse)").matches; + setIsMobile(isMobileDevice || isTouchScreen); + } + checkDevice(); + window.addEventListener("resize", checkDevice); + return function () { + window.removeEventListener("resize", checkDevice); + }; + }, []); + return isMobile; +} + +function useDrag(props) { + var isDndEnabled = props.isDndEnabled, + isDndMutlirows = props.isDndMutlirows, + isVerticalMode = props.isVerticalMode, + initialPosition = props.initialPosition, + data = props.data, + dayWidth = props.dayWidth, + itemHeight = props.itemHeight, + contentHeight = props.contentHeight, + dndSnapX = props.dndSnapX, + _props$dndSnapY = props.dndSnapY, + dndSnapY = _props$dndSnapY === void 0 ? itemHeight : _props$dndSnapY, + elementRef = props.elementRef, + mouseUpCb = props.mouseUpCb, + dndMouseUpCb = props.dndMouseUpCb; + var isClicked = useRef(false); + var isMouseMove = useRef(false); + var isTouchDevice = useIsTouchDevice(); + var _useState = useState(false), + isDragging = _useState[0], + setIsDragging = _useState[1]; + var _useState2 = useState(false), + isPreventScroll = _useState2[0], + setIsPreventScroll = _useState2[1]; + var _useState3 = useState({ + x: initialPosition.left, + y: initialPosition.top + }), + position = _useState3[0], + setPosition = _useState3[1]; + var _useState4 = useState({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }), + coords = _useState4[0], + setCoords = _useState4[1]; + var id = data.id, + index = data.index, + since = data.since, + till = data.till, + channelPosition = data.channelPosition; + var handleMouseDown = useCallback(function (e) { + e.stopPropagation(); + isClicked.current = true; + isTouchDevice && setIsPreventScroll(true); + setIsDragging(true); + var event = isTouchDevice ? e.touches[0] : e; + coords.startY = event.clientY; + coords.startX = event.clientX; + }, [isTouchDevice, coords]); + var handleMouseClick = useCallback(function (e) { + if (isMouseMove.current) { + e.stopPropagation(); + e.preventDefault(); + } + }, []); + var handleMouseUp = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { + var _elementRef$current, _elementRef$current2, _elementRef$current3, _elementRef$current4, options, optionsYX, isDndMouseUpSuccess, optionsY, _isDndMouseUpSuccess; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (isVerticalMode) { + coords.lastY = (_elementRef$current = elementRef.current) == null ? void 0 : _elementRef$current.offsetTop; + coords.lastX = (_elementRef$current2 = elementRef.current) == null ? void 0 : _elementRef$current2.offsetLeft; + } else { + coords.lastY = (_elementRef$current3 = elementRef.current) == null ? void 0 : _elementRef$current3.offsetTop; + coords.lastX = (_elementRef$current4 = elementRef.current) == null ? void 0 : _elementRef$current4.offsetLeft; + } + options = { + id: id, + index: index, + since: since, + till: till + }; + if (!(!isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.top !== coords.lastY))) { + _context.next = 8; + break; + } + optionsYX = _extends({}, options, { + top: coords.lastY, + left: coords.lastX, + initialPositionLeft: initialPosition.left, + initialPositionTop: initialPosition.top + }); + _context.next = 6; + return dndMouseUpCb == null ? void 0 : dndMouseUpCb(optionsYX, data); + case 6: + isDndMouseUpSuccess = _context.sent; + if (isDndMouseUpSuccess) { + mouseUpCb(optionsYX); + } else { + elementRef.current.style.left = initialPosition.left + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: initialPosition.left, + y: initialPosition.top + }); + }); + } + case 8: + if (!(isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.top !== coords.lastY))) { + _context.next = 14; + break; + } + optionsY = _extends({}, options, { + top: coords.lastX, + left: coords.lastY, + initialPositionLeft: initialPosition.top, + initialPositionTop: initialPosition.left + }); + _context.next = 12; + return dndMouseUpCb == null ? void 0 : dndMouseUpCb(optionsY, data); + case 12: + _isDndMouseUpSuccess = _context.sent; + if (_isDndMouseUpSuccess) { + mouseUpCb(optionsY); + } else { + elementRef.current.style.left = initialPosition.left + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: initialPosition.left, + y: initialPosition.top + }); + }); + } + case 14: + isClicked.current = false; + setIsDragging(false); + if (isTouchDevice) { + setIsPreventScroll(false); + } + setTimeout(function () { + return isMouseMove.current = false; + }, 0); + case 18: + case "end": + return _context.stop(); + } + }, _callee); + })), + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, initialPosition.top, initialPosition.left, coords, id, index, since, till, mouseUpCb]); + var initialPositionSerialized = JSON.stringify(initialPosition); + useEffect(function () { + // if (isVerticalMode) { + // setCoords({ + // startY: initialPosition.top, + // lastY: initialPosition.top, + // startX: initialPosition.left, + // lastX: initialPosition.left, + // }); + // } + setCoords({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }); + setPosition({ + x: initialPosition.left, + y: initialPosition.top + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isVerticalMode, initialPositionSerialized]); + useEffect(function () { + function handleMouseMove(e) { + var _elementRef$current5, _elementRef$current6, _elementRef$current7, _elementRef$current8; + if (isPreventScroll) { + e.preventDefault(); + } + if (!isDndEnabled) return; + if (!isClicked.current) return; + if (!elementRef.current) return; + isMouseMove.current = true; + var event = isTouchDevice ? e.touches[0] : e; + var offsetWidth = isVerticalMode ? (_elementRef$current5 = elementRef.current) == null ? void 0 : _elementRef$current5.offsetHeight : (_elementRef$current6 = elementRef.current) == null ? void 0 : _elementRef$current6.offsetWidth; + var offsetHeight = isVerticalMode ? (_elementRef$current7 = elementRef.current) == null ? void 0 : _elementRef$current7.offsetWidth : (_elementRef$current8 = elementRef.current) == null ? void 0 : _elementRef$current8.offsetHeight; + var elementChannel = channelPosition; + if (isVerticalMode) { + var nextYValue = event.clientY - coords.startY + coords.lastY; + var nextY = dndSnapX ? Math.round(nextYValue / dndSnapX) * dndSnapX : nextYValue; + if (isDndMutlirows) { + var nextX = event.clientX - coords.startX + coords.lastX; + var nextXSnap = Math.round(nextX / dndSnapY) * dndSnapY; + if (nextXSnap >= 0 && nextXSnap <= contentHeight - offsetHeight && nextY >= 0 && nextY <= dayWidth - offsetWidth) { + var checkTopRange = function checkTopRange() { + if (nextXSnap > elementChannel.top + elementChannel.height - 1) { + return true; + } else if (nextXSnap < elementChannel.top - 1) { + return true; + } + return false; + }; + var isOutTopRange = checkTopRange(); + if (!isOutTopRange) { + elementRef.current.style.top = nextY + "px"; + elementRef.current.style.left = initialPosition.left + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY, + x: initialPosition.left + }); + }); + } else { + elementRef.current.style.top = nextY + "px"; + elementRef.current.style.left = nextXSnap + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY, + x: nextXSnap + }); + }); + } + } + } else if (nextY >= 0 && nextY <= dayWidth - offsetWidth) { + elementRef.current.style.top = nextY + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: nextY + }); + }); + } + } else { + var nextXValue = event.clientX - coords.startX + coords.lastX; + var _nextX = dndSnapX ? Math.round(nextXValue / dndSnapX) * dndSnapX : nextXValue; + if (isDndMutlirows) { + var _nextY = event.clientY - coords.startY + coords.lastY; + var nextYSnap = Math.round(_nextY / dndSnapY) * dndSnapY; + if (nextYSnap >= 0 && nextYSnap <= contentHeight - offsetHeight && _nextX >= 0 && _nextX <= dayWidth - offsetWidth) { + var _checkTopRange = function _checkTopRange() { + if (nextYSnap > elementChannel.top + elementChannel.height - 1) { + return true; + } else if (nextYSnap < elementChannel.top - 1) { + return true; + } + return false; + }; + var _isOutTopRange = _checkTopRange(); + if (!_isOutTopRange) { + elementRef.current.style.left = _nextX + "px"; + elementRef.current.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX, + y: initialPosition.top + }); + }); + } else { + elementRef.current.style.top = nextYSnap + "px"; + elementRef.current.style.left = _nextX + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX, + y: nextYSnap + }); + }); + } + } + } else if (_nextX >= 0 && _nextX <= dayWidth - offsetWidth) { + elementRef.current.style.left = _nextX + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: _nextX + }); + }); + } + } + } + var mouseMoveEvent = isTouchDevice ? "touchmove" : "mousemove"; + var mouseUpEvent = isTouchDevice ? "touchend" : "mouseup"; + var options = isTouchDevice ? { + passive: false + } : undefined; + if (isDndEnabled) { + document.addEventListener(mouseMoveEvent, handleMouseMove, options); + document.addEventListener(mouseUpEvent, handleMouseUp); + } + return function () { + document.removeEventListener(mouseMoveEvent, handleMouseMove); + document.removeEventListener(mouseUpEvent, handleMouseUp); + }; + }, [isTouchDevice, isPreventScroll, isDndEnabled, isVerticalMode, isDragging, isDndMutlirows, initialPosition.top, initialPosition.left, channelPosition, dndSnapX, dndSnapY, coords, dayWidth, itemHeight, contentHeight, elementRef, handleMouseUp]); + if (isDndEnabled) { + var events = isTouchDevice ? { + onTouchStart: handleMouseDown, + onTouchEnd: handleMouseUp + } : { + onMouseDown: handleMouseDown, + onMouseUp: handleMouseUp + }; + return { + dndEvents: _extends({ + isDragging: isDragging, + ref: elementRef, + onClick: handleMouseClick + }, events), + currentPositionX: isVerticalMode ? position.y : position.x + }; + } + return getDefaultDragProps(initialPosition.left); +} + +function useResize(_ref) { + var isResize = _ref.isResize, + isVerticalMode = _ref.isVerticalMode, + data = _ref.data, + dayWidth = _ref.dayWidth, + contentHeight = _ref.contentHeight, + initialPosition = _ref.initialPosition, + snapX = _ref.snapX, + elementRef = _ref.elementRef, + mouseUpCb = _ref.mouseUpCb; + var isClicked = useRef(false); + var isMouseMove = useRef(false); + var isTouchDevice = useIsTouchDevice(); + // State + var _useState = useState(false), + isPreventScroll = _useState[0], + setIsPreventScroll = _useState[1]; + var _useState2 = useState(false), + isResizing = _useState2[0], + setIsResizing = _useState2[1]; + var _useState3 = useState(false), + isResizingLeft = _useState3[0], + setIsResizingLeft = _useState3[1]; + var _useState4 = useState(false), + isResizingRight = _useState4[0], + setIsResizingRight = _useState4[1]; + var _useState5 = useState(0), + mouseOffsetX = _useState5[0], + setMouseOffsetX = _useState5[1]; + var _useState6 = useState({ + x: initialPosition.left, + y: initialPosition.top, + width: isVerticalMode ? initialPosition.height : initialPosition.width + }), + position = _useState6[0], + setPosition = _useState6[1]; + var _useState7 = useState({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }), + coords = _useState7[0], + setCoords = _useState7[1]; + var id = data.id, + index = data.index, + since = data.since, + till = data.till; + var initialWidth = useMemo(function () { + return isVerticalMode ? initialPosition.height : initialPosition.width; + }, [isVerticalMode, initialPosition.height, initialPosition.width]); + var handleMouseDown = useCallback(function (left) { + if (left === void 0) { + left = false; + } + return function (e) { + e.stopPropagation(); + isClicked.current = true; + isTouchDevice && setIsPreventScroll(true); + setIsResizing(true); + var container = elementRef.current; + if (!container) return; + var event = isTouchDevice ? e.touches[0] : e; + setMouseOffsetX(isVerticalMode ? event.pageY : event.pageX); + coords.startY = event.clientY; + coords.startX = event.clientX; + if (left) { + setIsResizingLeft(true); + setIsResizingRight(false); + } else { + setIsResizingLeft(false); + setIsResizingRight(true); + } + }; + }, [isTouchDevice, isVerticalMode, coords, elementRef]); + var handleMouseClick = useCallback(function (e) { + if (isMouseMove.current) { + e.stopPropagation(); + e.preventDefault(); + } + }, []); + var handleMouseUp = useCallback(function () { + if (isVerticalMode) { + var _elementRef$current, _elementRef$current2, _elementRef$current3; + coords.lastY = (_elementRef$current = elementRef.current) == null ? void 0 : _elementRef$current.offsetTop; + coords.lastX = (_elementRef$current2 = elementRef.current) == null ? void 0 : _elementRef$current2.offsetLeft; + position.width = (_elementRef$current3 = elementRef.current) == null ? void 0 : _elementRef$current3.offsetHeight; + } else { + var _elementRef$current4, _elementRef$current5, _elementRef$current6; + coords.lastY = (_elementRef$current4 = elementRef.current) == null ? void 0 : _elementRef$current4.offsetTop; + coords.lastX = (_elementRef$current5 = elementRef.current) == null ? void 0 : _elementRef$current5.offsetLeft; + position.width = (_elementRef$current6 = elementRef.current) == null ? void 0 : _elementRef$current6.offsetWidth; + } + var options = { + id: id, + index: index, + since: since, + till: till + }; + if (!isVerticalMode && isClicked.current && (initialPosition.left !== coords.lastX || initialPosition.width !== position.width)) { + mouseUpCb(_extends({}, options, { + top: coords.lastY, + left: coords.lastX, + width: position.width, + initialPositionTop: initialPosition.top, + initialPositionLeft: initialPosition.left, + initialWidth: initialPosition.width + })); + } + if (isVerticalMode && isClicked.current && (initialPosition.top !== coords.lastY || initialPosition.width !== position.width)) { + mouseUpCb(_extends({}, options, { + top: coords.lastX, + left: coords.lastY, + width: position.width, + initialPositionTop: initialPosition.left, + initialPositionLeft: initialPosition.top, + initialWidth: initialPosition.height + })); + } + setIsResizing(false); + isClicked.current = false; + if (isTouchDevice) { + setIsPreventScroll(false); + } + setTimeout(function () { + return isMouseMove.current = false; + }, 0); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isTouchDevice, isVerticalMode, id, index, since, till, initialWidth, initialPosition.left, initialPosition.width, mouseUpCb]); + var initialPositionSerialized = JSON.stringify(initialPosition); + useEffect(function () { + // if (isVerticalMode) { + // setCoords({ + // startY: initialPosition.top, + // lastY: initialPosition.top, + // startX: initialPosition.left, + // lastX: initialPosition.left, + // }); + // } + setCoords({ + startY: initialPosition.top, + lastY: initialPosition.top, + startX: initialPosition.left, + lastX: initialPosition.left + }); + setPosition({ + x: initialPosition.left, + y: initialPosition.top, + width: isVerticalMode ? initialPosition.height : initialPosition.width + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isVerticalMode, initialPositionSerialized]); + useEffect(function () { + function handleMouseMove(e) { + if (isPreventScroll) { + e.preventDefault(); + } + if (!isResizing) return; + if (!isClicked.current) return; + if (!elementRef.current) return; + isMouseMove.current = true; + var event = isTouchDevice ? e.touches[0] : e; + var element = elementRef.current; + var elementRect = element.getBoundingClientRect(); + if (isVerticalMode) { + var _elementRef$current7; + var offsetHeight = (_elementRef$current7 = elementRef.current) == null ? void 0 : _elementRef$current7.offsetHeight; + var nextY = event.clientY - coords.startY + coords.lastY; + var snapYTop = snapX ? Math.round((event.pageY - mouseOffsetX) / snapX) * snapX : event.pageY - mouseOffsetX; + var newHeightTop = initialWidth - snapYTop; + var newHeightBottom = snapX ? Math.round((event.clientY - elementRect.top + 14) / snapX) * snapX : event.clientY - elementRect.top + 14; + var isInLeftLayout = nextY >= 0 && nextY <= dayWidth - offsetHeight; + // To be used in the future + // const isInLeftLayout = + // nextY >= 0 && nextY <= contentHeight - offsetHeight; + var isInRightLayout = coords.lastY + newHeightBottom <= dayWidth; + if (isResizingLeft && isInLeftLayout && newHeightTop >= 50) { + var top = initialPosition.top + snapYTop; + element.style.height = newHeightTop + "px"; + element.style.top = top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: top, + width: newHeightTop + }); + }); + } else if (isResizingRight && isInRightLayout && newHeightBottom >= 50) { + element.style.height = newHeightBottom + "px"; + element.style.top = initialPosition.top + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + y: initialPosition.top, + width: newHeightBottom + }); + }); + } + } else { + var _elementRef$current8; + var offsetWidth = (_elementRef$current8 = elementRef.current) == null ? void 0 : _elementRef$current8.offsetWidth; + var nextX = event.clientX - coords.startX + coords.lastX; + var snapXLeft = snapX ? Math.round((event.pageX - mouseOffsetX) / snapX) * snapX : event.pageX - mouseOffsetX; + var newWidthLeft = initialWidth - snapXLeft; + var newWidthRight = snapX ? Math.round((event.clientX - elementRect.left + 14) / snapX) * snapX : event.clientX - elementRect.left + 14; + var _isInLeftLayout = nextX >= 0 && nextX <= dayWidth - offsetWidth; + var _isInRightLayout = coords.lastX + newWidthRight <= dayWidth; + if (isResizingLeft && _isInLeftLayout && newWidthLeft >= 50) { + var left = initialPosition.left + snapXLeft; + element.style.width = newWidthLeft + "px"; + element.style.left = left + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + x: left, + width: newWidthLeft + }); + }); + } else if (isResizingRight && _isInRightLayout && newWidthRight >= 50) { + element.style.width = newWidthRight + "px"; + setPosition(function (prev) { + return _extends({}, prev, { + width: newWidthRight + }); + }); + } + } + } + var mouseMoveEvent = isTouchDevice ? "touchmove" : "mousemove"; + var mouseUpEvent = isTouchDevice ? "touchend" : "mouseup"; + var options = isTouchDevice ? { + passive: false + } : undefined; + if (isResize) { + document.addEventListener(mouseMoveEvent, handleMouseMove, options); + document.addEventListener(mouseUpEvent, handleMouseUp); + } + return function () { + document.removeEventListener(mouseMoveEvent, handleMouseMove); + document.removeEventListener(mouseUpEvent, handleMouseUp); + }; + }, [isTouchDevice, isPreventScroll, isResize, isVerticalMode, isResizing, isResizingLeft, isResizingRight, dayWidth, contentHeight, initialWidth, initialPosition.top, initialPosition.left, coords, snapX, mouseOffsetX, elementRef, handleMouseUp]); + if (isResize) { + var getEvents = function getEvents(isLeft) { + if (isTouchDevice) { + return { + onTouchStart: handleMouseDown(isLeft), + onTouchEnd: handleMouseUp + }; + } + return { + onMouseDown: handleMouseDown(isLeft), + onMouseUp: handleMouseUp + }; + }; + return { + width: position.width, + initialWidth: isVerticalMode ? initialPosition.height : initialPosition.width, + currentPositionX: isVerticalMode ? position.y : position.x, + resizeEvents: { + isResizing: isResizing, + resources: { + ref: elementRef, + isResizing: isResizing + }, + eventsLeft: _extends({ + isResize: isResize, + isVerticalMode: isVerticalMode, + left: true, + onClick: handleMouseClick + }, getEvents(true)), + eventsRight: _extends({ + isResize: isResize, + isVerticalMode: isVerticalMode, + onClick: handleMouseClick + }, getEvents()) + } + }; + } + return { + currentPositionX: isVerticalMode ? initialPosition.top : initialPosition.left, + width: isVerticalMode ? initialPosition.height : initialPosition.width, + resizeEvents: { + isResizing: false, + resources: {}, + eventsLeft: {}, + eventsRight: {} + } + }; +} + +function useProgram(_ref) { + var _ref$isVerticalMode = _ref.isVerticalMode, + isVerticalMode = _ref$isVerticalMode === void 0 ? false : _ref$isVerticalMode, + _ref$isRTL = _ref.isRTL, + isRTL = _ref$isRTL === void 0 ? false : _ref$isRTL, + _ref$isResize = _ref.isResize, + isResize = _ref$isResize === void 0 ? false : _ref$isResize, + isBaseTimeFormat = _ref.isBaseTimeFormat, + startDate = _ref.startDate, + contentHeight = _ref.contentHeight, + dayWidth = _ref.dayWidth, + itemHeight = _ref.itemHeight, + hourWidth = _ref.hourWidth, + _ref$minWidth = _ref.minWidth, + minWidth = _ref$minWidth === void 0 ? 200 : _ref$minWidth, + program = _ref.program, + liveRefreshTime = _ref.liveRefreshTime, + mode = _ref.mode, + snap = _ref.snap, + dnd = _ref.dnd, + dragMouseUp = _ref.dragMouseUp, + resizeMouseUp = _ref.resizeMouseUp; + var elementRef = useRef(null); + var data = program.data, + position = program.position; + var width = position.width, + height = position.height; + var since = data.since, + till = data.till; + // Hooks + var _React$useState = React__default.useState(function () { + return getLiveStatus(since, till); + }), + isLive = _React$useState[0], + setIsLive = _React$useState[1]; + var options = { + isVerticalMode: isVerticalMode, + initialPosition: position, + data: data, + dayWidth: dayWidth, + contentHeight: contentHeight, + elementRef: elementRef + }; + var resizeOptions = _extends({}, options, { + isResize: isResize, + snapX: snap == null ? void 0 : snap.x, + mouseUpCb: resizeMouseUp + }); + var _useResize = useResize(resizeOptions), + resizeCurrentPositionX = _useResize.currentPositionX, + resizeWidth = _useResize.width, + resizeEvents = _useResize.resizeEvents; + var dndMouseUpCb = React__default.useCallback(function (props, data) { + var _dnd$onDnDMouseUp; + var newTime = calculateItemDragSinceTill(_extends({}, props, { + hourWidth: hourWidth, + startDate: startDate + })); + var options = _extends({}, newTime, { + id: props.id, + data: data + }); + return (_dnd$onDnDMouseUp = dnd == null || dnd.onDnDMouseUp == null ? void 0 : dnd.onDnDMouseUp(options)) != null ? _dnd$onDnDMouseUp : true; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + []); + var dragOptions = _extends({}, options, { + isDndEnabled: dnd.enabled ? !resizeEvents.resources.isResizing : false, + isDndMutlirows: dnd.mode === "multi-rows", + dndSnapX: snap == null ? void 0 : snap.x, + dndSnapY: snap == null ? void 0 : snap.y, + itemHeight: itemHeight, + dndMouseUpCb: dndMouseUpCb, + mouseUpCb: dragMouseUp + }); + var _useDrag = useDrag(dragOptions), + currentPositionX = _useDrag.currentPositionX, + dndEvents = _useDrag.dndEvents; + // Variables + var newPosition = _extends({}, omit(position, "egdeEnd")); + var styles = { + width: width, + position: newPosition + }; + var formatTime = function formatTime(date, formatType) { + if (formatType === void 0) { + formatType = TIME_FORMAT.HOURS_MIN; + } + return format(new Date(date), formatType).replace(/\s/g, ""); + }; + var set12HoursTimeFormat = function set12HoursTimeFormat() { + if (mode.type === "week" || mode.type === "month") { + if (isBaseTimeFormat) return TIME_FORMAT.BASE_DAY_MONTH; + return TIME_FORMAT.DAY_MONTH; + } + if (isBaseTimeFormat) return TIME_FORMAT.BASE_HOURS_TIME; + return TIME_FORMAT.HOURS_MIN; + }; + var getRTLSinceTime = function getRTLSinceTime(since) { + return isRTL ? till : since; + }; + var getRTLTillTime = function getRTLTillTime(till) { + return isRTL ? since : till; + }; + // Effects + useInterval(function () { + var status = getLiveStatus(since, till); + setIsLive(status); + }, liveRefreshTime); + var isMinWidth = isVerticalMode ? height > minWidth : width > minWidth; + var getMouseEventTempTime = function getMouseEventTempTime() { + var left = resizeEvents.isResizing ? resizeCurrentPositionX : currentPositionX; + var options = { + id: data.id, + index: data.index, + since: data.since, + till: data.till, + top: 0, + left: left, + initialPositionTop: position.top, + initialPositionLeft: position.left, + initialWidth: width, + width: resizeWidth, + hourWidth: hourWidth + }; + if (isVerticalMode) { + options.initialPositionLeft = position.top; + options.initialPositionTop = position.left; + options.initialWidth = height; + } + var _calculateItemDragSin = calculateItemDragSinceTill(options), + since = _calculateItemDragSin.since, + till = _calculateItemDragSin.till; + var formatTempTime = function formatTempTime(time) { + return formatTime(getRTLSinceTime(time), set12HoursTimeFormat()).toLowerCase(); + }; + return { + since: formatTempTime(since), + till: formatTempTime(till) + }; + }; + var getMouseEvents = useCallback(function () { + return _extends({}, resizeEvents.resources, dndEvents); + }, [dndEvents, resizeEvents.resources]); + var isMouseEvent = dndEvents.isDragging || resizeEvents.resources.isResizing || false; + return { + isMouseEvent: isMouseEvent, + isLive: isLive, + isMinWidth: isMinWidth, + isRTL: isRTL, + resizeEvents: resizeEvents, + formatTime: formatTime, + set12HoursTimeFormat: set12HoursTimeFormat, + getMouseEvents: getMouseEvents, + getMouseEventTempTime: getMouseEventTempTime, + getRTLSinceTime: getRTLSinceTime, + getRTLTillTime: getRTLTillTime, + styles: styles + }; +} + +function useTimeline(props) { + var isBaseTimeFormat = props.isBaseTimeFormat, + isRTL = props.isRTL, + isSidebar = props.isSidebar, + isVerticalMode = props.isVerticalMode; + var timezone = props.timezone, + dayWidth = props.dayWidth, + hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight; + var mode = props.mode, + startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays, + days = props.days, + liveRefreshTime = props.liveRefreshTime, + months = props.months, + numberOfDays = props.numberOfDays, + numberOfHoursInDay = props.numberOfHoursInDay, + numberOfMonths = props.numberOfMonths, + offsetStartHoursRange = props.offsetStartHoursRange, + timelineDividers = props.timelineDividers, + renderCurrentTime = props.renderCurrentTime; + // Handlers + var getTime = function getTime(index) { + if (typeof index === "string") return { + time: index, + isNewDay: true + }; + var date = new Date(); + var baseDate = format(date, TIME_FORMAT.DATE); + var time = index < 10 ? "0" + index : index; + if (isBaseTimeFormat) { + var _date = new Date(baseDate + "T" + time + ":00:00"); + var baseFormat = format(_date, TIME_FORMAT.BASE_HOURS_TIME).toLowerCase().replace(/\s/g, ""); + return { + time: baseFormat, + isNewDay: false + }; + } + return { + time: time + ":00", + isNewDay: false + }; + }; + var formatWeekMonthDate = function formatWeekMonthDate(date) { + return getFormattedWeekMonthDate({ + date: date, + mode: mode, + isBaseTimeFormat: isBaseTimeFormat + }); + }; + var getDayMonthName = function getDayMonthName(date) { + var dateFormat = mode.type === "week" ? TIME_FORMAT.DAY : TIME_FORMAT.YEAR; + return format(toDate(date), dateFormat); + }; + var getCurrentTimeProps = function getCurrentTimeProps() { + return { + isBaseTimeFormat: isBaseTimeFormat, + isVerticalMode: isVerticalMode, + isRTL: isRTL, + timezone: timezone, + mode: mode, + startDate: startDate, + endDate: endDate, + hoursInDays: hoursInDays, + dayWidth: dayWidth, + timelineHeight: timelineHeight, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + liveRefreshTime: liveRefreshTime, + renderCurrentTime: renderCurrentTime + }; + }; + var getTimelineProps = function getTimelineProps() { + return { + isSidebar: isSidebar, + isVerticalMode: isVerticalMode, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight + }; + }; + // Variables + var timeSlots = useMemo(function () { + var options = { + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange + }; + return generateTimelineSlots(mode.type, options); + }, [mode.type, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange]); + var isWeekMode = mode.type === "week"; + var isMonthMode = mode.type === "month"; + var isWeekMonthMode = isWeekMode || isMonthMode; + var isTodayInHoursInDays = getTodayHoursInDays(hoursInDays); + var areHoursInDays = hoursInDays.length > 0; + var weekDayWidth = hourWidth * HOURS_IN_DAY; + var monthsWidth = useMemo(function () { + return getTimelineMonthsWidth({ + months: months, + weekDayWidth: weekDayWidth + }); + }, [months, weekDayWidth]); + var dividers = generateArray(timelineDividers); + return { + isWeekMonthMode: isWeekMonthMode, + isMonthMode: isMonthMode, + isTodayInHoursInDays: isTodayInHoursInDays, + areHoursInDays: areHoursInDays, + time: timeSlots, + weekDayWidth: weekDayWidth, + monthsWidth: monthsWidth, + timelineHeight: timelineHeight, + dividers: dividers, + timelineDividers: timelineDividers, + formatWeekMonthDate: formatWeekMonthDate, + getTime: getTime, + getDayMonthName: getDayMonthName, + getTimelineProps: getTimelineProps, + getCurrentTimeProps: getCurrentTimeProps + }; +} + +function useLine(_ref) { + var timezone = _ref.timezone, + startDate = _ref.startDate, + endDate = _ref.endDate, + hoursInDays = _ref.hoursInDays, + dayWidth = _ref.dayWidth, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + liveRefreshTime = _ref.liveRefreshTime; + var _React$useState = React__default.useState(true), + showLine = _React$useState[0], + setShowLine = _React$useState[1]; + var _React$useState2 = React__default.useState(getInitialState), + positionX = _React$useState2[0], + setPositionX = _React$useState2[1]; + // Variables + var timezoneSerialized = JSON.stringify(timezone); + var hoursInDaysSerialized = JSON.stringify(hoursInDays); + var liveIntervalTime = liveRefreshTime * 1000; + var isDayEnd = positionX <= dayWidth; + var isScrollX = React__default.useMemo(function () { + return isDayEnd ? liveIntervalTime : null; + }, [isDayEnd, liveIntervalTime]); + // Helpers + function getInitialState() { + if (hoursInDays.length > 0) return getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + cb: setShowLine + }); + var positionX = getPositionX(startOfDay(new Date(startDate)), new Date(), startDate, endDate, hourWidth); + return positionX + sidebarWidth; + } + // Effects + useInterval(function () { + var offset = hourWidth / HOUR_IN_MINUTES; + var step = offset / SECONDS_IN_MINUTE; + var positionOffset = step * liveRefreshTime; + if (hoursInDays.length > 0) { + var idCurrentDay = getTodayHoursInDays(hoursInDays); + if (idCurrentDay) { + setShowLine(true); + setPositionX(function (prev) { + return prev + positionOffset; + }); + } else { + setShowLine(false); + } + } else { + setPositionX(function (prev) { + return prev + positionOffset; + }); + } + }, isScrollX); + React__default.useEffect(function () { + if (hoursInDays.length > 0) { + var newPositionX = getHoursInDaysPositionX({ + hoursInDays: hoursInDays, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + cb: setShowLine + }); + setPositionX(newPositionX); + } else { + var date = new Date(startDate); + var _positionX = getPositionX(startOfDay(date), getNewDateTz(), startDate, endDate, hourWidth); + var _newPositionX = _positionX + sidebarWidth; + setPositionX(_newPositionX); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [startDate, endDate, sidebarWidth, hourWidth, hoursInDaysSerialized, timezoneSerialized]); + return { + showLine: showLine, + positionX: positionX + }; +} + +function useCurrentTime(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isBaseTimeFormat = _ref.isBaseTimeFormat, + mode = _ref.mode, + positionX = _ref.positionX, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth; + var formatTime = function formatTime() { + var date = getNewDateTz(); + if (mode.type === "month") { + if (isBaseTimeFormat) return format(date, TIME_FORMAT.BASE_DAY_MONTH); + return format(date, TIME_FORMAT.DAY_MONTH); + } + var baseTime = format(date, TIME_FORMAT.HOURS_MIN); + if (isBaseTimeFormat) { + var baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME).toLowerCase().replace(/\s/g, ""); + return baseFormat; + } + return baseTime; + }; + var handleGetCurrentTimeStyles = function handleGetCurrentTimeStyles() { + var _boxStyles = boxStyles({ + width: timelineHeight + }), + position = _boxStyles.position, + top = _boxStyles.top, + height = _boxStyles.height, + styleWidth = _boxStyles.width; + var width = isVerticalMode ? styleWidth : "auto"; + var commonStyles = { + position: position, + width: width, + height: height + }; + if (isVerticalMode) { + return { + position: _extends({ + top: positionX - sidebarWidth, + left: top + }, commonStyles) + }; + } + return { + position: _extends({ + top: top, + left: positionX - sidebarWidth + }, commonStyles) + }; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + var time = React__default.useMemo(function () { + return formatTime(); + }, [positionX, isBaseTimeFormat]); + return { + time: time, + getCurrentTimeStyles: handleGetCurrentTimeStyles + }; +} + +var _excluded$3 = ["mode", "grid", "timelineHeight", "sidebarWidth", "hourWidth", "dayWidth"]; +function useGrid(_ref) { + var mode = _ref.mode, + grid = _ref.grid, + timelineHeight = _ref.timelineHeight, + sidebarWidth = _ref.sidebarWidth, + hourWidth = _ref.hourWidth, + dayWidth = _ref.dayWidth, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$3); + var isVerticalMode = rest.isVerticalMode, + isBaseTimeFormat = rest.isBaseTimeFormat, + days = rest.days, + hoursInDays = rest.hoursInDays, + months = rest.months, + numberOfDays = rest.numberOfDays, + numberOfHoursInDay = rest.numberOfHoursInDay, + numberOfMonths = rest.numberOfMonths, + offsetStartHoursRange = rest.offsetStartHoursRange, + timelineDividers = rest.timelineDividers; + var handleItemClick = useCallback(function (item, index) { + return function () { + getClickGridItemData({ + isVerticalMode: isVerticalMode, + index: index, + item: item, + grid: grid, + mode: mode, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + timelineDividers: timelineDividers + }); + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, hourWidth, dayWidth, sidebarWidth, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange, mode.type]); + var handleItemDrop = useCallback(function (item, index, dataAttributes) { + return function () { + getClickGridItemData({ + isDrop: true, + isVerticalMode: isVerticalMode, + index: index, + item: item, + grid: grid, + mode: mode, + dayWidth: dayWidth, + hourWidth: hourWidth, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + isBaseTimeFormat: isBaseTimeFormat, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + timelineDividers: timelineDividers, + dataAttributes: dataAttributes + }); + }; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [isVerticalMode, hourWidth, dayWidth, sidebarWidth, isBaseTimeFormat, days, hoursInDays, months, numberOfDays, numberOfHoursInDay, numberOfMonths, offsetStartHoursRange, mode.type]); + return { + onItemClick: handleItemClick, + onItemDrop: handleItemDrop + }; +} + +function useGridExternalDnD(_temp) { + var _ref = _temp === void 0 ? {} : _temp, + onItemDrop = _ref.onItemDrop; + var dropAreaRef = React__default.useRef(null); + var _React$useState = React__default.useState(false), + isDragOver = _React$useState[0], + setIsDragOver = _React$useState[1]; + var handleDrop = useCallback(function (item, index) { + return function (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(false); + var droppedItemId = e.dataTransfer.getData("text/plain"); + var droppedItem = document.getElementById(droppedItemId); + if (droppedItem) { + // Loop through all attributes + var attributes = droppedItem.attributes; + var dataAttributes = {}; + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (attribute.name.startsWith("data-")) { + dataAttributes[attribute.name.replace("data-", "")] = attribute.value; + } + } + // Call the onDrop callback with the dropped item, attributes, and position + onItemDrop == null || onItemDrop(item, index, dataAttributes)(); + } + } + }; + }, [onItemDrop]); + var handleDragEnter = useCallback(function (e) { + if (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(true); + } + } + }, []); + var handleDragLeave = useCallback(function (e) { + e.preventDefault(); + if (dropAreaRef.current) { + setIsDragOver(false); + } + }, []); + return { + isDragOver: isDragOver, + dropAreaRef: dropAreaRef, + onDrop: handleDrop, + onDragEnter: handleDragEnter, + onDragLeave: handleDragLeave + }; +} + +var _excluded$4 = ["onItemClick", "onItemDrop"]; +var GridDivider$1 = GridDivider; +function GridDividerItem(_ref) { + var index = _ref.index, + item = _ref.item, + dividerProps = _ref.dividerProps; + var styles = dividerProps.styles, + props = dividerProps.props; + var onItemClick = props.onItemClick, + onItemDrop = props.onItemDrop, + restProps = _objectWithoutPropertiesLoose(props, _excluded$4); + var _useGridExternalDnD = useGridExternalDnD({ + onItemDrop: onItemDrop + }), + isDragOver = _useGridExternalDnD.isDragOver, + onDrop = _useGridExternalDnD.onDrop, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave, + dropAreaRef = _useGridExternalDnD.dropAreaRef; + return React__default.createElement(GridDivider$1, Object.assign({ + className: "planby-grid-item-divider", + ref: dropAreaRef, + key: index + }, styles, { + left: styles.left(index) + }, restProps, { + onClick: onItemClick(item, index), + // Drag + isDragOver: isDragOver, + onDragEnter: onDragEnter, + onDragLeave: onDragLeave, + onDrop: onDrop(item, index) + })); +} + +var GridItem$1 = GridItem; +function GridCellItem(_ref) { + var _channelOverlapsCount; + var isVerticalMode = _ref.isVerticalMode, + isProgramVisible = _ref.isProgramVisible, + isHoverHighlight = _ref.isHoverHighlight, + isDayMode = _ref.isDayMode, + isItemClickable = _ref.isItemClickable, + item = _ref.item, + index = _ref.index, + channelOverlapsCount = _ref.channelOverlapsCount, + hourWidth = _ref.hourWidth, + timelineDividers = _ref.timelineDividers, + renderGridCell = _ref.renderGridCell, + onItemClick = _ref.onItemClick, + onItemDrop = _ref.onItemDrop; + var overlapsCount = (_channelOverlapsCount = channelOverlapsCount[item.channel.uuid]) != null ? _channelOverlapsCount : 1; + var isVisible = isProgramVisible(item.position, overlapsCount); + var _useGridExternalDnD = useGridExternalDnD({ + onItemDrop: onItemDrop + }), + isDragOver = _useGridExternalDnD.isDragOver, + dropAreaRef = _useGridExternalDnD.dropAreaRef, + onDrop = _useGridExternalDnD.onDrop, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave; + if (!isVisible) return null; + var gridItemClickProps = isDayMode ? { + isItemClickable: false + } : { + onClick: onItemClick(item), + isItemClickable: isItemClickable + }; + var dividerProps = { + styles: { + left: function left(index) { + return index * (hourWidth / timelineDividers); + }, + width: hourWidth / timelineDividers + }, + props: { + isVerticalMode: isVerticalMode, + isHoverHighlight: isHoverHighlight, + isItemClickable: isItemClickable, + onItemClick: onItemClick, + onItemDrop: onItemDrop + } + }; + var gridItemDnDProps = isDayMode ? {} : { + isDragOver: isDragOver, + onDragEnter: onDragEnter, + onDragLeave: onDragLeave, + onDrop: onDrop(item, index) + }; + if (renderGridCell) { + var id = item.channel.uuid + index; + return renderGridCell({ + isDayMode: isDayMode, + id: id, + index: index, + item: item, + isHoverHighlight: isHoverHighlight, + timelineDividers: timelineDividers, + gridDividerProps: dividerProps, + timelineDividerArray: generateArray(timelineDividers), + gridItemClickProps: gridItemClickProps, + gridItemDnDProps: gridItemDnDProps + }); + } + return createElement(GridItem$1, Object.assign({ + ref: dropAreaRef, + key: item.channel.uuid + index, + className: "planby-grid-item", + isDayMode: isDayMode, + isHoverHighlight: isHoverHighlight + }, item.position, gridItemClickProps, gridItemDnDProps), isDayMode && generateArray(timelineDividers).map(function (_, index) { + return createElement(GridDividerItem, { + key: index, + index: index, + item: item, + dividerProps: dividerProps + }); + })); +} + +var _excluded$5 = ["isVerticalMode", "isProgramVisible", "channelOverlapsCount", "grid", "gridItems", "mode", "hourWidth", "timelineDividers", "renderGridCell"]; +var GridContainer$1 = GridContainer; +function Grid(_ref) { + var isVerticalMode = _ref.isVerticalMode, + isProgramVisible = _ref.isProgramVisible, + channelOverlapsCount = _ref.channelOverlapsCount, + grid = _ref.grid, + gridItems = _ref.gridItems, + mode = _ref.mode, + hourWidth = _ref.hourWidth, + timelineDividers = _ref.timelineDividers, + renderGridCell = _ref.renderGridCell, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$5); + var _useGrid = useGrid(_extends({ + isVerticalMode: isVerticalMode, + grid: grid, + mode: mode, + hourWidth: hourWidth, + timelineDividers: timelineDividers + }, rest)), + onItemClick = _useGrid.onItemClick, + onItemDrop = _useGrid.onItemDrop; + var isDayMode = mode.type === "day"; + var isHoverHighlight = grid.hoverHighlight; + var isItemClickable = !!grid.onGridItemClick; + var renderGridItem = function renderGridItem(item, index) { + var props = { + isVerticalMode: isVerticalMode, + isProgramVisible: isProgramVisible, + isHoverHighlight: isHoverHighlight, + isDayMode: isDayMode, + isItemClickable: isItemClickable, + item: item, + index: index, + channelOverlapsCount: channelOverlapsCount, + hourWidth: hourWidth, + timelineDividers: timelineDividers, + renderGridCell: renderGridCell, + onItemClick: onItemClick, + onItemDrop: onItemDrop + }; + // @ts-ignore + return createElement(GridCellItem, Object.assign({ + key: item.channel.uuid + index + }, props)); + }; + return createElement(GridContainer$1, { + className: "planby-grid" + }, gridItems.map(function (item, index) { + return renderGridItem(item, index); + })); +} + +var ScrollBox$1 = ScrollBox, + Content$1 = Content; +var Layout = /*#__PURE__*/React__default.forwardRef(function (props, scrollBoxRef) { + var startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays, + liveRefreshTime = props.liveRefreshTime, + scrollY = props.scrollY; + var channels = props.channels, + channelOverlapsCount = props.channelOverlapsCount, + programs = props.programs, + programOverlaps = props.programOverlaps, + layerOverlapLevel = props.layerOverlapLevel; + var timezone = props.timezone, + areas = props.areas, + grid = props.grid, + gridItems = props.gridItems, + mode = props.mode, + dnd = props.dnd, + snap = props.snap, + overlap = props.overlap, + overlapMode = props.overlapMode, + timelineDividers = props.timelineDividers; + var dayWidth = props.dayWidth, + hourWidth = props.hourWidth, + monthWidth = props.monthWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + itemHeight = props.itemHeight; + var days = props.days, + months = props.months, + numberOfHoursInDay = props.numberOfHoursInDay, + numberOfDays = props.numberOfDays, + numberOfMonths = props.numberOfMonths, + offsetStartHoursRange = props.offsetStartHoursRange; + var _props$isVerticalMode = props.isVerticalMode, + isVerticalMode = _props$isVerticalMode === void 0 ? false : _props$isVerticalMode, + _props$isRTL = props.isRTL, + isRTL = _props$isRTL === void 0 ? false : _props$isRTL, + _props$isSidebar = props.isSidebar, + isSidebar = _props$isSidebar === void 0 ? true : _props$isSidebar, + _props$isTimeline = props.isTimeline, + isTimeline = _props$isTimeline === void 0 ? true : _props$isTimeline, + _props$isLine = props.isLine, + isLine = _props$isLine === void 0 ? true : _props$isLine, + isToday = props.isToday, + _props$isBaseTimeForm = props.isBaseTimeFormat, + isBaseTimeFormat = _props$isBaseTimeForm === void 0 ? false : _props$isBaseTimeForm, + _props$isCurrentTime = props.isCurrentTime, + isCurrentTime = _props$isCurrentTime === void 0 ? false : _props$isCurrentTime, + _props$isResize = props.isResize, + isResize = _props$isResize === void 0 ? false : _props$isResize; + var dragMouseUp = props.dragMouseUp, + resizeMouseUp = props.resizeMouseUp, + openChannelGroupTree = props.openChannelGroupTree, + onLayoutBgClick = props.onLayoutBgClick, + onScroll = props.onScroll, + isProgramVisible = props.isProgramVisible, + isChannelVisible = props.isChannelVisible, + isTimelineVisible = props.isTimelineVisible, + renderProgram = props.renderProgram, + renderChannel = props.renderChannel, + renderTimeline = props.renderTimeline, + renderLine = props.renderLine, + renderCurrentTime = props.renderCurrentTime, + renderGridCell = props.renderGridCell; + // Calculate the height of the content + var channelsLength = channels.length; + var programsOverlapsLength = Object.keys(programOverlaps).length; + var programOverlapsSerialized = JSON.stringify(programOverlaps); + var contentHeight = React__default.useMemo(function () { + if (programsOverlapsLength > 0) { + return getChannelsContentHeight(channels); + } + return channelsLength * itemHeight; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [channelsLength, programsOverlapsLength, itemHeight, programOverlapsSerialized]); + var showAreas = areas.length > 0; + var isFuture = isFutureTime(endDate); + var renderPrograms = function renderPrograms(program, index) { + var _channelOverlapsCount, _data$fixedVisibility; + var position = program.position, + data = program.data; + var overlapsCount = (_channelOverlapsCount = channelOverlapsCount[program.data.channelUuid]) != null ? _channelOverlapsCount : 1; + var isVisible = (_data$fixedVisibility = data.fixedVisibility) != null ? _data$fixedVisibility : isProgramVisible(position, overlapsCount); + if (isVisible) { + setLayoutScreenCloneElement(program, index); + var options = getProgramOptions({ + isVerticalMode: isVerticalMode, + program: program, + programOverlaps: programOverlaps, + layerOverlapLevel: layerOverlapLevel, + overlapMode: overlapMode, + overlap: overlap + }); + var _props = { + isRTL: isRTL, + isResize: isResize, + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + startDate: startDate, + program: options, + liveRefreshTime: liveRefreshTime, + snap: snap, + mode: mode, + dnd: dnd, + dayWidth: dayWidth, + contentHeight: contentHeight, + itemHeight: itemHeight, + hourWidth: hourWidth, + dragMouseUp: dragMouseUp, + resizeMouseUp: resizeMouseUp + }; + if (renderProgram) return renderProgram(_props); + return React__default.createElement(Program, Object.assign({ + key: program.data.channelUuid + "-" + program.data.id + }, _props)); + } + deleteLayoutScreenCloneElement(program); + return null; + }; + var renderTopbar = function renderTopbar() { + var timeProps = { + isVerticalMode: isVerticalMode, + isSidebar: isSidebar, + isRTL: isRTL, + isTimelineVisible: isTimelineVisible, + isToday: isToday, + isBaseTimeFormat: isBaseTimeFormat, + isCurrentTime: isCurrentTime, + timezone: timezone, + startDate: startDate, + endDate: endDate, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + offsetStartHoursRange: offsetStartHoursRange, + monthWidth: monthWidth, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + numberOfDays: numberOfDays, + hourWidth: hourWidth, + days: days, + months: months, + hoursInDays: hoursInDays, + liveRefreshTime: liveRefreshTime, + mode: mode, + timelineDividers: timelineDividers, + renderCurrentTime: renderCurrentTime + }; + if (renderTimeline) { + return renderTimeline(timeProps); + } + return React__default.createElement(Timeline, Object.assign({}, timeProps)); + }; + return React__default.createElement(ScrollBox$1, { + ref: scrollBoxRef, + id: "planby-layout-scrollbox", + className: "planby-layout", + isRTL: isRTL, + onScroll: onScroll + }, grid.enabled && React__default.createElement(Grid, { + isVerticalMode: isVerticalMode, + isProgramVisible: isProgramVisible, + channelOverlapsCount: channelOverlapsCount, + isBaseTimeFormat: isBaseTimeFormat, + hourWidth: hourWidth, + dayWidth: dayWidth, + days: days, + hoursInDays: hoursInDays, + months: months, + numberOfDays: numberOfDays, + numberOfHoursInDay: numberOfHoursInDay, + numberOfMonths: numberOfMonths, + offsetStartHoursRange: offsetStartHoursRange, + grid: grid, + gridItems: gridItems, + mode: mode, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + timelineDividers: timelineDividers, + renderGridCell: renderGridCell + }), onLayoutBgClick && React__default.createElement(LayoutBg, { + className: "planby-layout-bg", + isSidebar: isSidebar, + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + dayWidth: dayWidth, + contentHeight: contentHeight, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + onClick: onLayoutBgClick + }), isLine && isToday && isFuture && React__default.createElement(Line, { + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + startDate: startDate, + endDate: endDate, + height: contentHeight, + liveRefreshTime: liveRefreshTime, + hoursInDays: hoursInDays, + timezone: timezone, + renderLine: renderLine + }), showAreas && React__default.createElement(Areas, { + isVerticalMode: isVerticalMode, + sidebarWidth: sidebarWidth, + hourWidth: hourWidth, + areas: areas, + startDate: startDate, + endDate: endDate, + height: contentHeight, + timelineHeight: timelineHeight + }), isTimeline && renderTopbar(), isSidebar && React__default.createElement(Channels, { + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isTimeline: isTimeline, + isChannelVisible: isChannelVisible, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + contentHeight: contentHeight, + channels: channels, + scrollY: scrollY, + openChannelGroupTree: openChannelGroupTree, + renderChannel: renderChannel + }), React__default.createElement(Content$1, { + className: "planby-content", + isVerticalMode: isVerticalMode, + isSidebar: isSidebar, + isTimeline: isTimeline, + dayWidth: dayWidth, + sidebarWidth: sidebarWidth, + timelineHeight: timelineHeight, + contentHeight: contentHeight + }, programs.map(function (program, index) { + return renderPrograms(program, index); + }))); +}); + +var _excluded$6 = ["isVerticalMode", "program", "onClick"]; +var ProgramBox$1 = ProgramBox, + ProgramContent$1 = ProgramContent, + ProgramResizeHandle$1 = ProgramResizeHandle, + ProgramFlex$1 = ProgramFlex, + ProgramStack$1 = ProgramStack, + ProgramTitle$1 = ProgramTitle, + ProgramText$1 = ProgramText, + ProgramImage$1 = ProgramImage; +function Program(_ref) { + var isVerticalMode = _ref.isVerticalMode, + program = _ref.program, + onClick = _ref.onClick, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$6); + var _useProgram = useProgram(_extends({ + isVerticalMode: isVerticalMode, + program: program + }, rest)), + isRTL = _useProgram.isRTL, + isLive = _useProgram.isLive, + isMinWidth = _useProgram.isMinWidth, + isMouseEvent = _useProgram.isMouseEvent, + styles = _useProgram.styles, + resizeEvents = _useProgram.resizeEvents, + formatTime = _useProgram.formatTime, + getMouseEvents = _useProgram.getMouseEvents, + getMouseEventTempTime = _useProgram.getMouseEventTempTime, + set12HoursTimeFormat = _useProgram.set12HoursTimeFormat, + getRTLSinceTime = _useProgram.getRTLSinceTime, + getRTLTillTime = _useProgram.getRTLTillTime; + var data = program.data; + var image = data.image, + title = data.title, + since = data.since, + till = data.till; + var handleOnContentClick = function handleOnContentClick() { + return onClick == null ? void 0 : onClick(data); + }; + var sinceTime = formatTime(getRTLSinceTime(since), set12HoursTimeFormat()).toLowerCase(); + var tillTime = formatTime(getRTLTillTime(till), set12HoursTimeFormat()).toLowerCase(); + var tempTime = getMouseEventTempTime(); + return createElement(ProgramBox$1, Object.assign({ + id: data.id, + className: "planby-program", + width: styles.width, + style: styles.position + }, getMouseEvents()), createElement(ProgramContent$1, Object.assign({ + className: "planby-program-content", + width: styles.width, + isLive: isLive, + isVerticalMode: isVerticalMode, + onClick: handleOnContentClick + }, rest), createElement(ProgramResizeHandle$1, Object.assign({}, resizeEvents.eventsLeft)), createElement(ProgramResizeHandle$1, Object.assign({}, resizeEvents.eventsRight)), createElement(ProgramFlex$1, { + className: "planby-program-flex", + isVerticalMode: isVerticalMode + }, isLive && isMinWidth && createElement(ProgramImage$1, { + isVerticalMode: isVerticalMode, + src: image, + alt: "Preview" + }), createElement(ProgramStack$1, { + className: "planby-program-stack", + isRTL: isRTL + }, createElement(ProgramTitle$1, { + className: "planby-program-title" + }, title), createElement(ProgramText$1, { + className: "planby-program-text", + "aria-label": "program time" + }, isMouseEvent ? createElement(Fragment, null, tempTime.since, " - ", tempTime.till) : createElement(Fragment, null, sinceTime, " - ", tillTime)))))); +} + +var Box$3 = Box$1; +function Channels(props) { + var channels = props.channels, + scrollY = props.scrollY, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + contentHeight = props.contentHeight, + openChannelGroupTree = props.openChannelGroupTree, + renderChannel = props.renderChannel; + var isVerticalMode = props.isVerticalMode, + isRTL = props.isRTL, + isTimeline = props.isTimeline, + isChannelVisible = props.isChannelVisible; + var renderChannels = function renderChannels(channel) { + var channelWithPosition = getChannelVerticalPosition(channel, isVerticalMode); + var isVisible = isChannelVisible(channelWithPosition.position); + var newChannel = getChannelGroupTreeProps(channelWithPosition); + var groupEventProps = newChannel.groupTree ? { + onOpenGroupTree: openChannelGroupTree + } : {}; + if (isVisible) { + if (renderChannel) { + return renderChannel(_extends({ + channel: newChannel, + isVerticalMode: isVerticalMode, + isRTL: isRTL + }, groupEventProps)); + } + return createElement(Channel, Object.assign({ + key: channel.uuid, + channel: newChannel, + isVerticalMode: isVerticalMode + }, groupEventProps)); + } + return null; + }; + return createElement(Box$3, { + className: "planby-channels", + isVerticalMode: isVerticalMode, + isRTL: isRTL, + isTimeline: isTimeline, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth, + contentHeight: contentHeight, + bottom: scrollY + }, channels.map(renderChannels)); +} + +var _excluded$7 = ["isVerticalMode", "channel", "onOpenGroupTree", "onClick"]; +var ChannelWrapper$1 = ChannelWrapper, + ChannelLogo$1 = ChannelLogo; +function Channel(_ref) { + var isVerticalMode = _ref.isVerticalMode, + channel = _ref.channel, + onOpenGroupTree = _ref.onOpenGroupTree, + _onClick = _ref.onClick, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$7); + var position = channel.position, + logo = channel.logo, + groupTree = channel.groupTree; + return createElement(ChannelWrapper$1, Object.assign({ + className: "planby-channel", + isVerticalMode: isVerticalMode, + groupTree: groupTree, + onClick: function onClick() { + var _onOpenGroupTree; + return (_onOpenGroupTree = onOpenGroupTree == null ? void 0 : onOpenGroupTree(channel)) != null ? _onOpenGroupTree : _onClick == null ? void 0 : _onClick(channel); + } + }, position, rest), createElement(ChannelLogo$1, { + src: logo, + alt: "Logo" + })); +} + +var CurrentTimeBox$1 = CurrentTimeBox, + CurrentTimeContent$1 = CurrentTimeContent; +function CurrentTime(props) { + var isVerticalMode = props.isVerticalMode, + isBaseTimeFormat = props.isBaseTimeFormat, + isRTL = props.isRTL; + var timezone = props.timezone, + mode = props.mode, + liveRefreshTime = props.liveRefreshTime, + startDate = props.startDate, + endDate = props.endDate, + hoursInDays = props.hoursInDays; + var dayWidth = props.dayWidth, + timelineHeight = props.timelineHeight, + hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth; + var renderCurrentTime = props.renderCurrentTime; + var _useLine = useLine({ + timezone: timezone, + hoursInDays: hoursInDays, + startDate: startDate, + endDate: endDate, + dayWidth: dayWidth, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + liveRefreshTime: liveRefreshTime + }), + showLine = _useLine.showLine, + positionX = _useLine.positionX; + var _useCurrentTime = useCurrentTime({ + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + mode: mode, + positionX: positionX, + timelineHeight: timelineHeight, + sidebarWidth: sidebarWidth + }), + time = _useCurrentTime.time, + getCurrentTimeStyles = _useCurrentTime.getCurrentTimeStyles; + if (!showLine) return null; + var styles = getCurrentTimeStyles(); + if (renderCurrentTime) { + return renderCurrentTime({ + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL, + time: time, + styles: styles + }); + } + return createElement(CurrentTimeBox$1, Object.assign({ + className: "planby-current-time" + }, styles.position), createElement(CurrentTimeContent$1, { + className: "planby-current-content", + isVerticalMode: isVerticalMode, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL + }, time)); +} + +var _excluded$8 = ["isWeekMonthMode", "isMonthMode", "isTodayInHoursInDays", "areHoursInDays", "time"]; +var TimelineWrapper$1 = TimelineWrapper, + TimelineBox$1 = TimelineBox, + TimelineTime$1 = TimelineTime, + TimelineDividers$1 = TimelineDividers, + TimelineDivider$1 = TimelineDivider; +function Timeline(props) { + var _useTimeline = useTimeline(props), + isWeekMonthMode = _useTimeline.isWeekMonthMode, + isMonthMode = _useTimeline.isMonthMode, + isTodayInHoursInDays = _useTimeline.isTodayInHoursInDays, + areHoursInDays = _useTimeline.areHoursInDays, + time = _useTimeline.time, + rest = _objectWithoutPropertiesLoose(_useTimeline, _excluded$8); + var timelineHeight = rest.timelineHeight, + weekDayWidth = rest.weekDayWidth, + monthsWidth = rest.monthsWidth, + dividers = rest.dividers, + timelineDividers = rest.timelineDividers; + var formatWeekMonthDate = rest.formatWeekMonthDate, + getTime = rest.getTime, + getDayMonthName = rest.getDayMonthName, + getTimelineProps = rest.getTimelineProps, + getCurrentTimeProps = rest.getCurrentTimeProps; + var isToday = props.isToday, + isBaseTimeFormat = props.isBaseTimeFormat, + isCurrentTime = props.isCurrentTime, + isRTL = props.isRTL, + isTimelineVisible = props.isTimelineVisible, + isVerticalMode = props.isVerticalMode; + var mode = props.mode; + var hourWidth = props.hourWidth; + // Handlers + var renderDay = function renderDay(item, index) { + var _getTime = getTime(item), + isNewDay = _getTime.isNewDay, + time = _getTime.time; + var position = { + left: hourWidth * index, + width: hourWidth + }; + var isVisible = isTimelineVisible(position); + if (!isVisible) return null; + return createElement(TimelineBox$1, Object.assign({ + className: "planby-timeline-box", + key: index, + isToday: isToday, + isCurrentTime: isCurrentTime, + isVerticalMode: isVerticalMode, + isTodayInHoursInDays: isTodayInHoursInDays, + areHoursInDays: areHoursInDays, + timelineHeight: timelineHeight + }, position), createElement(TimelineTime$1, { + className: "planby-timeline-time", + isNewDay: isNewDay, + isBaseTimeFormat: isBaseTimeFormat, + isRTL: isRTL, + isVerticalMode: isVerticalMode + }, time), createElement(TimelineDividers$1, { + isVerticalMode: isVerticalMode, + className: "planby-timeline-dividers" + }, renderDividers(isNewDay))); + }; + var renderWeekMonth = function renderWeekMonth(item, index) { + var width = isMonthMode ? monthsWidth[index].width : weekDayWidth; + var left = isMonthMode ? monthsWidth[index].left : width * index; + var position = { + left: left, + width: width + }; + var isVisible = isTimelineVisible(position); + if (!isVisible) return null; + var isModernStyle = mode.style === "modern"; + return createElement(TimelineWeekMonthBox, Object.assign({ + className: "planby-timeline-box", + key: index, + isToday: isToday, + isWeekMonthMode: isWeekMonthMode, + isCurrentTime: isCurrentTime, + isVerticalMode: isVerticalMode, + timelineHeight: timelineHeight, + styleType: mode.style + }, position), createElement(TimelineWeekMonthDate, { + className: "planby-timeline-week-month-date", + isRTL: isRTL, + isVerticalMode: isVerticalMode, + styleType: mode.style + }, isModernStyle && createElement("span", null, getDayMonthName(item)), createElement("span", null, formatWeekMonthDate(item)))); + }; + var renderDividers = function renderDividers(isNewDay) { + return dividers.map(function (_, index) { + return createElement(TimelineDivider$1, { + key: index, + isVerticalMode: isVerticalMode, + className: "planby-timeline-divider", + isNewDay: isNewDay, + left: index * (hourWidth / timelineDividers), + width: hourWidth / timelineDividers + }); + }); + }; + var renderTimelineItems = function renderTimelineItems(item, index) { + return isWeekMonthMode ? renderWeekMonth(item, index) : renderDay(item, index); + }; + return createElement(TimelineWrapper$1, Object.assign({ + className: "planby-timeline-wrapper" + }, getTimelineProps()), isCurrentTime && isToday && createElement(CurrentTime, Object.assign({}, getCurrentTimeProps())), time.map(function (item, index) { + return renderTimelineItems(item, index); + })); +} + +var _excluded$9 = ["isTimeline", "isVerticalMode", "height", "renderLine"]; +var lineStyles$1 = lineStyles, + LineBox$1 = LineBox; +function Line(_ref) { + var isTimeline = _ref.isTimeline, + isVerticalMode = _ref.isVerticalMode, + height = _ref.height, + renderLine = _ref.renderLine, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$9); + var _useLine = useLine(rest), + positionX = _useLine.positionX, + showLine = _useLine.showLine; + if (!showLine) return null; + var position = { + height: height, + left: positionX, + zIndex: Layers.Line + }; + var styles = getLineStyles({ + isVerticalMode: isVerticalMode, + isTimeline: isTimeline, + lineStyles: lineStyles$1, + position: position + }); + if (renderLine) return createElement(Fragment, null, renderLine({ + styles: styles, + isVerticalMode: isVerticalMode, + isTimeline: isTimeline + })); + return createElement(LineBox$1, Object.assign({ + className: "planby-line", + isVerticalMode: isVerticalMode, + isTimeline: isTimeline + }, position)); +} + +var Box$4 = Box$2, + Shape$1 = Shape; +var Element = function Element(_ref) { + var width = _ref.width, + color = _ref.color, + animate = _ref.animate, + marginRight = _ref.marginRight, + transition = _ref.transition; + return createElement(Shape$1, { + className: "SHAPE", + width: width, + color: color, + animate: animate, + transition: transition, + marginRight: marginRight + }); +}; +function Loader() { + return createElement(Box$4, { + "aria-label": "loading" + }, createElement("div", null, createElement("div", { + style: { + display: "flex", + justifyContent: "end", + marginBottom: 16 + } + }, createElement(Element, { + animate: { + right: ["0px", "75px", "0px"] + }, + transition: { + duration: 1 + }, + width: 217, + color: "teal", + marginRight: 10 + }), createElement(Element, { + width: 122, + color: "purple", + animate: { + right: ["0px", "50px", "0px"] + }, + transition: { + duration: 1, + delay: 0.02 + } + })), createElement("div", { + style: { + display: "flex", + justifyContent: "end", + marginBottom: 16 + } + }, createElement(Element, { + width: 267, + color: "pink", + animate: { + right: ["0px", "70px", "0px"] + }, + transition: { + delay: 0.5, + duration: 1 + } + })), createElement("div", { + style: { + display: "flex", + justifyContent: "end" + } + }, createElement(Element, { + width: 217, + color: "purple", + marginRight: 10, + animate: { + right: ["0px", "95px", "0px"] + }, + transition: { + delay: 0.3, + duration: 1 + } + }), createElement(Element, { + width: 80, + color: "teal", + animate: { + right: ["0px", "70px", "0px"] + }, + transition: { + duration: 1, + delay: 0.33 + } + })))); +} + +var getAreasFields = function getAreasFields(_ref) { + var _area$endDate; + var area = _ref.area, + startDate = _ref.startDate, + endDate = _ref.endDate, + hourWidth = _ref.hourWidth, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + height = _ref.height; + var areaStartDate = area.startDate; + var areaEndDate = (_area$endDate = area == null ? void 0 : area.endDate) != null ? _area$endDate : areaStartDate; + var left = getPositionX(startDate, areaStartDate, startDate, endDate, hourWidth) + sidebarWidth; + var width = getPositionX(areaStartDate, areaEndDate, startDate, endDate, hourWidth); + var intervalOptions = { + start: new Date(startDate), + end: new Date(endDate) + }; + var isStartAreaDateValid = isWithinInterval(new Date(areaStartDate), intervalOptions); + var showArea = isStartAreaDateValid; + var areaFieldStyles = { + positionX: left, + width: width, + height: height, + timelineHeight: timelineHeight + }; + return _extends({}, area, { + showArea: showArea, + areaFieldStyles: areaFieldStyles, + areaBgStyles: area.styles + }); +}; + +function useAreas(props) { + var startDate = props.startDate, + endDate = props.endDate, + areas = props.areas; + var hourWidth = props.hourWidth, + sidebarWidth = props.sidebarWidth, + timelineHeight = props.timelineHeight, + height = props.height; + var areasSerialized = JSON.stringify(areas); + var data = useMemo(function () { + return areas.map(function (area) { + var options = { + area: area, + hourWidth: hourWidth, + sidebarWidth: sidebarWidth, + height: height, + startDate: startDate, + endDate: endDate, + timelineHeight: timelineHeight + }; + return getAreasFields(options); + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [areasSerialized, hourWidth, sidebarWidth, height, startDate, endDate, timelineHeight]); + return { + data: data + }; +} + +var _excluded$a = ["isVerticalMode"]; +var AreaAnnotation$1 = AreaAnnotation, + AreaBg$1 = AreaBg, + AreaFiled$1 = AreaFiled; +function Areas(_ref) { + var isVerticalMode = _ref.isVerticalMode, + props = _objectWithoutPropertiesLoose(_ref, _excluded$a); + var _useAreas = useAreas(props), + data = _useAreas.data; + var renderAreaAnnotation = function renderAreaAnnotation(props) { + var isLeft = props.isLeft, + text = props.text; + var areaFieldStyles = props.areaFieldStyles, + styles = props.styles; + var className = isLeft ? "left" : "right"; + return React__default.createElement(AreaAnnotation$1, { + className: "planby-area-annotation-" + className, + isVerticalMode: isVerticalMode, + isLeft: isLeft, + timelineHeight: areaFieldStyles.timelineHeight, + width: areaFieldStyles.width, + style: styles + }, text); + }; + var renderArea = function renderArea(props, index) { + var _annotations$styles; + var showArea = props.showArea, + annotations = props.annotations, + onClick = props.onClick; + var _props$areaBgStyles = props.areaBgStyles, + areaBgStyles = _props$areaBgStyles === void 0 ? {} : _props$areaBgStyles, + areaFieldStyles = props.areaFieldStyles; + if (!showArea) return null; + var annotationProps = { + areaFieldStyles: areaFieldStyles, + styles: (_annotations$styles = annotations == null ? void 0 : annotations.styles) != null ? _annotations$styles : {} + }; + return React__default.createElement(AreaFiled$1, Object.assign({ + key: index, + className: "planby-area-field", + isVerticalMode: isVerticalMode, + isClickable: !!onClick, + onClick: onClick + }, areaFieldStyles), React__default.createElement(AreaBg$1, { + className: "planby-area-bg", + style: areaBgStyles + }), annotations && React__default.createElement(React__default.Fragment, null, annotations.textStart && renderAreaAnnotation(_extends({ + isLeft: true, + text: annotations.textStart + }, annotationProps)), annotations.textEnd && renderAreaAnnotation(_extends({ + isLeft: false, + text: annotations.textEnd + }, annotationProps)))); + }; + return React__default.createElement(React__default.Fragment, null, data.map(function (props, index) { + return renderArea(props, index); + })); +} + +var _excluded$b = ["children", "width", "height", "sidebarWidth", "timelineHeight", "theme", "globalStyles", "isVerticalMode", "isRTL", "isSidebar", "isTimeline", "isLoading", "loader"]; +var Container$1 = Container, + Wrapper$1 = Wrapper, + Box$5 = Box; +var Epg = /*#__PURE__*/React__default.forwardRef(function (_ref, containerRef) { + var children = _ref.children, + width = _ref.width, + height = _ref.height, + sidebarWidth = _ref.sidebarWidth, + timelineHeight = _ref.timelineHeight, + theme = _ref.theme, + customGlobalStyles = _ref.globalStyles, + _ref$isVerticalMode = _ref.isVerticalMode, + isVerticalMode = _ref$isVerticalMode === void 0 ? false : _ref$isVerticalMode, + _ref$isRTL = _ref.isRTL, + isRTL = _ref$isRTL === void 0 ? false : _ref$isRTL, + _ref$isSidebar = _ref.isSidebar, + isSidebar = _ref$isSidebar === void 0 ? true : _ref$isSidebar, + _ref$isTimeline = _ref.isTimeline, + isTimeline = _ref$isTimeline === void 0 ? true : _ref$isTimeline, + _ref$isLoading = _ref.isLoading, + isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading, + LoaderComponent = _ref.loader, + rest = _objectWithoutPropertiesLoose(_ref, _excluded$b); + var renderLoader = function renderLoader() { + return LoaderComponent != null ? LoaderComponent : React__default.createElement(Loader, null); + }; + var epgGlobalStyles = customGlobalStyles != null ? customGlobalStyles : globalStyles; + var blankSpaceStyles = isVerticalMode ? { + height: sidebarWidth, + width: timelineHeight + } : { + width: sidebarWidth, + height: timelineHeight + }; + return React__default.createElement(ThemeProvider, { + theme: theme + }, React__default.createElement(Global, { + styles: epgGlobalStyles + }), React__default.createElement(Container$1, Object.assign({ + className: "planby", + width: width, + height: height, + ref: containerRef + }, rest), React__default.createElement(WrapperDnD, null, isSidebar && isTimeline && React__default.createElement(Box$5, { + className: "planby-corner-box", + isRTL: isRTL, + left: 0, + top: 0, + style: blankSpaceStyles + }), isLoading && renderLoader(), children))); +}); +function WrapperDnD(_ref2) { + var children = _ref2.children; + var _useGridExternalDnD = useGridExternalDnD(), + isDragOver = _useGridExternalDnD.isDragOver, + onDragEnter = _useGridExternalDnD.onDragEnter, + onDragLeave = _useGridExternalDnD.onDragLeave, + dropAreaRef = _useGridExternalDnD.dropAreaRef; + React__default.useEffect(function () { + var gridElement = document.querySelector(".planby-grid"); + if (gridElement) { + if (isDragOver) { + gridElement.style.zIndex = "5"; + } else { + gridElement.style.zIndex = "1"; + } + } + }, [isDragOver]); + return React__default.createElement(Wrapper$1, { + ref: dropAreaRef, + id: "planby-wrapper", + onDragOver: onDragEnter, + onDragLeaveCapture: onDragLeave, + onDrop: onDragLeave + }, children); +} + +// Styles +var ChannelBox = ChannelWrapper, + ChannelLogo$2 = ChannelLogo; +var CurrentTimeBox$2 = CurrentTimeBox, + CurrentTimeContent$2 = CurrentTimeContent; +var GridItem$2 = GridItem, + GridDivider$2 = GridDivider; +var ProgramBox$2 = ProgramBox, + ProgramContent$2 = ProgramContent, + ProgramFlex$2 = ProgramFlex, + ProgramStack$2 = ProgramStack, + ProgramTitle$2 = ProgramTitle, + ProgramText$2 = ProgramText, + ProgramImage$2 = ProgramImage, + ProgramResizeHandle$2 = ProgramResizeHandle; +var TimelineWrapper$2 = TimelineWrapper, + TimelineBox$2 = TimelineBox, + TimelineTime$2 = TimelineTime, + TimelineDividerStyled = TimelineDivider, + TimelineDividers$2 = TimelineDividers, + TimelineWeekMonthBox$1 = TimelineWeekMonthBox, + TimelineWeekMonthDate$1 = TimelineWeekMonthDate; +var TimelineDivider$2 = TimelineDividerStyled; + +export { ChannelBox, ChannelLogo$2 as ChannelLogo, CurrentTime, CurrentTimeBox$2 as CurrentTimeBox, CurrentTimeContent$2 as CurrentTimeContent, Epg, GridDivider$2 as GridDivider, GridItem$2 as GridItem, Layout, ProgramBox$2 as ProgramBox, ProgramContent$2 as ProgramContent, ProgramFlex$2 as ProgramFlex, ProgramImage$2 as ProgramImage, ProgramResizeHandle$2 as ProgramResizeHandle, ProgramStack$2 as ProgramStack, ProgramText$2 as ProgramText, ProgramTitle$2 as ProgramTitle, TimelineBox$2 as TimelineBox, TimelineDivider$2 as TimelineDivider, TimelineDividers$2 as TimelineDividers, TimelineTime$2 as TimelineTime, TimelineWeekMonthBox$1 as TimelineWeekMonthBox, TimelineWeekMonthDate$1 as TimelineWeekMonthDate, TimelineWrapper$2 as TimelineWrapper, useEpg, useGridExternalDnD, useProgram, useTimeline }; +//# sourceMappingURL=planby-pro.esm.js.map diff --git a/dist/planby-pro.esm.js.map b/dist/planby-pro.esm.js.map new file mode 100644 index 0000000..5ddf4e7 --- /dev/null +++ b/dist/planby-pro.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"planby-pro.esm.js","sources":["../src/Epg/styles/global.styles.ts","../src/Epg/helpers/enums.ts","../src/Epg/helpers/variables.ts","../src/Epg/helpers/common.ts","../src/Epg/helpers/layout.ts","../src/Epg/utils/time.ts","../src/Epg/helpers/epg.ts","../src/Epg/helpers/time.ts","../src/Epg/helpers/timeline.ts","../src/Epg/helpers/line.ts","../src/Epg/helpers/channels.ts","../src/Epg/helpers/overlaps.ts","../src/Epg/helpers/drag.ts","../src/Epg/helpers/grid.ts","../src/Epg/styles/Epg.styles.ts","../src/Epg/styles/Channels.styles.ts","../src/Epg/styles/Channel.styles.ts","../src/Epg/styles/Program.styles.ts","../src/Epg/styles/Timeline.styles.ts","../src/Epg/styles/Line.styles.ts","../src/Epg/styles/Loader.styles.ts","../src/Epg/styles/CurrentTime.styles.ts","../src/Epg/styles/Area.styles.ts","../src/Epg/styles/Grid.styles.ts","../src/Epg/theme/theme.ts","../src/Epg/hooks/useLayout.tsx","../src/Epg/hooks/useEpg.tsx","../src/Epg/hooks/useInterval.tsx","../src/Epg/hooks/useIsTouchDevice.tsx","../src/Epg/hooks/useDrag.tsx","../src/Epg/hooks/useResize.tsx","../src/Epg/hooks/useProgram.tsx","../src/Epg/hooks/useTimeline.tsx","../src/Epg/hooks/useLine.tsx","../src/Epg/hooks/useCurrentTime.tsx","../src/Epg/hooks/useGrid.tsx","../src/Epg/hooks/useGridExternalDnD.tsx","../src/Epg/components/GridDividerItem.tsx","../src/Epg/components/GridCellItem.tsx","../src/Epg/components/Grid.tsx","../src/Epg/components/Layout.tsx","../src/Epg/components/Program.tsx","../src/Epg/components/Channels.tsx","../src/Epg/components/Channel.tsx","../src/Epg/components/CurrentTime.tsx","../src/Epg/components/Timeline.tsx","../src/Epg/components/Line.tsx","../src/Epg/components/Loader.tsx","../src/Epg/helpers/areas.ts","../src/Epg/hooks/useAreas.tsx","../src/Epg/components/Areas.tsx","../src/Epg/Epg.tsx","../src/Epg/index.ts"],"sourcesContent":["import { css } from \"@emotion/react\";\n\nexport const globalStyles = css`\n @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n .planby {\n font-family: \"Inter\", system-ui, -apple-system,\n /* Firefox supports this but not yet system-ui */ \"Segoe UI\", Roboto,\n Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"; /* 2 */\n }\n`;\n","export enum Layers {\n Sidebar = 9,\n EpgCornerBox = 10,\n Line = 9,\n Loader = 12,\n Program = 1,\n Timeline = 9,\n Area = 2,\n}\n","// Dimensions\nexport const DAY_WIDTH = 7200;\nexport const HOURS_IN_DAY = 24;\n\nexport const HOUR_IN_MINUTES = 60;\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const TIMELINE_HEIGHT = 60;\nexport const TIMELINE_HEIGHT_MODERN_STYLE = 80;\nexport const TIMELINE_WIDTH_VERTICAL = 70;\nexport const TIMELINE_DIVIDERS = 4;\n\nexport const SIDEBAR_WIDTH = 100;\nexport const ITEM_HEIGHT = 80;\n\nexport const ITEM_OVERSCAN = ITEM_HEIGHT;\n\n// Debounce\nexport const DEBOUNCE_WAIT = 100;\nexport const DEBOUNCE_WAIT_MAX = 100;\n\n// Live refresh time\nexport const LIVE_REFRESH_TIME = 120;\n\n// Theme\nexport const THEME_MODE = {\n DARK: \"dark\",\n LIGHT: \"light\",\n};\n\nexport const TIME_FORMAT = {\n DEFAULT: \"yyyy-MM-dd HH:mm:ss\",\n DATE: \"yyyy-MM-dd\",\n DAY: \"EEE\",\n DAY_DATE: \"dd\",\n MONTH: \"LLL\",\n DAY_MONTH: \"dd.MM\",\n BASE_DAY_MONTH: \"MM/dd\",\n HOURS_MIN: \"HH:mm\",\n BASE_HOURS_TIME: \"h:mm a\",\n YEAR: \"yyyy\",\n};\n\n// Overlap mode\nexport const OVERLAP_MODES = {\n STACK: \"stack\",\n LAYER: \"layer\",\n};\n\n// Timezone mode\nexport const TIMEZONE_MODES = {\n UTC_TO_ZONED_TIME: \"utc\",\n};\n","import { useLayoutEffect, useEffect } from \"react\";\nimport {\n Interval,\n isToday as isTodayFns,\n format,\n differenceInHours,\n differenceInDays,\n startOfDay,\n eachDayOfInterval,\n eachMonthOfInterval,\n differenceInMonths,\n startOfMonth,\n addMonths,\n} from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n\n// Import interfaces\nimport {\n HoursInDayDiffTime,\n Mode,\n Overlap,\n ProgramOverlaps,\n} from \"./interfaces\";\n\n// Import types\nimport { ProgramItem } from \"./types\";\n\n// Import variables\nimport { HOURS_IN_DAY, OVERLAP_MODES, TIME_FORMAT } from \"./variables\";\n\ntype DateTime = string | number | Date;\n\ntype OmitObjectType = { [key: string]: any };\nexport const omit = (obj: OmitObjectType, ...props: string[]) => {\n const result = { ...obj };\n\n for (const property of props) {\n delete result[property];\n }\n\n return result;\n};\n\nexport const generateArray = (num: number) => new Array(num).fill(\"\");\n\ninterface OverlapProgramOptions {\n isVerticalMode: boolean;\n program: ProgramItem;\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n overlap: Overlap;\n overlapMode: Overlap[\"mode\"];\n}\nconst getOverlapProgramOptions = ({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n}: OverlapProgramOptions) => {\n const { data, position } = program;\n const linkedProgramOverlaps = programOverlaps[data.channelUuid];\n\n if (linkedProgramOverlaps) {\n const programOverlapIndex = linkedProgramOverlaps.findIndex(\n (element) => element.data.id === data.id\n );\n const overlapProgram = linkedProgramOverlaps[programOverlapIndex];\n\n if (overlapProgram) {\n if (\n overlapMode === OVERLAP_MODES.LAYER &&\n overlapProgram.data.channelPosition.top < overlapProgram.position.top\n ) {\n let newTop = overlapProgram.position.top * layerOverlapLevel;\n if (overlapProgram.data.channelPosition.top !== 0) {\n newTop =\n overlapProgram.data.channelPosition.top +\n Math.abs(\n overlapProgram.data.channelPosition.top -\n overlapProgram.position.top\n ) *\n layerOverlapLevel;\n }\n\n let position = {\n ...overlapProgram.position,\n top: newTop,\n };\n\n if (isVerticalMode) {\n position = switchPosition({\n ...overlapProgram.position,\n top: newTop,\n });\n }\n\n return {\n ...program,\n isOverlap: true,\n position,\n };\n }\n\n return {\n ...program,\n position: isVerticalMode\n ? switchPosition(overlapProgram.position)\n : overlapProgram.position,\n };\n } else {\n return {\n ...program,\n position,\n };\n }\n }\n const { width, height, top, left } = position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const getProgramOptions = ({\n isVerticalMode,\n program,\n overlap,\n ...rest\n}: OverlapProgramOptions) => {\n if (overlap.enabled) {\n return getOverlapProgramOptions({\n isVerticalMode,\n program,\n overlap,\n ...rest,\n });\n }\n\n const { width, height, top, left } = program.position;\n return {\n ...program,\n position: { width, height, top, left },\n };\n};\n\nexport const useIsomorphicLayoutEffect = () =>\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const getHourWidth = (dayWidth: number) => dayWidth / HOURS_IN_DAY;\n\nexport const getDate = (date: DateTime) => new Date(date);\n\nconst abs = (num: number) => Math.abs(num);\ninterface DayWidth {\n dayWidth: number;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n modeType: Mode[\"type\"];\n}\nexport const getDayWidthResources = ({\n dayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType,\n}: DayWidth) => {\n const defaultOptions = {\n hourWidth: 0,\n numberOfMonths: 0,\n numberOfHoursInDay: 0,\n monthWidth: 0,\n offsetStartHoursRange: 0,\n dayWidth: 0,\n };\n\n const startDateTime = new Date(startDate);\n const endDateTime = new Date(endDate);\n\n if (endDateTime < startDateTime) {\n console.error(\n `Invalid endDate property. Value of endDate must be greater than startDate. Props: startDateTime: ${startDateTime}, endDateTime: ${endDateTime}`\n );\n }\n if (modeType === \"week\" || modeType === \"month\") {\n const endOfMonthTime = startOfMonth(addMonths(endDateTime, 1));\n const numberOfMonthInMonthMode = differenceInMonths(\n endOfMonthTime,\n startDateTime\n );\n\n const numberOfDaysInWeekMode = differenceInDays(endDateTime, startDateTime);\n const dayWidthInWeekMode = Math.floor(dayWidth / numberOfDaysInWeekMode);\n const hourWidth = dayWidthInWeekMode / HOURS_IN_DAY;\n const newDayWidthInWeekMode =\n hourWidth * HOURS_IN_DAY * numberOfDaysInWeekMode;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidthInWeekMode),\n numberOfMonths: numberOfMonthInMonthMode,\n };\n }\n\n if (hoursInDays.length > 0) {\n const numberOfHoursInDay = hoursInDays.reduce(\n (acc, curr) => acc + curr.diffInHours,\n 0\n );\n const hourWidth = dayWidth / numberOfHoursInDay;\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n };\n }\n\n const offsetStartHoursRange = differenceInHours(\n startDateTime,\n startOfDay(startDateTime)\n );\n\n const numberOfHoursInDay = differenceInHours(endDateTime, startDateTime);\n const hourWidth = Math.floor(dayWidth / numberOfHoursInDay);\n const newDayWidth = hourWidth * numberOfHoursInDay;\n\n return {\n ...defaultOptions,\n hourWidth: abs(hourWidth),\n dayWidth: abs(newDayWidth),\n numberOfHoursInDay: abs(numberOfHoursInDay),\n offsetStartHoursRange: abs(offsetStartHoursRange),\n };\n};\n\nconst convertDate = (date: DateTime) => {\n const newDate = (date as string).replace(/T.*/, \"\");\n return toDate(newDate);\n};\n\nexport const getDayResources = ({\n startDate,\n endDate,\n modeType,\n}: Pick) => {\n const startDateFormat = format(convertDate(startDate), TIME_FORMAT.DATE);\n const endDateFormat = format(convertDate(endDate), TIME_FORMAT.DATE);\n\n const modeIncrementValue = modeType === \"day\" ? 1 : 0;\n const diffDays =\n differenceInDays(toDate(endDateFormat), toDate(startDateFormat)) +\n modeIncrementValue;\n\n const startToEndInterval: Interval = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n\n const days = eachDayOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const months = eachMonthOfInterval(startToEndInterval).map((day) =>\n format(day, TIME_FORMAT.DATE)\n );\n\n const dates = days.map((day) => isTodayFns(toDate(day)));\n let isToday = dates.some((day) => day === true);\n let currentDate = days[dates.indexOf(true)];\n\n return {\n isToday,\n currentDate,\n numberOfDays: diffDays,\n days,\n months,\n };\n};\n\nexport const switchPosition = (programPosition: ProgramItem[\"position\"]) => ({\n ...programPosition,\n top: programPosition.left,\n left: programPosition.top,\n width: programPosition.height,\n height: programPosition.width,\n});\n\nexport function generateUUID() {\n // Generate a random hexadecimal string with the specified length\n const generateRandomHex = (length: number) => {\n let result = \"\";\n const characters = \"abcdef0123456789\";\n\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n\n return result;\n };\n\n // Format a UUID string according to the version 4 UUID format\n const formatUUID = (parts: string[]) => {\n return `${parts[0]}-${parts[1]}-4${parts[2].substring(1)}-${\n \"89ab\"[Math.floor(Math.random() * 4)]\n }${parts[3].substring(1)}-${parts[4]}`;\n };\n\n // Generate the parts of the UUID\n const parts = [\n generateRandomHex(8),\n generateRandomHex(4),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n \"89ab\"[(Math.random() * 4) | 0] + generateRandomHex(3),\n generateRandomHex(12),\n ];\n\n // Return the formatted UUID\n return formatUUID(parts);\n}\n","// Import interfaces\nimport { ChannelWithOmittedUuid, Timezone } from \"./interfaces\";\n// Import types\nimport { ChannelWithPosition, ProgramWithPosition } from \"./types\";\n\ntype LayoutScreenClone = Record>;\n\nlet LayoutScreenCloneCache = {} as LayoutScreenClone;\n\nconst setChannel = (event: ProgramWithPosition) => {\n const isChannel = LayoutScreenCloneCache[event.data.channelUuid];\n if (!isChannel) {\n LayoutScreenCloneCache[event.data.channelUuid] = {};\n return LayoutScreenCloneCache;\n }\n return LayoutScreenCloneCache;\n};\n\nconst updateLayoutScreenCloneElement = (data: LayoutScreenClone) =>\n (LayoutScreenCloneCache = data);\n\nexport const setLayoutScreenCloneElement = (\n event: ProgramWithPosition,\n index: number\n) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (!program) {\n event[\"data\"].index = index;\n channels[event.data.channelUuid][event.data.id] = event;\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const deleteLayoutScreenCloneElement = (event: ProgramWithPosition) => {\n const channels = setChannel(event);\n const program = channels[event.data.channelUuid][event.data.id];\n if (program) {\n delete channels[event.data.channelUuid][event.data.id];\n }\n updateLayoutScreenCloneElement(channels);\n};\n\nexport const getLayoutScreenCloneElements = () => LayoutScreenCloneCache;\nexport const resetLayoutScreenCloneElements: () => void = () =>\n (LayoutScreenCloneCache = {} as LayoutScreenClone);\n\nexport const getChannelsContentHeight = (channels: ChannelWithPosition[]) =>\n channels.reduce((acc, channel) => (acc += channel.position.height), 0);\n\n// Channel epg indexes\ntype ChannelEpgIndex = Record<\n string,\n { uuid: string; first: number; last: number }\n>;\nlet channelEpgIndexesCache = {} as ChannelEpgIndex;\n\nexport const setChannelEpgIndexes = ({\n uuid,\n first = 0,\n last = 0,\n}: {\n uuid: string;\n first?: number;\n last?: number;\n}) => {\n channelEpgIndexesCache[uuid] = {\n first,\n last,\n uuid,\n };\n};\nexport const getChannelEpgIndexes = (uuid: string) => {\n return channelEpgIndexesCache[uuid];\n};\n\nexport const resetChannelsEpgIndexes: () => void = () =>\n (channelEpgIndexesCache = {} as ChannelEpgIndex);\n\n// Channels group tree\ntype ChannelGroupTree = Record<\n string,\n {\n isOpen: boolean;\n uuid: string;\n groupTree: boolean;\n nestedChildren?: string[];\n }\n>;\nlet channelsGroupTreeCache = {} as ChannelGroupTree;\n\nexport const setChannelGroupTree = (channel: ChannelWithOmittedUuid) => {\n channelsGroupTreeCache[channel.uuid as string] = {\n uuid: channel.uuid as string,\n isOpen: channel.isOpen,\n groupTree: channel.groupTree,\n };\n};\n\nexport const setChannelGroupTreeNestedChildren = (\n channelUuid: string,\n nestedChildUuid: string\n) => {\n const channel = channelsGroupTreeCache[channelUuid as string];\n channelsGroupTreeCache[channelUuid as string] = {\n ...channel,\n nestedChildren: [...(channel.nestedChildren ?? []), nestedChildUuid],\n };\n};\n\nexport const getChannelsGroupTree = () => channelsGroupTreeCache;\n\n// Timezones\nlet timezoneOptionsCache = { enabled: false, zone: \"\", mode: \"\" } as Timezone;\n\nexport const setTimezoneOptionsCache = (props: Timezone) => {\n timezoneOptionsCache = props;\n};\nexport const getTimezoneOptionsCache = () => {\n return timezoneOptionsCache;\n};\n\nexport const resetTimezoneOptionsCache: () => void = () =>\n (timezoneOptionsCache = {} as Timezone);\n","import {\n format as fnsFormat,\n // differenceInHours as fnsDifferenceInHours,\n // differenceInMinutes as fnsDifferenceInMinutes,\n} from \"date-fns\";\nimport {\n format as tzFormat,\n utcToZonedTime,\n zonedTimeToUtc,\n} from \"date-fns-tz\";\nimport {\n TIMEZONE_MODES,\n TIME_FORMAT,\n getTimezoneOptionsCache,\n} from \"../helpers\";\n\nexport const getNewDateTimeTz = (date: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = new Date(date);\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime.getTime();\n }\n\n return newDate.getTime();\n};\n\nexport const getNewDateTz = (date?: Date | string | number) => {\n const timezone = getTimezoneOptionsCache();\n const newDate = date ? new Date(date) : new Date();\n\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(newDate, timezone.zone);\n return zonedTime;\n }\n\n return newDate;\n};\n\nexport const formatTz = (\n date: Date | number,\n formatTime: string = TIME_FORMAT.DEFAULT\n) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = utcToZonedTime(date, timezone.zone);\n const formattedZonedTime = tzFormat(zonedTime, formatTime, {\n timeZone: timezone.zone,\n });\n return formattedZonedTime;\n }\n\n return fnsFormat(date, formatTime);\n};\n\nexport const zonedDateTimeToUtc = (date: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const zonedTime = zonedTimeToUtc(date, timezone.zone);\n return zonedTime;\n }\n\n return date;\n};\n","import { differenceInMinutes, getTime, endOfDay, addDays } from \"date-fns\";\n// Import interfaces\nimport {\n Channel,\n ChannelWithOmittedUuid,\n HoursInDayDiffTime,\n Mode,\n Program,\n ProgramWithOmittedUuid,\n} from \"./interfaces\";\n\n// Import types\nimport {\n ProgramWithPosition,\n Position,\n DateTime,\n ChannelWithPosition,\n} from \"./types\";\n\n// Import variables\nimport { HOUR_IN_MINUTES, OVERLAP_MODES, TIME_FORMAT } from \"./variables\";\n\n// Import helpers\nimport {\n roundToMinutes,\n isYesterday as isYesterdayTime,\n formatTimeTz,\n} from \"./time\";\nimport { generateUUID, getDate } from \"./common\";\nimport {\n getChannelsGroupTree,\n setChannelEpgIndexes,\n setChannelGroupTree,\n setChannelGroupTreeNestedChildren,\n} from \"./layout\";\nimport { formatTz } from \"../utils/time\";\n\n// -------- Program width --------\nconst getItemDiffWidth = (diff: number, hourWidth: number) =>\n (diff * hourWidth) / HOUR_IN_MINUTES;\n\nexport const getPositionX = (\n since: DateTime,\n till: DateTime,\n startDate: DateTime,\n endDate: DateTime,\n hourWidth: number\n) => {\n const isTomorrow = getTime(getDate(till)) > getTime(getDate(endDate));\n const isYesterday = getTime(getDate(since)) < getTime(getDate(startDate));\n\n // When time range is set to 1 hour and program time is greater than 1 hour\n if (isYesterday && isTomorrow) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(endDate)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isYesterday) {\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n getDate(startDate)\n );\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n if (isTomorrow) {\n const diffTime = differenceInMinutes(\n getDate(endDate),\n roundToMinutes(getDate(since))\n );\n\n if (diffTime < 0) return 0;\n return getItemDiffWidth(diffTime, hourWidth);\n }\n\n const diffTime = differenceInMinutes(\n roundToMinutes(getDate(till)),\n roundToMinutes(getDate(since))\n );\n\n return getItemDiffWidth(diffTime, hourWidth);\n};\n\n// -------- Channel position in the Epg --------\nexport const getChannelPosition = (\n channelIndex: number,\n itemHeight: number\n) => {\n const top = itemHeight * channelIndex;\n const position = {\n top,\n height: itemHeight,\n };\n return position;\n};\n// -------- Program position in the Epg --------\nexport const getProgramPosition = (\n program: Program,\n channelIndex: number,\n itemHeight: number,\n hourWidth: number,\n startDate: DateTime,\n endDate: DateTime,\n isVerticalMode: boolean\n) => {\n const item = {\n ...program,\n since: formatTimeTz(program.since),\n till: formatTimeTz(program.till),\n };\n\n const isYesterday = isYesterdayTime(item.since, startDate);\n\n let width = getPositionX(\n item.since,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n const top = itemHeight * channelIndex;\n let left = getPositionX(startDate, item.since, startDate, endDate, hourWidth);\n const edgeEnd = getPositionX(\n startDate,\n item.till,\n startDate,\n endDate,\n hourWidth\n );\n\n if (isYesterday) left = 0;\n // If item has negative top position, it means that it is not visible in this day\n if (top < 0) width = 0;\n\n let position = {\n width,\n height: itemHeight,\n top,\n left,\n edgeEnd,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n top: left,\n left: top,\n width: itemHeight,\n height: width,\n };\n }\n return { position, data: item };\n};\n\n// -------- Program position with day hours --------\ninterface ProgramPositionWithDayHours {\n isVerticalMode: boolean;\n hoursInDays: HoursInDayDiffTime[];\n position: ProgramWithPosition[\"position\"];\n since: string;\n hourWidth: number;\n}\nconst getProgramPositionWithDayHours = ({\n isVerticalMode,\n hoursInDays,\n position,\n since,\n hourWidth,\n}: ProgramPositionWithDayHours) => {\n const day = hoursInDays.find((day) => since.includes(day.date));\n if (!day) return { position };\n\n if (isVerticalMode) {\n const diffHours = day.diffLeft * hourWidth;\n const top = position.top - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, top, edgeEnd };\n }\n\n const diffHours = day.diffLeft * hourWidth;\n const left = position.left - diffHours;\n const edgeEnd = position.edgeEnd - diffHours;\n return { ...position, left, edgeEnd };\n};\n\n// -------- Converted programs with position data --------\ninterface ConvertedPrograms {\n isVerticalMode: boolean;\n isOverlapEnabled: boolean;\n programChannelMapKey: string;\n data: ProgramWithOmittedUuid[];\n channels: Channel[];\n startDate: DateTime;\n endDate: DateTime;\n itemHeight: number;\n hourWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n}\nexport const getConvertedPrograms = ({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data,\n channels,\n startDate,\n endDate,\n itemHeight,\n hourWidth,\n hoursInDays,\n}: ConvertedPrograms) => {\n let first = 0;\n return data.map((next, index, arr) => {\n next[\"channelUuid\"] = next[programChannelMapKey];\n\n if (arr[index - 1]?.[programChannelMapKey] !== next[programChannelMapKey]) {\n first = index;\n setChannelEpgIndexes({ uuid: next[programChannelMapKey], first });\n }\n if (next[programChannelMapKey] !== arr[index + 1]?.[programChannelMapKey]) {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n } else {\n setChannelEpgIndexes({\n uuid: next[programChannelMapKey],\n first,\n last: index,\n });\n }\n\n const channelIndex = channels.findIndex(\n ({ uuid }) => uuid === next.channelUuid\n );\n\n next[\"channelIndex\"] = channelIndex;\n next[\"channelPosition\"] = channels[channelIndex]?.position;\n next[\"index\"] = index;\n\n // Group tree\n if (channels[channelIndex]?.parentChannelUuid) {\n next[\"parentChannelUuid\"] = channels[channelIndex]?.parentChannelUuid;\n }\n\n const programData = getProgramPosition(\n next as Program,\n channelIndex,\n itemHeight,\n hourWidth,\n startDate,\n endDate,\n isVerticalMode\n );\n\n if (isOverlapEnabled && channelIndex > 0) {\n const { position } = channels[channelIndex - 1];\n const newPositionTop = position.top + position.height;\n if (isVerticalMode) {\n programData.position.left = newPositionTop;\n } else {\n programData.position.top = newPositionTop;\n }\n }\n\n if (hoursInDays.length === 0) return programData;\n\n const newPosition = getProgramPositionWithDayHours({\n isVerticalMode,\n hoursInDays,\n position: programData.position,\n since: programData.data.since,\n hourWidth,\n }) as ProgramWithPosition[\"position\"];\n\n programData[\"position\"] = newPosition;\n\n return programData;\n }, [] as ProgramWithPosition[]);\n};\n\n// -------- Converted channels with position data --------\n\nexport const getConvertedChannels = (\n isOverlapEnabled: boolean,\n overlapMode: string,\n layerOverlapLevel: number,\n channels: ChannelWithOmittedUuid[],\n itemHeight: number,\n channelMapKey: string,\n channelOverlapsCount: Record\n) => {\n let top = 0;\n const isStackMode = overlapMode === OVERLAP_MODES.STACK;\n const isLayerMode = overlapMode === OVERLAP_MODES.LAYER;\n return channels.reduce((acc, channel, index) => {\n const overlap = channelOverlapsCount[channel[channelMapKey]];\n\n // Check channels group tree\n if (channel.groupTree && channel.uuid) {\n setChannelGroupTree(channel);\n }\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = channelsGroupTree[channel.parentChannelUuid];\n // if parent channel is closed, skip this channel\n if (channelGroupTree && channel.parentChannelUuid) {\n setChannelGroupTreeNestedChildren(\n channelGroupTree.uuid,\n channel.uuid as string\n );\n channel[\"isNestedChild\"] = true;\n if (!channelGroupTree?.isOpen) return acc;\n } else {\n channel[\"isNestedChild\"] = false;\n }\n\n let largestSizeLength = 1;\n const overlapsLength = overlap ?? 0;\n\n if (\n isOverlapEnabled &&\n (isStackMode || isLayerMode) &&\n overlapsLength > 0\n ) {\n largestSizeLength = overlap;\n }\n\n const position = getChannelPosition(index, itemHeight * largestSizeLength);\n\n if (isOverlapEnabled && isStackMode) {\n position.top = top;\n top = top + position.height;\n }\n\n if (isOverlapEnabled && isLayerMode) {\n if (overlapsLength > 0) {\n position.top = top;\n position.height =\n overlapsLength <= 1\n ? position.height\n : itemHeight * layerOverlapLevel * (overlapsLength - 1) +\n itemHeight;\n top = top + position.height;\n } else {\n position.top = top;\n top = top + position.height;\n }\n }\n\n const item = {\n ...channel,\n uuid: channel[channelMapKey],\n index,\n position,\n } as ChannelWithPosition;\n acc.push(item);\n return acc;\n }, [] as ChannelWithPosition[]);\n};\n\n// -------- Dynamic virtual program visibility in the EPG --------\ninterface ItemVisibility {\n position: Position;\n scrollY: number;\n scrollX: number;\n containerHeight: number;\n containerWidth: number;\n isVerticalMode: boolean;\n itemOverscan: number;\n overlapsCount: number;\n}\nexport const getItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n itemOverscan,\n overlapsCount,\n isVerticalMode,\n}: ItemVisibility) => {\n // Set item visibility for vertical mode\n const _overlapsCount = overlapsCount === 0 ? 1 : overlapsCount;\n if (isVerticalMode) {\n if (position.height <= 0) {\n return false;\n }\n\n if (scrollX > position.left + position.width * 2 * _overlapsCount) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n\n if (\n scrollY + containerHeight >= position.top &&\n scrollY <= position.edgeEnd\n ) {\n return true;\n }\n } else {\n // Set item visibility for horizontal mode\n if (position.width <= 0) {\n return false;\n }\n\n if (scrollY > position.top + itemOverscan * 3 * _overlapsCount) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n\n if (\n scrollX + containerWidth >= position.left &&\n scrollX <= position.edgeEnd\n ) {\n return true;\n }\n }\n\n return false;\n};\n\ninterface SidebarItemVisibility {\n isVerticalMode: boolean;\n itemOverscan: number;\n position: Pick & Partial>;\n scrollX: number;\n scrollY: number;\n containerHeight: number;\n containerWidth: number;\n}\nexport const getSidebarItemVisibility = ({\n position,\n scrollX,\n scrollY,\n containerHeight,\n containerWidth,\n itemOverscan,\n isVerticalMode,\n}: SidebarItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n const left = (position.left as number) + position.height;\n if (scrollX > left + itemOverscan * 3) {\n return false;\n }\n\n if (scrollX + containerWidth <= left - position.height) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollY > position.top + position.height + itemOverscan * 3) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.top) {\n return false;\n }\n }\n\n return true;\n};\n\ninterface TimelineItemVisibility {\n position: Pick;\n scrollY: number;\n scrollX: number;\n containerWidth: number;\n containerHeight: number;\n isVerticalMode: boolean;\n}\nexport const getTimelineItemVisibility = ({\n position,\n scrollY,\n scrollX,\n containerHeight,\n containerWidth,\n isVerticalMode,\n}: TimelineItemVisibility) => {\n // Set item visibility for vertical mode\n if (isVerticalMode) {\n if (scrollY > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollY + containerHeight <= position.left) {\n return false;\n }\n } else {\n // Set item visibility for horizontal mode\n if (scrollX > position.left + position.width * 2) {\n return false;\n }\n\n if (scrollX + containerWidth <= position.left) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const setUpdatedLayoutItem = (\n data: ProgramWithOmittedUuid,\n modeType: Mode[\"type\"]\n) => {\n const id = generateUUID();\n const since = `${data.date} ${data.since}`;\n let till = `${data.date} ${data.till}`;\n\n if (modeType === \"week\") {\n till = formatTz(endOfDay(new Date(till)), TIME_FORMAT.DEFAULT);\n } else if (modeType === \"month\") {\n till = formatTz(addDays(endOfDay(new Date(till)), 20), TIME_FORMAT.DEFAULT);\n }\n\n return { id, title: \"\", image: \"\", ...data, since, till };\n};\n","import {\n format,\n roundToNearestMinutes,\n startOfDay,\n addDays,\n differenceInHours,\n isWithinInterval,\n} from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import common helpers\nimport { getDate } from \"./common\";\n// Import interfaces\nimport { HoursInDay, HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import types\nimport { DateTime as DateRangeTime } from \"./types\";\n// Variables\nimport { TIME_FORMAT } from \"./variables\";\nimport { getPositionX } from \"./epg\";\nimport { formatTz, getNewDateTimeTz, getNewDateTz } from \"../utils/time\";\n\ntype DateTime = number | string | Date;\n\nconst getTime = (date: DateTime) => toDate(date).getTime();\n\nexport const getLiveStatus = (since: DateTime, till: DateTime) => {\n const nowTime = getNewDateTimeTz(getNewDateTz());\n const sinceTime = getNewDateTimeTz(since);\n const sinceTill = getNewDateTimeTz(till);\n return nowTime >= sinceTime && sinceTill > nowTime;\n};\n\nexport const formatTime = (date: DateTime) =>\n format(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const formatTimeTz = (date: DateTime) =>\n formatTz(new Date(date), TIME_FORMAT.DEFAULT).replace(/\\s/g, \"T\");\n\nexport const roundToMinutes = (date: DateTime) =>\n roundToNearestMinutes(new Date(date));\n\nexport const isYesterday = (since: DateTime, startDate: DateTime) => {\n const sinceTime = getTime(new Date(since));\n const startDateTime = getTime(new Date(startDate));\n\n return startDateTime > sinceTime;\n};\n\nexport const isFutureTime = (date: DateTime) => {\n const dateTime = getTime(new Date(date));\n const now = getTime(new Date());\n return dateTime > now;\n};\n\nexport const getTimeRangeDates = (\n startDate: DateRangeTime,\n endDate: DateRangeTime\n) => {\n let endDateValue = endDate;\n if (endDate === \"\") {\n endDateValue = formatTime(startOfDay(addDays(getDate(startDate), 1)));\n }\n\n return { startDate, endDate: endDateValue };\n};\n\ninterface FormatWeekMonthDate {\n date: string;\n mode: Mode;\n isBaseTimeFormat: boolean;\n}\nexport const getFormattedWeekMonthDate = ({\n date,\n mode,\n isBaseTimeFormat,\n}: FormatWeekMonthDate) => {\n if (mode.type === \"week\") {\n if (mode.style === \"modern\") {\n return format(toDate(date), TIME_FORMAT.DAY_DATE);\n }\n const dateFormat = isBaseTimeFormat\n ? TIME_FORMAT.BASE_DAY_MONTH\n : TIME_FORMAT.DAY_MONTH;\n return format(toDate(date), dateFormat);\n }\n\n return format(toDate(date), TIME_FORMAT.MONTH);\n};\n\ninterface NumberOfHoursInDays {\n startDate: DateRangeTime;\n customHoursInDays: HoursInDay[];\n}\nexport const getNumberOfHoursInDays = ({\n startDate,\n customHoursInDays,\n}: NumberOfHoursInDays) => {\n if (customHoursInDays.length === 0) return [];\n let itemsDiffInHours = 0;\n const data = customHoursInDays.reduce((acc, item) => {\n let diffLeft = 0;\n const prevItem = acc[acc.length - 1];\n if (!prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(startDate)\n );\n }\n if (prevItem) {\n diffLeft = differenceInHours(\n getDate(item.startTimeHour),\n getDate(prevItem.endTimeHour)\n );\n diffLeft += prevItem.diffLeft;\n itemsDiffInHours += prevItem.diffInHours;\n }\n\n const diffInHours = differenceInHours(\n getDate(item.endTimeHour),\n getDate(item.startTimeHour)\n );\n const startTime = Number(format(getDate(item.startTimeHour), \"H\"));\n const endTime = Number(format(getDate(item.endTimeHour), \"H\"));\n const obj = {\n ...item,\n diffLeft,\n diffInHours,\n prevItemDiffInHours: itemsDiffInHours,\n startTime,\n endTime,\n };\n acc.push(obj);\n return acc;\n }, [] as HoursInDayDiffTime[]);\n\n return data;\n};\n\nexport const getTodayHoursInDays = (hoursInDays: HoursInDayDiffTime[]) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n\n return date.length > 0;\n};\n\ninterface HoursInDaysPositionX {\n hoursInDays: HoursInDayDiffTime[];\n hourWidth: number;\n sidebarWidth: number;\n cb?: (v: boolean) => void;\n}\nexport const getHoursInDaysPositionX = ({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb,\n}: HoursInDaysPositionX) => {\n const date = hoursInDays.filter((item) =>\n isWithinInterval(new Date(), {\n start: new Date(item.startTimeHour),\n end: new Date(item.endTimeHour),\n })\n );\n if (date.length === 0) {\n cb?.(false);\n return 0;\n }\n const day = date[0];\n const positionX = getPositionX(\n startOfDay(new Date(day.startTimeHour)),\n new Date(),\n day.startTimeHour,\n day.endTimeHour,\n hourWidth\n );\n return positionX + sidebarWidth + day.prevItemDiffInHours * hourWidth;\n};\n","import { format, getDaysInMonth, parse } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n// Import interfaces\nimport { HoursInDayDiffTime, Mode } from \"./interfaces\";\n// Import variables\nimport {\n HOURS_IN_DAY,\n TIMELINE_HEIGHT_MODERN_STYLE,\n TIME_FORMAT,\n} from \"./variables\";\n// Import helpers\nimport { generateArray } from \"./common\";\n\nconst { BASE_DAY_MONTH, DAY_MONTH } = TIME_FORMAT;\nconst generateDayHours = (\n isBaseTimeFormat: boolean,\n dayIndex: number,\n days: string[]\n) =>\n Array.from({ length: HOURS_IN_DAY }, (_, i) => {\n if (i === 0) {\n const timeFormat = isBaseTimeFormat ? BASE_DAY_MONTH : DAY_MONTH;\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return dayIndex === 0 ? i : format(date, timeFormat);\n }\n return i;\n });\n\ninterface TimeSlots {\n isBaseTimeFormat: boolean;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n weekDayWidth?: number;\n}\n\nexport const generateTimelineSlots = (\n modeType: Mode[\"type\"],\n options: TimeSlots\n) => {\n const { hoursInDays, ...rest } = options;\n if (modeType === \"week\") {\n return generateWeekTimelineSlots(rest) as string[];\n }\n\n if (modeType === \"month\") {\n return generateMonthTimelineSlots(rest) as string[];\n }\n\n if (hoursInDays.length > 0) {\n return getDayHoursTimeSlots(options) as (string | number)[];\n }\n\n return getDayTimeSlots(rest) as (string | number)[];\n};\n\nconst getDayHoursTimeSlots = ({\n isBaseTimeFormat,\n days,\n hoursInDays,\n numberOfDays,\n}: Pick<\n TimeSlots,\n \"isBaseTimeFormat\" | \"days\" | \"hoursInDays\" | \"numberOfDays\"\n>) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n const hoursInDay = hoursInDays[dayIndex];\n const sliced = hours.slice(hoursInDay.startTime, hoursInDay.endTime);\n if (dayIndex > 0) sliced[0] = hours[0];\n return [...acc, ...sliced];\n }, []);\n return slots;\n};\n\nconst getDayTimeSlots = ({\n isBaseTimeFormat,\n days,\n numberOfDays,\n numberOfHoursInDay,\n offsetStartHoursRange,\n}: Omit) => {\n const slots = generateArray(numberOfDays).reduce((acc, _, dayIndex) => {\n const hours = generateDayHours(isBaseTimeFormat, dayIndex, days);\n if (dayIndex === 0) return [...acc, ...hours.slice(offsetStartHoursRange)];\n return [...acc, ...hours];\n }, []);\n return slots.slice(0, numberOfHoursInDay);\n};\n\nexport const generateWeekTimelineSlots = ({\n days,\n numberOfDays,\n}: Pick) => {\n const slots = generateArray(numberOfDays).map((_, dayIndex) => {\n const date = parse(days[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\nexport const generateMonthTimelineSlots = ({\n months,\n numberOfMonths,\n}: Pick) => {\n const slots = generateArray(numberOfMonths).map((_, dayIndex) => {\n const date = parse(months[dayIndex], TIME_FORMAT.DATE, new Date());\n return format(date, TIME_FORMAT.DATE);\n });\n\n return slots;\n};\n\ninterface TimelineMonthsWidth {\n data: { width: number; left: number }[];\n offsetLeft: number;\n}\nexport const getTimelineMonthsWidth = ({\n months,\n weekDayWidth,\n}: Pick) => {\n const { data } = months.reduce(\n (acc, month, index) => {\n const daysInMonth = getDaysInMonth(toDate(month));\n const width = daysInMonth * (weekDayWidth as number);\n if (index === 0) {\n acc.data.push({ width, left: 0 });\n acc.offsetLeft = 0;\n return acc;\n }\n const left = acc.offsetLeft + acc.data[index - 1].width;\n acc.data.push({ width, left });\n acc.offsetLeft = left;\n return acc;\n },\n { data: [], offsetLeft: 0 } as TimelineMonthsWidth\n );\n\n return data;\n};\n\nexport const getTimelineHeight = (timelineHeight: number, mode: Mode) => {\n if (\n (mode.type === \"week\" || mode.type === \"month\") &&\n mode.style === \"modern\"\n ) {\n return TIMELINE_HEIGHT_MODERN_STYLE;\n }\n return timelineHeight;\n};\n","import { Layers } from \"./enums\";\n\ninterface LineStyles {\n isVerticalMode: boolean;\n isTimeline: boolean;\n lineStyles: {\n position: string;\n top: number;\n width: number;\n };\n position: {\n height: number;\n left: number;\n zIndex: Layers;\n };\n}\nexport const getLineStyles = ({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n}: LineStyles) => {\n if (isVerticalMode) {\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: position.left,\n left: isTimeline ? lineStyles.top : 0,\n width: position.height,\n height: lineStyles.width,\n },\n };\n }\n\n return {\n position: {\n ...position,\n position: lineStyles.position,\n top: isTimeline ? lineStyles.top : 0,\n width: lineStyles.width,\n },\n };\n};\n","// Import types\nimport { getChannelsGroupTree } from \"./layout\";\nimport { ChannelWithPosition } from \"./types\";\n\nexport const getChannelVerticalPosition = (\n channel: ChannelWithPosition,\n isVerticalMode: boolean\n) => {\n if (isVerticalMode) {\n return {\n ...channel,\n position: {\n ...channel.position,\n left: channel.position.top,\n width: channel.position.height,\n },\n };\n }\n\n return channel;\n};\n\nexport const getChannelGroupTreeProps = (channel: ChannelWithPosition) => {\n const data = {\n ...channel,\n nestedChildren: [],\n isFirstNestedChild: false,\n isLastNestedChild: false,\n };\n\n const getChanelGroupTree = (uuid?: string) =>\n channelsGroupTree[uuid ?? \"\"] ?? null;\n\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree = getChanelGroupTree(channel.uuid);\n const channelNestedGroupTree = getChanelGroupTree(\n channel.parentChannelUuid ?? \"\"\n );\n\n if (channel.parentChannelUuid && channelNestedGroupTree) {\n const isFirstNestedChild =\n channelNestedGroupTree.nestedChildren?.at(0) === channel.uuid;\n const isLastNestedChild =\n channelNestedGroupTree.nestedChildren?.at(-1) === channel.uuid;\n return {\n ...data,\n isFirstNestedChild,\n isLastNestedChild,\n };\n } else if (channelGroupTree) {\n return {\n ...data,\n nestedChildren: channelGroupTree.nestedChildren,\n };\n }\n\n return data;\n};\n","import { ProgramItem } from \"./types\";\nimport { ProgramOverlaps } from \"./interfaces\";\nimport { switchPosition } from \"./common\";\nimport { getChannelEpgIndexes, getChannelsGroupTree } from \"./layout\";\n\nfunction getOverlapCount(\n program: ProgramItem,\n overlapArray: ProgramItem[]\n): number {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n\n let overlapCount = 0;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapCount++;\n }\n }\n\n return overlapCount;\n}\n\nfunction overlapPosition(\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) {\n const sinceB = new Date(program.data.since);\n const tillB = new Date(program.data.till);\n const newChannelOverlapsCount = channelOverlapsCount;\n\n for (let index = 0; index < newChannelOverlapsCount + 1; index++) {\n const top =\n program.data.channelPosition.top > 0\n ? program.data.channelPosition.top\n : 0;\n let levelTop = top + program.position.height * index;\n let overlapsOnLevel = false;\n let overlapsOnLevelUp = false;\n\n for (const otherProgram of overlapArray) {\n if (program.data.id === otherProgram.data.id) continue;\n\n if (levelTop === otherProgram.position.top) {\n const sinceOther = new Date(otherProgram.data.since);\n const tillOther = new Date(otherProgram.data.till);\n\n if (\n (sinceB < tillOther && tillB > sinceOther) ||\n (sinceOther < tillB && tillOther > sinceB)\n ) {\n if (\n (sinceB <= tillOther && tillB >= sinceOther) ||\n (sinceOther <= tillB && tillOther >= sinceB)\n ) {\n overlapsOnLevelUp = true;\n }\n overlapsOnLevel = true;\n break;\n }\n }\n }\n\n if (!overlapsOnLevel) {\n return overlapsOnLevelUp ? index + 4 : index;\n }\n }\n return newChannelOverlapsCount;\n}\n\nconst getOverlapProgramOptions = (\n program: ProgramItem,\n overlapArray: ProgramItem[],\n channelOverlapsCount: number\n) => {\n const _program = { ...program };\n\n const { data, position } = _program;\n\n const programOverlapIndex = overlapArray.length + 1;\n\n const isOverlapStackMode = true;\n const programOverlapsLength = overlapArray.length;\n const { channelPosition, overlapTimes } = data;\n const { width, height, left } = position;\n const newHeight = isOverlapStackMode\n ? height\n : height / programOverlapsLength;\n\n const newTop =\n channelPosition.top + (overlapTimes ?? programOverlapIndex) * newHeight;\n\n const newProgram = {\n ...program,\n position: { width, height: newHeight, top: newTop, left },\n };\n\n const overlapTop = overlapPosition(\n newProgram,\n overlapArray,\n channelOverlapsCount\n );\n\n newProgram.position = {\n ...newProgram.position,\n top: channelPosition.top + newProgram.position.height * overlapTop,\n };\n\n return [newProgram, overlapTop + 1];\n};\n\nconst setChannelOverlapCount = (\n programA: ProgramItem,\n channelOverlapsCount: number,\n channelOverlaps: Record\n) =>\n channelOverlapsCount > channelOverlaps[programA.data.channelUuid]\n ? channelOverlapsCount\n : channelOverlaps[programA.data.channelUuid];\n\nexport function getOverlaps(\n isVerticalMode: boolean,\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n): {\n overlaps: ProgramOverlaps;\n channelOverlaps: Record;\n} {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n for (const program of programs) {\n overlaps[program.data.channelUuid] = [];\n }\n\n for (let i = 0; i < programs.length - 1; i++) {\n const programA = { ...programs[i] };\n const sinceA = new Date(programA.data.since);\n const tillA = new Date(programA.data.till);\n\n // Group channel tree\n // If parent group tree is open, then all children group tree are visible\n // If parent group tree is closed, then all children group tree are not visible\n if (programA?.data?.parentChannelUuid) {\n const channelsGroupTree = getChannelsGroupTree();\n const channelGroupTree =\n channelsGroupTree[programA?.data?.parentChannelUuid];\n if (!channelGroupTree?.isOpen) continue;\n }\n\n if (isVerticalMode) {\n programA.position = switchPosition(programA.position);\n }\n\n for (let j = i + 1; j < programs.length; j++) {\n const programB = { ...programs[j] };\n\n if (programA.data.channelUuid !== programB.data.channelUuid) continue;\n\n if (isVerticalMode) {\n programB.position = switchPosition(programB.position);\n }\n\n const sinceB = new Date(programB.data.since);\n const tillB = new Date(programB.data.till);\n\n if (\n (sinceA < tillB && tillA > sinceB) ||\n (sinceB < tillA && tillB > sinceA)\n ) {\n const elementA = overlaps[programA.data.channelUuid];\n const elementB = overlaps[programB.data.channelUuid];\n\n const isSameChannelUuid =\n programA.data.channelUuid === programB.data.channelUuid;\n\n if (elementA && elementB && isSameChannelUuid) {\n programB.data.overlapLinkedId = programA.data.overlapLinkedId;\n\n const overlapArray = overlaps[programA.data.channelUuid];\n\n const isElementAExist = overlapArray.some(\n (el) => el.data.id === programA.data.id\n );\n const isElementBExist = overlapArray.some(\n (el) => el.data.id === programB.data.id\n );\n const channelOverlapsLength =\n overlaps[programA.data.channelUuid].length;\n\n if (!isElementBExist && channelOverlapsLength === 0) {\n programB.position.top =\n programA.data.channelPosition.top + programA.position.height;\n overlaps[programA.data.channelUuid] = [programA, programB];\n channelOverlaps[programA.data.channelUuid] = !channelOverlaps[\n programA.data.channelUuid\n ]\n ? 2\n : channelOverlaps[programA.data.channelUuid];\n } else if (!isElementBExist && channelOverlapsLength > 1) {\n let overlapCount = 0;\n\n if (!isElementAExist) {\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramA, channelOverlapsCount] =\n getOverlapProgramOptions(\n programA,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n overlapArray.push(newProgramA);\n\n channelOverlaps[programA.data.channelUuid] =\n setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n }\n\n overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [newProgramB, channelOverlapsCount] =\n getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n overlapArray.push(newProgramB);\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (isElementBExist && channelOverlapsLength > 1) {\n const overlapCount = getOverlapCount(programB, overlapArray);\n programB.data.overlapTimes = overlapCount;\n\n const [, channelOverlapsCount] = getOverlapProgramOptions(\n programB,\n overlapArray,\n channelOverlaps[programA.data.channelUuid]\n ) as [ProgramItem, number];\n\n channelOverlaps[programA.data.channelUuid] = setChannelOverlapCount(\n programA,\n channelOverlapsCount,\n channelOverlaps\n );\n } else if (channelOverlapsLength > 1) {\n overlapArray.push(programB);\n }\n }\n } else if (\n overlaps[programA.data.channelUuid] &&\n overlaps[programA.data.channelUuid].length === 0\n ) {\n channelOverlaps[programA.data.channelUuid] = 0;\n overlaps[programA.data.channelUuid] = [];\n }\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n\nconst getChannelProgramSliced = (programs: ProgramItem[]) => {\n const acc = new Map();\n\n for (const next of programs) {\n const channelUuid = next.data.channelUuid;\n if (!acc.has(channelUuid)) {\n acc.set(channelUuid, []);\n }\n acc.get(channelUuid).push(next);\n }\n\n return Object.fromEntries(acc) as Record;\n};\n\nconst getChannelEpdIndexesProgramSliced = (\n programs: ProgramItem[],\n overlaps: ProgramOverlaps,\n dndChannelUuidIndex: number\n) => {\n const acc = {} as Record;\n\n for (const next of Object.keys(overlaps)) {\n const channelIndex = overlaps[next]?.[0]?.data.channelIndex;\n const channelUuid = overlaps[next]?.[0]?.data.channelUuid;\n if (channelIndex !== undefined && channelIndex > dndChannelUuidIndex) {\n const channelEpgIndexes = getChannelEpgIndexes(next);\n const slicedPrograms = programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n );\n acc[channelUuid] = slicedPrograms;\n }\n }\n return acc;\n};\n\nexport function checkOverlaps(\n isMultirowsDnd: boolean,\n isVerticalMode: boolean,\n dndChannelUuid: { index: number; uuid: string },\n itemOverlaps: ProgramOverlaps,\n programs: ProgramItem[]\n) {\n const overlaps: ProgramOverlaps = { ...itemOverlaps };\n const channelOverlaps: Record = {};\n\n let data = {} as Record;\n\n const channelEpgIndexes = getChannelEpgIndexes(dndChannelUuid.uuid);\n if (!isMultirowsDnd && channelEpgIndexes) {\n const slicedOverlapsPrograms = getChannelEpdIndexesProgramSliced(\n programs,\n overlaps,\n dndChannelUuid.index\n );\n data = {\n [dndChannelUuid.uuid]: programs.slice(\n channelEpgIndexes.first,\n channelEpgIndexes.last + 1\n ),\n ...slicedOverlapsPrograms,\n };\n } else {\n data = getChannelProgramSliced(programs);\n }\n\n for (const channel in data) {\n const props = getOverlaps(isVerticalMode, itemOverlaps, data[channel]);\n overlaps[channel] = props.overlaps[channel];\n channelOverlaps[channel] = props.channelOverlaps[channel];\n }\n for (const channelUuid in overlaps) {\n if (\n overlaps?.[channelUuid] &&\n Object.keys(overlaps?.[channelUuid])?.length === 0\n ) {\n delete overlaps[channelUuid];\n }\n }\n\n return { overlaps, channelOverlaps };\n}\n","import { format, addMinutes, differenceInMinutes } from \"date-fns\";\n// Import types\nimport { DateTime, DragMouseUp, ResizeMouseUp } from \"./types\";\n// Import variables\nimport { TIMEZONE_MODES, TIME_FORMAT } from \"./variables\";\nimport { getTimezoneOptionsCache } from \"./layout\";\nimport { zonedDateTimeToUtc } from \"../utils/time\";\n\ntype EventProps = Pick<\n DragMouseUp | ResizeMouseUp,\n keyof DragMouseUp & keyof ResizeMouseUp\n>;\ntype EventSinceTill = EventProps & {\n startDate?: DateTime;\n hourWidth: number;\n width?: ResizeMouseUp[\"width\"];\n initialWidth?: ResizeMouseUp[\"initialWidth\"];\n};\n\nconst getFormattedDndDate = (newSince: Date, newTill: Date) => {\n const timezone = getTimezoneOptionsCache();\n if (timezone.enabled && timezone.mode === TIMEZONE_MODES.UTC_TO_ZONED_TIME) {\n const utcDateSince = zonedDateTimeToUtc(newSince);\n const utcDateTill = zonedDateTimeToUtc(newTill);\n return {\n since: utcDateSince.toISOString(),\n till: utcDateTill.toISOString(),\n };\n }\n\n return {\n since: format(newSince, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n till: format(newTill, TIME_FORMAT.DEFAULT).replace(\" \", \"T\"),\n };\n};\n\nconst getResizeTill = ({\n initialWidth,\n width,\n hourWidth,\n}: Partial> & {\n hourWidth: number;\n}) => {\n if (!initialWidth && !width) return 0;\n\n const diff = (width as number) - (initialWidth as number);\n const diffHours = diff / hourWidth;\n\n return diffHours * 60;\n};\n\nexport const calculateItemDragSinceTill = (props: EventSinceTill) => {\n const {\n initialPositionLeft,\n left,\n initialWidth,\n width,\n hourWidth,\n startDate,\n since,\n till,\n } = props;\n let minDiff = 0;\n if (startDate) {\n const startDateTime = new Date(startDate).getTime();\n const sinceTime = new Date(since).getTime();\n if (sinceTime < startDateTime) {\n minDiff = differenceInMinutes(new Date(startDate), new Date(since));\n }\n }\n\n const diff = left - initialPositionLeft;\n const diffHours = diff / hourWidth;\n const tillDiffHours = getResizeTill({ initialWidth, width, hourWidth });\n\n const newSince = addMinutes(new Date(since), diffHours * 60 + minDiff);\n const newTill = addMinutes(\n new Date(till),\n diffHours * 60 + tillDiffHours + minDiff\n );\n return getFormattedDndDate(newSince, newTill);\n};\n\nexport const getDefaultDragProps = (positionLeft: number) => ({\n currentPositionX: positionLeft,\n dndEvents: { isDragging: false },\n});\n","import { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\nimport { BaseTimeFormat, ChannelWithPosition, Position } from \"./types\";\nimport { generateArray } from \"./common\";\nimport { HOURS_IN_DAY } from \"./variables\";\nimport { generateTimelineSlots, getTimelineMonthsWidth } from \"./timeline\";\n\ninterface ConvertedGridItems {\n isVerticalMode: boolean;\n channels: ChannelWithPosition[];\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n dayWidthResources: {\n numberOfMonths: number;\n numberOfHoursInDay: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n };\n daysResources: {\n numberOfDays: number;\n days: string[];\n months: string[];\n };\n}\nexport const getConvertedGridItems = ({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources,\n daysResources,\n}: ConvertedGridItems) => {\n const isMonthMode = mode.type === \"month\";\n\n const numberOfSlots = () => {\n if (mode.type === \"day\") return dayWidthResources.numberOfHoursInDay;\n if (mode.type === \"week\") return daysResources.numberOfDays;\n return dayWidthResources.numberOfMonths;\n };\n\n const monthsWidth = () =>\n getTimelineMonthsWidth({\n months: daysResources.months,\n weekDayWidth: hourWidth * HOURS_IN_DAY,\n });\n\n const getGridItemPosition = (channel: ChannelWithPosition, index: number) => {\n let width = 0;\n let left = 0;\n if (isMonthMode) {\n width = monthsWidth()[index].width;\n left = monthsWidth()[index].left;\n } else {\n width = dayWidth / numberOfSlots();\n left = width * index;\n }\n let position = {\n top: channel.position.top,\n left,\n width,\n height: channel.position.height,\n edgeEnd: left + width,\n };\n\n if (isVerticalMode) {\n position = {\n ...position,\n left: position.top + timelineHeight,\n top: position.left + sidebarWidth,\n width: position.height,\n height: position.width,\n };\n } else {\n position = {\n ...position,\n top: position.top + timelineHeight,\n left: left + sidebarWidth,\n width,\n height: position.height,\n };\n }\n\n return { position, channel };\n };\n return channels.flatMap((channel) =>\n generateArray(numberOfSlots()).map((_, index) =>\n getGridItemPosition(channel, index)\n )\n );\n};\n\n// On grid item click\ninterface ClickGridItem {\n isDrop?: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n index: number | undefined;\n item: {\n position: Position;\n channel: ChannelWithPosition;\n };\n grid: IGrid;\n mode: Mode;\n dayWidth: number;\n hourWidth: number;\n timelineHeight: number;\n sidebarWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n timelineDividers: number;\n dataAttributes?: Record;\n}\nexport const getClickGridItemData = ({\n isDrop = false,\n isVerticalMode,\n isBaseTimeFormat,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n sidebarWidth,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n}: ClickGridItem) => {\n let { position, channel } = item;\n const isDayMode = mode.type === \"day\";\n let newPosition = {} as Position;\n if (isVerticalMode) {\n newPosition = {\n ...position,\n top: position.left,\n left: position.top - sidebarWidth,\n edgeEnd: position.left + hourWidth - sidebarWidth,\n };\n } else {\n newPosition = {\n ...position,\n top: position.top,\n left: position.left - sidebarWidth,\n edgeEnd: position.edgeEnd - sidebarWidth,\n };\n }\n\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n const timeSlots = generateTimelineSlots(mode.type, options);\n\n const left = isDayMode\n ? newPosition.left + (index as number) * (hourWidth / timelineDividers)\n : newPosition.left;\n const edgeEnd = isDayMode\n ? left + hourWidth / timelineDividers\n : newPosition.edgeEnd;\n const itemClickProps = {\n since: \"00:00:00\",\n till: \"00:00:00\",\n date: \"\",\n channelUuid: channel.uuid,\n };\n\n if (isDayMode) {\n const gridItemProps = getDividerGridProps({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n dayWidth,\n hourWidth,\n index,\n });\n isDrop\n ? grid.onGridItemDrop?.({ ...gridItemProps, ...dataAttributes })\n : grid.onGridItemClick?.(gridItemProps);\n }\n\n if (mode.type === \"week\") {\n const index = Math.floor(left / (hourWidth * 24));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n\n if (mode.type === \"month\") {\n const index = Math.floor(left / (hourWidth * 24 * 30));\n const options = {\n ...itemClickProps,\n date: timeSlots[index] as string,\n };\n isDrop\n ? grid.onGridItemDrop?.({ ...options, ...dataAttributes })\n : grid.onGridItemClick?.(options);\n }\n};\n\ninterface DividerGridProps {\n left: number;\n edgeEnd: number;\n timeSlots: (string | number)[];\n channel: ChannelWithPosition;\n days: string[];\n hourWidth: number;\n dayWidth: number;\n index: number | undefined;\n}\nconst getDividerGridProps = ({\n left,\n edgeEnd,\n timeSlots,\n channel,\n days,\n hourWidth,\n dayWidth,\n index,\n}: DividerGridProps) => {\n let since = \"\";\n let till = \"\";\n const dayTimeSlots = timeSlots.map((time) =>\n typeof time === \"number\" ? time : 0\n );\n const sinceTimeInHours = Math.floor(left / hourWidth); // Assuming 4 hours per hourWidth\n const tillTimeInHours = Math.floor(edgeEnd / hourWidth); // Assuming 4 hours per hourWidth\n const getTime = (index: number) =>\n (dayTimeSlots[index] as number) < 10\n ? \"0\" + dayTimeSlots[index]\n : dayTimeSlots[index];\n const newSince = getTime(sinceTimeInHours);\n const newTill = getTime(tillTimeInHours);\n const newSinceMin = index === 0 ? `00` : (index as number) * 15;\n\n const newTillMin =\n (index as number) + 1 === 0 ? `00` : ((index as number) + 1) * 15;\n\n since = `${newSince}:${newSinceMin}:00`;\n till = `${newTill}:${newTillMin}:00`;\n\n if (newTillMin === 60) {\n const newNextTill =\n (dayTimeSlots[sinceTimeInHours + 1] as number) < 10\n ? \"0\" + dayTimeSlots[sinceTimeInHours + 1]\n : dayTimeSlots[tillTimeInHours];\n till = newTill ? `${newNextTill}:00:00 ` : \"00:00:00\";\n }\n const singleDayWidth = dayWidth / (days.length - 1);\n const dayIndex = Math.floor(left / singleDayWidth);\n\n const options = {\n since,\n till,\n date: days[dayIndex],\n channelUuid: channel.uuid,\n };\n return options;\n};\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Container = styled.div<{\n height?: number;\n width?: number;\n}>`\n padding: 5px;\n height: ${({ height }) => (height ? `${height}px` : \"100%\")};\n width: ${({ width }) => (width ? `${width}px` : \"100%\")};\n\n *,\n ::before,\n ::after {\n box-sizing: border-box;\n }\n`;\n\nexport const Wrapper = styled.div`\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n`;\n\nexport const ScrollBox = styled.div<{ theme?: Theme; isRTL?: boolean }>`\n position: relative;\n height: 100%;\n width: 100%;\n overflow: auto;\n scroll-behavior: smooth;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isRTL }) => isRTL && `transform: scale(-1,1)`};\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.scrollbar.thumb.bg};\n border: 10px none ${({ theme }) => theme.white};\n border-radius: 20px;\n }\n ::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.white};\n }\n\n ::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.primary[900]};\n border: 22px none ${({ theme }) => theme.white};\n border-radius: 0px;\n }\n\n ::-webkit-scrollbar-corner {\n background: ${({ theme }) => theme.primary[900]};\n }\n`;\n\nexport const Box = styled.div<{\n isRTL?: boolean;\n left?: number;\n top?: number;\n theme?: Theme;\n}>`\n position: absolute;\n top: ${({ top = 0 }) => top}px;\n background: ${({ theme }) => theme.primary[900]};\n z-index: ${Layers.EpgCornerBox};\n\n ${({ isRTL, left = 0 }) => (isRTL ? `right:0px;` : ` left: ${left}px`)};\n`;\n\nexport const Content = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n theme?: Theme;\n dayWidth: number;\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: ${({ contentHeight }) => contentHeight}px;\n width: ${({ dayWidth }) => dayWidth}px;\n background: ${({ theme }) => theme.primary[900]};\n\n ${({ isVerticalMode, isTimeline, dayWidth, timelineHeight, contentHeight }) =>\n isVerticalMode &&\n `\n left: ${isTimeline ? timelineHeight : 0}px;\n width: ${contentHeight}px;\n height: ${dayWidth}px;\n `}\n`;\n\nexport const LayoutBg = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n isSidebar: boolean;\n dayWidth: number;\n contentHeight: number;\n timelineHeight: number;\n sidebarWidth: number;\n}>`\n position: absolute;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n height: 100%;\n width: ${({ dayWidth }) => dayWidth}px;\n\n ${({\n isVerticalMode,\n isTimeline,\n isSidebar,\n dayWidth,\n timelineHeight,\n sidebarWidth,\n }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n width: 100%;\n height: ${dayWidth}px;\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const Box = styled.div<{\n isVerticalMode?: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n contentHeight: number;\n bottom: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isTimeline,\n isRTL,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n bottom,\n theme,\n }) => css`\n position: sticky;\n background-color: ${theme.primary[900]};\n\n ${isRTL && `& > div { transform: scale(-1,1) }`};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${isTimeline ? timelineHeight : 0}px;\n height: ${sidebarWidth}px;\n width: ${contentHeight}px;\n `}\n\n ${!isVerticalMode &&\n css`\n left: 0;\n bottom: ${bottom}px;\n float: left;\n width: ${sidebarWidth}px;\n `}\n `}\n z-index: ${Layers.Sidebar};\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const ChannelWrapper = styled.div<{\n isVerticalMode?: boolean;\n top: number;\n height: number;\n groupTree?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, top, height, groupTree, theme }) => css`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${theme.primary[900]};\n cursor: ${groupTree ? \"pointer\" : \"default\"};\n\n ${isVerticalMode &&\n css`\n top: 0;\n left: ${top}px;\n width: ${height}px;\n height: 100%;\n `}\n ${!isVerticalMode &&\n css`\n top: ${top}px;\n height: ${height}px;\n width: 100%;\n `};\n `}\n`;\n\nexport const ChannelLogo = styled.img`\n max-height: 60px;\n max-width: 60px;\n position: relative;\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const ProgramContent = styled.div<{\n isVerticalMode?: boolean;\n isLive: boolean;\n width: number;\n theme?: Theme;\n}>`\n border: 1px solid #171923;\n position: relative;\n display: flex;\n font-size: 11px;\n height: 100%;\n border-radius: 8px;\n padding: 10px ${({ width }) => (width < 30 ? 4 : 20)}px;\n overflow: hidden;\n cursor: pointer;\n transition: all 0.4s ease-in-out;\n background: ${({ theme: { primary } }) =>\n `linear-gradient(to right, ${primary[600]}, ${primary[600]})`};\n z-index: ${Layers.Program};\n\n &:hover {\n background: ${({ theme: { gradient } }) =>\n `linear-gradient(to right, ${gradient.blue[900]}, ${gradient.blue[600]})`};\n }\n\n ${({ isLive, isVerticalMode, theme: { gradient } }) =>\n isLive &&\n `background: linear-gradient(to ${isVerticalMode ? \"bottom\" : \"right\"}, ${\n gradient.blue[900]\n }, ${gradient.blue[600]},${gradient.blue[300]})`}\n`;\n\nexport const ProgramFlex = styled.div<{ isVerticalMode?: boolean }>`\n width: 100%;\n display: flex;\n justify-content: flex-start;\n\n ${({ isVerticalMode }) => isVerticalMode && `flex-direction: column;`};\n`;\n\nconst Elipsis = `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const ProgramTitle = styled.p<{ theme?: Theme }>`\n font-size: 14px;\n text-align: left;\n margin-top: 0;\n margin-bottom: 5px;\n font-weight: 500;\n color: ${({ theme }) => theme.grey[300]};\n ${Elipsis}\n`;\n\nexport const ProgramText = styled.span<{ theme?: Theme }>`\n display: block;\n font-size: 12.5px;\n font-weight: 400;\n color: ${({ theme }) => theme.text.grey[500]};\n text-align: left;\n ${Elipsis}\n`;\n\nexport const ProgramImage = styled.img<{ isVerticalMode?: boolean }>`\n margin-right: 15px;\n border-radius: 6px;\n width: 100px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode && `width: 100%; margin-bottom: 10px`};\n`;\n\nexport const ProgramStack = styled.div<{ isRTL?: boolean }>`\n overflow: hidden;\n ${({ isRTL }) =>\n isRTL &&\n `transform: scale(-1,1); \n display: flex; \n flex-direction: column; \n align-items: flex-end`};\n`;\n\nexport const ProgramBox = styled.div<{\n isResizing?: boolean;\n isDragging?: boolean;\n width: number;\n}>`\n position: absolute;\n padding: ${({ width }) => (width === 0 ? 0 : 4)}px;\n z-index: ${({ isDragging, isResizing }) =>\n isDragging || isResizing ? Layers.Program * 3 : Layers.Program};\n overflow: hidden;\n\n ${({ isDragging, isResizing }) =>\n (!isDragging || !isResizing) &&\n ` &:hover {\n z-index: ${Layers.Program * 2};\n\n ${ProgramResizeHandle} {\n opacity: 1;\n }\n }`}\n\n ${({ isDragging, isResizing, theme }) =>\n (isDragging || isResizing) &&\n ` \n border-radius: 10px;\n background: ${theme.green[200]};\n \n ${ProgramContent}{\n user-select: none;\n cursor: move;\n }\n `}\n`;\n\nexport const ProgramResizeHandle = styled.div<{\n isResize?: boolean;\n isVerticalMode?: boolean;\n left?: boolean;\n}>`\n position: absolute;\n opacity: 0;\n\n ${({ isResize }) => !isResize && \"display: none;\"}\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 0;` : `bottom: 0;`}\n left:0;\n height:25px;\n width: 100%;\n cursor: ${left ? \"n-resize\" : \"s-resize\"};\n `}\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n `\n top: 0;\n bottom: 0;\n ${left ? `left: 0;` : `right: 0;`}\n width: 25px;\n cursor: ${left ? \"w-resize\" : \"e-resize\"};\n `}\n\n &:after {\n content: \"\";\n position: absolute;\n margin: auto;\n border-radius: 8px;\n background: ${({ theme }) => theme.green[200]};\n\n ${({ isVerticalMode, left }) =>\n !isVerticalMode &&\n ` top: 0;\n bottom: 0;\n height: 50%;\n width: 4px;\n ${left ? `left: 9px;` : `right: 9px;`}\n `}\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n `\n ${left ? `top: 9px;` : `bottom: 9px;`}\n left:50%;\n height: 4px;\n width: 50%;\n transform: translateX(-50%);\n \n `}\n }\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const TimelineTime = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isWeekMonthMode?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n position: absolute;\n top: 13px;\n left: ${({ isRTL, isBaseTimeFormat, isVerticalMode, isWeekMonthMode }) => {\n if (isVerticalMode) {\n if (isRTL) return isBaseTimeFormat ? 9 : 17;\n return isBaseTimeFormat ? 9 : 14;\n }\n if (isWeekMonthMode) return 0;\n return isRTL && isBaseTimeFormat ? \"-32\" : \"-18\";\n }}px;\n\n color: ${({ theme }) => theme.text.grey[300]};\n\n ${({ isRTL }) =>\n isRTL &&\n `\n transform: scale(-1, 1);\n `}\n\n ${({ theme, isNewDay }) =>\n isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n top: -10px;\n left: 50%;\n transform: translate(-50%, 0%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `};\n`;\nexport const TimelineWeekMonthDate = styled.div<{\n isVerticalMode?: boolean;\n isRTL?: boolean;\n styleType?: \"default\" | \"modern\";\n theme?: Theme;\n}>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n height: 100%;\n transform: ${({ isRTL }) => (isRTL ? \"scale(-1,1)\" : \"scale(1,1)\")};\n\n span {\n color: ${({ theme }) => theme.text.grey[300]};\n font-size: 16px;\n }\n\n ${({ styleType, theme }) =>\n styleType === \"modern\" &&\n css`\n span:first-of-type {\n font-weight: 500;\n color: ${theme.teal[100]};\n font-size: 18px;\n }\n span {\n font-weight: 500;\n color: ${theme.text.grey[300]};\n font-size: 24px;\n }\n `}\n\n ${({ isVerticalMode, isRTL }) =>\n isVerticalMode &&\n css`\n margin-top: 0px;\n transform: ${isRTL ? \"scale(-1,1)\" : \"scale(1,1)\"};\n `};\n`;\n\nexport const TimelineDividers = styled.div<{\n isVerticalMode?: boolean;\n}>`\n position: relative;\n height: 100%;\n width: 100%;\n padding-bottom: 6px;\n\n ${({ isVerticalMode }) =>\n isVerticalMode &&\n css`\n grid-template-columns: 1fr;\n align-items: start;\n `}\n`;\n\nexport const TimelineDivider = styled.div<{\n isVerticalMode?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n width: number;\n left: number;\n}>`\n position: absolute;\n bottom: 6px;\n background: ${({ theme }) => theme.timeline.divider.bg};\n height: 10px;\n width: 1px;\n left: ${({ left }) => left}px;\n\n ${({ isVerticalMode, left }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 50%;\n height: 1px;\n width: 15px;\n transform: translate(-50%, -50%);\n &:first-of-type {\n opacity: 0;\n visibility: hidden;\n }\n `}\n\n ${({ isNewDay, theme }) =>\n isNewDay &&\n `&:first-of-type {\n width:2px;\n background: ${theme.teal[100]};\n }`}\n`;\n\nexport const TimelineWrapper = styled.div<{\n isVerticalMode?: boolean;\n isSidebar: boolean;\n dayWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n ${({\n isVerticalMode,\n isSidebar,\n sidebarWidth,\n timelineHeight,\n dayWidth,\n theme,\n }) =>\n css`\n position: sticky;\n background: ${theme.primary[900]};\n z-index: ${Layers.Timeline};\n\n ${isVerticalMode &&\n css`\n left: 0;\n bottom: 0px;\n float: left;\n width: ${timelineHeight}px;\n margin-top: ${isSidebar ? sidebarWidth : 0}px;\n `}\n\n ${!isVerticalMode &&\n css`\n top: 0;\n left: ${isSidebar ? sidebarWidth : 0}px;\n height: ${timelineHeight}px;\n width: ${dayWidth}px;\n `}\n `}\n`;\n\nexport const TimelineBox = styled.div<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n}>`\n ${({ isVerticalMode, left, width, timelineHeight, theme }) => css`\n position: absolute;\n font-size: 14px;\n background-color: ${theme.primary[900]};\n\n ${!isVerticalMode &&\n css`\n left: ${left}px;\n width: ${width}px;\n height: 100%;\n `}\n ${isVerticalMode &&\n css`\n top: ${left}px;\n height: ${width}px;\n width: ${timelineHeight}px;\n `}\n `}\n\n ${({\n isVerticalMode,\n isToday,\n isCurrentTime,\n isTodayInHoursInDays,\n areHoursInDays,\n isWeekMonthMode,\n }) => {\n const typeNumberDefault = isToday && isCurrentTime ? 2 : 1;\n const typeNumberInHoursDays = areHoursInDays\n ? isTodayInHoursInDays && isCurrentTime\n ? 2\n : 1\n : 1;\n const typeNumber = areHoursInDays\n ? typeNumberInHoursDays\n : typeNumberDefault;\n const position = isVerticalMode ? \"top\" : \"left\";\n\n if (!isWeekMonthMode) {\n return `&:nth-of-type(${typeNumber}) {\n ${TimelineTime} {\n ${position}: 0px;\n }\n }`;\n }\n return \"\";\n }}\n`;\nexport const TimelineWeekMonthBox = styled(TimelineBox)<{\n isVerticalMode?: boolean;\n isWeekMonthMode?: boolean;\n isToday: boolean;\n isCurrentTime: boolean;\n isTodayInHoursInDays?: boolean;\n areHoursInDays?: boolean;\n width: number;\n left: number;\n timelineHeight: number;\n styleType?: \"default\" | \"modern\";\n}>`\n ${({ isVerticalMode, styleType, theme }) =>\n css`\n &:not(:last-of-type) {\n &:after {\n content: \"\";\n position: absolute;\n background: ${theme.timeline.divider.bg};\n transform: translate(-50%, -50%);\n\n ${isVerticalMode\n ? css`\n bottom: 0;\n height: 1px;\n width: 80%;\n `\n : css`\n top: 50%;\n right: 0;\n height: 100%;\n height: ${styleType === \"modern\" ? \"35%\" : \"70%\"};\n width: 1px;\n `}\n }\n }\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { Layers, Theme } from \"../helpers\";\n\nexport const lineStyles = {\n position: \"absolute\",\n top: 64,\n width: 3,\n};\n\nexport const LineBox = styled.div<{\n isVerticalMode: boolean;\n isTimeline: boolean;\n height: number;\n left: number;\n zIndex: Layers;\n theme?: Theme;\n}>`\n position: ${lineStyles.position};\n top: ${({ isTimeline }) => (isTimeline ? lineStyles.top : 0)}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${lineStyles.width}px;\n background: ${({ theme }) => theme.green[300]};\n pointer-events: none;\n z-index: ${({ zIndex }) => zIndex};\n\n ${({ isVerticalMode, isTimeline, left, height }) =>\n isVerticalMode &&\n ` \n top: ${left}px;\n left: ${isTimeline ? lineStyles.top : 0}px;\n height: ${lineStyles.width}px;\n width: ${height}px;\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\nimport { keyframes } from \"@emotion/react\";\nimport { Layers, Theme } from \"../helpers\";\n\nconst time = [0, 50, 0];\n\nconst moveLeft = (animate: { right: string[] }) => keyframes`\n${time.map(\n (item, index) => `${item}% {\n transform: translateX(-${animate.right[index]});\n}`\n)}\n`;\n\nexport const Box = styled.div<{ theme?: Theme }>`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 100%;\n background: ${({ theme }) => theme.loader.bg};\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: ${Layers.Loader};\n`;\n\nexport const Shape = styled.div<{\n width: number;\n color: \"teal\" | \"purple\" | \"pink\";\n marginRight?: number;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n theme?: Theme;\n}>`\n width: ${({ width }) => width * 0.42}px;\n background: ${({ theme, color }) => theme.loader[color]};\n height: 18px;\n border-radius: 45px;\n margin-right: ${({ marginRight }) => marginRight ?? 0}px;\n animation-name: ${({ animate }) => moveLeft(animate)};\n animation-duration: ${({ transition }) => transition.duration}s;\n animation-timing-function: ${({ transition }) =>\n transition.ease ?? \"ease-in-out\"};\n animation-delay: ${({ transition }) => transition.delay ?? 0}s;\n animation-iteration-count: infinite;\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\nimport { Theme } from \"../helpers\";\n\nexport const boxStyles = ({ width }: { width?: number | string } = {}) => ({\n position: \"absolute\",\n top: 0,\n width: width ?? 70,\n height: 20,\n});\n\nexport const CurrentTimeBox = styled.div<{\n top: number;\n left: number;\n width: number | string;\n}>`\n position: ${boxStyles().position};\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n width: ${({ width }) => (typeof width === \"string\" ? \"auto\" : `${width}px`)};\n height: ${boxStyles().height}px;\n background-color: ${({ theme }) => theme.primary[900]};\n z-index: 2;\n`;\n\nexport const CurrentTimeContent = styled.span<{\n isVerticalMode?: boolean;\n isBaseTimeFormat?: boolean;\n isRTL?: boolean;\n isNewDay?: boolean;\n theme?: Theme;\n}>`\n ${({ isVerticalMode, isBaseTimeFormat, isRTL, isNewDay, theme }) => css`\n position: absolute;\n font-size: 13px;\n font-weight: 500;\n color: ${theme.green[200]};\n background-color: ${theme.primary[900]};\n ${isNewDay && `color: ${theme.teal[100]}; font-weight: 600`};\n\n ${isVerticalMode &&\n css`\n left: 50%;\n transform: translate(-50%, -50%) ${isRTL ? \"scale(-1,1)\" : \"\"};\n `}\n\n ${!isVerticalMode &&\n css`\n top: 4px;\n left: ${isRTL && isBaseTimeFormat ? \"-32\" : \"-16\"}px;\n ${isRTL && \"transform: scale(-1,1);\"}\n `}\n `}\n`;\n","import styled from \"@emotion/styled/macro\";\n// Import helpers\nimport { Layers, Theme } from \"../helpers\";\nimport { css } from \"@emotion/react\";\n\nexport const AreaFiled = styled.div<{\n isVerticalMode?: boolean;\n isClickable?: boolean;\n positionX: number;\n height: number;\n width: number;\n timelineHeight: number;\n theme?: Theme;\n}>`\n position: absolute;\n pointer-events: ${(props) => (props.isClickable ? \"auto\" : \"none\")};\n cursor: ${(props) => (props.isClickable ? \"pointer\" : \"none\")};\n z-index: ${Layers.Area};\n\n ${({ isVerticalMode, positionX, height, width, timelineHeight }) =>\n isVerticalMode\n ? css`\n top: ${positionX}px;\n left: ${timelineHeight}px;\n height: ${width}px;\n width: ${height}px;\n `\n : css`\n top: ${timelineHeight}px;\n left: ${positionX}px;\n height: ${height}px;\n width: ${width}px;\n `}\n`;\nexport const AreaBg = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`;\n\nexport const AreaAnnotation = styled.div<{\n isVerticalMode: boolean;\n isLeft?: boolean;\n width: number;\n timelineHeight: number;\n}>`\n padding: 4px 6px;\n font-size: 15px;\n width: max-content;\n\n ${({ isVerticalMode, isLeft = false, width, timelineHeight }) => css`\n ${!isVerticalMode\n ? css`\n position: sticky;\n top: ${timelineHeight}px;\n ${isLeft\n ? `float:left; border-top-right-radius: 4px; border-bottom-right-radius:4px;`\n : `float:right; border-top-left-radius: 4px; border-bottom-left-radius: 4px;`}\n `\n : css`\n position: sticky;\n left: ${timelineHeight}px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n ${isLeft && css`` ? `top: 0; ` : `margin-top:${width - 60}px;`}\n `}\n `}\n`;\n","import { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled/macro\";\n\nexport const GridContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 1;\n`;\n\nexport const GridWrapper = styled.div<{\n isVerticalMode: boolean;\n isSidebar: boolean;\n isTimeline: boolean;\n sidebarWidth: number;\n timelineHeight: number;\n}>`\n position: relative;\n top: ${({ isTimeline, timelineHeight }) =>\n isTimeline ? timelineHeight : 0}px;\n left: ${({ isSidebar, sidebarWidth }) => (isSidebar ? sidebarWidth : 0)}px;\n\n ${({ isVerticalMode, isSidebar, isTimeline, sidebarWidth, timelineHeight }) =>\n isVerticalMode &&\n `\n top: ${isSidebar ? sidebarWidth : 0}px;\n left: ${isTimeline ? timelineHeight : 0}px;\n `}\n`;\n\nexport const GridItem = styled.div<{\n isDayMode: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable: boolean;\n top: number;\n left: number;\n height: number;\n width: number;\n}>`\n position: absolute;\n top: ${({ top }) => top}px;\n left: ${({ left }) => left}px;\n height: ${({ height }) => height}px;\n width: ${({ width }) => width}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.item};\n border-bottom-color: ${({ theme }) => theme.grid.item};\n z-index: 1;\n\n ${({ isDayMode, isHoverHighlight, isDragOver, theme }) =>\n !isDayMode &&\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n ${isDragOver && `border: 1px solid ${theme.grid.highlight};`}\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n\nexport const GridDivider = styled.div<{\n isVerticalMode?: boolean;\n isHoverHighlight: boolean;\n isDragOver?: boolean;\n isItemClickable?: boolean;\n left: number;\n width: number;\n}>`\n position: absolute;\n top: 0;\n left: ${({ left }) => left}px;\n border: 1px solid transparent;\n border-right-color: ${({ theme }) => theme.grid.divider};\n height: 100%;\n width: ${({ width }) => width}px;\n\n ${({ isHoverHighlight, theme }) =>\n isHoverHighlight &&\n `\n &:hover {\n border: 1px solid ${theme.grid.highlight};\n } \n\n\n `}\n ${({ isDragOver, theme }) =>\n isDragOver &&\n `\n border: 1px solid ${theme.grid.highlight}; \n\n `}\n\n ${({ isVerticalMode, left, width, theme }) =>\n isVerticalMode &&\n css`\n top: ${left}px;\n left: 0;\n width: 100%;\n height: ${width}px;\n border-bottom-color: ${theme.grid.divider};\n `}\n\n ${({ isItemClickable }) =>\n isItemClickable &&\n css`\n cursor: pointer;\n `}\n`;\n","export const theme = {\n primary: {\n 600: \"#1a202c\",\n 900: \"#171923\",\n },\n grey: { 300: \"#d1d1d1\" },\n white: \"#fff\",\n teal: {\n 100: \"#38B2AC\",\n },\n green: {\n 200: \"#389493\",\n 300: \"#2C7A7B\",\n },\n loader: {\n teal: \"#5DDADB\",\n purple: \"#3437A2\",\n pink: \"#F78EB6\",\n bg: \"#171923db\",\n },\n scrollbar: {\n border: \"#ffffff\",\n thumb: {\n bg: \"#e1e1e1\",\n },\n },\n\n gradient: {\n blue: {\n 300: \"#002eb3\",\n 600: \"#002360\",\n 900: \"#051937\",\n },\n },\n\n text: {\n grey: {\n 300: \"#a0aec0\",\n 500: \"#718096\",\n },\n },\n\n timeline: {\n divider: {\n bg: \"#718096\",\n },\n },\n grid: {\n item: \"#7180961a\",\n divider: \"#7180961a\",\n highlight: \"#38B2AC\",\n },\n};\n","import React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { startOfDay } from \"date-fns\";\n// Import interfaces\nimport { HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime, InitialScrollPositions } from \"../helpers/types\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import helpers\nimport {\n DEBOUNCE_WAIT,\n DEBOUNCE_WAIT_MAX,\n getHoursInDaysPositionX,\n getPositionX,\n useIsomorphicLayoutEffect,\n} from \"../helpers\";\n\ninterface useLayoutProps {\n isVerticalMode: boolean;\n isToday: boolean;\n isInitialScrollToNow: boolean;\n initialScrollPositions: InitialScrollPositions;\n height?: number;\n width?: number;\n hourWidth: number;\n sidebarWidth: number;\n channelsNumber: number;\n startDate: DateTime;\n endDate: DateTime;\n currentDate: string;\n hoursInDays: HoursInDayDiffTime[];\n}\n\nexport function useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n height,\n width,\n channelsNumber,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n hoursInDays,\n}: useLayoutProps) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n\n const containerRef = React.useRef(null);\n const scrollBoxRef = React.useRef(null);\n //-------- State --------\n const [scrollY, setScrollY] = React.useState(0);\n const [scrollX, setScrollX] = React.useState(0);\n const [layoutWidth, setLayoutWidth] = React.useState(width as number);\n const [layoutHeight, setLayoutHeight] = React.useState(\n height as number\n );\n //-------- Variables --------\n const scrollBoxInnerHeight = scrollBoxRef?.current?.scrollHeight;\n\n const initialScrollPositionsSerialized = JSON.stringify(\n initialScrollPositions\n );\n\n // -------- Handlers --------\n const handleScrollDebounced = useDebouncedCallback(\n (value) => {\n setScrollY(value.y);\n setScrollX(value.x);\n },\n DEBOUNCE_WAIT,\n { maxWait: DEBOUNCE_WAIT_MAX }\n );\n\n const handleOnScroll = React.useCallback(\n (e: React.UIEvent & { target: Element }) => {\n handleScrollDebounced({ y: e.target.scrollTop, x: e.target.scrollLeft });\n },\n [handleScrollDebounced]\n );\n\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const areHoursInDays = React.useMemo(\n () => hoursInDays.length > 0,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [hoursInDaysSerialized]\n );\n const handleOnScrollToNow = React.useCallback(\n () => {\n if (scrollBoxRef?.current && isToday) {\n const clientWidth = (width ??\n containerRef.current?.clientWidth) as number;\n\n const date = new Date(startDate);\n let positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n\n if (areHoursInDays) {\n positionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n });\n }\n\n const scrollNow = positionX - clientWidth / 2 + sidebarWidth;\n\n if (isVerticalMode) {\n scrollBoxRef.current.scrollTop = scrollNow + hourWidth;\n } else {\n scrollBoxRef.current.scrollLeft = scrollNow;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n isToday,\n areHoursInDays,\n width,\n hourWidth,\n sidebarWidth,\n startDate,\n endDate,\n ]\n );\n\n const handleScrollToInitialPositions = React.useCallback(\n () => {\n const isInitialScrollPosition = Object.keys(\n initialScrollPositions\n ).length;\n if (scrollBoxRef?.current && isInitialScrollPosition) {\n const { top = 0, left = 0 } = initialScrollPositions;\n scrollBoxRef.current.scrollTo({ behavior: \"smooth\", top, left });\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [initialScrollPositionsSerialized, scrollBoxInnerHeight]\n );\n\n const handleOnScrollTop = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const top = scrollBoxRef.current.scrollTop + value;\n scrollBoxRef.current.scrollTop = top;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollRight = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const right = scrollBoxRef.current.scrollLeft + value;\n scrollBoxRef.current.scrollLeft = right;\n }\n },\n [hourWidth]\n );\n\n const handleOnScrollLeft = React.useCallback(\n (value: number = hourWidth) => {\n if (scrollBoxRef?.current) {\n const left = scrollBoxRef.current.scrollLeft - value;\n scrollBoxRef.current.scrollLeft = left;\n }\n },\n [hourWidth]\n );\n\n const handleResizeDebounced = useDebouncedCallback(\n () => {\n if (containerRef?.current && !width) {\n const container = containerRef.current;\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n },\n DEBOUNCE_WAIT * 4,\n { maxWait: DEBOUNCE_WAIT_MAX * 4 }\n );\n\n const handleCheckIsLayoutBottom = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the bottom in scrollBox in vertical mode\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n } else {\n // Check if the scroll is at the bottom in scrollBox\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, scrollX, scrollY, channelsNumber]\n );\n\n const handleCheckIsLayoutRight = React.useCallback(\n (offset: number = 0) => {\n if (scrollBoxRef?.current) {\n if (isVerticalMode) {\n // Check if the scroll is at the right in scrollBox in vertical mode\n const { scrollHeight, scrollTop, clientHeight } =\n scrollBoxRef.current;\n if (scrollTop === 0) return false;\n return scrollHeight - scrollTop - offset <= clientHeight;\n } else {\n // Check if the scroll is at the right in scrollBox\n const { scrollWidth, scrollLeft, clientWidth } = scrollBoxRef.current;\n if (scrollLeft === 0) return false;\n return scrollWidth - scrollLeft - offset <= clientWidth;\n }\n }\n return false;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollX, scrollY, channelsNumber]\n );\n\n // -------- Effects --------\n useIsomorphicEffect(() => {\n if (containerRef?.current) {\n const container = containerRef.current;\n if (!width) {\n const { clientWidth } = container;\n setLayoutWidth(clientWidth);\n }\n if (!height) {\n const { clientHeight } = container;\n setLayoutHeight(clientHeight);\n }\n }\n }, [height, width, startDate]);\n\n useIsomorphicEffect(() => {\n const isInitialScrollPosition = Object.keys(initialScrollPositions).length;\n if (scrollBoxRef?.current) {\n if (isInitialScrollPosition) {\n handleScrollToInitialPositions();\n } else if (isInitialScrollToNow) {\n handleOnScrollToNow();\n }\n }\n }, [isToday, isInitialScrollToNow, initialScrollPositionsSerialized]);\n\n useIsomorphicEffect(() => {\n window.addEventListener(\"resize\", handleResizeDebounced);\n return () => {\n window.removeEventListener(\"resize\", handleResizeDebounced);\n };\n }, [width]);\n\n return {\n containerRef,\n scrollBoxRef,\n scrollX,\n scrollY,\n layoutWidth,\n layoutHeight,\n isLayoutBottom: handleCheckIsLayoutBottom,\n isLayoutRight: handleCheckIsLayoutRight,\n onScroll: handleOnScroll,\n onScrollToNow: handleOnScrollToNow,\n onScrollTop: handleOnScrollTop,\n onScrollLeft: handleOnScrollLeft,\n onScrollRight: handleOnScrollRight,\n };\n}\n","import React from \"react\";\nimport { startOfToday } from \"date-fns\";\n\n// Import interfaces\nimport {\n Area,\n ChannelWithOmittedUuid,\n DragAndDrop,\n Grid,\n HoursInDay,\n Mode,\n Overlap,\n ProgramOverlaps,\n ProgramWithOmittedUuid,\n Snap,\n Theme,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n DateTime,\n BaseTimeFormat,\n Position,\n InitialScrollPositions,\n ProgramItem,\n DragMouseUp,\n ResizeMouseUp,\n ChannelWithPosition,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n DAY_WIDTH,\n ITEM_HEIGHT,\n ITEM_OVERSCAN,\n SIDEBAR_WIDTH,\n LIVE_REFRESH_TIME,\n TIMELINE_HEIGHT,\n TIMELINE_DIVIDERS,\n formatTime,\n getConvertedChannels,\n getConvertedPrograms,\n getItemVisibility,\n getSidebarItemVisibility,\n getDayWidthResources,\n getTimeRangeDates,\n getDayResources,\n getTimelineItemVisibility,\n getTimelineHeight,\n getNumberOfHoursInDays,\n resetLayoutScreenCloneElements,\n checkOverlaps,\n calculateItemDragSinceTill,\n getChannelEpgIndexes,\n setChannelEpgIndexes,\n setTimezoneOptionsCache,\n setUpdatedLayoutItem,\n} from \"../helpers\";\n\n// Import theme\nimport { theme as defaultTheme } from \"../theme\";\n\n// Import components\nimport { useLayout } from \"./useLayout\";\nimport { getConvertedGridItems } from \"../helpers/grid\";\n\ninterface useEpgProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isInitialScrollToNow?: boolean;\n isResize?: boolean;\n initialScrollPositions?: InitialScrollPositions;\n channels: ChannelWithOmittedUuid[];\n epg: ProgramWithOmittedUuid[];\n width?: number;\n height?: number;\n startDate?: DateTime;\n endDate?: DateTime;\n liveRefreshTime?: number;\n mode?: Mode;\n timezone?: Timezone;\n overlap?: Overlap;\n timelineDividers?: number;\n snap?: Snap;\n grid?: Grid;\n dnd?: DragAndDrop;\n areas?: Area[];\n hoursInDays?: HoursInDay[];\n theme?: Theme;\n globalStyles?: string;\n dayWidth?: number;\n sidebarWidth?: number;\n timelineHeight?: number;\n itemHeight?: number;\n itemOverscan?: number;\n channelMapKey?: string;\n programChannelMapKey?: string;\n}\n\nconst defaultStartDateTime = formatTime(startOfToday());\nconst defaultMode = { type: \"day\", style: \"default\" } as Mode;\nconst defaultTimezone = {\n enabled: false,\n zone: \"\",\n mode: \"formatInTimeZone\",\n} as Timezone;\nconst defaultOverlap = {\n enabled: false,\n mode: \"stack\",\n layerOverlapLevel: 0.4,\n} as Overlap;\nconst defaultGrid = {\n enabled: false,\n hoverHighlight: false,\n} as Grid;\nconst defaultDnd = {\n enabled: false,\n mode: \"row\",\n} as DragAndDrop;\n\nexport function useEpg(props: useEpgProps) {\n let {\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isCurrentTime = false,\n isInitialScrollToNow = true,\n } = props;\n\n const { width, height } = props;\n\n const { channels: channelsEpg, epg } = props;\n\n const {\n startDate: startDateInput = defaultStartDateTime,\n endDate: endDateInput = \"\",\n hoursInDays: customHoursInDays = [],\n } = props;\n\n const {\n initialScrollPositions = {},\n liveRefreshTime = LIVE_REFRESH_TIME,\n timelineDividers = TIMELINE_DIVIDERS,\n snap,\n mode: customMode = defaultMode,\n overlap: customOverlap = defaultOverlap,\n timezone: customTimezone = defaultTimezone,\n areas = [],\n grid = defaultGrid,\n dnd = defaultDnd,\n theme: customTheme,\n globalStyles,\n } = props;\n\n const {\n dayWidth: customDayWidth = DAY_WIDTH,\n sidebarWidth = SIDEBAR_WIDTH,\n timelineHeight: customTimelineHeight = TIMELINE_HEIGHT,\n itemHeight = ITEM_HEIGHT,\n itemOverscan = ITEM_OVERSCAN,\n } = props;\n\n const { channelMapKey = \"uuid\", programChannelMapKey = \"channelUuid\" } =\n props;\n\n const timezone = { ...defaultTimezone, ...customTimezone };\n const mode = { ...defaultMode, ...customMode };\n const overlap = { ...defaultOverlap, ...customOverlap };\n const isOverlapEnabled = overlap.enabled;\n const isMultirowsDnd = dnd.mode === \"multi-rows\";\n\n // Get converted start and end dates\n const { startDate, endDate } = getTimeRangeDates(\n startDateInput,\n endDateInput\n );\n\n // Get hours in days\n const serializedHoursInDays = JSON.stringify(customHoursInDays);\n const hoursInDays = React.useMemo(\n () => getNumberOfHoursInDays({ customHoursInDays, startDate }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [serializedHoursInDays]\n );\n\n // Get days resources eg. number of days, dates and hours\n const { isToday, currentDate, ...daysResources } = React.useMemo(\n () =>\n getDayResources({\n startDate,\n endDate,\n modeType: mode.type,\n }),\n [startDate, endDate, mode.type]\n );\n\n // Get day and hour width of the day\n const { hourWidth, dayWidth, ...dayWidthResourcesProps } = React.useMemo(\n () =>\n getDayWidthResources({\n dayWidth: customDayWidth,\n startDate,\n endDate,\n hoursInDays,\n modeType: mode.type,\n }),\n [customDayWidth, startDate, endDate, hoursInDays, mode.type]\n );\n\n // -------- State --------\n const [update, setForceUpdate] = React.useReducer((x) => x + 1, 0);\n const [updateChannels, setForceChannelsUpdate] = React.useReducer(\n (x) => x + 1,\n 0\n );\n const [dndChannelUuid, setDndChannelUuid] = React.useState({\n index: -1,\n uuid: \"\",\n });\n\n const [newOverlaps, setNewOverlaps] = React.useState(() => 0);\n let [overlaps, setOverlaps] = React.useState({});\n const [channelOverlapsCount, setChannelOverlapsCount] = React.useState<\n Record\n >({});\n\n const timezoneSerialized = JSON.stringify(timezone);\n // Set base timezone functions\n React.useMemo(\n () => {\n if (timezone.enabled) {\n setTimezoneOptionsCache(timezone);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [timezoneSerialized]\n );\n\n React.useEffect(() => {\n setForceUpdate();\n setDndChannelUuid({ index: -1, uuid: \"\" });\n }, [isVerticalMode]);\n\n const {\n isLayoutBottom,\n isLayoutRight,\n containerRef,\n scrollBoxRef,\n ...layoutProps\n } = useLayout({\n isVerticalMode,\n isToday,\n isInitialScrollToNow,\n initialScrollPositions,\n startDate,\n endDate,\n sidebarWidth,\n width,\n height,\n hourWidth,\n currentDate,\n hoursInDays,\n channelsNumber: channelsEpg.length,\n });\n\n React.useEffect(() => {\n return () => {\n resetLayoutScreenCloneElements();\n };\n }, []);\n\n const { scrollX, scrollY, layoutWidth, layoutHeight } = layoutProps;\n const { onScroll, onScrollToNow, onScrollTop, onScrollLeft, onScrollRight } =\n layoutProps;\n\n //-------- Variables --------\n const timelineHeight = getTimelineHeight(customTimelineHeight, mode);\n\n const channelsEpgSerialized = React.useMemo(\n () => JSON.stringify(channelsEpg),\n [channelsEpg]\n );\n const channelOverlapsCountSerialized = React.useMemo(\n () => channelOverlapsCount,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(channelOverlapsCount)]\n );\n const channels = React.useMemo(\n () => {\n // Convert channels\n return getConvertedChannels(\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel as number,\n channelsEpg,\n itemHeight,\n channelMapKey,\n channelOverlapsCount\n );\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isOverlapEnabled,\n overlap.mode,\n overlap.layerOverlapLevel,\n channelsEpgSerialized,\n channelOverlapsCountSerialized,\n itemHeight,\n channelMapKey,\n newOverlaps,\n updateChannels,\n ]\n );\n\n const startDateTime = formatTime(startDate);\n const endDateTime = formatTime(endDate);\n const channelsSerialized = React.useMemo(\n () => JSON.stringify(channels),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n const overlapsSerialized = React.useMemo(\n () => overlaps,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(overlaps)]\n );\n\n const { programs, programOverlaps } = React.useMemo(\n () => {\n const data = getConvertedPrograms({\n isVerticalMode,\n isOverlapEnabled,\n programChannelMapKey,\n data: epg,\n channels,\n startDate: startDateTime,\n endDate: endDateTime,\n hoursInDays,\n itemHeight,\n hourWidth,\n });\n\n if (isOverlapEnabled) {\n const _overlaps = overlaps;\n\n const { overlaps: itemsOverlaps, channelOverlaps } = checkOverlaps(\n isMultirowsDnd,\n isVerticalMode,\n dndChannelUuid,\n _overlaps,\n data\n );\n\n setChannelOverlapsCount({\n ...channelOverlapsCount,\n ...channelOverlaps,\n });\n setNewOverlaps((prev) => prev + 1);\n setOverlaps(itemsOverlaps);\n return {\n programs: data,\n programOverlaps: itemsOverlaps,\n };\n }\n return { programs: data, programOverlaps: {} };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isMultirowsDnd,\n isOverlapEnabled,\n isVerticalMode,\n epg,\n channelsSerialized,\n overlapsSerialized,\n startDateTime,\n endDateTime,\n itemHeight,\n hourWidth,\n hoursInDays,\n programChannelMapKey,\n timezoneSerialized,\n update,\n ]\n );\n\n const gridItems = React.useMemo(\n () => {\n if (!grid.enabled) return [];\n return getConvertedGridItems({\n isVerticalMode,\n channels,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n mode,\n dayWidthResources: dayWidthResourcesProps,\n daysResources,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n grid.enabled,\n channelsSerialized,\n mode.type,\n dayWidthResourcesProps.numberOfHoursInDay,\n dayWidthResourcesProps.numberOfMonths,\n daysResources.numberOfDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n isVerticalMode,\n ]\n );\n\n const theme: Theme = { ...defaultTheme, ...customTheme };\n\n // -------- Handlers --------\n const isProgramVisible = React.useCallback(\n (position: Position, overlapsCount: number) => {\n return getItemVisibility({\n isVerticalMode,\n itemOverscan,\n overlapsCount,\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, itemOverscan, layoutHeight, layoutWidth, scrollY, scrollX]\n );\n\n const isChannelVisible = React.useCallback(\n (position: Pick) =>\n getSidebarItemVisibility({\n isVerticalMode,\n itemOverscan,\n position,\n scrollX,\n scrollY,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n }),\n\n [isVerticalMode, itemOverscan, scrollY, scrollX, layoutHeight, layoutWidth]\n );\n\n const isTimelineVisible = React.useCallback(\n (position: Pick) =>\n getTimelineItemVisibility({\n position,\n scrollY,\n scrollX,\n containerHeight: layoutHeight,\n containerWidth: layoutWidth,\n isVerticalMode,\n }),\n [scrollY, scrollX, layoutHeight, layoutWidth, isVerticalMode]\n );\n\n const dndOnSuccessCb = React.useCallback(\n (event: ProgramWithOmittedUuid) => dnd?.onDnDSuccess?.(event),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const resizeMouseUp = React.useCallback(\n (props: ResizeMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isVerticalMode, startDate, hourWidth, programs]\n );\n\n const dragMouseUp = React.useCallback(\n async (props: DragMouseUp) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const element = { ...epg[props.index] };\n\n const checkChannelTopOutRange = () => {\n const elementChannel = element.channelPosition;\n if (\n props.top > elementChannel.top + elementChannel.height - 1 ||\n props.top < elementChannel.top - 1\n ) {\n return true;\n }\n return false;\n };\n const checkChannelTopInRange = () => {\n const elementChannel = element.channelPosition;\n return elementChannel.top <= props.top &&\n props.top <= elementChannel.top + elementChannel.height\n ? true\n : false;\n };\n\n const isChannelTopInRange = checkChannelTopInRange();\n\n const isChannelTopOutRange = checkChannelTopOutRange();\n if (isMultirowsDnd && isChannelTopOutRange) {\n const newChannel = channels.find(\n (channel) => channel.position.top === props.top\n );\n const newChannelRange = channels.find(\n (channel) =>\n channel.position.top <= props.top &&\n props.top <= channel.position.top + channel.position.height\n );\n\n if (newChannel) {\n const newChannelEpgIndexes = getChannelEpgIndexes(\n newChannel[channelMapKey]\n );\n if (newChannelEpgIndexes) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n } else {\n setChannelEpgIndexes({\n uuid: newChannel[channelMapKey],\n first: props.index,\n last: props.index,\n });\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannel[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannel.index as number;\n epg[props.index].channelPosition = {\n top: newChannel.position.top,\n height: newChannel.position.height,\n left: newChannel.position.left,\n };\n }\n } else if (newChannelRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n epg[props.index][programChannelMapKey] = newChannelRange[\n channelMapKey\n ] as string;\n epg[props.index].channelIndex = newChannelRange.index as number;\n epg[props.index].channelPosition = {\n top: newChannelRange.position.top,\n height: newChannelRange.position.height,\n left: newChannelRange.position.left,\n };\n }\n } else if (isMultirowsDnd && isChannelTopInRange) {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n } else {\n epg[props.index].since = newTime.since;\n epg[props.index].till = newTime.till;\n setDndChannelUuid({\n index: epg[props.index].channelIndex,\n uuid: epg[props.index][programChannelMapKey] as string,\n });\n }\n dndOnSuccessCb(epg[props.index]);\n setForceUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isMultirowsDnd, startDate, hourWidth, programs]\n );\n\n const handleGetLayoutData = React.useCallback(\n (events: ProgramItem[]) => events.map((event) => ({ ...event.data })),\n []\n );\n\n const handleOpenChannelGroupTree = React.useCallback(\n (data: ChannelWithPosition) => {\n channelsEpg[data.index].isOpen = !channelsEpg[data.index].isOpen;\n setForceChannelsUpdate();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [channels]\n );\n\n const handleGetDropItemData = React.useCallback(\n (data: ProgramWithOmittedUuid) => setUpdatedLayoutItem(data, mode.type),\n [mode.type]\n );\n\n const getEpgProps = () => ({\n isVerticalMode,\n isRTL,\n isSidebar,\n isLine,\n isTimeline,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n ref: containerRef,\n theme,\n globalStyles,\n });\n\n const getLayoutProps = () => ({\n isVerticalMode,\n isRTL,\n isBaseTimeFormat,\n isSidebar,\n isTimeline,\n isLine,\n isCurrentTime,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n isToday,\n isResize,\n programs,\n programOverlaps,\n channels,\n channelOverlapsCount,\n layerOverlapLevel: overlap.layerOverlapLevel as number,\n snap,\n grid,\n gridItems,\n dnd,\n startDate,\n endDate,\n hoursInDays,\n liveRefreshTime,\n scrollY,\n dayWidth,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n currentDate,\n mode,\n timezone,\n timelineDividers,\n overlapMode: overlap.mode,\n overlap,\n areas,\n openChannelGroupTree: handleOpenChannelGroupTree,\n onScroll,\n dragMouseUp,\n resizeMouseUp,\n ...daysResources,\n ...dayWidthResourcesProps,\n ref: scrollBoxRef,\n });\n\n return {\n isLayoutBottom,\n isLayoutRight,\n getEpgProps,\n getLayoutProps,\n getLayoutData: handleGetLayoutData,\n getDropItemData: handleGetDropItemData,\n onScrollToNow,\n onScrollTop,\n onScrollLeft,\n onScrollRight,\n scrollY,\n scrollX,\n };\n}\n","import React from \"react\";\n\n// Import helpers\nimport { useIsomorphicLayoutEffect } from \"../helpers\";\n\nexport function useInterval(callback: () => void, delay: number | null) {\n const useIsomorphicEffect = useIsomorphicLayoutEffect();\n const savedCallback = React.useRef(callback);\n\n useIsomorphicEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n React.useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n","import React from \"react\";\n\nexport function useIsTouchDevice() {\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n function checkDevice() {\n const iOS =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document);\n const androidOrWebOS = /Android|webOS/.test(navigator.userAgent);\n\n const isMobileDevice = iOS || androidOrWebOS;\n\n const isTouchScreen =\n \"ontouchstart\" in window ||\n navigator.maxTouchPoints > 0 ||\n (window.matchMedia &&\n window.matchMedia(\"(any-pointer: coarse)\").matches);\n\n setIsMobile(isMobileDevice || isTouchScreen);\n }\n\n checkDevice();\n\n window.addEventListener(\"resize\", checkDevice);\n\n return () => {\n window.removeEventListener(\"resize\", checkDevice);\n };\n }, []);\n\n return isMobile;\n}\n","import { useRef, useState, useCallback, MouseEvent, useEffect } from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { DragMouseUp, Position } from \"../helpers/types\";\n// Import helpers\nimport { getDefaultDragProps } from \"../helpers\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface DndPosition {\n x: number;\n y: number;\n}\n\ninterface UseDragProps {\n isVerticalMode: boolean;\n isDndEnabled: boolean;\n isDndMutlirows: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n dndSnapX?: number;\n dndSnapY?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: DragMouseUp) => void;\n dndMouseUpCb?: (props: DragMouseUp, data: Program) => void;\n}\n\nexport function useDrag(props: UseDragProps) {\n const {\n isDndEnabled,\n isDndMutlirows,\n isVerticalMode,\n initialPosition,\n data,\n dayWidth,\n itemHeight,\n contentHeight,\n dndSnapX,\n dndSnapY = itemHeight,\n elementRef,\n mouseUpCb,\n dndMouseUpCb,\n } = props;\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n const [isDragging, setIsDragging] = useState(false);\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till, channelPosition } = data;\n\n const handleMouseDown = useCallback(\n (e: MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsDragging(true);\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as MouseEvent;\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n },\n [isTouchDevice, coords]\n );\n\n const handleMouseClick = useCallback((e: MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n }, []);\n\n const handleMouseUp = useCallback(\n async () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsYX = {\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n initialPositionLeft: initialPosition.left,\n initialPositionTop: initialPosition.top,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsYX, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsYX);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.top !== coords.lastY)\n ) {\n const optionsY = {\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n initialPositionLeft: initialPosition.top,\n initialPositionTop: initialPosition.left,\n };\n const isDndMouseUpSuccess = await dndMouseUpCb?.(optionsY, data);\n if (isDndMouseUpSuccess) {\n mouseUpCb(optionsY);\n } else {\n elementRef.current!.style.left = `${initialPosition.left}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: initialPosition.left,\n y: initialPosition.top,\n }));\n }\n }\n isClicked.current = false;\n setIsDragging(false);\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n initialPosition.top,\n initialPosition.left,\n coords,\n id,\n index,\n since,\n till,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: globalThis.MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isDndEnabled) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as globalThis.MouseEvent;\n\n const offsetWidth = (\n isVerticalMode\n ? elementRef.current?.offsetHeight\n : elementRef.current?.offsetWidth\n ) as number;\n const offsetHeight = (\n isVerticalMode\n ? elementRef.current?.offsetWidth\n : elementRef.current?.offsetHeight\n ) as number;\n const elementChannel = channelPosition;\n\n if (isVerticalMode) {\n const nextYValue = event.clientY - coords.startY + coords.lastY;\n const nextY = dndSnapX\n ? Math.round(nextYValue / dndSnapX) * dndSnapX\n : nextYValue;\n\n if (isDndMutlirows) {\n const nextX = event.clientX - coords.startX + coords.lastX;\n const nextXSnap = Math.round(nextX / dndSnapY) * dndSnapY;\n if (\n nextXSnap >= 0 &&\n nextXSnap <= contentHeight - offsetHeight &&\n nextY >= 0 &&\n nextY <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextXSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextXSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${initialPosition.left}px`;\n setPosition((prev) => ({\n ...prev,\n y: nextY,\n x: initialPosition.left,\n }));\n } else {\n elementRef.current!.style.top = `${nextY}px`;\n elementRef.current!.style.left = `${nextXSnap}px`;\n setPosition((prev) => ({ ...prev, y: nextY, x: nextXSnap }));\n }\n }\n } else if (nextY >= 0 && nextY <= dayWidth - offsetWidth) {\n elementRef.current!.style.top = `${nextY}px`;\n setPosition((prev) => ({ ...prev, y: nextY }));\n }\n } else {\n const nextXValue = event.clientX - coords.startX + coords.lastX;\n const nextX = dndSnapX\n ? Math.round(nextXValue / dndSnapX) * dndSnapX\n : nextXValue;\n\n if (isDndMutlirows) {\n const nextY = event.clientY - coords.startY + coords.lastY;\n const nextYSnap = Math.round(nextY / dndSnapY) * dndSnapY;\n if (\n nextYSnap >= 0 &&\n nextYSnap <= contentHeight - offsetHeight &&\n nextX >= 0 &&\n nextX <= dayWidth - offsetWidth\n ) {\n const checkTopRange = () => {\n if (nextYSnap > elementChannel.top + elementChannel.height - 1) {\n return true;\n } else if (nextYSnap < elementChannel.top - 1) {\n return true;\n }\n return false;\n };\n const isOutTopRange = checkTopRange();\n\n if (!isOutTopRange) {\n elementRef.current!.style.left = `${nextX}px`;\n elementRef.current!.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n x: nextX,\n y: initialPosition.top,\n }));\n } else {\n elementRef.current!.style.top = `${nextYSnap}px`;\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX, y: nextYSnap }));\n }\n }\n } else if (nextX >= 0 && nextX <= dayWidth - offsetWidth) {\n elementRef.current!.style.left = `${nextX}px`;\n setPosition((prev) => ({ ...prev, x: nextX }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n if (isDndEnabled) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isDndEnabled,\n isVerticalMode,\n isDragging,\n isDndMutlirows,\n initialPosition.top,\n initialPosition.left,\n channelPosition,\n dndSnapX,\n dndSnapY,\n coords,\n dayWidth,\n itemHeight,\n contentHeight,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isDndEnabled) {\n const events = isTouchDevice\n ? {\n onTouchStart: handleMouseDown,\n onTouchEnd: handleMouseUp,\n }\n : { onMouseDown: handleMouseDown, onMouseUp: handleMouseUp };\n return {\n dndEvents: {\n isDragging,\n ref: elementRef,\n onClick: handleMouseClick,\n ...events,\n },\n currentPositionX: isVerticalMode ? position.y : position.x,\n };\n }\n\n return getDefaultDragProps(initialPosition.left);\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// Import interfaces\nimport { Program } from \"../helpers/interfaces\";\n// Import types\nimport { Position, ResizeMouseUp } from \"../helpers/types\";\n// Import hooks\nimport { useIsTouchDevice } from \"./useIsTouchDevice\";\n\ninterface UseResizeProps {\n isVerticalMode: boolean;\n isResize: boolean;\n initialPosition: Omit;\n data: Program;\n dayWidth: number;\n contentHeight: number;\n snapX?: number;\n elementRef: React.RefObject;\n mouseUpCb: (props: ResizeMouseUp) => void;\n}\n\ninterface DndPosition {\n x: number;\n y: number;\n width: number;\n}\n\nexport function useResize({\n isResize,\n isVerticalMode,\n data,\n dayWidth,\n contentHeight,\n initialPosition,\n snapX,\n elementRef,\n mouseUpCb,\n}: UseResizeProps) {\n const isClicked = useRef(false);\n const isMouseMove = useRef(false);\n const isTouchDevice = useIsTouchDevice();\n\n // State\n const [isPreventScroll, setIsPreventScroll] = useState(false);\n const [isResizing, setIsResizing] = useState(false);\n const [isResizingLeft, setIsResizingLeft] = useState(false);\n const [isResizingRight, setIsResizingRight] = useState(false);\n\n const [mouseOffsetX, setMouseOffsetX] = useState(0);\n\n const [position, setPosition] = useState({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n\n const [coords, setCoords] = useState<{\n startY: number;\n lastY: number;\n startX: number;\n lastX: number;\n }>({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n\n const { id, index, since, till } = data;\n\n const initialWidth = useMemo(\n () => (isVerticalMode ? initialPosition.height : initialPosition.width),\n [isVerticalMode, initialPosition.height, initialPosition.width]\n );\n\n const handleMouseDown = useCallback(\n (left: boolean = false) =>\n (e: React.MouseEvent | React.TouchEvent) => {\n e.stopPropagation();\n isClicked.current = true;\n\n isTouchDevice && setIsPreventScroll(true);\n setIsResizing(true);\n\n const container = elementRef.current;\n if (!container) return;\n\n const event = (\n isTouchDevice ? (e as React.TouchEvent).touches[0] : e\n ) as React.MouseEvent;\n setMouseOffsetX(isVerticalMode ? event.pageY : event.pageX);\n coords.startY = event.clientY;\n coords.startX = event.clientX;\n if (left) {\n setIsResizingLeft(true);\n setIsResizingRight(false);\n } else {\n setIsResizingLeft(false);\n setIsResizingRight(true);\n }\n },\n [isTouchDevice, isVerticalMode, coords, elementRef]\n );\n\n const handleMouseClick = useCallback(\n (e: React.MouseEvent) => {\n if (isMouseMove.current) {\n e.stopPropagation();\n e.preventDefault();\n }\n },\n []\n );\n\n const handleMouseUp = useCallback(\n () => {\n if (isVerticalMode) {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetHeight as number;\n } else {\n coords.lastY = elementRef.current?.offsetTop as number;\n coords.lastX = elementRef.current?.offsetLeft as number;\n position.width = elementRef.current?.offsetWidth as number;\n }\n\n const options = {\n id,\n index,\n since,\n till,\n };\n if (\n !isVerticalMode &&\n isClicked.current &&\n (initialPosition.left !== coords.lastX ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastY,\n left: coords.lastX,\n width: position.width,\n initialPositionTop: initialPosition.top,\n initialPositionLeft: initialPosition.left,\n initialWidth: initialPosition.width,\n });\n }\n if (\n isVerticalMode &&\n isClicked.current &&\n (initialPosition.top !== coords.lastY ||\n initialPosition.width !== position.width)\n ) {\n mouseUpCb({\n ...options,\n top: coords.lastX,\n left: coords.lastY,\n width: position.width,\n initialPositionTop: initialPosition.left,\n initialPositionLeft: initialPosition.top,\n initialWidth: initialPosition.height,\n });\n }\n setIsResizing(false);\n isClicked.current = false;\n if (isTouchDevice) {\n setIsPreventScroll(false);\n }\n setTimeout(() => (isMouseMove.current = false), 0);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isTouchDevice,\n isVerticalMode,\n id,\n index,\n since,\n till,\n initialWidth,\n initialPosition.left,\n initialPosition.width,\n mouseUpCb,\n ]\n );\n\n const initialPositionSerialized = JSON.stringify(initialPosition);\n useEffect(() => {\n // if (isVerticalMode) {\n // setCoords({\n // startY: initialPosition.top,\n // lastY: initialPosition.top,\n // startX: initialPosition.left,\n // lastX: initialPosition.left,\n // });\n // }\n setCoords({\n startY: initialPosition.top,\n lastY: initialPosition.top,\n startX: initialPosition.left,\n lastX: initialPosition.left,\n });\n setPosition({\n x: initialPosition.left,\n y: initialPosition.top,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVerticalMode, initialPositionSerialized]);\n\n useEffect(() => {\n function handleMouseMove(e: MouseEvent | TouchEvent) {\n if (isPreventScroll) {\n e.preventDefault();\n }\n if (!isResizing) return;\n if (!isClicked.current) return;\n if (!elementRef.current) return;\n isMouseMove.current = true;\n\n const event = (\n isTouchDevice ? (e as TouchEvent).touches[0] : e\n ) as MouseEvent;\n\n const element = elementRef.current;\n const elementRect = element.getBoundingClientRect();\n\n if (isVerticalMode) {\n const offsetHeight = elementRef.current?.offsetHeight as number;\n const nextY = event.clientY - coords.startY + coords.lastY;\n const snapYTop = snapX\n ? Math.round((event.pageY - mouseOffsetX) / snapX) * snapX\n : event.pageY - mouseOffsetX;\n const newHeightTop = initialWidth - snapYTop;\n const newHeightBottom = snapX\n ? Math.round((event.clientY - elementRect.top + 14) / snapX) * snapX\n : event.clientY - elementRect.top + 14;\n\n const isInLeftLayout = nextY >= 0 && nextY <= dayWidth - offsetHeight;\n // To be used in the future\n // const isInLeftLayout =\n // nextY >= 0 && nextY <= contentHeight - offsetHeight;\n const isInRightLayout = coords.lastY + newHeightBottom <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newHeightTop >= 50) {\n const top = initialPosition.top + snapYTop;\n element.style.height = `${newHeightTop}px`;\n element.style.top = `${top}px`;\n setPosition((prev) => ({ ...prev, y: top, width: newHeightTop }));\n } else if (\n isResizingRight &&\n isInRightLayout &&\n newHeightBottom >= 50\n ) {\n element.style.height = `${newHeightBottom}px`;\n element.style.top = `${initialPosition.top}px`;\n setPosition((prev) => ({\n ...prev,\n y: initialPosition.top,\n width: newHeightBottom,\n }));\n }\n } else {\n const offsetWidth = elementRef.current?.offsetWidth as number;\n const nextX = event.clientX - coords.startX + coords.lastX;\n const snapXLeft = snapX\n ? Math.round((event.pageX - mouseOffsetX) / snapX) * snapX\n : event.pageX - mouseOffsetX;\n const newWidthLeft = initialWidth - snapXLeft;\n\n const newWidthRight = snapX\n ? Math.round((event.clientX - elementRect.left + 14) / snapX) * snapX\n : event.clientX - elementRect.left + 14;\n\n const isInLeftLayout = nextX >= 0 && nextX <= dayWidth - offsetWidth;\n const isInRightLayout = coords.lastX + newWidthRight <= dayWidth;\n if (isResizingLeft && isInLeftLayout && newWidthLeft >= 50) {\n const left = initialPosition.left + snapXLeft;\n\n element.style.width = `${newWidthLeft}px`;\n element.style.left = `${left}px`;\n setPosition((prev) => ({ ...prev, x: left, width: newWidthLeft }));\n } else if (isResizingRight && isInRightLayout && newWidthRight >= 50) {\n element.style.width = `${newWidthRight}px`;\n setPosition((prev) => ({ ...prev, width: newWidthRight }));\n }\n }\n }\n\n const mouseMoveEvent = isTouchDevice ? \"touchmove\" : \"mousemove\";\n const mouseUpEvent = isTouchDevice ? \"touchend\" : \"mouseup\";\n const options = isTouchDevice ? { passive: false } : undefined;\n\n if (isResize) {\n document.addEventListener(mouseMoveEvent, handleMouseMove, options);\n document.addEventListener(mouseUpEvent, handleMouseUp);\n }\n\n return () => {\n document.removeEventListener(mouseMoveEvent, handleMouseMove);\n document.removeEventListener(mouseUpEvent, handleMouseUp);\n };\n }, [\n isTouchDevice,\n isPreventScroll,\n isResize,\n isVerticalMode,\n isResizing,\n isResizingLeft,\n isResizingRight,\n dayWidth,\n contentHeight,\n initialWidth,\n initialPosition.top,\n initialPosition.left,\n coords,\n snapX,\n mouseOffsetX,\n elementRef,\n handleMouseUp,\n ]);\n\n if (isResize) {\n const getEvents = (isLeft?: boolean) => {\n if (isTouchDevice) {\n return {\n onTouchStart: handleMouseDown(isLeft),\n onTouchEnd: handleMouseUp,\n };\n }\n return {\n onMouseDown: handleMouseDown(isLeft),\n onMouseUp: handleMouseUp,\n };\n };\n\n return {\n width: position.width,\n initialWidth: isVerticalMode\n ? initialPosition.height\n : initialPosition.width,\n currentPositionX: isVerticalMode ? position.y : position.x,\n resizeEvents: {\n isResizing,\n resources: { ref: elementRef, isResizing },\n eventsLeft: {\n isResize,\n isVerticalMode,\n left: true,\n onClick: handleMouseClick,\n ...getEvents(true),\n },\n eventsRight: {\n isResize,\n isVerticalMode,\n onClick: handleMouseClick,\n ...getEvents(),\n },\n },\n };\n }\n\n return {\n currentPositionX: isVerticalMode\n ? initialPosition.top\n : initialPosition.left,\n width: isVerticalMode ? initialPosition.height : initialPosition.width,\n resizeEvents: {\n isResizing: false,\n resources: {},\n eventsLeft: {},\n eventsRight: {},\n },\n };\n}\n","import React, { useCallback, useRef } from \"react\";\nimport { format } from \"date-fns\";\n\n// Import interfaces\nimport { DragAndDrop, Mode, Program, Snap } from \"../helpers/interfaces\";\n\n// Import types\nimport {\n ProgramItem,\n BaseTimeFormat,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n calculateItemDragSinceTill,\n getLiveStatus,\n omit,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \"./useInterval\";\nimport { useDrag } from \"./useDrag\";\nimport { useResize } from \"./useResize\";\n\ninterface useProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n isResize?: boolean;\n startDate: DateTime;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n program: T;\n liveRefreshTime: number;\n minWidth?: number;\n itemHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n}\n\nexport function useProgram({\n isVerticalMode = false,\n isRTL = false,\n isResize = false,\n isBaseTimeFormat,\n startDate,\n contentHeight,\n dayWidth,\n itemHeight,\n hourWidth,\n minWidth = 200,\n program,\n liveRefreshTime,\n mode,\n snap,\n dnd,\n dragMouseUp,\n resizeMouseUp,\n}: useProgramProps) {\n const elementRef = useRef(null);\n\n const { data, position } = program;\n const { width, height } = position;\n const { since, till } = data;\n\n // Hooks\n const [isLive, setIsLive] = React.useState(() =>\n getLiveStatus(since, till)\n );\n\n const options = {\n isVerticalMode,\n initialPosition: position,\n data,\n dayWidth,\n contentHeight,\n elementRef,\n };\n\n const resizeOptions = {\n ...options,\n isResize,\n snapX: snap?.x,\n mouseUpCb: resizeMouseUp,\n };\n\n const {\n currentPositionX: resizeCurrentPositionX,\n width: resizeWidth,\n resizeEvents,\n } = useResize(resizeOptions);\n\n const dndMouseUpCb = React.useCallback(\n (props: DragMouseUp, data: Program) => {\n const newTime = calculateItemDragSinceTill({\n ...props,\n hourWidth,\n startDate,\n });\n const options = {\n ...newTime,\n id: props.id,\n data,\n };\n\n return dnd?.onDnDMouseUp?.(options) ?? true;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const dragOptions = {\n ...options,\n isDndEnabled: dnd.enabled ? !resizeEvents.resources.isResizing : false,\n isDndMutlirows: dnd.mode === \"multi-rows\",\n dndSnapX: snap?.x,\n dndSnapY: snap?.y,\n itemHeight,\n dndMouseUpCb,\n mouseUpCb: dragMouseUp,\n };\n\n const { currentPositionX, dndEvents } = useDrag(dragOptions);\n\n // Variables\n const newPosition = { ...omit(position, \"egdeEnd\") };\n const styles = { width, position: newPosition };\n\n const formatTime = (\n date: string | number | Date,\n formatType: string = TIME_FORMAT.HOURS_MIN\n ) => format(new Date(date), formatType).replace(/\\s/g, \"\");\n\n const set12HoursTimeFormat = () => {\n if (mode.type === \"week\" || mode.type === \"month\") {\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_DAY_MONTH;\n return TIME_FORMAT.DAY_MONTH;\n }\n\n if (isBaseTimeFormat) return TIME_FORMAT.BASE_HOURS_TIME;\n return TIME_FORMAT.HOURS_MIN;\n };\n\n const getRTLSinceTime = (since: string | number | Date) =>\n isRTL ? till : since;\n\n const getRTLTillTime = (till: string | number | Date) =>\n isRTL ? since : till;\n\n // Effects\n useInterval(() => {\n const status = getLiveStatus(since, till);\n setIsLive(status);\n }, liveRefreshTime);\n\n const isMinWidth = isVerticalMode ? height > minWidth : width > minWidth;\n\n const getMouseEventTempTime = () => {\n const left = resizeEvents.isResizing\n ? resizeCurrentPositionX\n : currentPositionX;\n\n let options = {\n id: data.id,\n index: data.index,\n since: data.since,\n till: data.till,\n top: 0,\n left,\n initialPositionTop: position.top,\n initialPositionLeft: position.left,\n initialWidth: width,\n width: resizeWidth,\n hourWidth,\n };\n\n if (isVerticalMode) {\n options.initialPositionLeft = position.top;\n options.initialPositionTop = position.left;\n options.initialWidth = height;\n }\n\n const { since, till } = calculateItemDragSinceTill(options);\n const formatTempTime = (time: string) =>\n formatTime(getRTLSinceTime(time), set12HoursTimeFormat()).toLowerCase();\n\n return { since: formatTempTime(since), till: formatTempTime(till) };\n };\n\n const getMouseEvents = useCallback(\n () => ({\n ...resizeEvents.resources,\n ...dndEvents,\n }),\n [dndEvents, resizeEvents.resources]\n );\n const isMouseEvent =\n dndEvents.isDragging ||\n (resizeEvents.resources.isResizing as boolean) ||\n false;\n return {\n isMouseEvent,\n isLive,\n isMinWidth,\n isRTL,\n resizeEvents,\n formatTime,\n set12HoursTimeFormat,\n getMouseEvents,\n getMouseEventTempTime,\n getRTLSinceTime,\n getRTLTillTime,\n styles,\n };\n}\n","import { useMemo } from \"react\";\nimport { format } from \"date-fns\";\nimport { toDate } from \"date-fns-tz\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import helpers\nimport {\n TIME_FORMAT,\n generateArray,\n generateTimelineSlots,\n HOURS_IN_DAY,\n getTimelineMonthsWidth,\n getFormattedWeekMonthDate,\n getTodayHoursInDays,\n} from \"../helpers\";\n\ntype UseTimelineProps = ITimeline;\n\nexport function useTimeline(props: UseTimelineProps) {\n const { isBaseTimeFormat, isRTL, isSidebar, isVerticalMode } = props;\n const { timezone, dayWidth, hourWidth, sidebarWidth, timelineHeight } = props;\n const {\n mode,\n startDate,\n endDate,\n hoursInDays,\n days,\n liveRefreshTime,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n renderCurrentTime,\n } = props;\n\n // Handlers\n const getTime = (index: number | string) => {\n if (typeof index === \"string\") return { time: index, isNewDay: true };\n\n const date = new Date();\n const baseDate = format(date, TIME_FORMAT.DATE);\n const time = index < 10 ? `0${index}` : index;\n\n if (isBaseTimeFormat) {\n const date = new Date(`${baseDate}T${time}:00:00`);\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return { time: baseFormat, isNewDay: false };\n }\n\n return { time: `${time}:00`, isNewDay: false };\n };\n\n const formatWeekMonthDate = (date: string) =>\n getFormattedWeekMonthDate({ date, mode, isBaseTimeFormat });\n\n const getDayMonthName = (date: string) => {\n const dateFormat =\n mode.type === \"week\" ? TIME_FORMAT.DAY : TIME_FORMAT.YEAR;\n return format(toDate(date), dateFormat);\n };\n\n const getCurrentTimeProps = () => ({\n isBaseTimeFormat,\n isVerticalMode,\n isRTL,\n timezone,\n mode,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n timelineHeight,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n renderCurrentTime,\n });\n\n const getTimelineProps = () => ({\n isSidebar,\n isVerticalMode,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n });\n\n // Variables\n const timeSlots = useMemo(() => {\n const options = {\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n };\n\n return generateTimelineSlots(mode.type, options);\n }, [\n mode.type,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n ]);\n const isWeekMode = mode.type === \"week\";\n const isMonthMode = mode.type === \"month\";\n const isWeekMonthMode = isWeekMode || isMonthMode;\n const isTodayInHoursInDays = getTodayHoursInDays(hoursInDays);\n const areHoursInDays = hoursInDays.length > 0;\n\n const weekDayWidth = hourWidth * HOURS_IN_DAY;\n const monthsWidth = useMemo(\n () => getTimelineMonthsWidth({ months, weekDayWidth }),\n [months, weekDayWidth]\n );\n const dividers = generateArray(timelineDividers);\n\n return {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time: timeSlots,\n weekDayWidth,\n monthsWidth,\n timelineHeight,\n dividers,\n timelineDividers,\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n };\n}\n","import React from \"react\";\nimport { startOfDay } from \"date-fns\";\n\n// Import interfaces\nimport { HoursInDayDiffTime, Timezone } from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport {\n SECONDS_IN_MINUTE,\n HOUR_IN_MINUTES,\n getPositionX,\n getTodayHoursInDays,\n getHoursInDaysPositionX,\n} from \"../helpers\";\n\n// Import hooks\nimport { useInterval } from \".\";\nimport { getNewDateTz } from \"../utils/time\";\n\ninterface useLineProps {\n timezone: Timezone;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n hoursInDays: HoursInDayDiffTime[];\n liveRefreshTime: number;\n}\n\nexport function useLine({\n timezone,\n startDate,\n endDate,\n hoursInDays,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n}: useLineProps) {\n const [showLine, setShowLine] = React.useState(true);\n const [positionX, setPositionX] = React.useState(getInitialState);\n\n // Variables\n const timezoneSerialized = JSON.stringify(timezone);\n const hoursInDaysSerialized = JSON.stringify(hoursInDays);\n const liveIntervalTime = liveRefreshTime * 1000;\n const isDayEnd = positionX <= dayWidth;\n const isScrollX = React.useMemo(\n () => (isDayEnd ? liveIntervalTime : null),\n [isDayEnd, liveIntervalTime]\n );\n\n // Helpers\n function getInitialState() {\n if (hoursInDays.length > 0)\n return getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n\n const positionX = getPositionX(\n startOfDay(new Date(startDate)),\n new Date(),\n startDate,\n endDate,\n hourWidth\n );\n return positionX + sidebarWidth;\n }\n\n // Effects\n useInterval(() => {\n const offset = hourWidth / HOUR_IN_MINUTES;\n const step = offset / SECONDS_IN_MINUTE;\n const positionOffset = step * liveRefreshTime;\n\n if (hoursInDays.length > 0) {\n const idCurrentDay = getTodayHoursInDays(hoursInDays);\n\n if (idCurrentDay) {\n setShowLine(true);\n\n setPositionX((prev) => prev + positionOffset);\n } else {\n setShowLine(false);\n }\n } else {\n setPositionX((prev) => prev + positionOffset);\n }\n }, isScrollX);\n\n React.useEffect(() => {\n if (hoursInDays.length > 0) {\n const newPositionX = getHoursInDaysPositionX({\n hoursInDays,\n hourWidth,\n sidebarWidth,\n cb: setShowLine,\n });\n setPositionX(newPositionX);\n } else {\n const date = new Date(startDate);\n const positionX = getPositionX(\n startOfDay(date),\n getNewDateTz(),\n startDate,\n endDate,\n hourWidth\n );\n const newPositionX = positionX + sidebarWidth;\n setPositionX(newPositionX);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n startDate,\n endDate,\n sidebarWidth,\n hourWidth,\n hoursInDaysSerialized,\n timezoneSerialized,\n ]);\n\n return { showLine, positionX };\n}\n","import React from \"react\";\nimport { format } from \"date-fns\";\n// Import types\nimport { BaseTimeFormat } from \"../helpers/types\";\n// Import helpers\nimport { Mode, TIME_FORMAT } from \"../helpers\";\n// Import utils\nimport { getNewDateTz } from \"../utils/time\";\n// Import styles\nimport { boxStyles } from \"../styles/CurrentTime.styles\";\n\ninterface useCurrentTimeProps {\n isVerticalMode?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n mode: Mode;\n positionX: number;\n timelineHeight: number;\n sidebarWidth: number;\n}\n\nexport function useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n}: useCurrentTimeProps) {\n const formatTime = () => {\n const date = getNewDateTz();\n\n if (mode.type === \"month\") {\n if (isBaseTimeFormat) return format(date, TIME_FORMAT.BASE_DAY_MONTH);\n return format(date, TIME_FORMAT.DAY_MONTH);\n }\n\n const baseTime = format(date, TIME_FORMAT.HOURS_MIN);\n\n if (isBaseTimeFormat) {\n const baseFormat = format(date, TIME_FORMAT.BASE_HOURS_TIME)\n .toLowerCase()\n .replace(/\\s/g, \"\");\n\n return baseFormat;\n }\n\n return baseTime;\n };\n\n const handleGetCurrentTimeStyles = () => {\n const {\n position,\n top,\n height,\n width: styleWidth,\n } = boxStyles({ width: timelineHeight });\n const width = isVerticalMode ? styleWidth : \"auto\";\n const commonStyles = {\n position: position,\n width,\n height: height,\n };\n\n if (isVerticalMode) {\n return {\n position: {\n top: positionX - sidebarWidth,\n left: top,\n ...commonStyles,\n },\n };\n }\n\n return {\n position: {\n top: top,\n left: positionX - sidebarWidth,\n ...commonStyles,\n },\n };\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const time = React.useMemo(() => formatTime(), [positionX, isBaseTimeFormat]);\n\n return { time, getCurrentTimeStyles: handleGetCurrentTimeStyles };\n}\n","import { useCallback } from \"react\";\n// Import interfaces\nimport { Mode, Grid as IGrid, HoursInDayDiffTime } from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import helpers\nimport { getClickGridItemData } from \"../helpers\";\n\ninterface UseGridProps {\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n}\n\nexport function useGrid({\n mode,\n grid,\n timelineHeight,\n sidebarWidth,\n hourWidth,\n dayWidth,\n ...rest\n}: UseGridProps) {\n const {\n isVerticalMode,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n } = rest;\n\n const handleItemClick = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number\n ) =>\n () => {\n getClickGridItemData({\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n const handleItemDrop = useCallback(\n (\n item: { position: Position; channel: ChannelWithPosition },\n index?: number,\n dataAttributes?: Record\n ) =>\n () => {\n getClickGridItemData({\n isDrop: true,\n isVerticalMode,\n index,\n item,\n grid,\n mode,\n dayWidth,\n hourWidth,\n timelineHeight,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n timelineDividers,\n dataAttributes,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isVerticalMode,\n hourWidth,\n dayWidth,\n sidebarWidth,\n isBaseTimeFormat,\n days,\n hoursInDays,\n months,\n numberOfDays,\n numberOfHoursInDay,\n numberOfMonths,\n offsetStartHoursRange,\n mode.type,\n ]\n );\n return {\n onItemClick: handleItemClick,\n onItemDrop: handleItemDrop,\n };\n}\n","import React, { useCallback } from \"react\";\n// Types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n\ninterface useGridCellItemProps {\n onItemDrop?: GridEvent;\n}\n\nexport function useGridExternalDnD({ onItemDrop }: useGridCellItemProps = {}) {\n const dropAreaRef = React.useRef(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n const handleDrop = useCallback(\n (\n item: {\n position: Position;\n channel: ChannelWithPosition;\n },\n index: number\n ) =>\n (e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n\n const droppedItemId = e.dataTransfer.getData(\"text/plain\");\n const droppedItem = document.getElementById(droppedItemId);\n\n if (droppedItem) {\n // Loop through all attributes\n const attributes = droppedItem.attributes;\n const dataAttributes = {} as Record;\n\n for (let i = 0; i < attributes.length; i++) {\n const attribute = attributes[i];\n if (attribute.name.startsWith(\"data-\")) {\n dataAttributes[attribute.name.replace(\"data-\", \"\")] =\n attribute.value;\n }\n }\n\n // Call the onDrop callback with the dropped item, attributes, and position\n onItemDrop?.(item, index, dataAttributes)();\n }\n }\n },\n\n [onItemDrop]\n );\n\n const handleDragEnter = useCallback((e: React.DragEvent) => {\n if (e) {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(true);\n }\n }\n }, []);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n if (dropAreaRef.current) {\n setIsDragOver(false);\n }\n }, []);\n\n return {\n isDragOver,\n dropAreaRef,\n onDrop: handleDrop,\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { GridDividerItemProps } from \"../helpers/interfaces\";\n// Import hooks\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridDivider } = GridStyled;\n\nexport function GridDividerItem({\n index,\n item,\n dividerProps,\n}: GridDividerItemProps) {\n const { styles, props } = dividerProps;\n const { onItemClick, onItemDrop, ...restProps } = props;\n const { isDragOver, onDrop, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD({\n onItemDrop,\n });\n return (\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { GridCell } from \"../helpers/interfaces\";\n// Import types\nimport { ChannelWithPosition, GridEvent, Position } from \"../helpers/types\";\n// Import helpers\nimport { generateArray } from \"../helpers\";\n// Import styles\nimport { GridStyled } from \"../styles\";\nimport { GridDividerItem } from \"./GridDividerItem\";\nimport { useGridExternalDnD } from \"../hooks/useGridExternalDnD\";\n\nconst { GridItem } = GridStyled;\n\ninterface GridCellItemProps {\n isVerticalMode: boolean;\n isHoverHighlight: boolean | undefined;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isItemClickable: boolean;\n isDayMode: boolean;\n item: { position: Position; channel: ChannelWithPosition };\n index: number;\n channelOverlapsCount: Record;\n hourWidth: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n onItemClick: GridEvent;\n onItemDrop: GridEvent;\n}\n\nexport function GridCellItem({\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n}: GridCellItemProps) {\n const overlapsCount = channelOverlapsCount[item.channel.uuid] ?? 1;\n const isVisible = isProgramVisible(item.position, overlapsCount);\n\n const { isDragOver, dropAreaRef, onDrop, onDragEnter, onDragLeave } =\n useGridExternalDnD({\n onItemDrop,\n });\n\n if (!isVisible) return null;\n\n const gridItemClickProps = isDayMode\n ? { isItemClickable: false }\n : { onClick: onItemClick(item), isItemClickable };\n\n const dividerProps = {\n styles: {\n left: (index: number) => index * (hourWidth / timelineDividers),\n width: hourWidth / timelineDividers,\n },\n props: {\n isVerticalMode,\n isHoverHighlight: isHoverHighlight as boolean,\n isItemClickable,\n onItemClick,\n onItemDrop,\n },\n };\n\n const gridItemDnDProps = isDayMode\n ? {}\n : {\n isDragOver: isDragOver,\n onDragEnter,\n onDragLeave,\n onDrop: onDrop(item, index),\n };\n\n if (renderGridCell) {\n const id = item.channel.uuid + index;\n return renderGridCell({\n isDayMode,\n id,\n index,\n item,\n isHoverHighlight: isHoverHighlight as boolean,\n timelineDividers,\n gridDividerProps: dividerProps,\n timelineDividerArray: generateArray(timelineDividers),\n gridItemClickProps,\n gridItemDnDProps,\n });\n }\n\n return (\n \n {isDayMode &&\n generateArray(timelineDividers).map((_, index) => (\n \n ))}\n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport {\n Mode,\n Grid as IGrid,\n HoursInDayDiffTime,\n GridCell,\n} from \"../helpers/interfaces\";\n// Import types\nimport {\n BaseTimeFormat,\n ChannelWithPosition,\n Position,\n} from \"../helpers/types\";\n// Import hooks\nimport { useGrid } from \"../hooks\";\nimport { GridCellItem } from \"./GridCellItem\";\n// Import styles\nimport { GridStyled } from \"../styles\";\n\nconst { GridContainer } = GridStyled;\n\ninterface GridProps {\n isVerticalMode: boolean;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isBaseTimeFormat: BaseTimeFormat;\n channelOverlapsCount: Record;\n hourWidth: number;\n dayWidth: number;\n days: string[];\n hoursInDays: HoursInDayDiffTime[];\n months: string[];\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n offsetStartHoursRange: number;\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n mode: Mode;\n sidebarWidth: number;\n timelineHeight: number;\n timelineDividers: number;\n renderGridCell?: (props: GridCell) => React.ReactNode;\n}\n\nexport function Grid({\n isVerticalMode,\n isProgramVisible,\n channelOverlapsCount,\n grid,\n gridItems,\n mode,\n hourWidth,\n timelineDividers,\n renderGridCell,\n ...rest\n}: GridProps) {\n const { onItemClick, onItemDrop } = useGrid({\n isVerticalMode,\n grid,\n mode,\n hourWidth,\n timelineDividers,\n ...rest,\n });\n\n const isDayMode = mode.type === \"day\";\n const isHoverHighlight = grid.hoverHighlight;\n const isItemClickable = !!grid.onGridItemClick;\n\n const renderGridItem = (\n item: { position: Position; channel: ChannelWithPosition },\n index: number\n ) => {\n const props = {\n isVerticalMode,\n isProgramVisible,\n isHoverHighlight,\n isDayMode,\n isItemClickable,\n item,\n index,\n channelOverlapsCount,\n hourWidth,\n timelineDividers,\n renderGridCell,\n onItemClick,\n onItemDrop,\n };\n\n // @ts-ignore\n return ;\n };\n\n return (\n \n {gridItems.map((item, index) => renderGridItem(item, index))}\n \n );\n}\n","import React from \"react\";\n\n// Import interfaces\nimport {\n Area,\n Grid as IGrid,\n HoursInDayDiffTime,\n Line as ILine,\n Mode,\n Overlap,\n ProgramOverlaps,\n DragAndDrop,\n Timezone,\n Snap,\n GridCell,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n Timeline as ITimeline,\n CurrentTimeIndicator,\n} from \"../helpers/interfaces\";\nimport {\n ProgramItem,\n ProgramWithPosition,\n ChannelWithPosition,\n DateTime,\n Position,\n BaseTimeFormat,\n DragMouseUp,\n} from \"../helpers/types\";\n\n// Import helpers\nimport {\n deleteLayoutScreenCloneElement,\n getChannelsContentHeight,\n getProgramOptions,\n isFutureTime,\n setLayoutScreenCloneElement,\n} from \"../helpers\";\n\n// Import styles\nimport { EpgStyled } from \"../styles\";\n\n// Import components\nimport { Areas, Channels, Line, Program, Timeline } from \"../components\";\nimport { LayoutBg } from \"../styles/Epg.styles\";\nimport { Grid } from \"./Grid\";\n\ninterface LayoutProps {\n isToday: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isBaseTimeFormat?: BaseTimeFormat;\n isSidebar?: boolean;\n isTimeline?: boolean;\n isLine?: boolean;\n isCurrentTime?: boolean;\n isResize?: boolean;\n programs: ProgramItem[];\n programOverlaps: ProgramOverlaps;\n layerOverlapLevel: number;\n channels: ChannelWithPosition[];\n channelOverlapsCount: Record;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n scrollY: number;\n dayWidth: number;\n hourWidth: number;\n days: string[];\n months: string[];\n currentDate: string;\n numberOfDays: number;\n numberOfHoursInDay: number;\n numberOfMonths: number;\n monthWidth: number;\n offsetStartHoursRange: number;\n sidebarWidth: number;\n timelineHeight: number;\n itemHeight: number;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n overlapMode: Overlap[\"mode\"];\n timelineDividers: number;\n timezone: Timezone;\n areas: Area[];\n gridItems: { position: Position; channel: ChannelWithPosition }[];\n grid: IGrid;\n overlap: Overlap;\n isProgramVisible: (position: Position, overlapsCount: number) => boolean;\n isChannelVisible: (position: Pick) => boolean;\n isTimelineVisible: (position: Pick) => boolean;\n dragMouseUp: (position: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n onScroll: (\n e: React.UIEvent & { target: Element }\n ) => void;\n onLayoutBgClick?: () => void;\n renderProgram?: (v: {\n program: ProgramItem;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n liveRefreshTime: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n contentHeight: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: any) => void;\n }) => React.ReactNode;\n renderChannel?: (v: { channel: ChannelWithPosition }) => React.ReactNode;\n renderTimeline?: (v: ITimeline) => React.ReactNode;\n renderLine?: (v: ILine) => React.ReactNode;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n renderGridCell?: (v: GridCell) => React.ReactElement;\n}\n\nconst { ScrollBox, Content } = EpgStyled;\n\nexport const Layout = React.forwardRef(\n (props, scrollBoxRef) => {\n const { startDate, endDate, hoursInDays, liveRefreshTime, scrollY } = props;\n\n const {\n channels,\n channelOverlapsCount,\n programs,\n programOverlaps,\n layerOverlapLevel,\n } = props;\n\n const {\n timezone,\n areas,\n grid,\n gridItems,\n mode,\n dnd,\n snap,\n overlap,\n overlapMode,\n timelineDividers,\n } = props;\n\n const {\n dayWidth,\n hourWidth,\n monthWidth,\n sidebarWidth,\n timelineHeight,\n itemHeight,\n } = props;\n\n const {\n days,\n months,\n numberOfHoursInDay,\n numberOfDays,\n numberOfMonths,\n offsetStartHoursRange,\n } = props;\n\n const {\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLine = true,\n isToday,\n isBaseTimeFormat = false,\n isCurrentTime = false,\n isResize = false,\n } = props;\n\n const {\n dragMouseUp,\n resizeMouseUp,\n openChannelGroupTree,\n onLayoutBgClick,\n onScroll,\n isProgramVisible,\n isChannelVisible,\n isTimelineVisible,\n renderProgram,\n renderChannel,\n renderTimeline,\n renderLine,\n renderCurrentTime,\n renderGridCell,\n } = props;\n\n // Calculate the height of the content\n const channelsLength = channels.length;\n const programsOverlapsLength = Object.keys(programOverlaps).length;\n const programOverlapsSerialized = JSON.stringify(programOverlaps);\n const contentHeight = React.useMemo(\n () => {\n if (programsOverlapsLength > 0) {\n return getChannelsContentHeight(channels);\n }\n return channelsLength * itemHeight;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n channelsLength,\n programsOverlapsLength,\n itemHeight,\n programOverlapsSerialized,\n ]\n );\n\n const showAreas = areas.length > 0;\n const isFuture = isFutureTime(endDate);\n\n const renderPrograms = (program: ProgramWithPosition, index: number) => {\n const { position, data } = program;\n const overlapsCount = channelOverlapsCount[program.data.channelUuid] ?? 1;\n const isVisible =\n data.fixedVisibility ?? isProgramVisible(position, overlapsCount);\n\n if (isVisible) {\n setLayoutScreenCloneElement(program, index);\n const options = getProgramOptions({\n isVerticalMode,\n program,\n programOverlaps,\n layerOverlapLevel,\n overlapMode,\n overlap,\n });\n const props = {\n isRTL,\n isResize,\n isVerticalMode,\n isBaseTimeFormat,\n startDate,\n program: options,\n liveRefreshTime,\n snap,\n mode,\n dnd,\n dayWidth,\n contentHeight,\n itemHeight,\n hourWidth,\n dragMouseUp,\n resizeMouseUp,\n };\n if (renderProgram) return renderProgram(props);\n\n return (\n \n );\n }\n deleteLayoutScreenCloneElement(program);\n return null;\n };\n\n const renderTopbar = () => {\n const timeProps = {\n isVerticalMode,\n isSidebar,\n isRTL,\n isTimelineVisible,\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n timezone,\n startDate,\n endDate,\n dayWidth,\n sidebarWidth,\n timelineHeight,\n offsetStartHoursRange,\n monthWidth,\n numberOfHoursInDay,\n numberOfMonths,\n numberOfDays,\n hourWidth,\n days,\n months,\n hoursInDays,\n liveRefreshTime,\n mode,\n timelineDividers,\n renderCurrentTime,\n };\n if (renderTimeline) {\n return renderTimeline(timeProps);\n }\n return ;\n };\n\n return (\n \n {grid.enabled && (\n \n )}\n {onLayoutBgClick && (\n \n )}\n {isLine && isToday && isFuture && (\n \n )}\n\n {showAreas && (\n \n )}\n {isTimeline && renderTopbar()}\n {isSidebar && (\n \n )}\n\n \n {programs.map((program, index) =>\n renderPrograms(program as ProgramWithPosition, index)\n )}\n \n \n );\n }\n);\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n DragAndDrop,\n Mode,\n Program as ProgramType,\n Snap,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport {\n BaseTimeFormat,\n DateTime,\n DragMouseUp,\n ResizeMouseUp,\n} from \"../helpers/types\";\nimport { ProgramItem } from \"../helpers/types\";\n\n// Import styles\nimport { ProgramStyled } from \"../styles\";\n\n// Import hooks\nimport { useProgram } from \"../hooks\";\n\ninterface ProgramProps {\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isResize?: boolean;\n isBaseTimeFormat: BaseTimeFormat;\n startDate: DateTime;\n program: T;\n liveRefreshTime: number;\n snap?: Snap;\n mode: Mode;\n dnd: DragAndDrop;\n contentHeight: number;\n dayWidth: number;\n hourWidth: number;\n itemHeight: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n onClick?: (v: ProgramType) => void;\n}\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramResizeHandle,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n} = ProgramStyled;\n\nexport function Program({\n isVerticalMode,\n program,\n onClick,\n ...rest\n}: ProgramProps) {\n const {\n isRTL,\n isLive,\n isMinWidth,\n isMouseEvent,\n styles,\n resizeEvents,\n formatTime,\n getMouseEvents,\n getMouseEventTempTime,\n set12HoursTimeFormat,\n getRTLSinceTime,\n getRTLTillTime,\n } = useProgram({\n isVerticalMode,\n program,\n ...rest,\n });\n\n const { data } = program;\n const { image, title, since, till } = data;\n\n const handleOnContentClick = () => onClick?.(data);\n\n const sinceTime = formatTime(\n getRTLSinceTime(since),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tillTime = formatTime(\n getRTLTillTime(till),\n set12HoursTimeFormat()\n ).toLowerCase();\n\n const tempTime = getMouseEventTempTime();\n\n return (\n \n \n \n \n \n {isLive && isMinWidth && (\n \n )}\n \n \n {title}\n \n \n {isMouseEvent ? (\n <>\n {tempTime.since} - {tempTime.till}\n \n ) : (\n <>\n {sinceTime} - {tillTime}\n \n )}\n \n \n \n \n \n );\n}\n","import * as React from \"react\";\n// Import interfaces\nimport { ChannelItem, ChannelWithPosition } from \"../helpers/types\";\n\n// Import helpers\nimport {\n getChannelGroupTreeProps,\n getChannelVerticalPosition,\n} from \"../helpers\";\n\n// Import styles\nimport { ChannelsStyled } from \"../styles\";\n\n// Import Components\nimport { Channel } from \"../components\";\n\ninterface ChannelsProps {\n isVerticalMode: boolean;\n isTimeline: boolean;\n isRTL: boolean;\n isChannelVisible: (position: any) => boolean;\n channels: ChannelWithPosition[];\n contentHeight: number;\n sidebarWidth: number;\n timelineHeight: number;\n scrollY: number;\n openChannelGroupTree: (data: ChannelWithPosition) => void;\n renderChannel?: (v: ChannelItem) => React.ReactNode;\n}\n\nconst { Box } = ChannelsStyled;\n\nexport function Channels(props: ChannelsProps) {\n const {\n channels,\n scrollY,\n sidebarWidth,\n timelineHeight,\n contentHeight,\n openChannelGroupTree,\n renderChannel,\n } = props;\n const { isVerticalMode, isRTL, isTimeline, isChannelVisible } = props;\n\n const renderChannels = (channel: ChannelWithPosition) => {\n const channelWithPosition = getChannelVerticalPosition(\n channel,\n isVerticalMode\n );\n const isVisible = isChannelVisible(channelWithPosition.position);\n const newChannel = getChannelGroupTreeProps(\n channelWithPosition\n ) as ChannelWithPosition;\n\n const groupEventProps = newChannel.groupTree\n ? { onOpenGroupTree: openChannelGroupTree }\n : {};\n\n if (isVisible) {\n if (renderChannel) {\n return renderChannel({\n channel: newChannel,\n isVerticalMode,\n isRTL,\n ...groupEventProps,\n });\n }\n\n return (\n \n );\n }\n return null;\n };\n\n return (\n \n {channels.map(renderChannels)}\n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport { ChannelWithPosition } from \"../helpers/types\";\n\n// Import styles\nimport { ChannelStyled } from \"../styles\";\n\ninterface ChannelProps {\n isVerticalMode: boolean;\n channel: T;\n onOpenGroupTree?: (data: ChannelWithPosition) => void;\n onClick?: (v: ChannelWithPosition) => void;\n}\n\nconst { ChannelWrapper, ChannelLogo } = ChannelStyled;\n\nexport function Channel({\n isVerticalMode,\n channel,\n onOpenGroupTree,\n onClick,\n ...rest\n}: ChannelProps) {\n const { position, logo, groupTree } = channel;\n\n return (\n onOpenGroupTree?.(channel) ?? onClick?.(channel)}\n {...position}\n {...rest}\n >\n \n \n );\n}\n","import * as React from \"react\";\n\n// Import types\nimport {\n CurrentTimeIndicator,\n HoursInDayDiffTime,\n Mode,\n Timezone,\n} from \"../helpers/interfaces\";\nimport { DateTime } from \"../helpers/types\";\n\n// Import styles\nimport { CurrentTimeStyled } from \"../styles\";\n\n// Import hooks\nimport { useLine, useCurrentTime } from \"../hooks\";\n\ninterface CurrentTimeProps {\n isBaseTimeFormat?: boolean;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n timezone: Timezone;\n mode: Mode;\n startDate: DateTime;\n endDate: DateTime;\n hoursInDays: HoursInDayDiffTime[];\n dayWidth: number;\n timelineHeight: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n renderCurrentTime?: (v: CurrentTimeIndicator) => React.ReactElement;\n}\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nexport function CurrentTime(props: CurrentTimeProps) {\n const { isVerticalMode, isBaseTimeFormat, isRTL } = props;\n const { timezone, mode, liveRefreshTime, startDate, endDate, hoursInDays } =\n props;\n const { dayWidth, timelineHeight, hourWidth, sidebarWidth } = props;\n const { renderCurrentTime } = props;\n\n const { showLine, positionX } = useLine({\n timezone,\n hoursInDays,\n startDate,\n endDate,\n dayWidth,\n hourWidth,\n sidebarWidth,\n liveRefreshTime,\n });\n\n const { time, getCurrentTimeStyles } = useCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n mode,\n positionX,\n timelineHeight,\n sidebarWidth,\n });\n\n if (!showLine) return null;\n\n const styles = getCurrentTimeStyles();\n\n if (renderCurrentTime) {\n return renderCurrentTime({\n isVerticalMode,\n isBaseTimeFormat,\n isRTL,\n time,\n styles,\n });\n }\n\n return (\n \n \n {time}\n \n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport { Timeline as ITimeline } from \"../helpers/interfaces\";\n\n// Import styles\nimport { TimelineStyled } from \"../styles\";\n\n// Import components\nimport { CurrentTime } from \"./CurrentTime\";\n\n// Import hooks\nimport { useTimeline } from \"../hooks\";\nimport {\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} from \"../styles/Timeline.styles\";\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDividers,\n TimelineDivider,\n} = TimelineStyled;\n\nexport function Timeline(props: ITimeline) {\n const {\n isWeekMonthMode,\n isMonthMode,\n isTodayInHoursInDays,\n areHoursInDays,\n time,\n ...rest\n } = useTimeline(props);\n const {\n timelineHeight,\n weekDayWidth,\n monthsWidth,\n dividers,\n timelineDividers,\n } = rest;\n const {\n formatWeekMonthDate,\n getTime,\n getDayMonthName,\n getTimelineProps,\n getCurrentTimeProps,\n } = rest;\n\n const {\n isToday,\n isBaseTimeFormat,\n isCurrentTime,\n isRTL,\n isTimelineVisible,\n isVerticalMode,\n } = props;\n const { mode } = props;\n const { hourWidth } = props;\n\n // Handlers\n const renderDay = (item: string | number, index: number) => {\n const { isNewDay, time } = getTime(item);\n const position = { left: hourWidth * index, width: hourWidth };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n\n return (\n \n \n {time}\n \n \n {renderDividers(isNewDay)}\n \n \n );\n };\n const renderWeekMonth = (item: string, index: number) => {\n const width = isMonthMode ? monthsWidth[index].width : weekDayWidth;\n const left = isMonthMode ? monthsWidth[index].left : width * index;\n const position = {\n left,\n width,\n };\n const isVisible = isTimelineVisible(position);\n if (!isVisible) return null;\n const isModernStyle = mode.style === \"modern\";\n return (\n \n \n {isModernStyle && {getDayMonthName(item)}}\n {formatWeekMonthDate(item)}\n \n \n );\n };\n\n const renderDividers = (isNewDay: boolean) =>\n dividers.map((_, index) => (\n \n ));\n\n const renderTimelineItems = (item: string | number, index: number) => {\n return isWeekMonthMode\n ? renderWeekMonth(item as string, index)\n : renderDay(item, index);\n };\n\n return (\n \n {isCurrentTime && isToday && }\n {time.map((item, index) => renderTimelineItems(item, index))}\n \n );\n}\n","import * as React from \"react\";\n\n// Import interfaces\nimport {\n HoursInDayDiffTime,\n Line as ILine,\n Timezone,\n} from \"../helpers/interfaces\";\n\n// Import types\nimport { DateTime } from \"../helpers/types\";\n\n// Import helpers\nimport { Layers, getLineStyles } from \"../helpers\";\n\n// Import styles\nimport { LineStyled } from \"../styles\";\n\n// Import components\nimport { useLine } from \"../hooks/useLine\";\n\ninterface LineProps {\n isTimeline: boolean;\n isVerticalMode: boolean;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n dayWidth: number;\n hourWidth: number;\n sidebarWidth: number;\n liveRefreshTime: number;\n hoursInDays: HoursInDayDiffTime[];\n timezone: Timezone;\n renderLine?: (v: ILine) => React.ReactNode;\n}\n\nconst { lineStyles, LineBox } = LineStyled;\n\nexport function Line({\n isTimeline,\n isVerticalMode,\n height,\n renderLine,\n ...rest\n}: LineProps) {\n const { positionX, showLine } = useLine(rest);\n\n if (!showLine) return null;\n\n const position = {\n height,\n left: positionX,\n zIndex: Layers.Line,\n };\n\n const styles = getLineStyles({\n isVerticalMode,\n isTimeline,\n lineStyles,\n position,\n });\n\n if (renderLine)\n return <>{renderLine({ styles, isVerticalMode, isTimeline })};\n\n return (\n \n );\n}\n","import * as React from \"react\";\n\n// Import styles\nimport { LoaderStyled } from \"../styles\";\n\nconst { Box, Shape } = LoaderStyled;\n\nconst Element = ({\n width,\n color,\n animate,\n marginRight,\n transition,\n}: {\n width: number;\n color: string;\n transition: { duration: number; ease?: string; delay?: number };\n animate: { right: string[] };\n marginRight?: number;\n}) => (\n \n);\n\nexport function Loader() {\n return (\n \n
\n \n \n \n
\n \n \n \n
\n \n \n
\n \n
\n );\n}\n","import { isWithinInterval } from \"date-fns\";\nimport { getPositionX } from \"./epg\";\nimport { Area } from \"./interfaces\";\nimport { DateTime } from \"./types\";\n\ninterface AreasData {\n area: Area;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n height: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport const getAreasFields = ({\n area,\n startDate,\n endDate,\n hourWidth,\n sidebarWidth,\n timelineHeight,\n height,\n}: AreasData) => {\n const areaStartDate = area.startDate;\n const areaEndDate = area?.endDate ?? areaStartDate;\n\n const left =\n getPositionX(startDate, areaStartDate, startDate, endDate, hourWidth) +\n sidebarWidth;\n\n const width = getPositionX(\n areaStartDate,\n areaEndDate,\n startDate,\n endDate,\n hourWidth\n );\n\n const intervalOptions = {\n start: new Date(startDate),\n end: new Date(endDate),\n };\n const isStartAreaDateValid = isWithinInterval(\n new Date(areaStartDate),\n intervalOptions\n );\n\n const showArea = isStartAreaDateValid;\n const areaFieldStyles = {\n positionX: left,\n width,\n height,\n timelineHeight,\n };\n return {\n ...area,\n showArea,\n areaFieldStyles,\n areaBgStyles: area.styles,\n };\n};\n","import { useMemo } from \"react\";\n// Import interfaces\nimport { Area } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import helpers\nimport { getAreasFields } from \"../helpers/areas\";\n\ninterface UseAreasProps {\n areas: Area[];\n hourWidth: number;\n sidebarWidth: number;\n height: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\nexport function useAreas(props: UseAreasProps) {\n const { startDate, endDate, areas } = props;\n const { hourWidth, sidebarWidth, timelineHeight, height } = props;\n\n const areasSerialized = JSON.stringify(areas);\n const data = useMemo(\n () => {\n return areas.map((area) => {\n const options = {\n area,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n };\n return getAreasFields(options);\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n areasSerialized,\n hourWidth,\n sidebarWidth,\n height,\n startDate,\n endDate,\n timelineHeight,\n ]\n );\n\n return { data };\n}\n","import React from \"react\";\n\n// Import interfaces\nimport { Area, AreaItem } from \"../helpers/interfaces\";\n// Import types\nimport { DateTime } from \"../helpers/types\";\n// Import hooks\nimport { useAreas } from \"../hooks/useAreas\";\n\n// Import styles\nimport { AreaStyled } from \"../styles\";\n\ninterface AreasProps {\n isVerticalMode: boolean;\n areas: Area[];\n height: number;\n hourWidth: number;\n sidebarWidth: number;\n timelineHeight: number;\n startDate: DateTime;\n endDate: DateTime;\n}\n\ntype AreaAnnotationProps = Pick & {\n isLeft: boolean;\n text: string;\n styles: AreaItem[\"areaBgStyles\"];\n};\n\nconst { AreaAnnotation, AreaBg, AreaFiled } = AreaStyled;\n\nexport function Areas({ isVerticalMode, ...props }: AreasProps) {\n const { data } = useAreas(props);\n\n const renderAreaAnnotation = (props: AreaAnnotationProps) => {\n const { isLeft, text } = props;\n const { areaFieldStyles, styles } = props;\n const className = isLeft ? \"left\" : \"right\";\n return (\n \n {text}\n \n );\n };\n\n const renderArea = (props: AreaItem, index: number) => {\n const { showArea, annotations, onClick } = props;\n const { areaBgStyles = {}, areaFieldStyles } = props;\n if (!showArea) return null;\n\n const annotationProps = {\n areaFieldStyles,\n styles: annotations?.styles ?? {},\n };\n\n return (\n \n \n {annotations && (\n <>\n {annotations.textStart &&\n renderAreaAnnotation({\n isLeft: true,\n text: annotations.textStart,\n ...annotationProps,\n })}\n {annotations.textEnd &&\n renderAreaAnnotation({\n isLeft: false,\n text: annotations.textEnd,\n ...annotationProps,\n })}\n \n )}\n \n );\n };\n\n return (\n \n {data.map((props, index) => renderArea(props, index))}\n \n );\n}\n","import React from \"react\";\nimport { ThemeProvider, Global } from \"@emotion/react\";\n// Import interfaces\nimport { Theme } from \"./helpers/interfaces\";\n// Import styles\nimport { globalStyles, EpgStyled } from \"./styles\";\n// Import components\nimport { Loader } from \"./components\";\nimport { useGridExternalDnD } from \"./hooks\";\n\ninterface EpgProps {\n width?: number;\n height?: number;\n isVerticalMode?: boolean;\n isRTL?: boolean;\n isSidebar: boolean;\n isTimeline?: boolean;\n isLoading?: boolean;\n children: React.ReactNode;\n loader?: React.ReactNode;\n theme: Theme;\n globalStyles?: string;\n sidebarWidth: number;\n timelineHeight: number;\n}\n\nconst { Container, Wrapper, Box } = EpgStyled;\n\nexport const Epg = React.forwardRef(\n (\n {\n children,\n width,\n height,\n sidebarWidth,\n timelineHeight,\n theme,\n globalStyles: customGlobalStyles,\n isVerticalMode = false,\n isRTL = false,\n isSidebar = true,\n isTimeline = true,\n isLoading = false,\n loader: LoaderComponent,\n ...rest\n },\n containerRef\n ) => {\n const renderLoader = () => LoaderComponent ?? ;\n const epgGlobalStyles = customGlobalStyles ?? globalStyles;\n\n const blankSpaceStyles = isVerticalMode\n ? { height: sidebarWidth, width: timelineHeight }\n : { width: sidebarWidth, height: timelineHeight };\n\n return (\n \n \n \n \n {isSidebar && isTimeline && (\n \n )}\n {isLoading && renderLoader()}\n {children}\n \n \n \n );\n }\n);\n\ninterface WrapperDnDProps {\n children: React.ReactNode;\n}\nfunction WrapperDnD({ children }: WrapperDnDProps) {\n const { isDragOver, onDragEnter, onDragLeave, dropAreaRef } =\n useGridExternalDnD();\n\n React.useEffect(() => {\n const gridElement = document.querySelector(\".planby-grid\") as HTMLElement;\n if (gridElement) {\n if (isDragOver) {\n gridElement.style.zIndex = \"5\";\n } else {\n gridElement.style.zIndex = \"1\";\n }\n }\n }, [isDragOver]);\n\n return (\n \n {children}\n \n );\n}\n","import {\n ChannelStyled,\n CurrentTimeStyled,\n ProgramStyled,\n TimelineStyled,\n GridStyled,\n} from \"./styles\";\n\n// Import interfaces\nimport {\n Line as ILine,\n Theme as ITheme,\n Program as IProgram,\n Timeline as ITimeline,\n CurrentTimeIndicator as ICurrentTimeIndicator,\n Mode,\n GridItemProps as IGridItemProps,\n GridDividerItemProps as IGridDividerItemProps,\n DragAndDrop,\n Snap,\n GridCell as IGridCell,\n} from \"./helpers/interfaces\";\nimport {\n ProgramItem as ProgramItemType,\n ChannelItem as IChannelItem,\n ChannelWithPosition,\n BaseTimeFormat as BaseTimeFormatType,\n DragMouseUp,\n ResizeMouseUp,\n DateTime,\n} from \"./helpers/types\";\n\n// Types\nexport type Channel = ChannelWithPosition;\nexport type ChannelItem = IChannelItem;\nexport type CurrentTimeIndicator = ICurrentTimeIndicator;\nexport type Line = ILine;\nexport type Program = IProgram;\nexport type ProgramItem = {\n program: ProgramItemType;\n isRTL: boolean;\n isVerticalMode: boolean;\n isBaseTimeFormat: BaseTimeFormatType;\n liveRefreshTime: number;\n mode: Mode;\n startDate: DateTime;\n snap?: Snap;\n dnd: DragAndDrop;\n dayWidth: number;\n itemHeight: number;\n contentHeight: number;\n hourWidth: number;\n dragMouseUp: (data: DragMouseUp) => void;\n resizeMouseUp: (data: ResizeMouseUp) => void;\n};\nexport type GridItemProps = IGridItemProps;\nexport type GridDividerItemProps = IGridDividerItemProps;\n\nexport type Timeline = ITimeline;\nexport type Theme = ITheme;\nexport type GridCell = Omit;\n\n// Components\nexport { Layout, CurrentTime } from \"./components\";\nexport { Epg } from \"./Epg\";\nexport { useEpg, useProgram, useTimeline, useGridExternalDnD } from \"./hooks\";\n\n// Styles\nconst { ChannelWrapper: ChannelBox, ChannelLogo } = ChannelStyled;\n\nconst { CurrentTimeBox, CurrentTimeContent } = CurrentTimeStyled;\n\nconst { GridItem, GridDivider } = GridStyled;\n\nconst {\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n} = ProgramStyled;\n\nconst {\n TimelineWrapper,\n TimelineBox,\n TimelineTime,\n TimelineDivider: TimelineDividerStyled,\n TimelineDividers,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n} = TimelineStyled;\n\nexport {\n // Channel\n ChannelBox,\n ChannelLogo,\n // CurrentTime\n CurrentTimeBox,\n CurrentTimeContent,\n // Program\n ProgramBox,\n ProgramContent,\n ProgramFlex,\n ProgramStack,\n ProgramTitle,\n ProgramText,\n ProgramImage,\n ProgramResizeHandle,\n // Timeline\n TimelineWrapper,\n TimelineBox,\n TimelineWeekMonthBox,\n TimelineWeekMonthDate,\n TimelineTime,\n TimelineDividers,\n // Grid\n GridItem,\n GridDivider,\n};\n\nexport const TimelineDivider = TimelineDividerStyled;\n"],"names":["globalStyles","css","_templateObject","_taggedTemplateLiteralLoose","Layers","DAY_WIDTH","HOURS_IN_DAY","HOUR_IN_MINUTES","SECONDS_IN_MINUTE","TIMELINE_HEIGHT","TIMELINE_HEIGHT_MODERN_STYLE","TIMELINE_DIVIDERS","SIDEBAR_WIDTH","ITEM_HEIGHT","ITEM_OVERSCAN","DEBOUNCE_WAIT","DEBOUNCE_WAIT_MAX","LIVE_REFRESH_TIME","TIME_FORMAT","DEFAULT","DATE","DAY","DAY_DATE","MONTH","DAY_MONTH","BASE_DAY_MONTH","HOURS_MIN","BASE_HOURS_TIME","YEAR","OVERLAP_MODES","STACK","LAYER","TIMEZONE_MODES","UTC_TO_ZONED_TIME","omit","obj","result","_extends","_len","arguments","length","props","Array","_key","_i","_props","property","generateArray","num","fill","getOverlapProgramOptions","_ref","isVerticalMode","program","programOverlaps","layerOverlapLevel","overlapMode","data","position","linkedProgramOverlaps","channelUuid","programOverlapIndex","findIndex","element","id","overlapProgram","channelPosition","top","newTop","Math","abs","switchPosition","isOverlap","width","height","left","getProgramOptions","_ref2","overlap","rest","_objectWithoutPropertiesLoose","_excluded","enabled","_program$position","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","getDate","date","Date","getDayWidthResources","_ref3","dayWidth","startDate","endDate","hoursInDays","modeType","defaultOptions","hourWidth","numberOfMonths","numberOfHoursInDay","monthWidth","offsetStartHoursRange","startDateTime","endDateTime","console","error","endOfMonthTime","startOfMonth","addMonths","numberOfMonthInMonthMode","differenceInMonths","numberOfDaysInWeekMode","differenceInDays","dayWidthInWeekMode","floor","newDayWidthInWeekMode","reduce","acc","curr","diffInHours","newDayWidth","differenceInHours","startOfDay","convertDate","newDate","replace","toDate","getDayResources","_ref4","startDateFormat","format","endDateFormat","modeIncrementValue","diffDays","startToEndInterval","start","end","days","eachDayOfInterval","map","day","months","eachMonthOfInterval","dates","isTodayFns","isToday","some","currentDate","indexOf","numberOfDays","programPosition","generateUUID","generateRandomHex","characters","i","random","formatUUID","parts","substring","LayoutScreenCloneCache","setChannel","event","isChannel","updateLayoutScreenCloneElement","setLayoutScreenCloneElement","index","channels","deleteLayoutScreenCloneElement","resetLayoutScreenCloneElements","getChannelsContentHeight","channel","channelEpgIndexesCache","setChannelEpgIndexes","uuid","_ref$first","first","_ref$last","last","getChannelEpgIndexes","channelsGroupTreeCache","setChannelGroupTree","isOpen","groupTree","setChannelGroupTreeNestedChildren","nestedChildUuid","nestedChildren","concat","_channel$nestedChildr","getChannelsGroupTree","timezoneOptionsCache","zone","mode","setTimezoneOptionsCache","getTimezoneOptionsCache","getNewDateTimeTz","timezone","zonedTime","utcToZonedTime","getTime","getNewDateTz","formatTz","formatTime","formattedZonedTime","tzFormat","timeZone","fnsFormat","zonedDateTimeToUtc","zonedTimeToUtc","getItemDiffWidth","diff","getPositionX","since","till","isTomorrow","isYesterday","diffTime","differenceInMinutes","roundToMinutes","getChannelPosition","channelIndex","itemHeight","getProgramPosition","item","formatTimeTz","isYesterdayTime","edgeEnd","getProgramPositionWithDayHours","find","includes","diffHours","diffLeft","getConvertedPrograms","isOverlapEnabled","programChannelMapKey","next","arr","_arr","_arr2","_channels$channelInde","_channels$channelInde2","parentChannelUuid","_channels$channelInde3","programData","newPositionTop","newPosition","getConvertedChannels","channelMapKey","channelOverlapsCount","isStackMode","isLayerMode","channelsGroupTree","channelGroupTree","largestSizeLength","overlapsLength","push","getItemVisibility","scrollY","scrollX","containerHeight","containerWidth","itemOverscan","overlapsCount","_overlapsCount","getSidebarItemVisibility","_ref5","getTimelineItemVisibility","_ref6","setUpdatedLayoutItem","endOfDay","addDays","title","image","getLiveStatus","nowTime","sinceTime","sinceTill","roundToNearestMinutes","isFutureTime","dateTime","now","getTimeRangeDates","endDateValue","getFormattedWeekMonthDate","isBaseTimeFormat","type","style","dateFormat","getNumberOfHoursInDays","customHoursInDays","itemsDiffInHours","prevItem","startTimeHour","endTimeHour","startTime","Number","endTime","prevItemDiffInHours","getTodayHoursInDays","filter","isWithinInterval","getHoursInDaysPositionX","sidebarWidth","cb","positionX","generateDayHours","dayIndex","from","_","timeFormat","parse","generateTimelineSlots","options","generateWeekTimelineSlots","generateMonthTimelineSlots","getDayHoursTimeSlots","getDayTimeSlots","slots","hours","hoursInDay","sliced","slice","getTimelineMonthsWidth","weekDayWidth","_months$reduce","month","daysInMonth","getDaysInMonth","offsetLeft","getTimelineHeight","timelineHeight","getLineStyles","isTimeline","lineStyles","getChannelVerticalPosition","getChannelGroupTreeProps","isFirstNestedChild","isLastNestedChild","getChanelGroupTree","_channelsGroupTree","channelNestedGroupTree","_channel$parentChanne","_channelNestedGroupTr","_channelNestedGroupTr2","at","getOverlapCount","overlapArray","sinceB","tillB","overlapCount","_iterator","_createForOfIteratorHelperLoose","_step","done","otherProgram","value","sinceOther","tillOther","overlapPosition","newChannelOverlapsCount","levelTop","overlapsOnLevel","overlapsOnLevelUp","_iterator2","_step2","_program","overlapTimes","newHeight","isOverlapStackMode","newProgram","overlapTop","setChannelOverlapCount","programA","channelOverlaps","getOverlaps","itemOverlaps","programs","overlaps","_iterator3","_step3","_loop","_programA$data","sinceA","tillA","_programA$data2","_loop2","programB","j","elementA","elementB","isSameChannelUuid","overlapLinkedId","isElementAExist","el","isElementBExist","channelOverlapsLength","_getOverlapProgramOpt","newProgramA","_getOverlapProgramOpt2","newProgramB","_getOverlapProgramOpt3","getChannelProgramSliced","Map","_iterator4","_step4","has","set","get","Object","fromEntries","getChannelEpdIndexesProgramSliced","dndChannelUuidIndex","_Object$keys","keys","_overlaps$next","_overlaps$next2","undefined","channelEpgIndexes","slicedPrograms","checkOverlaps","isMultirowsDnd","dndChannelUuid","_extends2","slicedOverlapsPrograms","_Object$keys2","getFormattedDndDate","newSince","newTill","utcDateSince","utcDateTill","toISOString","getResizeTill","initialWidth","calculateItemDragSinceTill","initialPositionLeft","minDiff","tillDiffHours","addMinutes","getDefaultDragProps","positionLeft","currentPositionX","dndEvents","isDragging","getConvertedGridItems","dayWidthResources","daysResources","isMonthMode","numberOfSlots","monthsWidth","getGridItemPosition","flatMap","getClickGridItemData","isDrop","_ref2$isDrop","grid","timelineDividers","dataAttributes","isDayMode","timeSlots","itemClickProps","gridItemProps","getDividerGridProps","onGridItemDrop","onGridItemClick","dayTimeSlots","time","sinceTimeInHours","tillTimeInHours","newSinceMin","newTillMin","newNextTill","singleDayWidth","Container","_styled","process","env","NODE_ENV","target","label","Wrapper","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ScrollBox","theme","primary","isRTL","scrollbar","thumb","bg","white","_ref7","_ref8","_ref9","_ref10","Box","_ref11","_ref11$top","_ref12","EpgCornerBox","_ref13","_ref13$left","Content","_ref14","isSidebar","_ref15","contentHeight","_ref16","_ref17","_ref18","LayoutBg","_ref19","_ref20","_ref21","_ref22","bottom","_templateObject2","_templateObject3","Sidebar","ChannelWrapper","ChannelLogo","ProgramContent","Program","gradient","blue","isLive","ProgramFlex","Elipsis","ProgramTitle","grey","ProgramText","text","ProgramImage","ProgramStack","ProgramBox","isResizing","ProgramResizeHandle","green","isResize","TimelineTime","isWeekMonthMode","isNewDay","teal","TimelineWeekMonthDate","styleType","TimelineDividers","_templateObject4","TimelineDivider","timeline","divider","_templateObject5","TimelineWrapper","_templateObject6","Timeline","_templateObject7","_templateObject8","TimelineBox","_templateObject9","_templateObject10","_templateObject11","isCurrentTime","isTodayInHoursInDays","areHoursInDays","typeNumberDefault","typeNumberInHoursDays","typeNumber","TimelineWeekMonthBox","_templateObject12","_templateObject13","_templateObject14","LineBox","zIndex","moveLeft","animate","keyframes","right","loader","Loader","Shape","color","marginRight","transition","duration","_transition$ease","ease","_transition$delay","delay","boxStyles","_temp","CurrentTimeBox","CurrentTimeContent","AreaFiled","isClickable","Area","AreaBg","AreaAnnotation","_ref2$isLeft","isLeft","GridContainer","GridWrapper","GridItem","isHoverHighlight","isDragOver","highlight","isItemClickable","GridDivider","purple","pink","border","useLayout","isInitialScrollToNow","initialScrollPositions","channelsNumber","useIsomorphicEffect","containerRef","React","useRef","scrollBoxRef","_React$useState","useState","setScrollY","_React$useState2","setScrollX","_React$useState3","layoutWidth","setLayoutWidth","_React$useState4","layoutHeight","setLayoutHeight","scrollBoxInnerHeight","_scrollBoxRef$current","current","scrollHeight","initialScrollPositionsSerialized","JSON","stringify","handleScrollDebounced","useDebouncedCallback","y","x","maxWait","handleOnScroll","useCallback","e","scrollTop","scrollLeft","hoursInDaysSerialized","useMemo","handleOnScrollToNow","_containerRef$current","clientWidth","scrollNow","handleScrollToInitialPositions","isInitialScrollPosition","_initialScrollPositio","_initialScrollPositio2","scrollTo","behavior","handleOnScrollTop","handleOnScrollRight","handleOnScrollLeft","handleResizeDebounced","container","handleCheckIsLayoutBottom","offset","_scrollBoxRef$current2","scrollWidth","_scrollBoxRef$current3","clientHeight","handleCheckIsLayoutRight","_scrollBoxRef$current4","_scrollBoxRef$current5","addEventListener","removeEventListener","isLayoutBottom","isLayoutRight","onScroll","onScrollToNow","onScrollTop","onScrollLeft","onScrollRight","defaultStartDateTime","startOfToday","defaultMode","defaultTimezone","defaultOverlap","defaultGrid","hoverHighlight","defaultDnd","useEpg","_props$isVerticalMode","_props$isRTL","_props$isResize","_props$isBaseTimeForm","_props$isSidebar","_props$isTimeline","_props$isLine","isLine","_props$isCurrentTime","_props$isInitialScrol","channelsEpg","epg","_props$startDate","startDateInput","_props$endDate","endDateInput","_props$hoursInDays","_props$initialScrollP","_props$liveRefreshTim","liveRefreshTime","_props$timelineDivide","snap","_props$mode","customMode","_props$overlap","customOverlap","_props$timezone","customTimezone","_props$areas","areas","_props$grid","_props$dnd","dnd","customTheme","_props$dayWidth","customDayWidth","_props$sidebarWidth","_props$timelineHeight","customTimelineHeight","_props$itemHeight","_props$itemOverscan","_props$channelMapKey","_props$programChannel","_getTimeRangeDates","serializedHoursInDays","_React$useMemo","_React$useMemo2","dayWidthResourcesProps","_excluded2","_React$useReducer","useReducer","update","setForceUpdate","_React$useReducer2","updateChannels","setForceChannelsUpdate","setDndChannelUuid","newOverlaps","setNewOverlaps","setOverlaps","setChannelOverlapsCount","timezoneSerialized","_useLayout","layoutProps","_excluded3","channelsEpgSerialized","channelOverlapsCountSerialized","channelsSerialized","overlapsSerialized","_React$useMemo3","_overlaps","_checkOverlaps","itemsOverlaps","prev","gridItems","defaultTheme","isProgramVisible","isChannelVisible","isTimelineVisible","dndOnSuccessCb","onDnDSuccess","resizeMouseUp","newTime","dragMouseUp","_asyncToGenerator","_regeneratorRuntime","mark","_callee","checkChannelTopOutRange","checkChannelTopInRange","isChannelTopInRange","isChannelTopOutRange","newChannel","newChannelRange","newChannelEpgIndexes","wrap","_callee$","_context","elementChannel","stop","_x","apply","handleGetLayoutData","events","handleOpenChannelGroupTree","handleGetDropItemData","getEpgProps","ref","getLayoutProps","openChannelGroupTree","getLayoutData","getDropItemData","useInterval","callback","savedCallback","setInterval","clearInterval","useIsTouchDevice","isMobile","setIsMobile","checkDevice","iOS","test","navigator","userAgent","document","androidOrWebOS","isMobileDevice","isTouchScreen","maxTouchPoints","matchMedia","matches","useDrag","isDndEnabled","isDndMutlirows","initialPosition","dndSnapX","_props$dndSnapY","dndSnapY","elementRef","mouseUpCb","dndMouseUpCb","isClicked","isMouseMove","isTouchDevice","_useState","setIsDragging","_useState2","isPreventScroll","setIsPreventScroll","_useState3","setPosition","_useState4","startY","lastY","startX","lastX","coords","setCoords","handleMouseDown","stopPropagation","touches","clientY","clientX","handleMouseClick","preventDefault","handleMouseUp","_elementRef$current","_elementRef$current2","_elementRef$current3","_elementRef$current4","optionsYX","isDndMouseUpSuccess","optionsY","_isDndMouseUpSuccess","offsetTop","initialPositionTop","sent","setTimeout","initialPositionSerialized","handleMouseMove","offsetWidth","_elementRef$current5","offsetHeight","_elementRef$current6","_elementRef$current7","_elementRef$current8","nextYValue","nextY","round","nextX","nextXSnap","checkTopRange","isOutTopRange","nextXValue","nextYSnap","mouseMoveEvent","mouseUpEvent","passive","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","onClick","useResize","snapX","setIsResizing","isResizingLeft","setIsResizingLeft","isResizingRight","setIsResizingRight","_useState5","mouseOffsetX","setMouseOffsetX","_useState6","_useState7","pageY","pageX","elementRect","getBoundingClientRect","snapYTop","newHeightTop","newHeightBottom","isInLeftLayout","isInRightLayout","snapXLeft","newWidthLeft","newWidthRight","getEvents","resizeEvents","resources","eventsLeft","eventsRight","useProgram","_ref$isVerticalMode","_ref$isRTL","_ref$isResize","_ref$minWidth","minWidth","setIsLive","resizeOptions","_useResize","resizeCurrentPositionX","resizeWidth","_dnd$onDnDMouseUp","onDnDMouseUp","dragOptions","_useDrag","formatType","set12HoursTimeFormat","getRTLSinceTime","getRTLTillTime","status","isMinWidth","getMouseEventTempTime","_calculateItemDragSin","formatTempTime","toLowerCase","getMouseEvents","isMouseEvent","useTimeline","renderCurrentTime","baseDate","baseFormat","formatWeekMonthDate","getDayMonthName","getCurrentTimeProps","getTimelineProps","isWeekMode","dividers","useLine","showLine","setShowLine","getInitialState","setPositionX","liveIntervalTime","isDayEnd","isScrollX","step","positionOffset","idCurrentDay","newPositionX","useCurrentTime","baseTime","handleGetCurrentTimeStyles","_boxStyles","styleWidth","commonStyles","getCurrentTimeStyles","useGrid","handleItemClick","handleItemDrop","onItemClick","onItemDrop","useGridExternalDnD","dropAreaRef","setIsDragOver","handleDrop","droppedItemId","dataTransfer","getData","droppedItem","getElementById","attributes","attribute","startsWith","handleDragEnter","handleDragLeave","onDrop","onDragEnter","onDragLeave","GridStyled","GridDividerItem","dividerProps","restProps","_useGridExternalDnD","className","key","GridCellItem","renderGridCell","_channelOverlapsCount","isVisible","gridItemClickProps","gridItemDnDProps","gridDividerProps","timelineDividerArray","Grid","_useGrid","renderGridItem","EpgStyled","Layout","forwardRef","onLayoutBgClick","renderProgram","renderChannel","renderTimeline","renderLine","channelsLength","programsOverlapsLength","programOverlapsSerialized","showAreas","isFuture","renderPrograms","_data$fixedVisibility","fixedVisibility","renderTopbar","timeProps","Line","Areas","Channels","ProgramStyled","_useProgram","handleOnContentClick","tillTime","tempTime","src","alt","ChannelsStyled","renderChannels","channelWithPosition","groupEventProps","onOpenGroupTree","Channel","ChannelStyled","logo","_onOpenGroupTree","CurrentTimeStyled","CurrentTime","_useLine","_useCurrentTime","TimelineStyled","_useTimeline","renderDay","_getTime","renderDividers","renderWeekMonth","isModernStyle","renderTimelineItems","LineStyled","LoaderStyled","Element","display","justifyContent","marginBottom","getAreasFields","area","areaStartDate","areaEndDate","_area$endDate","intervalOptions","isStartAreaDateValid","showArea","areaFieldStyles","areaBgStyles","useAreas","areasSerialized","AreaStyled","_useAreas","renderAreaAnnotation","renderArea","annotations","_props$areaBgStyles","annotationProps","_annotations$styles","textStart","textEnd","Fragment","Epg","children","customGlobalStyles","_ref$isSidebar","_ref$isTimeline","_ref$isLoading","isLoading","LoaderComponent","renderLoader","epgGlobalStyles","blankSpaceStyles","ThemeProvider","Global","WrapperDnD","gridElement","querySelector","onDragOver","onDragLeaveCapture","ChannelBox","TimelineDividerStyled"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c702e01 --- /dev/null +++ b/package.json @@ -0,0 +1,96 @@ +{ + "name": "@nessprim/planby-pro", + "author": "Karol Kozer", + "version": "3.10.0", + "license": "Custom License", + "repository": { + "type": "git", + "url": "https://github.com/Nessprim/planby-pro" + }, + "publishConfig": { + "registry": "https://npm.pkg.github.com" + }, + "homepage": "https://planby.app", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/planby" + }, + "main": "dist/index.js", + "typings": "dist/index.d.ts", + "files": [ + "dist" + ], + "engines": { + "node": ">=10" + }, + "scripts": { + "start": "tsdx watch", + "build": "tsdx build", + "test": "tsdx test --passWithNoTests", + "lint": "tsdx lint", + "prepare": "tsdx build && bundlewatch", + "size": "bundlewatch", + "test:watch": "jest --watchAll" + }, + "peerDependencies": { + "react": ">=16" + }, + "husky": { + "hooks": { + "pre-commit": "tsdx lint" + } + }, + "prettier": { + "printWidth": 80, + "semi": true, + "singleQuote": true, + "trailingComma": "es5" + }, + "module": "dist/planby-pro.esm.js", + "bundlewatch": { + "files": [ + { + "path": "dist/planby-pro.cjs.production.min.js", + "maxSize": "26kB" + }, + { + "path": "dist/planby-pro.esm.js", + "maxSize": "56kB" + } + ] + }, + "dependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "date-fns": "^2.28.0", + "date-fns-tz": "^2.0.0", + "use-debounce": "^7.0.1" + }, + "keywords": [ + "epg", + "schedule", + "harmongram", + "react", + "hooks", + "electronic", + "program", + "guide", + "timeline", + "events" + ], + "devDependencies": { + "@faker-js/faker": "^6.1.2", + "@size-limit/preset-small-lib": "^7.0.8", + "@types/jest": "^27.4.0", + "@types/react": "^17.0.38", + "babel-plugin-jsx-remove-data-test-id": "^3.0.0", + "bundlewatch": "^0.3.3", + "husky": "^7.0.4", + "jest": "^27.5.1", + "size-limit": "^7.0.8", + "ts-jest": "^27.1.3", + "tsdx": "^0.14.1", + "tslib": "^2.3.1", + "typescript": "^4.6.3" + } +}