@zealicsolutions/web-ui 1.0.44 → 1.0.45-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/cjs/containers/types/moleculeTypes.d.ts +16 -10
  2. package/dist/cjs/contexts/hooks/index.d.ts +6 -0
  3. package/dist/cjs/contexts/hooks/useButtonActionsContext.d.ts +1 -0
  4. package/dist/cjs/contexts/hooks/useFormStepContext.d.ts +1 -0
  5. package/dist/cjs/contexts/hooks/useMlrRichTextViewerContext.d.ts +1 -0
  6. package/dist/cjs/contexts/hooks/useOrganismContext.d.ts +1 -0
  7. package/dist/cjs/contexts/hooks/useStateContext.d.ts +1 -0
  8. package/dist/cjs/contexts/index.d.ts +3 -12
  9. package/dist/cjs/index.js +1588 -1588
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  12. package/dist/cjs/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  13. package/dist/cjs/molecules/Select/Select.d.ts +3 -2
  14. package/dist/cjs/molecules/Stepper/Stepper.stories.d.ts +5 -5
  15. package/dist/cjs/molecules/Tabs/Tabs.stories.d.ts +5 -5
  16. package/dist/cjs/molecules/Visit/VisitMolecule.d.ts +41 -0
  17. package/dist/cjs/typescript.d.ts +0 -3
  18. package/dist/esm/components/Avatar/Avatar.js +1 -1
  19. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  20. package/dist/esm/components/Buttons/IconButton.js +1 -1
  21. package/dist/esm/components/Buttons/IconButton.js.map +1 -1
  22. package/dist/esm/components/Circle/Circle.js +1 -1
  23. package/dist/esm/components/Circle/Circle.js.map +1 -1
  24. package/dist/esm/components/RichTextViewer/RichTextViewer.js +1 -1
  25. package/dist/esm/components/RichTextViewer/RichTextViewer.js.map +1 -1
  26. package/dist/esm/components/RichTextViewer/components/Leaf.js +1 -1
  27. package/dist/esm/components/RichTextViewer/components/Leaf.js.map +1 -1
  28. package/dist/esm/components/Toast/ToastContent.js +1 -1
  29. package/dist/esm/components/Toast/ToastContent.js.map +1 -1
  30. package/dist/esm/containers/Container.js +1 -1
  31. package/dist/esm/containers/Container.js.map +1 -1
  32. package/dist/esm/containers/ContainerStoriesComponent.js +1 -1
  33. package/dist/esm/containers/ContainerStoriesComponent.js.map +1 -1
  34. package/dist/esm/containers/FormContainer.js +1 -1
  35. package/dist/esm/containers/FormContainer.js.map +1 -1
  36. package/dist/esm/containers/FormStepContainer.js +1 -1
  37. package/dist/esm/containers/FormStepContainer.js.map +1 -1
  38. package/dist/esm/containers/OrganismItem.js +1 -1
  39. package/dist/esm/containers/OrganismItem.js.map +1 -1
  40. package/dist/esm/containers/hooks/useStateListenerValue.js +1 -1
  41. package/dist/esm/containers/hooks/useStateListenerValue.js.map +1 -1
  42. package/dist/esm/containers/hooks/useStateModifierHandler.js +1 -1
  43. package/dist/esm/containers/hooks/useStateModifierHandler.js.map +1 -1
  44. package/dist/esm/containers/types/moleculeTypes.d.ts +16 -10
  45. package/dist/esm/contexts/ButtonActionsContext/ButtonActionsContextProvider.js +1 -1
  46. package/dist/esm/contexts/ButtonActionsContext/ButtonActionsContextProvider.js.map +1 -1
  47. package/dist/esm/contexts/FormStepContext/FormStepContextProvider.js +1 -1
  48. package/dist/esm/contexts/FormStepContext/FormStepContextProvider.js.map +1 -1
  49. package/dist/esm/contexts/hooks/index.d.ts +6 -0
  50. package/dist/esm/contexts/hooks/useButtonActionsContext.d.ts +1 -0
  51. package/dist/esm/contexts/hooks/useButtonActionsContext.js +2 -0
  52. package/dist/esm/contexts/hooks/useButtonActionsContext.js.map +1 -0
  53. package/dist/esm/contexts/hooks/useFormStepContext.d.ts +1 -0
  54. package/dist/esm/contexts/hooks/useFormStepContext.js +2 -0
  55. package/dist/esm/contexts/hooks/useFormStepContext.js.map +1 -0
  56. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.d.ts +1 -0
  57. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.js +2 -0
  58. package/dist/esm/contexts/hooks/useMlrRichTextViewerContext.js.map +1 -0
  59. package/dist/esm/contexts/hooks/useOrganismContext.d.ts +1 -0
  60. package/dist/esm/contexts/hooks/useOrganismContext.js +2 -0
  61. package/dist/esm/contexts/hooks/useOrganismContext.js.map +1 -0
  62. package/dist/esm/contexts/hooks/useStateContext.d.ts +1 -0
  63. package/dist/esm/contexts/hooks/useStateContext.js +2 -0
  64. package/dist/esm/contexts/hooks/useStateContext.js.map +1 -0
  65. package/dist/esm/contexts/index.d.ts +3 -12
  66. package/dist/esm/helpers/utils.js +1 -1
  67. package/dist/esm/helpers/utils.js.map +1 -1
  68. package/dist/esm/index.js +1 -1
  69. package/dist/esm/molecules/Accordion/Accordion.js +1 -1
  70. package/dist/esm/molecules/Accordion/Accordion.js.map +1 -1
  71. package/dist/esm/molecules/Avatar/Avatar.js +1 -1
  72. package/dist/esm/molecules/Avatar/Avatar.js.map +1 -1
  73. package/dist/esm/molecules/BaseMolecule.js +1 -1
  74. package/dist/esm/molecules/BaseMolecule.js.map +1 -1
  75. package/dist/esm/molecules/BasicTextField/BasicTextField.js +1 -1
  76. package/dist/esm/molecules/BasicTextField/BasicTextField.js.map +1 -1
  77. package/dist/esm/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  78. package/dist/esm/molecules/Calendar/CalendarMolecule.js +2 -0
  79. package/dist/esm/molecules/Calendar/CalendarMolecule.js.map +1 -0
  80. package/dist/esm/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  81. package/dist/esm/molecules/Checklist/Checklist.js +1 -1
  82. package/dist/esm/molecules/Checklist/Checklist.js.map +1 -1
  83. package/dist/esm/molecules/Consent/ConsentCapture.js +1 -1
  84. package/dist/esm/molecules/Consent/ConsentCapture.js.map +1 -1
  85. package/dist/esm/molecules/Consent/ConsentMolecule.js +1 -1
  86. package/dist/esm/molecules/Consent/ConsentMolecule.js.map +1 -1
  87. package/dist/esm/molecules/CurrencyInputtField/CurrencyInputField.js +1 -1
  88. package/dist/esm/molecules/CurrencyInputtField/CurrencyInputField.js.map +1 -1
  89. package/dist/esm/molecules/CustomValidation/CustomValidation.js +1 -1
  90. package/dist/esm/molecules/CustomValidation/CustomValidation.js.map +1 -1
  91. package/dist/esm/molecules/DatePicker/DatePicker.js +1 -1
  92. package/dist/esm/molecules/DatePicker/DatePicker.js.map +1 -1
  93. package/dist/esm/molecules/Drawer/styles.js +1 -1
  94. package/dist/esm/molecules/Drawer/styles.js.map +1 -1
  95. package/dist/esm/molecules/EmailInputField/EmailInputField.js +1 -1
  96. package/dist/esm/molecules/EmailInputField/EmailInputField.js.map +1 -1
  97. package/dist/esm/molecules/Menu/Menu.js +1 -1
  98. package/dist/esm/molecules/Menu/Menu.js.map +1 -1
  99. package/dist/esm/molecules/NumericInputField/NumericInputField.js +1 -1
  100. package/dist/esm/molecules/NumericInputField/NumericInputField.js.map +1 -1
  101. package/dist/esm/molecules/PasswordSetup/PasswordSetup.js +1 -1
  102. package/dist/esm/molecules/PasswordSetup/PasswordSetup.js.map +1 -1
  103. package/dist/esm/molecules/PdfDocument/PdfDocument.js +1 -1
  104. package/dist/esm/molecules/PdfDocument/PdfDocument.js.map +1 -1
  105. package/dist/esm/molecules/PhoneNumberInputField/PhoneNumberInputField.js +1 -1
  106. package/dist/esm/molecules/PhoneNumberInputField/PhoneNumberInputField.js.map +1 -1
  107. package/dist/esm/molecules/Select/Select.d.ts +3 -2
  108. package/dist/esm/molecules/Select/Select.js +1 -1
  109. package/dist/esm/molecules/Select/Select.js.map +1 -1
  110. package/dist/esm/molecules/Slider/Slider.js +1 -1
  111. package/dist/esm/molecules/Slider/Slider.js.map +1 -1
  112. package/dist/esm/molecules/Stepper/Stepper.js +1 -1
  113. package/dist/esm/molecules/Stepper/Stepper.js.map +1 -1
  114. package/dist/esm/molecules/Stepper/Stepper.stories.d.ts +5 -5
  115. package/dist/esm/molecules/Switch/Switch.js +1 -1
  116. package/dist/esm/molecules/Switch/Switch.js.map +1 -1
  117. package/dist/esm/molecules/Tabs/Tabs.js +1 -1
  118. package/dist/esm/molecules/Tabs/Tabs.js.map +1 -1
  119. package/dist/esm/molecules/Tabs/Tabs.stories.d.ts +5 -5
  120. package/dist/esm/molecules/Visit/VisitMolecule.d.ts +41 -0
  121. package/dist/esm/molecules/Visit/VisitMolecule.js +2 -0
  122. package/dist/esm/molecules/Visit/VisitMolecule.js.map +1 -0
  123. package/dist/esm/molecules/ZealUIModal/ZealUIModal.js +1 -1
  124. package/dist/esm/molecules/ZealUIModal/ZealUIModal.js.map +1 -1
  125. package/dist/esm/node_modules/@fullcalendar/core/index.js +2 -0
  126. package/dist/esm/node_modules/@fullcalendar/core/index.js.map +1 -0
  127. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js +2 -0
  128. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js.map +1 -0
  129. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js +2 -0
  130. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js.map +1 -0
  131. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js +2 -0
  132. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js.map +1 -0
  133. package/dist/esm/node_modules/@fullcalendar/interaction/index.js +2 -0
  134. package/dist/esm/node_modules/@fullcalendar/interaction/index.js.map +1 -0
  135. package/dist/esm/node_modules/@fullcalendar/list/index.js +2 -0
  136. package/dist/esm/node_modules/@fullcalendar/list/index.js.map +1 -0
  137. package/dist/esm/node_modules/@fullcalendar/list/internal.js +2 -0
  138. package/dist/esm/node_modules/@fullcalendar/list/internal.js.map +1 -0
  139. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js +2 -0
  140. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js.map +1 -0
  141. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js +2 -0
  142. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js.map +1 -0
  143. package/dist/esm/node_modules/@fullcalendar/resource/index.js +2 -0
  144. package/dist/esm/node_modules/@fullcalendar/resource/index.js.map +1 -0
  145. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js +2 -0
  146. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js.map +1 -0
  147. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js +2 -0
  148. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js.map +1 -0
  149. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js +2 -0
  150. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js.map +1 -0
  151. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js +2 -0
  152. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js.map +1 -0
  153. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js +2 -0
  154. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js.map +1 -0
  155. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js +2 -0
  156. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js.map +1 -0
  157. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js +2 -0
  158. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js.map +1 -0
  159. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js +2 -0
  160. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js.map +1 -0
  161. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js +2 -0
  162. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js.map +1 -0
  163. package/dist/esm/node_modules/@fullcalendar/timeline/index.js +2 -0
  164. package/dist/esm/node_modules/@fullcalendar/timeline/index.js.map +1 -0
  165. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js +2 -0
  166. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js.map +1 -0
  167. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js +2 -0
  168. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js.map +1 -0
  169. package/dist/esm/node_modules/preact/dist/preact.mjs.js +2 -0
  170. package/dist/esm/node_modules/preact/dist/preact.mjs.js.map +1 -0
  171. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js +2 -0
  172. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js.map +1 -0
  173. package/dist/esm/node_modules/react-slick/lib/track.js +1 -1
  174. package/dist/esm/typescript.d.ts +0 -3
  175. package/dist/index.d.ts +139 -91
  176. package/package.json +11 -3
  177. package/dist/cjs/contexts/ApiContext/ApiContext.d.ts +0 -12
  178. package/dist/cjs/contexts/ApiContext/ApiProvider.d.ts +0 -6
  179. package/dist/cjs/contexts/ApiContext/queries/index.d.ts +0 -1
  180. package/dist/cjs/contexts/ApiContext/queries/queryKeys.d.ts +0 -3
  181. package/dist/cjs/contexts/ApiContext/queries/useDataModelFieldOptions.d.ts +0 -5
  182. package/dist/cjs/contexts/ApiContext/useApi.d.ts +0 -2
  183. package/dist/cjs/contexts/ButtonActionsContext/useButtonActionsContext.d.ts +0 -1
  184. package/dist/cjs/contexts/FormStepContext/useFormStepContext.d.ts +0 -1
  185. package/dist/cjs/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.d.ts +0 -1
  186. package/dist/cjs/contexts/OrganismContext/useOrganismContext.d.ts +0 -1
  187. package/dist/cjs/contexts/StateContext/useStateContext.d.ts +0 -1
  188. package/dist/esm/contexts/AccountButtonContext/useAccountButtonContext.js +0 -2
  189. package/dist/esm/contexts/AccountButtonContext/useAccountButtonContext.js.map +0 -1
  190. package/dist/esm/contexts/ApiContext/ApiContext.d.ts +0 -12
  191. package/dist/esm/contexts/ApiContext/ApiContext.js +0 -2
  192. package/dist/esm/contexts/ApiContext/ApiContext.js.map +0 -1
  193. package/dist/esm/contexts/ApiContext/ApiProvider.d.ts +0 -6
  194. package/dist/esm/contexts/ApiContext/ApiProvider.js +0 -2
  195. package/dist/esm/contexts/ApiContext/ApiProvider.js.map +0 -1
  196. package/dist/esm/contexts/ApiContext/queries/index.d.ts +0 -1
  197. package/dist/esm/contexts/ApiContext/queries/queryKeys.d.ts +0 -3
  198. package/dist/esm/contexts/ApiContext/queries/queryKeys.js +0 -2
  199. package/dist/esm/contexts/ApiContext/queries/queryKeys.js.map +0 -1
  200. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.d.ts +0 -5
  201. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.js +0 -2
  202. package/dist/esm/contexts/ApiContext/queries/useDataModelFieldOptions.js.map +0 -1
  203. package/dist/esm/contexts/ApiContext/useApi.d.ts +0 -2
  204. package/dist/esm/contexts/ApiContext/useApi.js +0 -2
  205. package/dist/esm/contexts/ApiContext/useApi.js.map +0 -1
  206. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.d.ts +0 -1
  207. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.js +0 -2
  208. package/dist/esm/contexts/ButtonActionsContext/useButtonActionsContext.js.map +0 -1
  209. package/dist/esm/contexts/FormStepContext/useFormStepContext.d.ts +0 -1
  210. package/dist/esm/contexts/FormStepContext/useFormStepContext.js +0 -2
  211. package/dist/esm/contexts/FormStepContext/useFormStepContext.js.map +0 -1
  212. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.d.ts +0 -1
  213. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.js +0 -2
  214. package/dist/esm/contexts/MlrRichTextViewerContext/useMlrRichTextViewerContext.js.map +0 -1
  215. package/dist/esm/contexts/OrganismContext/useOrganismContext.d.ts +0 -1
  216. package/dist/esm/contexts/OrganismContext/useOrganismContext.js +0 -2
  217. package/dist/esm/contexts/OrganismContext/useOrganismContext.js.map +0 -1
  218. package/dist/esm/contexts/StateContext/useStateContext.d.ts +0 -1
  219. package/dist/esm/contexts/StateContext/useStateContext.js +0 -2
  220. package/dist/esm/contexts/StateContext/useStateContext.js.map +0 -1
  221. /package/dist/cjs/contexts/{AccountButtonContext → hooks}/useAccountButtonContext.d.ts +0 -0
  222. /package/dist/esm/contexts/{AccountButtonContext → hooks}/useAccountButtonContext.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sources":["../../../../../node_modules/@fullcalendar/resource-timeline/internal.js"],"sourcesContent":["import { BaseComponent, memoizeObjArg, ContentContainer, isArraysEqual, RefMap, findElements, elementClosest, PositionCache, DateComponent, memoize, greatestDurationDenominator, NowTimer, NowIndicatorContainer, config, getStickyHeaderDates, getStickyFooterScrollbar, renderScrollShim, ViewContainer, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment, createRef } from '@fullcalendar/core/preact.js';\nimport { TimelineLane, TimelineLaneSlicer, TimelineSlats, TimelineLaneBg, coordToCss, buildTimelineDateProfile, buildSlatCols, TimelineHeader } from '@fullcalendar/timeline/internal.js';\nimport { buildResourceFields, getPublicId, isGroupsEqual, refineRenderProps as refineRenderProps$1, ResourceSplitter, buildRowNodes, DEFAULT_RESOURCE_ORDER } from '@fullcalendar/resource/internal.js';\nimport { ResourceApi } from '@fullcalendar/resource/index.js';\nimport { ScrollGrid } from '@fullcalendar/scrollgrid/internal.js';\n\n/*\nRenders the DOM responsible for the subrow expander area,\nas well as the space before it (used to align expanders of similar depths)\n*/\nfunction ExpanderIcon({ depth, hasChildren, isExpanded, onExpanderClick }) {\n let nodes = [];\n for (let i = 0; i < depth; i += 1) {\n nodes.push(createElement(\"span\", { className: \"fc-icon\" }));\n }\n let iconClassNames = ['fc-icon'];\n if (hasChildren) {\n if (isExpanded) {\n iconClassNames.push('fc-icon-minus-square');\n }\n else {\n iconClassNames.push('fc-icon-plus-square');\n }\n }\n nodes.push(createElement(\"span\", { className: 'fc-datagrid-expander' + (hasChildren ? '' : ' fc-datagrid-expander-placeholder'), onClick: onExpanderClick },\n createElement(\"span\", { className: iconClassNames.join(' ') })));\n return createElement(Fragment, {}, ...nodes);\n}\n\n// worth making a PureComponent? (because of innerHeight)\nclass SpreadsheetIndividualCell extends BaseComponent {\n constructor() {\n super(...arguments);\n this.refineRenderProps = memoizeObjArg(refineRenderProps);\n this.onExpanderClick = (ev) => {\n let { props } = this;\n if (props.hasChildren) {\n this.context.dispatch({\n type: 'SET_RESOURCE_ENTITY_EXPANDED',\n id: props.resource.id,\n isExpanded: !props.isExpanded,\n });\n }\n };\n }\n render() {\n let { props, context } = this;\n let { colSpec } = props;\n let renderProps = this.refineRenderProps({\n resource: props.resource,\n fieldValue: props.fieldValue,\n context,\n });\n return (createElement(ContentContainer, { elTag: \"td\", elClasses: [\n 'fc-datagrid-cell',\n 'fc-resource',\n ], elAttrs: {\n role: 'gridcell',\n 'data-resource-id': props.resource.id,\n }, renderProps: renderProps, generatorName: colSpec.isMain ? 'resourceLabelContent' : undefined, customGenerator: colSpec.cellContent, defaultGenerator: renderResourceInner, classNameGenerator: colSpec.cellClassNames, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: props.innerHeight } },\n createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" },\n colSpec.isMain && (createElement(ExpanderIcon, { depth: props.depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, onExpanderClick: this.onExpanderClick })),\n createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] }))))));\n }\n}\nfunction renderResourceInner(renderProps) {\n return renderProps.fieldValue || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction refineRenderProps(input) {\n return {\n resource: new ResourceApi(input.context, input.resource),\n fieldValue: input.fieldValue,\n view: input.context.viewApi,\n };\n}\n\n// for VERTICAL cell grouping, in spreadsheet area\nclass SpreadsheetGroupCell extends BaseComponent {\n render() {\n let { props, context } = this;\n let { colSpec } = props;\n let renderProps = {\n groupValue: props.fieldValue,\n view: context.viewApi,\n };\n // a grouped cell. no data that is specific to this specific resource\n // `colSpec` is for the group. a GroupSpec :(\n return (createElement(ContentContainer, { elTag: \"td\", elClasses: [\n 'fc-datagrid-cell',\n 'fc-resource-group',\n ], elAttrs: {\n role: 'gridcell',\n rowSpan: props.rowSpan,\n }, renderProps: renderProps, generatorName: \"resourceGroupLabelContent\", customGenerator: colSpec.cellContent, defaultGenerator: renderGroupInner, classNameGenerator: colSpec.cellClassNames, didMount: colSpec.cellDidMount, willUnmount: colSpec.cellWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid\" },\n createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-datagrid-cell-cushion', 'fc-sticky'] })))));\n }\n}\nfunction renderGroupInner(renderProps) {\n return renderProps.groupValue || createElement(Fragment, null, \"\\u00A0\");\n}\n\nclass SpreadsheetRow extends BaseComponent {\n render() {\n let { props } = this;\n let { resource, rowSpans, depth } = props;\n let resourceFields = buildResourceFields(resource); // slightly inefficient. already done up the call stack\n return (createElement(\"tr\", { role: \"row\" }, props.colSpecs.map((colSpec, i) => {\n let rowSpan = rowSpans[i];\n if (rowSpan === 0) { // not responsible for group-based rows. VRowGroup is\n return null;\n }\n if (rowSpan == null) {\n rowSpan = 1;\n }\n let fieldValue = colSpec.field ? resourceFields[colSpec.field] :\n (resource.title || getPublicId(resource.id));\n if (rowSpan > 1) {\n return (createElement(SpreadsheetGroupCell, { key: i, colSpec: colSpec, fieldValue: fieldValue, rowSpan: rowSpan }));\n }\n return (createElement(SpreadsheetIndividualCell, { key: i, colSpec: colSpec, resource: resource, fieldValue: fieldValue, depth: depth, hasChildren: props.hasChildren, isExpanded: props.isExpanded, innerHeight: props.innerHeight }));\n })));\n }\n}\nSpreadsheetRow.addPropsEquality({\n rowSpans: isArraysEqual,\n});\n\n// for HORIZONTAL cell grouping, in spreadsheet area\nclass SpreadsheetGroupRow extends BaseComponent {\n constructor() {\n super(...arguments);\n this.innerInnerRef = createRef();\n this.onExpanderClick = () => {\n let { props } = this;\n this.context.dispatch({\n type: 'SET_RESOURCE_ENTITY_EXPANDED',\n id: props.id,\n isExpanded: !props.isExpanded,\n });\n };\n }\n render() {\n let { props, context } = this;\n let renderProps = { groupValue: props.group.value, view: context.viewApi };\n let spec = props.group.spec;\n return (createElement(\"tr\", { role: \"row\" },\n createElement(ContentContainer, { elTag: \"th\", elClasses: [\n 'fc-datagrid-cell',\n 'fc-resource-group',\n context.theme.getClass('tableCellShaded'),\n ], elAttrs: {\n // ARIA TODO: not really a columnheader\n // extremely tedious to make this aria-compliant,\n // to assign multiple headers to each cell\n // https://www.w3.org/WAI/tutorials/tables/multi-level/\n role: 'columnheader',\n scope: 'colgroup',\n colSpan: props.spreadsheetColCnt,\n }, renderProps: renderProps, generatorName: \"resourceGroupLabelContent\", customGenerator: spec.labelContent, defaultGenerator: renderCellInner, classNameGenerator: spec.labelClassNames, didMount: spec.labelDidMount, willUnmount: spec.labelWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: props.innerHeight } },\n createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\", ref: this.innerInnerRef },\n createElement(ExpanderIcon, { depth: 0, hasChildren: true, isExpanded: props.isExpanded, onExpanderClick: this.onExpanderClick }),\n createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] })))))));\n }\n}\nSpreadsheetGroupRow.addPropsEquality({\n group: isGroupsEqual,\n});\nfunction renderCellInner(renderProps) {\n return renderProps.groupValue || createElement(Fragment, null, \"\\u00A0\");\n}\n\nconst SPREADSHEET_COL_MIN_WIDTH = 20;\nclass SpreadsheetHeader extends BaseComponent {\n constructor() {\n super(...arguments);\n this.resizerElRefs = new RefMap(this._handleColResizerEl.bind(this));\n this.colDraggings = {};\n }\n render() {\n let { colSpecs, superHeaderRendering, rowInnerHeights } = this.props;\n let renderProps = { view: this.context.viewApi };\n let rowNodes = [];\n rowInnerHeights = rowInnerHeights.slice(); // copy, because we're gonna pop\n if (superHeaderRendering) {\n let rowInnerHeight = rowInnerHeights.shift();\n rowNodes.push(createElement(\"tr\", { key: \"row-super\", role: \"row\" },\n createElement(ContentContainer, { elTag: \"th\", elClasses: [\n 'fc-datagrid-cell',\n 'fc-datagrid-cell-super',\n ], elAttrs: {\n role: 'columnheader',\n scope: 'colgroup',\n colSpan: colSpecs.length,\n }, renderProps: renderProps, generatorName: \"resourceAreaHeaderContent\", customGenerator: superHeaderRendering.headerContent, defaultGenerator: superHeaderRendering.headerDefault, classNameGenerator: superHeaderRendering.headerClassNames, didMount: superHeaderRendering.headerDidMount, willUnmount: superHeaderRendering.headerWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: rowInnerHeight } },\n createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-datagrid-cell-cushion', 'fc-scrollgrid-sync-inner'] }))))));\n }\n let rowInnerHeight = rowInnerHeights.shift();\n rowNodes.push(createElement(\"tr\", { key: \"row\", role: \"row\" }, colSpecs.map((colSpec, i) => {\n let isLastCol = i === (colSpecs.length - 1);\n // need empty inner div for abs positioning for resizer\n return (createElement(ContentContainer, { key: i, elTag: \"th\", elClasses: ['fc-datagrid-cell'], elAttrs: { role: 'columnheader' }, renderProps: renderProps, generatorName: \"resourceAreaHeaderContent\", customGenerator: colSpec.headerContent, defaultGenerator: colSpec.headerDefault, classNameGenerator: colSpec.headerClassNames, didMount: colSpec.headerDidMount, willUnmount: colSpec.headerWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-datagrid-cell-frame\", style: { height: rowInnerHeight } },\n createElement(\"div\", { className: \"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner\" },\n colSpec.isMain && (createElement(\"span\", { className: \"fc-datagrid-expander fc-datagrid-expander-placeholder\" },\n createElement(\"span\", { className: \"fc-icon\" }))),\n createElement(InnerContent, { elTag: \"span\", elClasses: ['fc-datagrid-cell-main'] })),\n !isLastCol && (createElement(\"div\", { className: \"fc-datagrid-cell-resizer\", ref: this.resizerElRefs.createRef(i) }))))));\n })));\n return (createElement(Fragment, null, rowNodes));\n }\n _handleColResizerEl(resizerEl, index) {\n let { colDraggings } = this;\n if (!resizerEl) {\n let dragging = colDraggings[index];\n if (dragging) {\n dragging.destroy();\n delete colDraggings[index];\n }\n }\n else {\n let dragging = this.initColResizing(resizerEl, parseInt(index, 10));\n if (dragging) {\n colDraggings[index] = dragging;\n }\n }\n }\n initColResizing(resizerEl, index) {\n let { pluginHooks, isRtl } = this.context;\n let { onColWidthChange } = this.props;\n let ElementDraggingImpl = pluginHooks.elementDraggingImpl;\n if (ElementDraggingImpl) {\n let dragging = new ElementDraggingImpl(resizerEl);\n let startWidth; // of just the single column\n let currentWidths; // of all columns\n dragging.emitter.on('dragstart', () => {\n let allCells = findElements(elementClosest(resizerEl, 'tr'), 'th');\n currentWidths = allCells.map((cellEl) => (cellEl.getBoundingClientRect().width));\n startWidth = currentWidths[index];\n });\n dragging.emitter.on('dragmove', (pev) => {\n currentWidths[index] = Math.max(startWidth + pev.deltaX * (isRtl ? -1 : 1), SPREADSHEET_COL_MIN_WIDTH);\n if (onColWidthChange) {\n onColWidthChange(currentWidths.slice()); // send a copy since currentWidths continues to be mutated\n }\n });\n dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area\n return dragging;\n }\n return null;\n }\n}\n\nclass ResourceTimelineLane extends BaseComponent {\n constructor() {\n super(...arguments);\n this.refineRenderProps = memoizeObjArg(refineRenderProps$1);\n this.handleHeightChange = (innerEl, isStable) => {\n if (this.props.onHeightChange) {\n this.props.onHeightChange(\n // would want to use own <tr> ref, but not guaranteed to be ready when this fires\n elementClosest(innerEl, 'tr'), isStable);\n }\n };\n }\n render() {\n let { props, context } = this;\n let { options } = context;\n let renderProps = this.refineRenderProps({ resource: props.resource, context });\n return (createElement(\"tr\", { ref: props.elRef },\n createElement(ContentContainer, { elTag: \"td\", elClasses: [\n 'fc-timeline-lane',\n 'fc-resource',\n ], elAttrs: {\n 'data-resource-id': props.resource.id,\n }, renderProps: renderProps, generatorName: \"resourceLaneContent\", customGenerator: options.resourceLaneContent, classNameGenerator: options.resourceLaneClassNames, didMount: options.resourceLaneDidMount, willUnmount: options.resourceLaneWillUnmount }, (InnerContent) => (createElement(\"div\", { className: \"fc-timeline-lane-frame\", style: { height: props.innerHeight } },\n createElement(InnerContent, { elTag: \"div\", elClasses: ['fc-timeline-lane-misc'] }),\n createElement(TimelineLane, { dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: props.nextDayThreshold, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, timelineCoords: props.timelineCoords, onHeightChange: this.handleHeightChange, resourceId: props.resource.id })))))); // important NOT to do liquid-height. dont want to shrink height smaller than content\n }\n}\n\n/*\nparallels the SpreadsheetGroupRow\n*/\nclass DividerRow extends BaseComponent {\n render() {\n let { props, context } = this;\n let { renderHooks } = props;\n let renderProps = {\n groupValue: props.groupValue,\n view: context.viewApi,\n };\n return (createElement(\"tr\", { ref: props.elRef },\n createElement(ContentContainer, { elTag: \"td\", elRef: props.elRef, elClasses: [\n 'fc-timeline-lane',\n 'fc-resource-group',\n context.theme.getClass('tableCellShaded'),\n ], renderProps: renderProps, generatorName: \"resourceGroupLaneContent\", customGenerator: renderHooks.laneContent, classNameGenerator: renderHooks.laneClassNames, didMount: renderHooks.laneDidMount, willUnmount: renderHooks.laneWillUnmount }, (InnerContainer) => (createElement(InnerContainer, { elTag: \"div\", elStyle: { height: props.innerHeight } })))));\n }\n}\n\nclass ResourceTimelineLanesBody extends BaseComponent {\n render() {\n let { props, context } = this;\n let { rowElRefs, innerHeights } = props;\n return (createElement(\"tbody\", null, props.rowNodes.map((node, index) => {\n if (node.group) {\n return (createElement(DividerRow, { key: node.id, elRef: rowElRefs.createRef(node.id), groupValue: node.group.value, renderHooks: node.group.spec, innerHeight: innerHeights[index] || '' }));\n }\n if (node.resource) {\n let resource = node.resource;\n return (createElement(ResourceTimelineLane, Object.assign({ key: node.id, elRef: rowElRefs.createRef(node.id) }, props.splitProps[resource.id], { resource: resource, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, nextDayThreshold: context.options.nextDayThreshold, businessHours: resource.businessHours || props.fallbackBusinessHours, innerHeight: innerHeights[index] || '', timelineCoords: props.slatCoords, onHeightChange: props.onRowHeightChange })));\n }\n return null;\n })));\n }\n}\n\nclass ResourceTimelineLanes extends BaseComponent {\n constructor() {\n super(...arguments);\n this.rootElRef = createRef();\n this.rowElRefs = new RefMap();\n }\n render() {\n let { props, context } = this;\n return (createElement(\"table\", { ref: this.rootElRef, \"aria-hidden\": true, className: 'fc-scrollgrid-sync-table ' + context.theme.getClass('table'), style: {\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n height: props.minHeight,\n } },\n createElement(ResourceTimelineLanesBody, { rowElRefs: this.rowElRefs, rowNodes: props.rowNodes, dateProfile: props.dateProfile, tDateProfile: props.tDateProfile, nowDate: props.nowDate, todayRange: props.todayRange, splitProps: props.splitProps, fallbackBusinessHours: props.fallbackBusinessHours, slatCoords: props.slatCoords, innerHeights: props.innerHeights, onRowHeightChange: props.onRowHeightChange })));\n }\n componentDidMount() {\n this.updateCoords();\n }\n componentDidUpdate() {\n this.updateCoords();\n }\n componentWillUnmount() {\n if (this.props.onRowCoords) {\n this.props.onRowCoords(null);\n }\n }\n updateCoords() {\n let { props } = this;\n if (props.onRowCoords && props.clientWidth !== null) { // a populated clientWidth means sizing has stabilized\n this.props.onRowCoords(new PositionCache(this.rootElRef.current, collectRowEls(this.rowElRefs.currentMap, props.rowNodes), false, true));\n }\n }\n}\nfunction collectRowEls(elMap, rowNodes) {\n return rowNodes.map((rowNode) => elMap[rowNode.id]);\n}\n\nclass ResourceTimelineGrid extends DateComponent {\n constructor() {\n super(...arguments);\n this.computeHasResourceBusinessHours = memoize(computeHasResourceBusinessHours);\n this.resourceSplitter = new ResourceSplitter(); // doesn't let it do businessHours tho\n this.bgSlicer = new TimelineLaneSlicer();\n this.slatsRef = createRef(); // needed for Hit creation :(\n this.state = {\n slatCoords: null,\n };\n this.handleEl = (el) => {\n if (el) {\n this.context.registerInteractiveComponent(this, { el });\n }\n else {\n this.context.unregisterInteractiveComponent(this);\n }\n };\n this.handleSlatCoords = (slatCoords) => {\n this.setState({ slatCoords });\n if (this.props.onSlatCoords) {\n this.props.onSlatCoords(slatCoords);\n }\n };\n this.handleRowCoords = (rowCoords) => {\n this.rowCoords = rowCoords;\n if (this.props.onRowCoords) {\n this.props.onRowCoords(rowCoords);\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let { dateProfile, tDateProfile } = props;\n let timerUnit = greatestDurationDenominator(tDateProfile.slotDuration).unit;\n let hasResourceBusinessHours = this.computeHasResourceBusinessHours(props.rowNodes);\n let splitProps = this.resourceSplitter.splitProps(props);\n let bgLaneProps = splitProps[''];\n let bgSlicedProps = this.bgSlicer.sliceProps(bgLaneProps, dateProfile, tDateProfile.isTimeScale ? null : props.nextDayThreshold, context, // wish we didn't need to pass in the rest of these args...\n dateProfile, context.dateProfileGenerator, tDateProfile, context.dateEnv);\n // WORKAROUND: make ignore slatCoords when out of sync with dateProfile\n let slatCoords = state.slatCoords && state.slatCoords.dateProfile === props.dateProfile ? state.slatCoords : null;\n return (createElement(\"div\", { ref: this.handleEl, className: [\n 'fc-timeline-body',\n props.expandRows ? 'fc-timeline-body-expandrows' : '',\n ].join(' '), style: { minWidth: props.tableMinWidth } },\n createElement(NowTimer, { unit: timerUnit }, (nowDate, todayRange) => (createElement(Fragment, null,\n createElement(TimelineSlats, { ref: this.slatsRef, dateProfile: dateProfile, tDateProfile: tDateProfile, nowDate: nowDate, todayRange: todayRange, clientWidth: props.clientWidth, tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, onCoords: this.handleSlatCoords, onScrollLeftRequest: props.onScrollLeftRequest }),\n createElement(TimelineLaneBg, { businessHourSegs: hasResourceBusinessHours ? null : bgSlicedProps.businessHourSegs, bgEventSegs: bgSlicedProps.bgEventSegs, timelineCoords: slatCoords, \n // empty array will result in unnecessary rerenders?\n eventResizeSegs: (bgSlicedProps.eventResize ? bgSlicedProps.eventResize.segs : []), dateSelectionSegs: bgSlicedProps.dateSelectionSegs, nowDate: nowDate, todayRange: todayRange }),\n createElement(ResourceTimelineLanes, { rowNodes: props.rowNodes, dateProfile: dateProfile, tDateProfile: props.tDateProfile, nowDate: nowDate, todayRange: todayRange, splitProps: splitProps, fallbackBusinessHours: hasResourceBusinessHours ? props.businessHours : null, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight : '', tableMinWidth: props.tableMinWidth, innerHeights: props.rowInnerHeights, slatCoords: slatCoords, onRowCoords: this.handleRowCoords, onRowHeightChange: props.onRowHeightChange }),\n (context.options.nowIndicator && slatCoords && slatCoords.isDateInRange(nowDate)) && (createElement(\"div\", { className: \"fc-timeline-now-indicator-container\" },\n createElement(NowIndicatorContainer, { elClasses: ['fc-timeline-now-indicator-line'], elStyle: coordToCss(slatCoords.dateToCoord(nowDate), context.isRtl), isAxis: false, date: nowDate }))))))));\n }\n // Hit System\n // ------------------------------------------------------------------------------------------\n queryHit(positionLeft, positionTop) {\n let rowCoords = this.rowCoords;\n let rowIndex = rowCoords.topToIndex(positionTop);\n if (rowIndex != null) {\n let resource = this.props.rowNodes[rowIndex].resource;\n if (resource) { // not a group\n let slatHit = this.slatsRef.current.positionToHit(positionLeft);\n if (slatHit) {\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: {\n range: slatHit.dateSpan.range,\n allDay: slatHit.dateSpan.allDay,\n resourceId: resource.id,\n },\n rect: {\n left: slatHit.left,\n right: slatHit.right,\n top: rowCoords.tops[rowIndex],\n bottom: rowCoords.bottoms[rowIndex],\n },\n dayEl: slatHit.dayEl,\n layer: 0,\n };\n }\n }\n }\n return null;\n }\n}\nfunction computeHasResourceBusinessHours(rowNodes) {\n for (let node of rowNodes) {\n let resource = node.resource;\n if (resource && resource.businessHours) {\n return true;\n }\n }\n return false;\n}\n\nconst MIN_RESOURCE_AREA_WIDTH = 30; // definitely bigger than scrollbars\n// RENAME?\nclass ResourceTimelineViewLayout extends BaseComponent {\n constructor() {\n super(...arguments);\n this.scrollGridRef = createRef();\n this.timeBodyScrollerElRef = createRef();\n this.spreadsheetHeaderChunkElRef = createRef();\n this.rootElRef = createRef();\n this.ensureScrollGridResizeId = 0;\n this.state = {\n resourceAreaWidthOverride: null,\n };\n /*\n ghetto debounce. don't race with ScrollGrid's resizing delay. solves #6140\n */\n this.ensureScrollGridResize = () => {\n if (this.ensureScrollGridResizeId) {\n clearTimeout(this.ensureScrollGridResizeId);\n }\n this.ensureScrollGridResizeId = setTimeout(() => {\n this.scrollGridRef.current.handleSizing(false);\n }, config.SCROLLGRID_RESIZE_INTERVAL + 1);\n };\n }\n render() {\n let { props, state, context } = this;\n let { options } = context;\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(options);\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(options);\n let sections = [\n {\n type: 'header',\n key: 'header',\n syncRowHeights: true,\n isSticky: stickyHeaderDates,\n chunks: [\n {\n key: 'datagrid',\n elRef: this.spreadsheetHeaderChunkElRef,\n // TODO: allow the content to specify this. have general-purpose 'content' with obj with keys\n tableClassName: 'fc-datagrid-header',\n rowContent: props.spreadsheetHeaderRows,\n },\n {\n key: 'divider',\n outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n },\n {\n key: 'timeline',\n content: props.timeHeaderContent,\n },\n ],\n },\n {\n type: 'body',\n key: 'body',\n syncRowHeights: true,\n liquid: true,\n expandRows: Boolean(options.expandRows),\n chunks: [\n {\n key: 'datagrid',\n tableClassName: 'fc-datagrid-body',\n rowContent: props.spreadsheetBodyRows,\n },\n {\n key: 'divider',\n outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n },\n {\n key: 'timeline',\n scrollerElRef: this.timeBodyScrollerElRef,\n content: props.timeBodyContent,\n },\n ],\n },\n ];\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [\n {\n key: 'datagrid',\n content: renderScrollShim,\n },\n {\n key: 'divider',\n outerContent: (createElement(\"td\", { role: \"presentation\", className: 'fc-resource-timeline-divider ' + context.theme.getClass('tableCellShaded') })),\n },\n {\n key: 'timeline',\n content: renderScrollShim,\n },\n ],\n });\n }\n let resourceAreaWidth = state.resourceAreaWidthOverride != null\n ? state.resourceAreaWidthOverride\n : options.resourceAreaWidth;\n return (createElement(ScrollGrid, { ref: this.scrollGridRef, elRef: this.rootElRef, liquid: !props.isHeightAuto && !props.forPrint, forPrint: props.forPrint, collapsibleWidth: false, colGroups: [\n { cols: props.spreadsheetCols, width: resourceAreaWidth },\n { cols: [] },\n { cols: props.timeCols },\n ], sections: sections }));\n }\n forceTimeScroll(left) {\n let scrollGrid = this.scrollGridRef.current;\n scrollGrid.forceScrollLeft(2, left); // 2 = the time area\n }\n forceResourceScroll(top) {\n let scrollGrid = this.scrollGridRef.current;\n scrollGrid.forceScrollTop(1, top); // 1 = the body\n }\n getResourceScroll() {\n let timeBodyScrollerEl = this.timeBodyScrollerElRef.current;\n return timeBodyScrollerEl.scrollTop;\n }\n // Resource Area Resizing\n // ------------------------------------------------------------------------------------------\n // NOTE: a callback Ref for the resizer was firing multiple times with same elements (Preact)\n // that's why we use spreadsheetResizerElRef instead\n componentDidMount() {\n this.initSpreadsheetResizing();\n }\n componentWillUnmount() {\n this.destroySpreadsheetResizing();\n }\n initSpreadsheetResizing() {\n let { isRtl, pluginHooks } = this.context;\n let ElementDraggingImpl = pluginHooks.elementDraggingImpl;\n let spreadsheetHeadEl = this.spreadsheetHeaderChunkElRef.current;\n if (ElementDraggingImpl) {\n let rootEl = this.rootElRef.current;\n let dragging = this.spreadsheetResizerDragging = new ElementDraggingImpl(rootEl, '.fc-resource-timeline-divider');\n let dragStartWidth;\n let viewWidth;\n dragging.emitter.on('dragstart', () => {\n dragStartWidth = spreadsheetHeadEl.getBoundingClientRect().width;\n viewWidth = rootEl.getBoundingClientRect().width;\n });\n dragging.emitter.on('dragmove', (pev) => {\n let newWidth = dragStartWidth + pev.deltaX * (isRtl ? -1 : 1);\n newWidth = Math.max(newWidth, MIN_RESOURCE_AREA_WIDTH);\n newWidth = Math.min(newWidth, viewWidth - MIN_RESOURCE_AREA_WIDTH);\n // scrollgrid will ignore resize requests if there are too many :|\n this.setState({\n resourceAreaWidthOverride: newWidth,\n }, this.ensureScrollGridResize);\n });\n dragging.setAutoScrollEnabled(false); // because gets weird with auto-scrolling time area\n }\n }\n destroySpreadsheetResizing() {\n if (this.spreadsheetResizerDragging) {\n this.spreadsheetResizerDragging.destroy();\n }\n }\n}\n\nclass ResourceTimelineView extends BaseComponent {\n constructor(props, context) {\n super(props, context);\n this.processColOptions = memoize(processColOptions);\n this.buildTimelineDateProfile = memoize(buildTimelineDateProfile);\n this.hasNesting = memoize(hasNesting);\n this.buildRowNodes = memoize(buildRowNodes);\n this.layoutRef = createRef();\n this.rowNodes = [];\n this.renderedRowNodes = [];\n this.buildRowIndex = memoize(buildRowIndex);\n this.handleSlatCoords = (slatCoords) => {\n this.setState({ slatCoords });\n };\n this.handleRowCoords = (rowCoords) => {\n this.rowCoords = rowCoords;\n this.scrollResponder.update(false); // TODO: could eliminate this if rowCoords lived in state\n };\n this.handleMaxCushionWidth = (slotCushionMaxWidth) => {\n this.setState({\n slotCushionMaxWidth: Math.ceil(slotCushionMaxWidth), // for less rerendering TODO: DRY\n });\n };\n // Scrolling\n // ------------------------------------------------------------------------------------------------------------------\n // this is useful for scrolling prev/next dates while resource is scrolled down\n this.handleScrollLeftRequest = (scrollLeft) => {\n let layout = this.layoutRef.current;\n layout.forceTimeScroll(scrollLeft);\n };\n this.handleScrollRequest = (request) => {\n let { rowCoords } = this;\n let layout = this.layoutRef.current;\n let rowId = request.rowId || request.resourceId;\n if (rowCoords) {\n if (rowId) {\n let rowIdToIndex = this.buildRowIndex(this.renderedRowNodes);\n let index = rowIdToIndex[rowId];\n if (index != null) {\n let scrollTop = (request.fromBottom != null ?\n rowCoords.bottoms[index] - request.fromBottom : // pixels from bottom edge\n rowCoords.tops[index] // just use top edge\n );\n layout.forceResourceScroll(scrollTop);\n }\n }\n return true;\n }\n return null;\n };\n // Resource INDIVIDUAL-Column Area Resizing\n // ------------------------------------------------------------------------------------------\n this.handleColWidthChange = (colWidths) => {\n this.setState({\n spreadsheetColWidths: colWidths,\n });\n };\n this.state = {\n resourceAreaWidth: context.options.resourceAreaWidth,\n spreadsheetColWidths: [],\n };\n }\n render() {\n let { props, state, context } = this;\n let { options, viewSpec } = context;\n let { superHeaderRendering, groupSpecs, orderSpecs, isVGrouping, colSpecs } = this.processColOptions(context.options);\n let tDateProfile = this.buildTimelineDateProfile(props.dateProfile, context.dateEnv, options, context.dateProfileGenerator);\n let rowNodes = this.rowNodes = this.buildRowNodes(props.resourceStore, groupSpecs, orderSpecs, isVGrouping, props.resourceEntityExpansions, options.resourcesInitiallyExpanded);\n let { slotMinWidth } = options;\n let slatCols = buildSlatCols(tDateProfile, slotMinWidth || this.computeFallbackSlotMinWidth(tDateProfile));\n return (createElement(ViewContainer, { elClasses: [\n 'fc-resource-timeline',\n !this.hasNesting(rowNodes) && 'fc-resource-timeline-flat',\n 'fc-timeline',\n options.eventOverlap === false ?\n 'fc-timeline-overlap-disabled' :\n 'fc-timeline-overlap-enabled',\n ], viewSpec: viewSpec },\n createElement(ResourceTimelineViewLayout, { ref: this.layoutRef, forPrint: props.forPrint, isHeightAuto: props.isHeightAuto, spreadsheetCols: buildSpreadsheetCols(colSpecs, state.spreadsheetColWidths, ''), spreadsheetHeaderRows: (contentArg) => (createElement(SpreadsheetHeader // TODO: rename to SpreadsheetHeaderRows\n , { superHeaderRendering: superHeaderRendering, colSpecs: colSpecs, onColWidthChange: this.handleColWidthChange, rowInnerHeights: contentArg.rowSyncHeights })), spreadsheetBodyRows: (contentArg) => (createElement(Fragment, null, this.renderSpreadsheetRows(rowNodes, colSpecs, contentArg.rowSyncHeights))), timeCols: slatCols, timeHeaderContent: (contentArg) => (createElement(TimelineHeader, { clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, dateProfile: props.dateProfile, tDateProfile: tDateProfile, slatCoords: state.slatCoords, rowInnerHeights: contentArg.rowSyncHeights, onMaxCushionWidth: slotMinWidth ? null : this.handleMaxCushionWidth })), timeBodyContent: (contentArg) => (createElement(ResourceTimelineGrid, { dateProfile: props.dateProfile, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, tableMinWidth: contentArg.tableMinWidth, tableColGroupNode: contentArg.tableColGroupNode, expandRows: contentArg.expandRows, tDateProfile: tDateProfile, rowNodes: rowNodes, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, resourceStore: props.resourceStore, nextDayThreshold: context.options.nextDayThreshold, rowInnerHeights: contentArg.rowSyncHeights, onSlatCoords: this.handleSlatCoords, onRowCoords: this.handleRowCoords, onScrollLeftRequest: this.handleScrollLeftRequest, onRowHeightChange: contentArg.reportRowHeightChange })) })));\n }\n renderSpreadsheetRows(nodes, colSpecs, rowSyncHeights) {\n return nodes.map((node, index) => {\n if (node.group) {\n return (createElement(SpreadsheetGroupRow, { key: node.id, id: node.id, spreadsheetColCnt: colSpecs.length, isExpanded: node.isExpanded, group: node.group, innerHeight: rowSyncHeights[index] || '' }));\n }\n if (node.resource) {\n return (createElement(SpreadsheetRow, { key: node.id, colSpecs: colSpecs, rowSpans: node.rowSpans, depth: node.depth, isExpanded: node.isExpanded, hasChildren: node.hasChildren, resource: node.resource, innerHeight: rowSyncHeights[index] || '' }));\n }\n return null;\n });\n }\n componentDidMount() {\n this.renderedRowNodes = this.rowNodes;\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n }\n getSnapshotBeforeUpdate() {\n if (!this.props.forPrint) { // because print-view is always zero?\n return { resourceScroll: this.queryResourceScroll() };\n }\n return {};\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n this.renderedRowNodes = this.rowNodes;\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n if (snapshot.resourceScroll) {\n this.handleScrollRequest(snapshot.resourceScroll); // TODO: this gets triggered too often\n }\n }\n componentWillUnmount() {\n this.scrollResponder.detach();\n }\n computeFallbackSlotMinWidth(tDateProfile) {\n return Math.max(30, ((this.state.slotCushionMaxWidth || 0) / tDateProfile.slotsPerLabel));\n }\n queryResourceScroll() {\n let { rowCoords, renderedRowNodes } = this;\n if (rowCoords) {\n let layout = this.layoutRef.current;\n let trBottoms = rowCoords.bottoms;\n let scrollTop = layout.getResourceScroll();\n let scroll = {};\n for (let i = 0; i < trBottoms.length; i += 1) {\n let rowNode = renderedRowNodes[i];\n let elBottom = trBottoms[i] - scrollTop; // from the top of the scroller\n if (elBottom > 0) {\n scroll.rowId = rowNode.id;\n scroll.fromBottom = elBottom;\n break;\n }\n }\n return scroll;\n }\n return null;\n }\n}\nResourceTimelineView.addStateEquality({\n spreadsheetColWidths: isArraysEqual,\n});\nfunction buildRowIndex(rowNodes) {\n let rowIdToIndex = {};\n for (let i = 0; i < rowNodes.length; i += 1) {\n rowIdToIndex[rowNodes[i].id] = i;\n }\n return rowIdToIndex;\n}\nfunction buildSpreadsheetCols(colSpecs, forcedWidths, fallbackWidth = '') {\n return colSpecs.map((colSpec, i) => ({\n className: colSpec.isMain ? 'fc-main-col' : '',\n width: forcedWidths[i] || colSpec.width || fallbackWidth,\n }));\n}\nfunction hasNesting(nodes) {\n for (let node of nodes) {\n if (node.group) {\n return true;\n }\n if (node.resource) {\n if (node.hasChildren) {\n return true;\n }\n }\n }\n return false;\n}\nfunction processColOptions(options) {\n let allColSpecs = options.resourceAreaColumns || [];\n let superHeaderRendering = null;\n if (!allColSpecs.length) {\n allColSpecs.push({\n headerClassNames: options.resourceAreaHeaderClassNames,\n headerContent: options.resourceAreaHeaderContent,\n headerDefault: () => 'Resources',\n headerDidMount: options.resourceAreaHeaderDidMount,\n headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n });\n }\n else if (options.resourceAreaHeaderContent) { // weird way to determine if content\n superHeaderRendering = {\n headerClassNames: options.resourceAreaHeaderClassNames,\n headerContent: options.resourceAreaHeaderContent,\n headerDidMount: options.resourceAreaHeaderDidMount,\n headerWillUnmount: options.resourceAreaHeaderWillUnmount,\n };\n }\n let plainColSpecs = [];\n let groupColSpecs = []; // part of the colSpecs, but filtered out in order to put first\n let groupSpecs = [];\n let isVGrouping = false;\n for (let colSpec of allColSpecs) {\n if (colSpec.group) {\n groupColSpecs.push(Object.assign(Object.assign({}, colSpec), { cellClassNames: colSpec.cellClassNames || options.resourceGroupLabelClassNames, cellContent: colSpec.cellContent || options.resourceGroupLabelContent, cellDidMount: colSpec.cellDidMount || options.resourceGroupLabelDidMount, cellWillUnmount: colSpec.cellWillUnmount || options.resourceGroupLaneWillUnmount }));\n }\n else {\n plainColSpecs.push(colSpec);\n }\n }\n // BAD: mutates a user-supplied option\n let mainColSpec = plainColSpecs[0];\n mainColSpec.isMain = true;\n mainColSpec.cellClassNames = mainColSpec.cellClassNames || options.resourceLabelClassNames;\n mainColSpec.cellContent = mainColSpec.cellContent || options.resourceLabelContent;\n mainColSpec.cellDidMount = mainColSpec.cellDidMount || options.resourceLabelDidMount;\n mainColSpec.cellWillUnmount = mainColSpec.cellWillUnmount || options.resourceLabelWillUnmount;\n if (groupColSpecs.length) {\n groupSpecs = groupColSpecs;\n isVGrouping = true;\n }\n else {\n let hGroupField = options.resourceGroupField;\n if (hGroupField) {\n groupSpecs.push({\n field: hGroupField,\n labelClassNames: options.resourceGroupLabelClassNames,\n labelContent: options.resourceGroupLabelContent,\n labelDidMount: options.resourceGroupLabelDidMount,\n labelWillUnmount: options.resourceGroupLabelWillUnmount,\n laneClassNames: options.resourceGroupLaneClassNames,\n laneContent: options.resourceGroupLaneContent,\n laneDidMount: options.resourceGroupLaneDidMount,\n laneWillUnmount: options.resourceGroupLaneWillUnmount,\n });\n }\n }\n let allOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;\n let plainOrderSpecs = [];\n for (let orderSpec of allOrderSpecs) {\n let isGroup = false;\n for (let groupSpec of groupSpecs) {\n if (groupSpec.field === orderSpec.field) {\n groupSpec.order = orderSpec.order; // -1, 0, 1\n isGroup = true;\n break;\n }\n }\n if (!isGroup) {\n plainOrderSpecs.push(orderSpec);\n }\n }\n return {\n superHeaderRendering,\n isVGrouping,\n groupSpecs,\n colSpecs: groupColSpecs.concat(plainColSpecs),\n orderSpecs: plainOrderSpecs,\n };\n}\n\nvar css_248z = \".fc .fc-resource-timeline-divider{cursor:col-resize;width:3px}.fc .fc-resource-group{font-weight:inherit;text-align:inherit}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:var(--fc-neutral-bg-color)}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-timeline-body-expandrows td.fc-timeline-lane{position:relative}.fc-timeline-body-expandrows .fc-timeline-lane-frame{position:static}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{align-items:center;display:flex;justify-content:flex-start;position:relative}.fc .fc-datagrid-cell-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px;z-index:1}.fc .fc-datagrid-cell-cushion{overflow:hidden;padding:8px;white-space:nowrap}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}\";\ninjectStyles(css_248z);\n\nexport { ResourceTimelineLane, ResourceTimelineView, SpreadsheetRow };\n"],"names":["ExpanderIcon","depth","hasChildren","isExpanded","onExpanderClick","nodes","i","push","createElement","className","iconClassNames","onClick","join","Fragment","SpreadsheetIndividualCell","BaseComponent","constructor","super","arguments","this","refineRenderProps","memoizeObjArg","ev","props","context","dispatch","type","id","resource","render","colSpec","renderProps","fieldValue","ContentContainer","elTag","elClasses","elAttrs","role","generatorName","isMain","undefined","customGenerator","cellContent","defaultGenerator","renderResourceInner","classNameGenerator","cellClassNames","didMount","cellDidMount","willUnmount","cellWillUnmount","InnerContent","style","height","innerHeight","input","ResourceApi","view","viewApi","SpreadsheetGroupCell","groupValue","rowSpan","renderGroupInner","SpreadsheetRow","rowSpans","resourceFields","buildResourceFields","colSpecs","map","field","title","getPublicId","key","addPropsEquality","isArraysEqual","SpreadsheetGroupRow","innerInnerRef","createRef","group","value","spec","theme","getClass","scope","colSpan","spreadsheetColCnt","labelContent","renderCellInner","labelClassNames","labelDidMount","labelWillUnmount","ref","isGroupsEqual","SpreadsheetHeader","resizerElRefs","RefMap","_handleColResizerEl","bind","colDraggings","superHeaderRendering","rowInnerHeights","rowNodes","slice","rowInnerHeight","shift","length","headerContent","headerDefault","headerClassNames","headerDidMount","headerWillUnmount","isLastCol","resizerEl","index","dragging","initColResizing","parseInt","destroy","pluginHooks","isRtl","onColWidthChange","ElementDraggingImpl","elementDraggingImpl","startWidth","currentWidths","emitter","on","allCells","findElements","elementClosest","cellEl","getBoundingClientRect","pev","Math","max","deltaX","setAutoScrollEnabled","ResourceTimelineLane","refineRenderProps$1","handleHeightChange","innerEl","isStable","onHeightChange","options","elRef","resourceLaneContent","resourceLaneClassNames","resourceLaneDidMount","resourceLaneWillUnmount","TimelineLane","dateProfile","tDateProfile","nowDate","todayRange","nextDayThreshold","businessHours","eventStore","eventUiBases","dateSelection","eventSelection","eventDrag","eventResize","timelineCoords","resourceId","DividerRow","renderHooks","laneContent","laneClassNames","laneDidMount","laneWillUnmount","InnerContainer","elStyle","ResourceTimelineLanesBody","rowElRefs","innerHeights","node","Object","assign","splitProps","fallbackBusinessHours","slatCoords","onRowHeightChange","ResourceTimelineLanes","rootElRef","minWidth","tableMinWidth","width","clientWidth","minHeight","componentDidMount","updateCoords","componentDidUpdate","componentWillUnmount","onRowCoords","elMap","PositionCache","current","currentMap","rowNode","ResourceTimelineGrid","DateComponent","computeHasResourceBusinessHours","memoize","resourceSplitter","ResourceSplitter","bgSlicer","TimelineLaneSlicer","slatsRef","state","handleEl","el","registerInteractiveComponent","unregisterInteractiveComponent","handleSlatCoords","setState","onSlatCoords","handleRowCoords","rowCoords","timerUnit","greatestDurationDenominator","slotDuration","unit","hasResourceBusinessHours","bgLaneProps","bgSlicedProps","sliceProps","isTimeScale","dateProfileGenerator","dateEnv","expandRows","NowTimer","TimelineSlats","tableColGroupNode","onCoords","onScrollLeftRequest","TimelineLaneBg","businessHourSegs","bgEventSegs","eventResizeSegs","segs","dateSelectionSegs","clientHeight","nowIndicator","isDateInRange","NowIndicatorContainer","coordToCss","dateToCoord","isAxis","date","queryHit","positionLeft","positionTop","rowIndex","topToIndex","slatHit","positionToHit","dateSpan","range","allDay","rect","left","right","top","tops","bottom","bottoms","dayEl","layer","ResourceTimelineViewLayout","scrollGridRef","timeBodyScrollerElRef","spreadsheetHeaderChunkElRef","ensureScrollGridResizeId","resourceAreaWidthOverride","ensureScrollGridResize","clearTimeout","setTimeout","handleSizing","config","SCROLLGRID_RESIZE_INTERVAL","stickyHeaderDates","forPrint","getStickyHeaderDates","stickyFooterScrollbar","getStickyFooterScrollbar","sections","syncRowHeights","isSticky","chunks","tableClassName","rowContent","spreadsheetHeaderRows","outerContent","content","timeHeaderContent","liquid","Boolean","spreadsheetBodyRows","scrollerElRef","timeBodyContent","renderScrollShim","resourceAreaWidth","ScrollGrid","isHeightAuto","collapsibleWidth","colGroups","cols","spreadsheetCols","timeCols","forceTimeScroll","forceScrollLeft","forceResourceScroll","forceScrollTop","getResourceScroll","scrollTop","initSpreadsheetResizing","destroySpreadsheetResizing","spreadsheetHeadEl","dragStartWidth","viewWidth","rootEl","spreadsheetResizerDragging","newWidth","min","ResourceTimelineView","processColOptions","buildTimelineDateProfile","hasNesting","buildRowNodes","layoutRef","renderedRowNodes","buildRowIndex","scrollResponder","update","handleMaxCushionWidth","slotCushionMaxWidth","ceil","handleScrollLeftRequest","scrollLeft","handleScrollRequest","request","layout","rowId","fromBottom","handleColWidthChange","colWidths","spreadsheetColWidths","viewSpec","groupSpecs","orderSpecs","isVGrouping","resourceStore","resourceEntityExpansions","resourcesInitiallyExpanded","slotMinWidth","slatCols","buildSlatCols","computeFallbackSlotMinWidth","ViewContainer","eventOverlap","buildSpreadsheetCols","contentArg","rowSyncHeights","renderSpreadsheetRows","TimelineHeader","onMaxCushionWidth","reportRowHeightChange","createScrollResponder","getSnapshotBeforeUpdate","resourceScroll","queryResourceScroll","prevProps","prevState","snapshot","detach","slotsPerLabel","trBottoms","scroll","elBottom","rowIdToIndex","forcedWidths","fallbackWidth","allColSpecs","resourceAreaColumns","resourceAreaHeaderContent","resourceAreaHeaderClassNames","resourceAreaHeaderDidMount","resourceAreaHeaderWillUnmount","plainColSpecs","groupColSpecs","resourceGroupLabelClassNames","resourceGroupLabelContent","resourceGroupLabelDidMount","resourceGroupLaneWillUnmount","mainColSpec","resourceLabelClassNames","resourceLabelContent","resourceLabelDidMount","resourceLabelWillUnmount","hGroupField","resourceGroupField","resourceGroupLabelWillUnmount","resourceGroupLaneClassNames","resourceGroupLaneContent","resourceGroupLaneDidMount","allOrderSpecs","resourceOrder","DEFAULT_RESOURCE_ORDER","plainOrderSpecs","orderSpec","isGroup","groupSpec","order","concat","addStateEquality","injectStyles"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{bG as e,B as t,aA as l,cd as s,c0 as i,aR as r,c1 as o,ce as n,c3 as h,c2 as c,c4 as a,aB as d,c5 as u,aK as f,cc as p,aJ as g,a as S,W as y,i as m,E as R,c6 as w,cb as C,b$ as W,b_ as b,aI as E,aM as x,aH as M,b1 as v,aN as k,F as H,D as L,c7 as B,b2 as z}from"../core/internal-common.js";import{createElement as D,Fragment as T,createRef as I}from"../../preact/dist/preact.mjs.js";function P(e){let t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(X()){case"negative":t*=-1;case"reverse":t=e.scrollWidth-t-e.clientWidth}return t}function q(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(X()){case"reverse":t=e.scrollWidth-t;break;case"negative":t=-(e.scrollWidth-t)}e.scrollLeft=t}let G;function X(){return G||(G=function(){let e=document.createElement("div");e.style.position="absolute",e.style.top="-1000px",e.style.width="100px",e.style.height="100px",e.style.overflow="scroll",e.style.direction="rtl";let t,l=document.createElement("div");l.style.width="200px",l.style.height="200px",e.appendChild(l),document.body.appendChild(e),e.scrollLeft>0?t="positive":(e.scrollLeft=1,t=e.scrollLeft>0?"reverse":"negative");return x(e),t}())}class _{constructor(e,t){this.scrollEl=e,this.isRtl=t,this.updateSize=()=>{let{scrollEl:e}=this,t=f(e,".fc-sticky");!function(e,t,l){e.forEach(((e,s)=>{let i,{textAlign:r,elWidth:o,parentBound:n}=t[s],h=n.right-n.left;i="center"===r&&h>l?(l-o)/2:"",k(e,{left:i,right:i,top:0})}))}(t,this.queryElGeoms(t),e.clientWidth)}}queryElGeoms(e){let{scrollEl:t,isRtl:l}=this,s=function(e){let t=e.getBoundingClientRect(),l=z(e);return{left:t.left+l.borderLeft+l.scrollbarLeft-P(e),top:t.top+l.borderTop-e.scrollTop}}(t),i=[];for(let t of e){let e=M(v(t.parentNode,!0,!0),-s.left,-s.top),r=t.getBoundingClientRect(),o=window.getComputedStyle(t),n=window.getComputedStyle(t.parentNode).textAlign,h=null;"start"===n?n=l?"right":"left":"end"===n&&(n=l?"left":"right"),"sticky"!==o.position&&(h=M(r,-s.left-(parseFloat(o.left)||0),-s.top-(parseFloat(o.top)||0))),i.push({parentBound:e,naturalBound:h,elWidth:r.width,elHeight:r.height,textAlign:n})}return i}}class Y extends t{constructor(){super(...arguments),this.elRef=I(),this.state={xScrollbarWidth:0,yScrollbarWidth:0},this.handleScroller=e=>{this.scroller=e,y(this.props.scrollerRef,e)},this.handleSizing=()=>{let{props:e}=this;"scroll-hidden"===e.overflowY&&this.setState({yScrollbarWidth:this.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&this.setState({xScrollbarWidth:this.scroller.getXScrollbarWidth()})}}render(){let{props:e,state:t,context:l}=this,s=l.isRtl&&n(),i=0,r=0,o=0,{overflowX:h,overflowY:c}=e;return e.forPrint&&(h="visible",c="visible"),"scroll-hidden"===h&&(o=t.xScrollbarWidth),"scroll-hidden"===c&&null!=t.yScrollbarWidth&&(s?i=t.yScrollbarWidth:r=t.yScrollbarWidth),D("div",{ref:this.elRef,className:"fc-scroller-harness"+(e.liquid?" fc-scroller-harness-liquid":"")},D(C,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===h?"scroll":h,overflowY:"scroll-hidden"===c?"scroll":c,overcomeLeft:i,overcomeRight:r,overcomeBottom:o,maxHeight:"number"==typeof e.maxHeight?e.maxHeight+("scroll-hidden"===h?t.xScrollbarWidth:0):"",liquid:e.liquid,liquidIsAbsolute:!0},e.children))}componentDidMount(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)}getSnapshotBeforeUpdate(e){return this.props.forPrint&&!e.forPrint?{simulateScrollLeft:this.scroller.el.scrollLeft}:{}}componentDidUpdate(e,t,l){const{props:s,scroller:{el:i}}=this;if(R(e,s)||this.handleSizing(),void 0!==l.simulateScrollLeft)i.style.left=-l.simulateScrollLeft+"px";else if(!s.forPrint&&e.forPrint){const e=-parseInt(i.style.left);i.style.left="",i.scrollLeft=e}}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing)}needsXScrolling(){return this.scroller.needsXScrolling()}needsYScrolling(){return this.scroller.needsYScrolling()}}const N="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" ");class U{constructor(e){this.el=e,this.emitter=new H,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new L(this._handleWheelWaited.bind(this)),this.scrollWaiter=new L(this._handleScrollWaited.bind(this)),this.handleScroll=()=>{this.startScroll(),this.emitter.trigger("scroll",this.isRecentlyWheeled,this.isTouching),this.isRecentlyScrolled=!0,this.scrollWaiter.request(500)},this.handleWheel=()=>{this.isRecentlyWheeled=!0,this.wheelWaiter.request(500)},this.handleTouchStart=()=>{this.isTouching=!0},this.handleTouchEnd=()=>{this.isTouching=!1,this.isRecentlyScrolled||this.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(let t of N)e.addEventListener(t,this.handleWheel)}destroy(){let{el:e}=this;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(let t of N)e.removeEventListener(t,this.handleWheel)}startScroll(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))}endScroll(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())}_handleScrollWaited(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()}_handleWheelWaited(){this.isRecentlyWheeled=!1}}class A{constructor(e,t){this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((e=>this.bindScroller(e)))}destroy(){for(let e of this.scrollListeners)e.destroy()}bindScroller(e){let{scrollEls:t,isVertical:l}=this,s=new U(e);return s.emitter.on("scroll",((s,i)=>{if(!this.isPaused&&((!this.masterEl||this.masterEl!==e&&(s||i))&&this.assignMaster(e),this.masterEl===e))for(let s of t)s!==e&&(l?s.scrollTop=e.scrollTop:s.scrollLeft=e.scrollLeft)})),s.emitter.on("scrollEnd",(()=>{this.masterEl===e&&(this.masterEl=null)})),s}assignMaster(e){this.masterEl=e;for(let t of this.scrollListeners)t.el!==e&&t.endScroll()}forceScrollLeft(e){this.isPaused=!0;for(let t of this.scrollListeners)q(t.el,e);this.isPaused=!1}forceScrollTop(e){this.isPaused=!0;for(let t of this.scrollListeners)t.el.scrollTop=e;this.isPaused=!1}}e.SCROLLGRID_RESIZE_INTERVAL=500;class j extends t{constructor(){super(...arguments),this.compileColGroupStats=l(Z,$),this.renderMicroColGroups=l(W),this.clippedScrollerRefs=new s,this.scrollerElRefs=new s(this._handleScrollerEl.bind(this)),this.chunkElRefs=new s(this._handleChunkEl.bind(this)),this.scrollSyncersBySection={},this.scrollSyncersByColumn={},this.rowUnstableMap=new Map,this.rowInnerMaxHeightMap=new Map,this.anyRowHeightsChanged=!1,this.recentSizingCnt=0,this.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},this.handleSizing=(e,t)=>{if(!this.allowSizing())return;t||(this.anyRowHeightsChanged=!0);let l={};(e||!t&&!this.rowUnstableMap.size)&&(l.sectionRowMaxHeights=this.computeSectionRowMaxHeights()),this.setState(Object.assign(Object.assign({shrinkWidths:this.computeShrinkWidths()},this.computeScrollerDims()),l),(()=>{this.rowUnstableMap.size||this.updateStickyScrolling()}))},this.handleRowHeightChange=(e,t)=>{let{rowUnstableMap:l,rowInnerMaxHeightMap:s}=this;if(t){l.delete(e);let t=F(e);s.has(e)&&s.get(e)===t||(s.set(e,t),this.anyRowHeightsChanged=!0),!l.size&&this.anyRowHeightsChanged&&(this.anyRowHeightsChanged=!1,this.setState({sectionRowMaxHeights:this.computeSectionRowMaxHeights()}))}else l.set(e,!0)}}render(){let{props:e,state:t,context:l}=this,{shrinkWidths:s}=t,o=this.compileColGroupStats(e.colGroups.map((e=>[e]))),n=this.renderMicroColGroups(o.map(((e,t)=>[e.cols,s[t]]))),h=i(e.liquid,l);this.getDims();let c,a=e.sections,d=a.length,u=0,f=[],p=[],g=[];for(;u<d&&"header"===(c=a[u]).type;)f.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!0)),u+=1;for(;u<d&&"body"===(c=a[u]).type;)p.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!1)),u+=1;for(;u<d&&"footer"===(c=a[u]).type;)g.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!0)),u+=1;const S=!r(),y={role:"rowgroup"};return D("table",{ref:e.elRef,role:"grid",className:h.join(" ")},function(e,t){let l=e.map(((e,l)=>{let s=e.width;return"shrink"===s&&(s=e.totalColWidth+w(t[l])+1),D("col",{style:{width:s}})}));return D("colgroup",{},...l)}(o,s),Boolean(!S&&f.length)&&D("thead",y,...f),Boolean(!S&&p.length)&&D("tbody",y,...p),Boolean(!S&&g.length)&&D("tfoot",y,...g),S&&D("tbody",y,...f,...p,...g))}renderSection(e,t,l,s,i,r){return"outerContent"in e?D(T,{key:e.key},e.outerContent):D("tr",{key:e.key,role:"presentation",className:o(e,this.props.liquid).join(" ")},e.chunks.map(((o,n)=>this.renderChunk(e,t,l[n],s[n],o,n,(i[t]||[])[n]||[],r))))}renderChunk(e,t,l,s,i,r,o,d){if("outerContent"in i)return D(T,{key:i.key},i.outerContent);let{state:u}=this,{scrollerClientWidths:f,scrollerClientHeights:p}=u,[g,S]=this.getDims(),y=t*S+r,m=r===(!this.context.isRtl||n()?S-1:0),R=t===g-1,w=R&&u.forceXScrollbars,C=m&&u.forceYScrollbars,W=l&&l.allowXScrolling,b=h(this.props,e),E=c(this.props,e),x=e.expandRows&&E,M=l&&l.totalColMinWidth||"",v=a(e,i,{tableColGroupNode:s,tableMinWidth:M,clientWidth:void 0!==f[y]?f[y]:null,clientHeight:void 0!==p[y]?p[y]:null,expandRows:x,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:o,reportRowHeightChange:this.handleRowHeightChange},d),k=w?R?"scroll":"scroll-hidden":W?R?"auto":"scroll-hidden":"hidden",H=C?m?"scroll":"scroll-hidden":b?m?"auto":"scroll-hidden":"hidden";return v=D(Y,{ref:this.clippedScrollerRefs.createRef(y),scrollerElRef:this.scrollerElRefs.createRef(y),overflowX:k,overflowY:H,forPrint:this.props.forPrint,liquid:E,maxHeight:e.maxHeight},v),D(d?"th":"td",{key:i.key,ref:this.chunkElRefs.createRef(y),role:"presentation"},v)}componentDidMount(){this.getStickyScrolling=l(te),this.getScrollSyncersBySection=d(Q.bind(this,!0),null,ee),this.getScrollSyncersByColumn=d(Q.bind(this,!1),null,ee),this.updateScrollSyncers(),this.handleSizing(!1),this.context.addResizeHandler(this.handleSizing)}componentDidUpdate(e,t){this.updateScrollSyncers(),this.handleSizing(!1,t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing),this.destroyScrollSyncers()}allowSizing(){let t=new Date;return!this.lastSizingDate||t.valueOf()>this.lastSizingDate.valueOf()+e.SCROLLGRID_RESIZE_INTERVAL?(this.lastSizingDate=t,this.recentSizingCnt=0,!0):(this.recentSizingCnt+=1)<=10}computeShrinkWidths(){let e=this.compileColGroupStats(this.props.colGroups.map((e=>[e]))),[t,l]=this.getDims(),s=t*l,i=[];return e.forEach(((e,t)=>{if(e.hasShrinkCol){let e=this.chunkElRefs.collect(t,s,l);i[t]=u(e)}})),i}computeSectionRowMaxHeights(){let e=new Map,[t,l]=this.getDims(),s=[];for(let i=0;i<t;i+=1){let t=this.props.sections[i],r=[];if(t&&t.syncRowHeights){let s=[];for(let t=0;t<l;t+=1){let r=i*l+t,o=[],n=this.chunkElRefs.currentMap[r];o=n?f(n,".fc-scrollgrid-sync-table tr").map((t=>{let l=F(t);return e.set(t,l),l})):[],s.push(o)}let o=s[0].length,n=!0;for(let e=1;e<l;e+=1){if(!(t.chunks[e]&&void 0!==t.chunks[e].outerContent)&&s[e].length!==o){n=!1;break}}if(n){for(let e=0;e<l;e+=1)r.push([]);for(let e=0;e<o;e+=1){let t=[];for(let i=0;i<l;i+=1){let l=s[i][e];null!=l&&t.push(l)}let i=Math.max(...t);for(let e=0;e<l;e+=1)r[e].push(i)}}else{let e=[];for(let t=0;t<l;t+=1)e.push(O(s[t])+s[t].length);let t=Math.max(...e);for(let e=0;e<l;e+=1){let l=s[e].length,i=t-l,o=Math.floor(i/l),n=i-o*(l-1),h=[],c=0;for(c<l&&(h.push(n),c+=1);c<l;)h.push(o),c+=1;r.push(h)}}}s.push(r)}return this.rowInnerMaxHeightMap=e,s}computeScrollerDims(){let e=p(),[t,l]=this.getDims(),s=!this.context.isRtl||n()?l-1:0,i=t-1,r=this.clippedScrollerRefs.currentMap,o=this.scrollerElRefs.currentMap,h=!1,c=!1,a={},d={};for(let e=0;e<t;e+=1){let t=r[e*l+s];if(t&&t.needsYScrolling()){h=!0;break}}for(let e=0;e<l;e+=1){let t=r[i*l+e];if(t&&t.needsXScrolling()){c=!0;break}}for(let r=0;r<t;r+=1)for(let t=0;t<l;t+=1){let n=r*l+t,u=o[n];if(u){let l=u.parentNode;a[n]=Math.floor(l.getBoundingClientRect().width-(t===s&&h?e.y:0)),d[n]=Math.floor(l.getBoundingClientRect().height-(r===i&&c?e.x:0))}}return{forceYScrollbars:h,forceXScrollbars:c,scrollerClientWidths:a,scrollerClientHeights:d}}updateStickyScrolling(){let{isRtl:e}=this.context,t=this.scrollerElRefs.getAll().map((t=>[t,e]));this.getStickyScrolling(t).forEach((e=>e.updateSize()))}updateScrollSyncers(){let[e,t]=this.getDims(),l=e*t,s={},i={},r=this.scrollerElRefs.currentMap;for(let l=0;l<e;l+=1){let e=l*t,i=e+t;s[l]=g(r,e,i,1)}for(let e=0;e<t;e+=1)i[e]=this.scrollerElRefs.collect(e,l,t);this.scrollSyncersBySection=this.getScrollSyncersBySection(s),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)}destroyScrollSyncers(){S(this.scrollSyncersBySection,ee),S(this.scrollSyncersByColumn,ee)}getChunkConfigByIndex(e){let t=this.getDims()[1],l=Math.floor(e/t),s=e%t,i=this.props.sections[l];return i&&i.chunks[s]}forceScrollLeft(e,t){let l=this.scrollSyncersByColumn[e];l&&l.forceScrollLeft(t)}forceScrollTop(e,t){let l=this.scrollSyncersBySection[e];l&&l.forceScrollTop(t)}_handleChunkEl(e,t){let l=this.getChunkConfigByIndex(parseInt(t,10));l&&y(l.elRef,e)}_handleScrollerEl(e,t){let l=this.getChunkConfigByIndex(parseInt(t,10));l&&y(l.scrollerElRef,e)}getDims(){let e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]}}function O(e){let t=0;for(let l of e)t+=l;return t}function F(e){let t=f(e,".fc-scrollgrid-sync-inner").map(V);return t.length?Math.max(...t):0}function V(e){return e.offsetHeight}function Z(e){let t=J(e.cols,"width"),l=J(e.cols,"minWidth"),s=b(e.cols);return{hasShrinkCol:s,totalColWidth:t,totalColMinWidth:l,allowXScrolling:"shrink"!==e.width&&Boolean(t||l||s),cols:e.cols,width:e.width}}function J(e,t){let l=0;for(let s of e){let e=s[t];"number"==typeof e&&(l+=e*(s.span||1))}return l}j.addStateEquality({shrinkWidths:m,scrollerClientWidths:R,scrollerClientHeights:R});const K={cols:B};function $(e,t){return E(e,t,K)}function Q(e,...t){return new A(e,t)}function ee(e){e.destroy()}function te(e,t){return new _(e,t)}export{j as ScrollGrid};
2
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sources":["../../../../../node_modules/@fullcalendar/scrollgrid/internal.js"],"sourcesContent":["import { computeEdges, removeElement, findElements, translateRect, computeInnerRect, applyStyle, BaseComponent, setRef, getIsRtlScrollbarOnLeft, Scroller, isPropsEqual, Emitter, DelayedRunner, config, memoizeArraylike, renderMicroColGroup, RefMap, getScrollGridClassNames, getCanVGrowWithinCell, getSectionClassNames, getAllowYScrolling, getSectionHasLiquidHeight, renderChunkContent, memoizeHashlike, computeShrinkWidth, getScrollbarWidths, collectFromHash, mapHash, isArraysEqual, sanitizeShrinkWidth, hasShrinkWidth, compareObjs, isColPropsEqual } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n// TODO: assume the el has no borders?\nfunction getScrollCanvasOrigin(scrollEl) {\n let rect = scrollEl.getBoundingClientRect();\n let edges = computeEdges(scrollEl); // TODO: pass in isRtl?\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n };\n}\nfunction getScrollFromLeftEdge(el) {\n let scrollLeft = el.scrollLeft;\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1; // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth;\n }\n }\n return scrollLeft;\n}\nfunction setScrollFromLeftEdge(el, scrollLeft) {\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft;\n break;\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft);\n break;\n }\n }\n el.scrollLeft = scrollLeft;\n}\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\nlet _rtlScrollSystem;\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());\n}\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '-1000px';\n el.style.width = '100px'; // must be at least the side of scrollbars or you get inaccurate values (#7335)\n el.style.height = '100px'; // \"\n el.style.overflow = 'scroll';\n el.style.direction = 'rtl';\n let innerEl = document.createElement('div');\n innerEl.style.width = '200px';\n innerEl.style.height = '200px';\n el.appendChild(innerEl);\n document.body.appendChild(el);\n let system;\n if (el.scrollLeft > 0) {\n system = 'positive'; // scroll is a positive number from the left edge\n }\n else {\n el.scrollLeft = 1;\n if (el.scrollLeft > 0) {\n system = 'reverse'; // scroll is a positive number from the right edge\n }\n else {\n system = 'negative'; // scroll is a negative number from the right edge\n }\n }\n removeElement(el);\n return system;\n}\n\nconst STICKY_SELECTOR = '.fc-sticky';\n/*\nGoes beyond mere position:sticky, allows horizontal centering\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nclass StickyScrolling {\n constructor(scrollEl, isRtl) {\n this.scrollEl = scrollEl;\n this.isRtl = isRtl;\n this.updateSize = () => {\n let { scrollEl } = this;\n let els = findElements(scrollEl, STICKY_SELECTOR);\n let elGeoms = this.queryElGeoms(els);\n let viewportWidth = scrollEl.clientWidth;\n assignStickyPositions(els, elGeoms, viewportWidth);\n };\n }\n queryElGeoms(els) {\n let { scrollEl, isRtl } = this;\n let canvasOrigin = getScrollCanvasOrigin(scrollEl);\n let elGeoms = [];\n for (let el of els) {\n let parentBound = translateRect(computeInnerRect(el.parentNode, true, true), // weird way to call this!!!\n -canvasOrigin.left, -canvasOrigin.top);\n let elRect = el.getBoundingClientRect();\n let computedStyles = window.getComputedStyle(el);\n let textAlign = window.getComputedStyle(el.parentNode).textAlign; // ask the parent\n let naturalBound = null;\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left';\n }\n else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right';\n }\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(elRect, -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0));\n }\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n });\n }\n return elGeoms;\n }\n}\nfunction assignStickyPositions(els, elGeoms, viewportWidth) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i];\n let parentWidth = parentBound.right - parentBound.left;\n let left;\n if (textAlign === 'center' &&\n parentWidth > viewportWidth) {\n left = (viewportWidth - elWidth) / 2;\n }\n else { // if parent container can be completely in view, we don't need stickiness\n left = '';\n }\n applyStyle(el, {\n left,\n right: left,\n top: 0,\n });\n });\n}\n\nclass ClippedScroller extends BaseComponent {\n constructor() {\n super(...arguments);\n this.elRef = createRef();\n this.state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n };\n this.handleScroller = (scroller) => {\n this.scroller = scroller;\n setRef(this.props.scrollerRef, scroller);\n };\n this.handleSizing = () => {\n let { props } = this;\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() });\n }\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() });\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft();\n let overcomeLeft = 0;\n let overcomeRight = 0;\n let overcomeBottom = 0;\n let { overflowX, overflowY } = props;\n if (props.forPrint) {\n overflowX = 'visible';\n overflowY = 'visible';\n }\n if (overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth;\n }\n if (overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth;\n }\n else {\n overcomeRight = state.yScrollbarWidth;\n }\n }\n }\n return (createElement(\"div\", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: overflowX === 'scroll-hidden' ? 'scroll' : overflowX, overflowY: overflowY === 'scroll-hidden' ? 'scroll' : overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'\n ? (props.maxHeight + (overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));\n }\n componentDidMount() {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n }\n getSnapshotBeforeUpdate(prevProps) {\n if (this.props.forPrint && !prevProps.forPrint) {\n return { simulateScrollLeft: this.scroller.el.scrollLeft };\n }\n return {};\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { props, scroller: { el: scrollerEl } } = this;\n if (!isPropsEqual(prevProps, props)) { // an external change?\n this.handleSizing();\n }\n if (snapshot.simulateScrollLeft !== undefined) {\n scrollerEl.style.left = -snapshot.simulateScrollLeft + 'px';\n }\n else if (!props.forPrint && prevProps.forPrint) {\n const restoredScrollLeft = -parseInt(scrollerEl.style.left);\n scrollerEl.style.left = '';\n scrollerEl.scrollLeft = restoredScrollLeft;\n }\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n needsXScrolling() {\n return this.scroller.needsXScrolling();\n }\n needsYScrolling() {\n return this.scroller.needsYScrolling();\n }\n}\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');\n/*\nALSO, with the ability to disable touch\n*/\nclass ScrollListener {\n constructor(el) {\n this.el = el;\n this.emitter = new Emitter();\n this.isScrolling = false;\n this.isTouching = false; // user currently has finger down?\n this.isRecentlyWheeled = false;\n this.isRecentlyScrolled = false;\n this.wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this));\n this.scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this));\n // Handlers\n // ----------------------------------------------------------------------------------------------\n this.handleScroll = () => {\n this.startScroll();\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching);\n this.isRecentlyScrolled = true;\n this.scrollWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleWheel = () => {\n this.isRecentlyWheeled = true;\n this.wheelWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleTouchStart = () => {\n this.isTouching = true;\n };\n this.handleTouchEnd = () => {\n this.isTouching = false;\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll(); // won't fire if already ended\n }\n };\n el.addEventListener('scroll', this.handleScroll);\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.addEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel);\n }\n }\n destroy() {\n let { el } = this;\n el.removeEventListener('scroll', this.handleScroll);\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.removeEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel);\n }\n }\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true;\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching);\n }\n }\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd');\n this.isScrolling = false;\n this.isRecentlyScrolled = true;\n this.isRecentlyWheeled = false;\n this.scrollWaiter.clear();\n this.wheelWaiter.clear();\n }\n }\n _handleScrollWaited() {\n this.isRecentlyScrolled = false;\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll(); // won't fire if already ended\n }\n }\n _handleWheelWaited() {\n this.isRecentlyWheeled = false;\n }\n}\n\nclass ScrollSyncer {\n constructor(isVertical, scrollEls) {\n this.isVertical = isVertical;\n this.scrollEls = scrollEls;\n this.isPaused = false;\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el));\n }\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy();\n }\n }\n bindScroller(el) {\n let { scrollEls, isVertical } = this;\n let scrollListener = new ScrollListener(el);\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el);\n }\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop;\n }\n else {\n otherEl.scrollLeft = el.scrollLeft;\n }\n }\n }\n }\n }\n };\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null;\n }\n };\n scrollListener.emitter.on('scroll', onScroll);\n scrollListener.emitter.on('scrollEnd', onScrollEnd);\n return scrollListener;\n }\n assignMaster(el) {\n this.masterEl = el;\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll(); // to prevent residual scrolls from reclaiming master\n }\n }\n }\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft);\n }\n this.isPaused = false;\n }\n forceScrollTop(top) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top;\n }\n this.isPaused = false;\n }\n}\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500;\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nclass ScrollGrid extends BaseComponent {\n constructor() {\n super(...arguments);\n this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);\n this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers\n this.clippedScrollerRefs = new RefMap();\n // doesn't hold non-scrolling els used just for padding\n this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n this.chunkElRefs = new RefMap(this._handleChunkEl.bind(this));\n this.scrollSyncersBySection = {};\n this.scrollSyncersByColumn = {};\n // for row-height-syncing\n this.rowUnstableMap = new Map(); // no need to groom. always self-cancels\n this.rowInnerMaxHeightMap = new Map();\n this.anyRowHeightsChanged = false;\n this.recentSizingCnt = 0;\n this.state = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n };\n this.handleSizing = (isForcedResize, sectionRowMaxHeightsChanged) => {\n if (!this.allowSizing()) {\n return;\n }\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true;\n }\n let otherState = {};\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights();\n }\n this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), otherState), () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM\n }\n });\n };\n this.handleRowHeightChange = (rowEl, isStable) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this;\n if (!isStable) {\n rowUnstableMap.set(rowEl, true);\n }\n else {\n rowUnstableMap.delete(rowEl);\n let innerMaxHeight = getRowInnerMaxHeight(rowEl);\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight);\n this.anyRowHeightsChanged = true;\n }\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false;\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n });\n }\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let { shrinkWidths } = state;\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]));\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]));\n let classNames = getScrollGridClassNames(props.liquid, context);\n this.getDims();\n // TODO: make DRY\n let sectionConfigs = props.sections;\n let configCnt = sectionConfigs.length;\n let configI = 0;\n let currentConfig;\n let headSectionNodes = [];\n let bodySectionNodes = [];\n let footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n const isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n }\n renderSection(sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader))));\n }\n renderChunk(sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {\n if ('outerContent' in chunkConfig) {\n return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));\n }\n let { state } = this;\n let { scrollerClientWidths, scrollerClientHeights } = state;\n let [sectionCnt, chunksPerSection] = this.getDims();\n let index = sectionIndex * chunksPerSection + chunkIndex;\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let isVScrollSide = chunkIndex === sideScrollIndex;\n let isLastSection = sectionIndex === sectionCnt - 1;\n let forceXScrollbars = isLastSection && state.forceXScrollbars; // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars; // NOOOO can result in `null`\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling; // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig); // rename? do in section func?\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig); // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow;\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || '';\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader);\n let overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden');\n let overflowY = forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden');\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, forPrint: this.props.forPrint, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));\n return createElement(isHeader ? 'th' : 'td', {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index),\n role: 'presentation',\n }, content);\n }\n componentDidMount() {\n this.getStickyScrolling = memoizeArraylike(initStickyScrolling);\n this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer);\n this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer);\n this.updateScrollSyncers();\n this.handleSizing(false);\n this.context.addResizeHandler(this.handleSizing);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateScrollSyncers();\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n this.destroyScrollSyncers();\n }\n allowSizing() {\n let now = new Date();\n if (!this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL) {\n this.lastSizingDate = now;\n this.recentSizingCnt = 0;\n return true;\n }\n return (this.recentSizingCnt += 1) <= 10;\n }\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]));\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let shrinkWidths = [];\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection); // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls);\n }\n });\n return shrinkWidths;\n }\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n computeSectionRowMaxHeights() {\n let newHeightMap = new Map();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sectionRowMaxHeights = [];\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI];\n let assignableHeights = []; // chunk, row\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let rowHeights = [];\n let chunkEl = this.chunkElRefs.currentMap[index];\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl) => {\n let max = getRowInnerMaxHeight(rowEl);\n newHeightMap.set(rowEl, max);\n return max;\n });\n }\n else {\n rowHeights = [];\n }\n rowHeightsByChunk.push(rowHeights);\n }\n let rowCnt = rowHeightsByChunk[0].length;\n let isEqualRowCnt = true;\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false;\n break;\n }\n }\n if (!isEqualRowCnt) {\n let chunkHeightSums = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);\n }\n let maxTotalSum = Math.max(...chunkHeightSums);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length;\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);\n let rowInChunkHeights = [];\n let row = 0;\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst);\n row += 1;\n }\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers);\n row += 1;\n }\n assignableHeights.push(rowInChunkHeights);\n }\n }\n else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([]);\n }\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row];\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h);\n }\n }\n let maxHeight = Math.max(...rowHeightsAcrossChunks);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight);\n }\n }\n }\n }\n sectionRowMaxHeights.push(assignableHeights);\n }\n this.rowInnerMaxHeightMap = newHeightMap;\n return sectionRowMaxHeights;\n }\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let lastSectionI = sectionCnt - 1;\n let currentScrollers = this.clippedScrollerRefs.currentMap;\n let scrollerEls = this.scrollerElRefs.currentMap;\n let forceYScrollbars = false;\n let forceXScrollbars = false;\n let scrollerClientWidths = {};\n let scrollerClientHeights = {};\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true;\n break;\n }\n }\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let scrollerEl = scrollerEls[index];\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode;\n scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[index] = Math.floor(harnessEl.getBoundingClientRect().height - ((sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n }\n }\n }\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights };\n }\n updateStickyScrolling() {\n let { isRtl } = this.context;\n let argsByKey = this.scrollerElRefs.getAll().map((scrollEl) => [scrollEl, isRtl]);\n this.getStickyScrolling(argsByKey)\n .forEach((stickyScrolling) => stickyScrolling.updateSize());\n }\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let scrollElsBySection = {};\n let scrollElsByColumn = {};\n let scrollElMap = this.scrollerElRefs.currentMap;\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection;\n let endIndex = startIndex + chunksPerSection;\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered\n }\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered\n }\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn);\n }\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer);\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer);\n }\n getChunkConfigByIndex(index) {\n let chunksPerSection = this.getDims()[1];\n let sectionI = Math.floor(index / chunksPerSection);\n let chunkI = index % chunksPerSection;\n let sectionConfig = this.props.sections[sectionI];\n return sectionConfig && sectionConfig.chunks[chunkI];\n }\n forceScrollLeft(col, scrollLeft) {\n let scrollSyncer = this.scrollSyncersByColumn[col];\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft);\n }\n }\n forceScrollTop(sectionI, scrollTop) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI];\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop);\n }\n }\n _handleChunkEl(chunkEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl);\n }\n }\n _handleScrollerEl(scrollerEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl);\n }\n }\n getDims() {\n let sectionCnt = this.props.sections.length;\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0;\n return [sectionCnt, chunksPerSection];\n }\n}\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction sumNumbers(numbers) {\n let sum = 0;\n for (let n of numbers) {\n sum += n;\n }\n return sum;\n}\nfunction getRowInnerMaxHeight(rowEl) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight);\n if (innerHeights.length) {\n return Math.max(...innerHeights);\n }\n return 0;\n}\nfunction getElHeight(el) {\n return el.offsetHeight; // better to deal with integers, for rounding, for PureComponent\n}\nfunction renderMacroColGroup(colGroupStats, shrinkWidths) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width;\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1; // +1 for border :(\n }\n return ( // eslint-disable-next-line react/jsx-key\n createElement(\"col\", { style: { width } }));\n });\n return createElement('colgroup', {}, ...children);\n}\nfunction compileColGroupStat(colGroupConfig) {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width'); // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth');\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols);\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol);\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n };\n}\nfunction sumColProp(cols, propName) {\n let total = 0;\n for (let col of cols) {\n let val = col[propName];\n if (typeof val === 'number') {\n total += val * (col.span || 1);\n }\n }\n return total;\n}\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n};\nfunction isColGroupStatsEqual(stat0, stat1) {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);\n}\n// for memoizers...\nfunction initScrollSyncer(isVertical, ...scrollEls) {\n return new ScrollSyncer(isVertical, scrollEls);\n}\nfunction destroyScrollSyncer(scrollSyncer) {\n scrollSyncer.destroy();\n}\nfunction initStickyScrolling(scrollEl, isRtl) {\n return new StickyScrolling(scrollEl, isRtl);\n}\n\nexport { ScrollGrid };\n"],"names":["getScrollFromLeftEdge","el","scrollLeft","window","getComputedStyle","direction","getRtlScrollSystem","scrollWidth","clientWidth","setScrollFromLeftEdge","_rtlScrollSystem","document","createElement","style","position","top","width","height","overflow","system","innerEl","appendChild","body","removeElement","detectRtlScrollSystem","StickyScrolling","constructor","scrollEl","isRtl","this","updateSize","els","findElements","elGeoms","viewportWidth","forEach","i","left","textAlign","elWidth","parentBound","parentWidth","right","applyStyle","assignStickyPositions","queryElGeoms","canvasOrigin","rect","getBoundingClientRect","edges","computeEdges","borderLeft","scrollbarLeft","borderTop","scrollTop","getScrollCanvasOrigin","translateRect","computeInnerRect","parentNode","elRect","computedStyles","naturalBound","parseFloat","push","elHeight","ClippedScroller","BaseComponent","super","arguments","elRef","createRef","state","xScrollbarWidth","yScrollbarWidth","handleScroller","scroller","setRef","props","scrollerRef","handleSizing","overflowY","setState","getYScrollbarWidth","overflowX","getXScrollbarWidth","render","context","isScrollbarOnLeft","getIsRtlScrollbarOnLeft","overcomeLeft","overcomeRight","overcomeBottom","forPrint","ref","className","liquid","Scroller","scrollerElRef","maxHeight","liquidIsAbsolute","children","componentDidMount","addResizeHandler","getSnapshotBeforeUpdate","prevProps","simulateScrollLeft","componentDidUpdate","prevState","snapshot","scrollerEl","isPropsEqual","undefined","restoredScrollLeft","parseInt","componentWillUnmount","removeResizeHandler","needsXScrolling","needsYScrolling","WHEEL_EVENT_NAMES","split","ScrollListener","emitter","Emitter","isScrolling","isTouching","isRecentlyWheeled","isRecentlyScrolled","wheelWaiter","DelayedRunner","_handleWheelWaited","bind","scrollWaiter","_handleScrollWaited","handleScroll","startScroll","trigger","request","handleWheel","handleTouchStart","handleTouchEnd","endScroll","addEventListener","passive","eventName","destroy","removeEventListener","clear","ScrollSyncer","isVertical","scrollEls","isPaused","scrollListeners","map","bindScroller","scrollListener","on","isWheel","isTouch","masterEl","assignMaster","otherEl","forceScrollLeft","listener","forceScrollTop","config","SCROLLGRID_RESIZE_INTERVAL","ScrollGrid","compileColGroupStats","memoizeArraylike","compileColGroupStat","isColGroupStatsEqual","renderMicroColGroups","renderMicroColGroup","clippedScrollerRefs","RefMap","scrollerElRefs","_handleScrollerEl","chunkElRefs","_handleChunkEl","scrollSyncersBySection","scrollSyncersByColumn","rowUnstableMap","Map","rowInnerMaxHeightMap","anyRowHeightsChanged","recentSizingCnt","shrinkWidths","forceYScrollbars","forceXScrollbars","scrollerClientWidths","scrollerClientHeights","sectionRowMaxHeights","isForcedResize","sectionRowMaxHeightsChanged","allowSizing","otherState","size","computeSectionRowMaxHeights","Object","assign","computeShrinkWidths","computeScrollerDims","updateStickyScrolling","handleRowHeightChange","rowEl","isStable","delete","innerMaxHeight","getRowInnerMaxHeight","has","get","set","colGroupStats","colGroups","colGroup","microColGroupNodes","stat","cols","classNames","getScrollGridClassNames","getDims","currentConfig","sectionConfigs","sections","configCnt","length","configI","headSectionNodes","bodySectionNodes","footSectionNodes","type","renderSection","isBuggy","getCanVGrowWithinCell","roleAttrs","role","join","colGroupStat","totalColWidth","sanitizeShrinkWidth","renderMacroColGroup","Boolean","sectionConfig","sectionIndex","isHeader","Fragment","key","outerContent","getSectionClassNames","chunks","chunkConfig","renderChunk","microColGroupNode","chunkIndex","rowHeights","sectionCnt","chunksPerSection","index","isVScrollSide","isLastSection","allowXScrolling","allowYScrolling","getAllowYScrolling","chunkVGrow","getSectionHasLiquidHeight","expandRows","tableMinWidth","totalColMinWidth","content","renderChunkContent","tableColGroupNode","clientHeight","syncRowHeights","rowSyncHeights","reportRowHeightChange","getStickyScrolling","initStickyScrolling","getScrollSyncersBySection","memoizeHashlike","initScrollSyncer","destroyScrollSyncer","getScrollSyncersByColumn","updateScrollSyncers","destroyScrollSyncers","now","Date","lastSizingDate","valueOf","cnt","hasShrinkCol","chunkEls","collect","computeShrinkWidth","newHeightMap","sectionI","assignableHeights","rowHeightsByChunk","chunkI","chunkEl","currentMap","max","rowCnt","isEqualRowCnt","row","rowHeightsAcrossChunks","h","Math","chunkHeightSums","sumNumbers","maxTotalSum","rowInChunkCnt","rowInChunkTotalHeight","rowInChunkHeightOthers","floor","rowInChunkHeightFirst","rowInChunkHeights","scrollbarWidth","getScrollbarWidths","sideScrollI","lastSectionI","currentScrollers","scrollerEls","harnessEl","y","x","argsByKey","getAll","stickyScrolling","scrollElsBySection","scrollElsByColumn","scrollElMap","startIndex","endIndex","collectFromHash","col","mapHash","getChunkConfigByIndex","scrollSyncer","numbers","sum","n","innerHeights","getElHeight","offsetHeight","colGroupConfig","sumColProp","hasShrinkWidth","propName","total","val","span","addStateEquality","isArraysEqual","COL_GROUP_STAT_EQUALITY","isColPropsEqual","stat0","stat1","compareObjs"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{createPlugin as e}from"../core/index.js";import{DayTimeColsView as i}from"./internal.js";var t=e({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:i,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}});export{t as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/timegrid/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\n\nconst OPTION_REFINERS = {\n allDaySlot: Boolean,\n};\n\nvar index = createPlugin({\n name: '@fullcalendar/timegrid',\n initialView: 'timeGridWeek',\n optionRefiners: OPTION_REFINERS,\n views: {\n timeGrid: {\n component: DayTimeColsView,\n usesMinMaxTime: true,\n allDaySlot: true,\n slotDuration: '00:30:00',\n slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n },\n timeGridDay: {\n type: 'timeGrid',\n duration: { days: 1 },\n },\n timeGridWeek: {\n type: 'timeGrid',\n duration: { weeks: 1 },\n },\n },\n});\n\nexport { index as default };\n"],"names":["index","createPlugin","name","initialView","optionRefiners","allDaySlot","Boolean","views","timeGrid","component","DayTimeColsView","usesMinMaxTime","slotDuration","slotEventOverlap","timeGridDay","type","duration","days","timeGridWeek","weeks"],"mappings":"gGAUG,IAACA,EAAQC,EAAa,CACrBC,KAAM,yBACNC,YAAa,eACbC,eAPoB,CACpBC,WAAYC,SAOZC,MAAO,CACHC,SAAU,CACNC,UAAWC,EACXC,gBAAgB,EAChBN,YAAY,EACZO,aAAc,WACdC,kBAAkB,GAEtBC,YAAa,CACTC,KAAM,WACNC,SAAU,CAAEC,KAAM,IAEtBC,aAAc,CACVH,KAAM,WACNC,SAAU,CAAEG,MAAO"}
@@ -0,0 +1,2 @@
1
+ import{DayTable as e}from"../daygrid/internal.js";import{x as t,z as i,bI as s,bM as r,bT as o,ct as n,bc as l,bj as a,a_ as d,cn as c,C as f,ca as h,bZ as g,cq as p,c9 as m,a6 as u,ch as v,c8 as b,d as x,bq as y,br as S,bs as w,bn as R,aW as C,bN as D,B as k,V as M,bm as E,bU as N,o as P,cd as T,b8 as z,G as H,q as W,bP as O,cj as G,ci as I,bQ as A,bu as L,cp as j,cm as F,cl as q,bR as B,co as U,cg as K,by as Z,bC as Q,bB as V,bA as _,bz as J}from"../core/internal-common.js";import{createElement as X,createRef as Y,Fragment as $}from"../../preact/dist/preact.mjs.js";class ee extends C{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?D(e)?["timed","allDay"]:["allDay"]:["timed"]}}const te=t({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function ie(e){let i=["fc-timegrid-slot","fc-timegrid-slot-label",e.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return X(M.Consumer,null,(s=>{if(!e.isLabeled)return X("td",{className:i.join(" "),"data-time":e.isoTimeStr});let{dateEnv:r,options:o,viewApi:n}=s,l=null==o.slotLabelFormat?te:Array.isArray(o.slotLabelFormat)?t(o.slotLabelFormat[0]):t(o.slotLabelFormat),a={level:0,time:e.time,date:r.toDate(e.date),view:n,text:r.format(e.date,l)};return X(f,{elTag:"td",elClasses:i,elAttrs:{"data-time":e.isoTimeStr},renderProps:a,generatorName:"slotLabelContent",customGenerator:o.slotLabelContent,defaultGenerator:se,classNameGenerator:o.slotLabelClassNames,didMount:o.slotLabelDidMount,willUnmount:o.slotLabelWillUnmount},(e=>X("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},X(e,{elTag:"div",elClasses:["fc-timegrid-slot-label-cushion","fc-scrollgrid-shrink-cushion"]}))))}))}function se(e){return e.text}class re extends k{render(){return this.props.slatMetas.map((e=>X("tr",{key:e.key},X(ie,Object.assign({},e)))))}}const oe=t({week:"short"});class ne extends l{constructor(){super(...arguments),this.allDaySplitter=new ee,this.headerElRef=Y(),this.rootElRef=Y(),this.scrollerElRef=Y(),this.state={slatCoords:null},this.handleScrollTopRequest=e=>{let t=this.scrollerElRef.current;t&&(t.scrollTop=e)},this.renderHeadAxis=(e,t="")=>{let{options:i}=this.context,{dateProfile:s}=this.props,r=s.renderRange,o=1===a(r.start,r.end)?d(this.context,r.start,"week"):{};return i.weekNumbers&&"day"===e?X(c,{elTag:"th",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},date:r.start,defaultFormat:oe},(e=>X("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame","fc-timegrid-axis-frame-liquid"].join(" "),style:{height:t}},X(e,{elTag:"a",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"],elAttrs:o})))):X("th",{"aria-hidden":!0,className:"fc-timegrid-axis"},X("div",{className:"fc-timegrid-axis-frame",style:{height:t}}))},this.renderTableRowAxis=e=>{let{options:t,viewApi:i}=this.context,s={text:t.allDayText,view:i};return X(f,{elTag:"td",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},renderProps:s,generatorName:"allDayContent",customGenerator:t.allDayContent,defaultGenerator:le,classNameGenerator:t.allDayClassNames,didMount:t.allDayDidMount,willUnmount:t.allDayWillUnmount},(t=>X("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame",null==e?" fc-timegrid-axis-frame-liquid":""].join(" "),style:{height:e}},X(t,{elTag:"span",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"]}))))},this.handleSlatCoords=e=>{this.setState({slatCoords:e})}}renderSimpleLayout(e,t,i){let{context:s,props:r}=this,o=[],n=h(s.options);return e&&o.push({type:"header",key:"header",isSticky:n,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),t&&(o.push({type:"body",key:"all-day",chunk:{content:t}}),o.push({type:"body",key:"all-day-divider",outerContent:X("tr",{role:"presentation",className:"fc-scrollgrid-section"},X("td",{className:"fc-timegrid-divider "+s.theme.getClass("tableCellShaded")}))})),o.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(s.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:i}}),X(p,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:s.viewSpec},X(g,{liquid:!r.isHeightAuto&&!r.forPrint,collapsibleWidth:r.forPrint,cols:[{width:"shrink"}],sections:o}))}renderHScrollLayout(e,t,i,s,r,o,n){let l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error("No ScrollGrid implementation");let{context:a,props:d}=this,c=!d.forPrint&&h(a.options),f=!d.forPrint&&m(a.options),g=[];e&&g.push({type:"header",key:"header",isSticky:c,syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>X("tr",{role:"presentation"},this.renderHeadAxis("day",e.rowSyncHeights[0]))},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),t&&(g.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>X("tr",{role:"presentation"},this.renderTableRowAxis(e.rowSyncHeights[0]))},{key:"cols",content:t}]}),g.push({key:"all-day-divider",type:"body",outerContent:X("tr",{role:"presentation",className:"fc-scrollgrid-section"},X("td",{colSpan:2,className:"fc-timegrid-divider "+a.theme.getClass("tableCellShaded")}))}));let x=a.options.nowIndicator;return g.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(a.options.expandRows),chunks:[{key:"axis",content:e=>X("div",{className:"fc-timegrid-axis-chunk"},X("table",{"aria-hidden":!0,style:{height:e.expandRows?e.clientHeight:""}},e.tableColGroupNode,X("tbody",null,X(re,{slatMetas:o}))),X("div",{className:"fc-timegrid-now-indicator-container"},X(u,{unit:x?"minute":"day"},(e=>{let t=x&&n&&n.safeComputeTop(e);return"number"==typeof t?X(v,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:t},isAxis:!0,date:e}):null}))))},{key:"cols",scrollerElRef:this.scrollerElRef,content:i}]}),f&&g.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:b},{key:"cols",content:b}]}),X(p,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:a.viewSpec},X(l,{liquid:!d.isHeightAuto&&!d.forPrint,forPrint:d.forPrint,collapsibleWidth:!1,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:s,minWidth:r}]}],sections:g}))}getAllDayMaxEventProps(){let{dayMaxEvents:e,dayMaxEventRows:t}=this.context.options;return!0!==e&&!0!==t||(e=void 0,t=5),{dayMaxEvents:e,dayMaxEventRows:t}}}function le(e){return e.text}class ae{constructor(e,t,i){this.positions=e,this.dateProfile=t,this.slotDuration=i}safeComputeTop(e){let{dateProfile:t}=this;if(H(t.currentRange,e)){let i=W(e),s=e.valueOf()-i.valueOf();if(s>=y(t.slotMinTime)&&s<y(t.slotMaxTime))return this.computeTimeTop(x(s))}return null}computeDateTop(e,t){return t||(t=W(e)),this.computeTimeTop(x(e.valueOf()-t.valueOf()))}computeTimeTop(e){let t,i,{positions:s,dateProfile:r}=this,o=s.els.length,n=(e.milliseconds-y(r.slotMinTime))/y(this.slotDuration);return n=Math.max(0,n),n=Math.min(o,n),t=Math.floor(n),t=Math.min(t,o-1),i=n-t,s.tops[t]+s.getHeight(t)*i}}class de extends k{render(){let{props:e,context:t}=this,{options:i}=t,{slatElRefs:s}=e;return X("tbody",null,e.slatMetas.map(((r,o)=>{let n={time:r.time,date:t.dateEnv.toDate(r.date),view:t.viewApi};return X("tr",{key:r.key,ref:s.createRef(r.key)},e.axis&&X(ie,Object.assign({},r)),X(f,{elTag:"td",elClasses:["fc-timegrid-slot","fc-timegrid-slot-lane",!r.isLabeled&&"fc-timegrid-slot-minor"],elAttrs:{"data-time":r.isoTimeStr},renderProps:n,generatorName:"slotLaneContent",customGenerator:i.slotLaneContent,classNameGenerator:i.slotLaneClassNames,didMount:i.slotLaneDidMount,willUnmount:i.slotLaneWillUnmount}))})))}}class ce extends k{constructor(){super(...arguments),this.rootElRef=Y(),this.slatElRefs=new T}render(){let{props:e,context:t}=this;return X("div",{ref:this.rootElRef,className:"fc-timegrid-slots"},X("table",{"aria-hidden":!0,className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,X(de,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))}componentDidMount(){this.updateSizing()}componentDidUpdate(){this.updateSizing()}componentWillUnmount(){this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{context:e,props:t}=this;if(t.onCoords&&null!==t.clientWidth){this.rootElRef.current.offsetHeight&&t.onCoords(new ae(new z(this.rootElRef.current,(i=this.slatElRefs.currentMap,t.slatMetas.map((e=>i[e.key]))),!1,!0),this.props.dateProfile,e.options.slotDuration))}var i}}function fe(e,t){let i,s=[];for(i=0;i<t;i+=1)s.push([]);if(e)for(i=0;i<e.length;i+=1)s[e[i].col].push(e[i]);return s}function he(e,t){let i=[];if(e){for(let s=0;s<t;s+=1)i[s]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(let t of e.segs)i[t.col].segs.push(t)}else for(let e=0;e<t;e+=1)i[e]=null;return i}class ge extends k{render(){let{props:e}=this;return X(U,{elClasses:["fc-timegrid-more-link"],elStyle:{top:e.top,bottom:e.bottom},allDayDate:null,moreCnt:e.hiddenSegs.length,allSegs:e.hiddenSegs,hiddenSegs:e.hiddenSegs,extraDateSpan:e.extraDateSpan,dateProfile:e.dateProfile,todayRange:e.todayRange,popoverContent:()=>Ce(e.hiddenSegs,e),defaultGenerator:pe,forceTimed:!0},(e=>X(e,{elTag:"div",elClasses:["fc-timegrid-more-link-inner","fc-sticky"]})))}}function pe(e){return e.shortText}function me(e,t,i){let s=new Z;null!=t&&(s.strictOrder=t),null!=i&&(s.maxStackCnt=i);let r=s.addSegs(e),o=Q(r),n=function(e){const{entriesByLevel:t}=e,i=xe(((e,t)=>e+":"+t),((s,r)=>{let o=function(e,t,i){let{levelCoords:s,entriesByLevel:r}=e,o=r[t][i],n=s[t]+o.thickness,l=s.length,a=t;for(;a<l&&s[a]<n;a+=1);for(;a<l;a+=1){let e,t=r[a],i=V(t,o.span.start,_),s=i[0]+i[1],n=s;for(;(e=t[n])&&e.span.start<o.span.end;)n+=1;if(s<n)return{level:a,lateralStart:s,lateralEnd:n}}return null}(e,s,r),n=ue(o,i),l=t[s][r];return[Object.assign(Object.assign({},l),{nextLevelNodes:n[0]}),l.thickness+n[1]]}));return ue(t.length?{level:0,lateralStart:0,lateralEnd:t[0].length}:null,i)[0]}(s);return n=function(e,t){const i=xe(((e,t,i)=>J(e)),((e,s,r)=>{let o,{nextLevelNodes:n,thickness:l}=e,a=l+r,d=l/a,c=[];if(n.length)for(let e of n)if(void 0===o){let t=i(e,s,a);o=t[0],c.push(t[1])}else{let t=i(e,o,0);c.push(t[1])}else o=t;let f=(o-s)*d;return[o-f,Object.assign(Object.assign({},e),{thickness:f,nextLevelNodes:c})]}));return e.map((e=>i(e,0,0)[1]))}(n,1),{segRects:function(e){let t=[];const i=xe(((e,t,i)=>J(e)),((e,i,r)=>{let o=Object.assign(Object.assign({},e),{levelCoord:i,stackDepth:r,stackForward:0});return t.push(o),o.stackForward=s(e.nextLevelNodes,i+e.thickness,r+1)+1}));function s(e,t,s){let r=0;for(let o of e)r=Math.max(i(o,t,s),r);return r}return s(e,0,0),t}(n),hiddenGroups:o}}function ue(e,t){if(!e)return[[],0];let{level:i,lateralStart:s,lateralEnd:r}=e,o=s,n=[];for(;o<r;)n.push(t(i,o)),o+=1;return n.sort(ve),[n.map(be),n[0][1]]}function ve(e,t){return t[1]-e[1]}function be(e){return e[0]}function xe(e,t){const i={};return(...s)=>{let r=e(...s);return r in i?i[r]:i[r]=t(...s)}}function ye(e,t,i=null,s=0){let r=[];if(i)for(let o=0;o<e.length;o+=1){let n=e[o],l=i.computeDateTop(n.start,t),a=Math.max(l+(s||0),i.computeDateTop(n.end,t));r.push({start:Math.round(l),end:Math.round(a)})}return r}const Se=t({hour:"numeric",minute:"2-digit",meridiem:!1});class we extends k{render(){return X(K,Object.assign({},this.props,{elClasses:["fc-timegrid-event","fc-v-event",this.props.isShort&&"fc-timegrid-event-short"],defaultTimeFormat:Se}))}}class Re extends k{constructor(){super(...arguments),this.sortEventSegs=i(O)}render(){let{props:e,context:t}=this,{options:i}=t,s=i.selectMirror,r=e.eventDrag&&e.eventDrag.segs||e.eventResize&&e.eventResize.segs||s&&e.dateSelectionSegs||[],o=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{},n=this.sortEventSegs(e.fgEventSegs,i.eventOrder);return X(I,{elTag:"td",elRef:e.elRef,elClasses:["fc-timegrid-col",...e.extraClassNames||[]],elAttrs:Object.assign({role:"gridcell"},e.extraDataAttrs),date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraRenderProps:e.extraRenderProps},(t=>X("div",{className:"fc-timegrid-col-frame"},X("div",{className:"fc-timegrid-col-bg"},this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight")),X("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(n,o,!1,!1,!1)),X("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(r,{},Boolean(e.eventDrag),Boolean(e.eventResize),Boolean(s),"mirror")),X("div",{className:"fc-timegrid-now-indicator-container"},this.renderNowIndicator(e.nowIndicatorSegs)),G(i)&&X(t,{elTag:"div",elClasses:["fc-timegrid-col-misc"]}))))}renderFgSegs(e,t,i,s,r,o){let{props:n}=this;return n.forPrint?Ce(e,n):this.renderPositionedFgSegs(e,t,i,s,r,o)}renderPositionedFgSegs(e,t,i,s,r,o){let{eventMaxStack:n,eventShortHeight:l,eventOrderStrict:a,eventMinHeight:d}=this.context.options,{date:c,slatCoords:f,eventSelection:h,todayRange:g,nowDate:p}=this.props,m=i||s||r,u=ye(e,c,f,d),{segPlacements:v,hiddenGroups:b}=function(e,t,i,s){let r=[],o=[];for(let i=0;i<e.length;i+=1){let s=t[i];s?r.push({index:i,thickness:1,span:s}):o.push(e[i])}let{segRects:n,hiddenGroups:l}=me(r,i,s),a=[];for(let t of n)a.push({seg:e[t.index],rect:t});for(let e of o)a.push({seg:e,rect:null});return{segPlacements:a,hiddenGroups:l}}(e,u,a,n);return X($,null,this.renderHiddenGroups(b,e),v.map((e=>{let{seg:n,rect:a}=e,d=n.eventRange.instance.instanceId,c=m||Boolean(!t[d]&&a),f=De(a&&a.span),u=!m&&a?this.computeSegHStyle(a):{left:0,right:0},v=Boolean(a)&&a.stackForward>0,b=Boolean(a)&&a.span.end-a.span.start<l;return X("div",{className:"fc-timegrid-event-harness"+(v?" fc-timegrid-event-harness-inset":""),key:o||d,style:Object.assign(Object.assign({visibility:c?"":"hidden"},f),u)},X(we,Object.assign({seg:n,isDragging:i,isResizing:s,isDateSelecting:r,isSelected:d===h,isShort:b},A(n,g,p))))})))}renderHiddenGroups(e,t){let{extraDateSpan:i,dateProfile:s,todayRange:r,nowDate:o,eventSelection:n,eventDrag:l,eventResize:a}=this.props;return X($,null,e.map((e=>{let d=De(e.span),c=(f=e.entries,h=t,f.map((e=>h[e.index])));var f,h;return X(ge,{key:L(j(c)),hiddenSegs:c,top:d.top,bottom:d.bottom,extraDateSpan:i,dateProfile:s,todayRange:r,nowDate:o,eventSelection:n,eventDrag:l,eventResize:a})})))}renderFillSegs(e,t){let{props:i,context:s}=this,r=ye(e,i.date,i.slatCoords,s.options.eventMinHeight).map(((s,r)=>{let o=e[r];return X("div",{key:B(o.eventRange),className:"fc-timegrid-bg-harness",style:De(s)},"bg-event"===t?X(F,Object.assign({seg:o},A(o,i.todayRange,i.nowDate))):q(t))}));return X($,null,r)}renderNowIndicator(e){let{slatCoords:t,date:i}=this.props;return t?e.map(((e,s)=>X(v,{key:s,elClasses:["fc-timegrid-now-indicator-line"],elStyle:{top:t.computeDateTop(e.start,i)},isAxis:!1,date:i}))):null}computeSegHStyle(e){let t,i,{isRtl:s,options:r}=this.context,o=r.slotEventOverlap,n=e.levelCoord,l=e.levelCoord+e.thickness;o&&(l=Math.min(1,n+2*(l-n))),s?(t=1-l,i=n):(t=n,i=1-l);let a={zIndex:e.stackDepth+1,left:100*t+"%",right:100*i+"%"};return o&&!e.stackForward&&(a[s?"marginLeft":"marginRight"]=20),a}}function Ce(e,{todayRange:t,nowDate:i,eventSelection:s,eventDrag:r,eventResize:o}){let n=(r?r.affectedInstances:null)||(o?o.affectedInstances:null)||{};return X($,null,e.map((e=>{let r=e.eventRange.instance.instanceId;return X("div",{key:r,style:{visibility:n[r]?"hidden":""}},X(we,Object.assign({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:r===s,isShort:!1},A(e,t,i))))})))}function De(e){return e?{top:e.start,bottom:-e.end}:{top:"",bottom:""}}class ke extends k{constructor(){super(...arguments),this.splitFgEventSegs=i(fe),this.splitBgEventSegs=i(fe),this.splitBusinessHourSegs=i(fe),this.splitNowIndicatorSegs=i(fe),this.splitDateSelectionSegs=i(fe),this.splitEventDrag=i(he),this.splitEventResize=i(he),this.rootElRef=Y(),this.cellElRefs=new T}render(){let{props:e,context:t}=this,i=t.options.nowIndicator&&e.slatCoords&&e.slatCoords.safeComputeTop(e.nowDate),s=e.cells.length,r=this.splitFgEventSegs(e.fgEventSegs,s),o=this.splitBgEventSegs(e.bgEventSegs,s),n=this.splitBusinessHourSegs(e.businessHourSegs,s),l=this.splitNowIndicatorSegs(e.nowIndicatorSegs,s),a=this.splitDateSelectionSegs(e.dateSelectionSegs,s),d=this.splitEventDrag(e.eventDrag,s),c=this.splitEventResize(e.eventResize,s);return X("div",{className:"fc-timegrid-cols",ref:this.rootElRef},X("table",{role:"presentation",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,X("tbody",{role:"presentation"},X("tr",{role:"row"},e.axis&&X("td",{"aria-hidden":!0,className:"fc-timegrid-col fc-timegrid-axis"},X("div",{className:"fc-timegrid-col-frame"},X("div",{className:"fc-timegrid-now-indicator-container"},"number"==typeof i&&X(v,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:i},isAxis:!0,date:e.nowDate})))),e.cells.map(((t,i)=>X(Re,{key:t.key,elRef:this.cellElRefs.createRef(t.key),dateProfile:e.dateProfile,date:t.date,nowDate:e.nowDate,todayRange:e.todayRange,extraRenderProps:t.extraRenderProps,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,extraDateSpan:t.extraDateSpan,fgEventSegs:r[i],bgEventSegs:o[i],businessHourSegs:n[i],nowIndicatorSegs:l[i],dateSelectionSegs:a[i],eventDrag:d[i],eventResize:c[i],slatCoords:e.slatCoords,eventSelection:e.eventSelection,forPrint:e.forPrint})))))))}componentDidMount(){this.updateCoords()}componentDidUpdate(){this.updateCoords()}updateCoords(){let{props:e}=this;var t;e.onColCoords&&null!==e.clientWidth&&e.onColCoords(new z(this.rootElRef.current,(t=this.cellElRefs.currentMap,e.cells.map((e=>t[e.key]))),!0,!1))}}class Me extends l{constructor(){super(...arguments),this.processSlotOptions=i(Ee),this.state={slatCoords:null},this.handleRootEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)},this.handleScrollRequest=e=>{let{onScrollTopRequest:t}=this.props,{slatCoords:i}=this.state;if(t&&i){if(e.time){let s=i.computeTimeTop(e.time);s=Math.ceil(s),s&&(s+=1),t(s)}return!0}return!1},this.handleColCoords=e=>{this.colCoords=e},this.handleSlatCoords=e=>{this.setState({slatCoords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:t}=this;return X("div",{className:"fc-timegrid-body",ref:this.handleRootEl,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},X(ce,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),X(ke,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))}componentDidMount(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach()}queryHit(e,t){let{dateEnv:i,options:s}=this.context,{colCoords:r}=this,{dateProfile:o}=this.props,{slatCoords:n}=this.state,{snapDuration:l,snapsPerSlot:a}=this.processSlotOptions(this.props.slotDuration,s.snapDuration),d=r.leftToIndex(e),c=n.positions.topToIndex(t);if(null!=d&&null!=c){let e=this.props.cells[d],s=n.positions.tops[c],f=n.positions.getHeight(c),h=(t-s)/f,g=c*a+Math.floor(h*a),p=this.props.cells[d].date,m=R(o.slotMinTime,E(l,g)),u=i.add(p,m),v=i.add(u,l);return{dateProfile:o,dateSpan:Object.assign({range:{start:u,end:v},allDay:!1},e.extraDateSpan),dayEl:r.els[d],rect:{left:r.lefts[d],right:r.rights[d],top:s,bottom:s+f},layer:0}}return null}}function Ee(e,t){let i=t||e,s=S(e,i);return null===s&&(i=e,s=1),{snapDuration:i,snapsPerSlot:s}}class Ne extends N{sliceRange(e,t){let i=[];for(let s=0;s<t.length;s+=1){let r=P(e,t[s]);r&&i.push({start:r.start,end:r.end,isStart:r.start.valueOf()===e.start.valueOf(),isEnd:r.end.valueOf()===e.end.valueOf(),col:s})}return i}}class Pe extends l{constructor(){super(...arguments),this.buildDayRanges=i(Te),this.slicer=new Ne,this.timeColsRef=Y()}render(){let{props:e,context:t}=this,{dateProfile:i,dayTableModel:s}=e,{nowIndicator:r,nextDayThreshold:o}=t.options,n=this.buildDayRanges(s,i,t.dateEnv);return X(u,{unit:r?"minute":"day"},((l,a)=>X(Me,Object.assign({ref:this.timeColsRef},this.slicer.sliceProps(e,i,null,t,n),{forPrint:e.forPrint,axis:e.axis,dateProfile:i,slatMetas:e.slatMetas,slotDuration:e.slotDuration,cells:s.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:l,nowIndicatorSegs:r&&this.slicer.sliceNowDate(l,i,o,t,n),todayRange:a,onScrollTopRequest:e.onScrollTopRequest,onSlatCoords:e.onSlatCoords}))))}}function Te(e,t,i){let s=[];for(let r of e.headerDates)s.push({start:i.add(r,t.slotMinTime),end:i.add(r,t.slotMaxTime)});return s}const ze=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function He(e,t,i,s,r){let o=new Date(0),n=e,l=x(0),a=i||function(e){let t,i,s;for(t=ze.length-1;t>=0;t-=1)if(i=x(ze[t]),s=S(i,e),null!==s&&s>1)return i;return e}(s),d=[];for(;y(n)<y(t);){let e=r.add(o,n),t=null!==S(l,a);d.push({date:e,time:n,key:e.toISOString(),isoTimeStr:w(e),isLabeled:t}),n=R(n,s),l=R(l,s)}return d}class We extends ne{constructor(){super(...arguments),this.buildTimeColsModel=i(Oe),this.buildSlatMetas=i(He)}render(){let{options:t,dateEnv:i,dateProfileGenerator:r}=this.context,{props:o}=this,{dateProfile:n}=o,l=this.buildTimeColsModel(n,r),a=this.allDaySplitter.splitProps(o),d=this.buildSlatMetas(n.slotMinTime,n.slotMaxTime,t.slotLabelInterval,t.slotDuration,i),{dayMinWidth:c}=t,f=!c,h=c,g=t.dayHeaders&&X(s,{dates:l.headerDates,dateProfile:n,datesRepDistinctDays:!0,renderIntro:f?this.renderHeadAxis:null}),p=!1!==t.allDaySlot&&(i=>X(e,Object.assign({},a.allDay,{dateProfile:n,dayTableModel:l,nextDayThreshold:t.nextDayThreshold,tableMinWidth:i.tableMinWidth,colGroupNode:i.tableColGroupNode,renderRowIntro:f?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:i.clientWidth,clientHeight:i.clientHeight,forPrint:o.forPrint},this.getAllDayMaxEventProps()))),m=e=>X(Pe,Object.assign({},a.timed,{dayTableModel:l,dateProfile:n,axis:f,slotDuration:t.slotDuration,slatMetas:d,forPrint:o.forPrint,tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:e.expandRows,onScrollTopRequest:this.handleScrollTopRequest}));return h?this.renderHScrollLayout(g,p,m,l.colCnt,c,d,this.state.slatCoords):this.renderSimpleLayout(g,p,m)}}function Oe(e,t){let i=new r(e.renderRange,t);return new o(i,!1)}n('.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:"\\00a0"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}');export{Pe as DayTimeCols,Ne as DayTimeColsSlicer,We as DayTimeColsView,Me as TimeCols,ae as TimeColsSlatsCoords,ne as TimeColsView,Te as buildDayRanges,He as buildSlatMetas,Oe as buildTimeColsModel};
2
+ //# sourceMappingURL=internal.js.map