@tomorrowevening/theatre-studio 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/dist/index.js +105 -56
  2. package/package.json +1 -1
  3. package/dist/IDBStorage.js +0 -19
  4. package/dist/PaneManager.js +0 -112
  5. package/dist/Scrub.js +0 -134
  6. package/dist/Studio.js +0 -405
  7. package/dist/StudioBundle.js +0 -21
  8. package/dist/StudioStore/StudioStore.js +0 -163
  9. package/dist/StudioStore/createTransactionPrivateApi.js +0 -204
  10. package/dist/StudioStore/generateDiskStateRevision.js +0 -4
  11. package/dist/StudioStore/persistStateOfStudio.js +0 -61
  12. package/dist/TheatreStudio.js +0 -154
  13. package/dist/UI/UI.js +0 -65
  14. package/dist/UI/UINonSSRBits.js +0 -60
  15. package/dist/UIRoot/PanelsRoot.js +0 -19
  16. package/dist/UIRoot/PointerCapturing.js +0 -96
  17. package/dist/UIRoot/ProvideTheme.js +0 -9
  18. package/dist/UIRoot/UIRoot.js +0 -79
  19. package/dist/UIRoot/useKeyboardShortcuts.js +0 -158
  20. package/dist/checkForUpdates.js +0 -86
  21. package/dist/css.js +0 -116
  22. package/dist/getStudio.js +0 -10
  23. package/dist/notify.js +0 -328
  24. package/dist/panels/BasePanel/BasePanel.js +0 -74
  25. package/dist/panels/BasePanel/ExtensionPaneWrapper.js +0 -138
  26. package/dist/panels/BasePanel/PanelDragZone.js +0 -88
  27. package/dist/panels/BasePanel/PanelResizeHandle.js +0 -184
  28. package/dist/panels/BasePanel/PanelResizers.js +0 -14
  29. package/dist/panels/BasePanel/PanelWrapper.js +0 -34
  30. package/dist/panels/BasePanel/common.js +0 -52
  31. package/dist/panels/DetailPanel/DetailPanel.js +0 -146
  32. package/dist/panels/DetailPanel/DeterminePropEditorForDetail/DetailCompoundPropEditor.js +0 -169
  33. package/dist/panels/DetailPanel/DeterminePropEditorForDetail/DetailSimplePropEditor.js +0 -22
  34. package/dist/panels/DetailPanel/DeterminePropEditorForDetail/SingleRowPropEditor.js +0 -89
  35. package/dist/panels/DetailPanel/DeterminePropEditorForDetail/getDetailRowHighlightBackground.js +0 -7
  36. package/dist/panels/DetailPanel/DeterminePropEditorForDetail/rowIndentationFormulaCSS.js +0 -1
  37. package/dist/panels/DetailPanel/DeterminePropEditorForDetail.js +0 -28
  38. package/dist/panels/DetailPanel/EmptyState.js +0 -36
  39. package/dist/panels/DetailPanel/ObjectDetails.js +0 -52
  40. package/dist/panels/DetailPanel/ProjectDetails/StateConflictRow.js +0 -86
  41. package/dist/panels/DetailPanel/ProjectDetails.js +0 -98
  42. package/dist/panels/OutlinePanel/BaseItem.js +0 -136
  43. package/dist/panels/OutlinePanel/ObjectsList/ObjectItem.js +0 -14
  44. package/dist/panels/OutlinePanel/ObjectsList/ObjectsList.js +0 -85
  45. package/dist/panels/OutlinePanel/OutlinePanel.js +0 -73
  46. package/dist/panels/OutlinePanel/ProjectsList/ProjectListItem.js +0 -38
  47. package/dist/panels/OutlinePanel/ProjectsList/ProjectsList.js +0 -22
  48. package/dist/panels/OutlinePanel/SheetsList/SheetInstanceItem.js +0 -36
  49. package/dist/panels/OutlinePanel/SheetsList/SheetItem.js +0 -23
  50. package/dist/panels/OutlinePanel/SheetsList/SheetsList.js +0 -15
  51. package/dist/panels/OutlinePanel/outlinePanelUtils.js +0 -23
  52. package/dist/panels/SequenceEditorPanel/DopeSheet/DopeSheet.js +0 -21
  53. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/AnyCompositeRow.js +0 -74
  54. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/Left.js +0 -25
  55. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/PrimitivePropRow.js +0 -97
  56. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/PropWithChildrenRow.js +0 -15
  57. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/SheetObjectRow.js +0 -19
  58. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/SheetRow.js +0 -20
  59. package/dist/panels/SequenceEditorPanel/DopeSheet/Left/usePropHighlightMouseEnter.js +0 -33
  60. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/AggregateKeyframeConnector.js +0 -187
  61. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/AggregateKeyframeDot.js +0 -158
  62. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/AggregateKeyframeEditor.js +0 -32
  63. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/AggregateKeyframeVisualDot.js +0 -61
  64. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/iif.js +0 -3
  65. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregateKeyframeEditor/useAggregateKeyframeEditorUtils.js +0 -73
  66. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/AggregatedKeyframeTrack/AggregatedKeyframeTrack.js +0 -407
  67. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/BasicKeyframedTrack.js +0 -108
  68. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/BasicKeyframeConnector.js +0 -185
  69. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/CurveEditorPopover.js +0 -397
  70. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/CurveSegmentEditor.js +0 -136
  71. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/EasingOption.js +0 -52
  72. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/SVGCurveSegment.js +0 -43
  73. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/colors.js +0 -3
  74. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/shared.js +0 -84
  75. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/useFreezableMemo.js +0 -16
  76. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/CurveEditorPopover/useUIOptionGrid.js +0 -82
  77. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/DeterminePropEditorForSingleKeyframe.js +0 -93
  78. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/SingleKeyframeDot.js +0 -254
  79. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/SingleKeyframeEditor.js +0 -22
  80. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/useSingleKeyframeInlineEditorPopover.js +0 -11
  81. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/useTempTransactionEditingTools.js +0 -43
  82. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/DopeSheetBackground.js +0 -24
  83. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/DopeSheetSelectionView.js +0 -272
  84. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/FocusRangeCurtains.js +0 -88
  85. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/HorizontallyScrollableArea.js +0 -215
  86. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/KeyframeSnapTarget.js +0 -55
  87. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/LengthIndicator/LengthEditorPopover.js +0 -69
  88. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/LengthIndicator/LengthIndicator.js +0 -217
  89. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/PrimitivePropRow.js +0 -25
  90. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/PropWithChildrenRow.js +0 -18
  91. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/Right.js +0 -30
  92. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/Row.js +0 -50
  93. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/SheetObjectRow.js +0 -14
  94. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/SheetRow.js +0 -14
  95. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/collectAggregateKeyframes.js +0 -92
  96. package/dist/panels/SequenceEditorPanel/DopeSheet/Right/keyframeRowUI/ConnectorLine.js +0 -62
  97. package/dist/panels/SequenceEditorPanel/DopeSheet/selections.js +0 -149
  98. package/dist/panels/SequenceEditorPanel/DopeSheet/setCollapsedSheetObjectOrCompoundProp.js +0 -10
  99. package/dist/panels/SequenceEditorPanel/FrameGrid/FrameGrid.js +0 -92
  100. package/dist/panels/SequenceEditorPanel/FrameGrid/StampsGrid.js +0 -99
  101. package/dist/panels/SequenceEditorPanel/FrameGrid/createGrid.js +0 -49
  102. package/dist/panels/SequenceEditorPanel/FrameStampPositionProvider.js +0 -189
  103. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/BasicKeyframedTrack.js +0 -91
  104. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/Curve.js +0 -87
  105. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/CurveHandle.js +0 -186
  106. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/GraphEditorDotNonScalar.js +0 -162
  107. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/GraphEditorDotScalar.js +0 -209
  108. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/GraphEditorNonScalarDash.js +0 -23
  109. package/dist/panels/SequenceEditorPanel/GraphEditor/BasicKeyframedTrack/KeyframeEditor/KeyframeEditor.js +0 -30
  110. package/dist/panels/SequenceEditorPanel/GraphEditor/GraphEditor.js +0 -73
  111. package/dist/panels/SequenceEditorPanel/GraphEditor/PrimitivePropGraph.js +0 -20
  112. package/dist/panels/SequenceEditorPanel/GraphEditorToggle.js +0 -59
  113. package/dist/panels/SequenceEditorPanel/RightOverlay/DopeSnap.js +0 -36
  114. package/dist/panels/SequenceEditorPanel/RightOverlay/DopeSnapHitZoneUI.js +0 -57
  115. package/dist/panels/SequenceEditorPanel/RightOverlay/FocusRangeZone/FocusRangeStrip.js +0 -233
  116. package/dist/panels/SequenceEditorPanel/RightOverlay/FocusRangeZone/FocusRangeThumb.js +0 -217
  117. package/dist/panels/SequenceEditorPanel/RightOverlay/FocusRangeZone/FocusRangeZone.js +0 -181
  118. package/dist/panels/SequenceEditorPanel/RightOverlay/FrameStamp.js +0 -65
  119. package/dist/panels/SequenceEditorPanel/RightOverlay/HorizontalScrollbar.js +0 -235
  120. package/dist/panels/SequenceEditorPanel/RightOverlay/Markers/MarkerDot.js +0 -184
  121. package/dist/panels/SequenceEditorPanel/RightOverlay/Markers/MarkerEditorPopover.js +0 -65
  122. package/dist/panels/SequenceEditorPanel/RightOverlay/Markers/Markers.js +0 -13
  123. package/dist/panels/SequenceEditorPanel/RightOverlay/Playhead.js +0 -265
  124. package/dist/panels/SequenceEditorPanel/RightOverlay/PlayheadPositionPopover.js +0 -64
  125. package/dist/panels/SequenceEditorPanel/RightOverlay/RightOverlay.js +0 -35
  126. package/dist/panels/SequenceEditorPanel/RightOverlay/TopStrip.js +0 -31
  127. package/dist/panels/SequenceEditorPanel/SequenceEditorPanel.js +0 -179
  128. package/dist/panels/SequenceEditorPanel/VerticalScrollContainer.js +0 -42
  129. package/dist/panels/SequenceEditorPanel/layout/layout.js +0 -166
  130. package/dist/panels/SequenceEditorPanel/layout/tree.js +0 -139
  131. package/dist/panels/SequenceEditorPanel/whatPropIsHighlighted.js +0 -58
  132. package/dist/propEditors/DefaultValueIndicator.js +0 -64
  133. package/dist/propEditors/NextPrevKeyframeCursors.js +0 -135
  134. package/dist/propEditors/getNearbyKeyframesOfTrack.js +0 -46
  135. package/dist/propEditors/simpleEditors/BooleanPropEditor.js +0 -17
  136. package/dist/propEditors/simpleEditors/FilePropEditor.js +0 -118
  137. package/dist/propEditors/simpleEditors/ISimplePropEditorReactProps.js +0 -1
  138. package/dist/propEditors/simpleEditors/ImagePropEditor.js +0 -126
  139. package/dist/propEditors/simpleEditors/NumberPropEditor.js +0 -9
  140. package/dist/propEditors/simpleEditors/RgbaPropEditor.js +0 -73
  141. package/dist/propEditors/simpleEditors/StringLiteralPropEditor.js +0 -10
  142. package/dist/propEditors/simpleEditors/StringPropEditor.js +0 -6
  143. package/dist/propEditors/simpleEditors/simplePropEditorByPropType.js +0 -16
  144. package/dist/propEditors/useEditingToolsForCompoundProp.js +0 -228
  145. package/dist/propEditors/useEditingToolsForSimpleProp.js +0 -229
  146. package/dist/propEditors/utils/IEditingTools.js +0 -1
  147. package/dist/propEditors/utils/PropConfigForType.js +0 -1
  148. package/dist/propEditors/utils/getPropTypeByPointer.js +0 -48
  149. package/dist/propEditors/utils/propNameTextCSS.js +0 -7
  150. package/dist/selectors.js +0 -63
  151. package/dist/store/index.js +0 -184
  152. package/dist/store/stateEditors.js +0 -774
  153. package/dist/store/types/ahistoric.js +0 -1
  154. package/dist/store/types/ephemeral.js +0 -1
  155. package/dist/store/types/historic.js +0 -1
  156. package/dist/store/types/index.js +0 -3
  157. package/dist/toolbars/ExtensionToolbar/ExtensionToolbar.js +0 -51
  158. package/dist/toolbars/ExtensionToolbar/Toolset.js +0 -27
  159. package/dist/toolbars/ExtensionToolbar/tools/ExtensionFlyoutMenu.js +0 -51
  160. package/dist/toolbars/ExtensionToolbar/tools/IconButton.js +0 -16
  161. package/dist/toolbars/ExtensionToolbar/tools/Switch.js +0 -20
  162. package/dist/toolbars/GlobalToolbar.js +0 -142
  163. package/dist/toolbars/MoreMenu/MoreMenu.js +0 -133
  164. package/dist/toolbars/PinButton.js +0 -26
  165. package/dist/uiComponents/DetailPanelButton.js +0 -21
  166. package/dist/uiComponents/PointerEventsHandler.js +0 -80
  167. package/dist/uiComponents/Popover/ArrowContext.js +0 -3
  168. package/dist/uiComponents/Popover/BasicPopover.js +0 -35
  169. package/dist/uiComponents/Popover/BasicTooltip.js +0 -10
  170. package/dist/uiComponents/Popover/ErrorTooltip.js +0 -9
  171. package/dist/uiComponents/Popover/MinimalTooltip.js +0 -6
  172. package/dist/uiComponents/Popover/PopoverArrow.js +0 -38
  173. package/dist/uiComponents/Popover/TooltipContext.js +0 -46
  174. package/dist/uiComponents/Popover/TooltipWrapper.js +0 -103
  175. package/dist/uiComponents/Popover/usePopover.js +0 -132
  176. package/dist/uiComponents/Popover/useTooltip.js +0 -33
  177. package/dist/uiComponents/RoomToClick.js +0 -10
  178. package/dist/uiComponents/SVGIcon.js +0 -19
  179. package/dist/uiComponents/ShowMousePosition.js +0 -30
  180. package/dist/uiComponents/colorPicker/components/EditingProvider.js +0 -15
  181. package/dist/uiComponents/colorPicker/components/RgbaColorPicker.js +0 -31
  182. package/dist/uiComponents/colorPicker/components/common/Alpha.js +0 -54
  183. package/dist/uiComponents/colorPicker/components/common/AlphaColorPicker.js +0 -28
  184. package/dist/uiComponents/colorPicker/components/common/Hue.js +0 -41
  185. package/dist/uiComponents/colorPicker/components/common/Interactive.js +0 -142
  186. package/dist/uiComponents/colorPicker/components/common/Pointer.js +0 -39
  187. package/dist/uiComponents/colorPicker/components/common/Saturation.js +0 -44
  188. package/dist/uiComponents/colorPicker/hooks/useColorManipulation.js +0 -77
  189. package/dist/uiComponents/colorPicker/hooks/useEventCallback.js +0 -10
  190. package/dist/uiComponents/colorPicker/hooks/useIsomorphicLayoutEffect.js +0 -5
  191. package/dist/uiComponents/colorPicker/index.js +0 -1
  192. package/dist/uiComponents/colorPicker/types.js +0 -1
  193. package/dist/uiComponents/colorPicker/utils/clamp.js +0 -6
  194. package/dist/uiComponents/colorPicker/utils/compare.js +0 -25
  195. package/dist/uiComponents/colorPicker/utils/convert.js +0 -165
  196. package/dist/uiComponents/colorPicker/utils/round.js +0 -3
  197. package/dist/uiComponents/colorPicker/utils/validate.js +0 -10
  198. package/dist/uiComponents/createCursorLock.js +0 -2
  199. package/dist/uiComponents/form/BasicCheckbox.js +0 -5
  200. package/dist/uiComponents/form/BasicNumberInput.js +0 -261
  201. package/dist/uiComponents/form/BasicSelect.js +0 -58
  202. package/dist/uiComponents/form/BasicStringInput.js +0 -151
  203. package/dist/uiComponents/form/BasicSwitch.js +0 -60
  204. package/dist/uiComponents/icons/AddImage.js +0 -6
  205. package/dist/uiComponents/icons/ArrowClockwise.js +0 -6
  206. package/dist/uiComponents/icons/ArrowsOutCardinal.js +0 -6
  207. package/dist/uiComponents/icons/Bell.js +0 -6
  208. package/dist/uiComponents/icons/Camera.js +0 -7
  209. package/dist/uiComponents/icons/ChevronDown.js +0 -6
  210. package/dist/uiComponents/icons/ChevronLeft.js +0 -6
  211. package/dist/uiComponents/icons/ChevronRight.js +0 -6
  212. package/dist/uiComponents/icons/Cube.js +0 -6
  213. package/dist/uiComponents/icons/CubeFull.js +0 -6
  214. package/dist/uiComponents/icons/CubeHalf.js +0 -6
  215. package/dist/uiComponents/icons/CubeRendered.js +0 -7
  216. package/dist/uiComponents/icons/Details.js +0 -6
  217. package/dist/uiComponents/icons/DoubleChevronLeft.js +0 -6
  218. package/dist/uiComponents/icons/DoubleChevronRight.js +0 -6
  219. package/dist/uiComponents/icons/Ellipsis.js +0 -6
  220. package/dist/uiComponents/icons/EllipsisFill.js +0 -6
  221. package/dist/uiComponents/icons/GlobeSimple.js +0 -6
  222. package/dist/uiComponents/icons/Outline.js +0 -6
  223. package/dist/uiComponents/icons/Package.js +0 -6
  224. package/dist/uiComponents/icons/Resize.js +0 -7
  225. package/dist/uiComponents/icons/Trash.js +0 -6
  226. package/dist/uiComponents/icons/index.js +0 -20
  227. package/dist/uiComponents/isSafari.js +0 -2
  228. package/dist/uiComponents/onPointerOutside.js +0 -19
  229. package/dist/uiComponents/selects/BasicSelect.js +0 -24
  230. package/dist/uiComponents/simpleContextMenu/ContextMenu/BaseMenu.js +0 -40
  231. package/dist/uiComponents/simpleContextMenu/ContextMenu/ContextMenu.js +0 -87
  232. package/dist/uiComponents/simpleContextMenu/ContextMenu/Item.js +0 -37
  233. package/dist/uiComponents/simpleContextMenu/useContextMenu.js +0 -20
  234. package/dist/uiComponents/simpleContextMenu/useRequestContextMenu.js +0 -22
  235. package/dist/uiComponents/toolbar/ToolbarDropdownSelect.js +0 -7
  236. package/dist/uiComponents/toolbar/ToolbarIconButton.js +0 -74
  237. package/dist/uiComponents/toolbar/ToolbarSwitchSelect.js +0 -12
  238. package/dist/uiComponents/toolbar/ToolbarSwitchSelectContainer.js +0 -9
  239. package/dist/uiComponents/useBoundingClientRect.js +0 -13
  240. package/dist/uiComponents/useDebugRefreshEvery.js +0 -19
  241. package/dist/uiComponents/useDrag.js +0 -199
  242. package/dist/uiComponents/useHotspot.js +0 -30
  243. package/dist/uiComponents/useHover.js +0 -23
  244. package/dist/uiComponents/useHoverWithoutDescendants.js +0 -33
  245. package/dist/uiComponents/useKeyDown.js +0 -9
  246. package/dist/uiComponents/useKeyDownCallback.js +0 -28
  247. package/dist/uiComponents/useLockSet.js +0 -17
  248. package/dist/uiComponents/useLogger.js +0 -16
  249. package/dist/uiComponents/useOnClickOutside.js +0 -25
  250. package/dist/uiComponents/useOnKeyDown.js +0 -12
  251. package/dist/uiComponents/usePresence.js +0 -156
  252. package/dist/uiComponents/useValToAtom.js +0 -11
  253. package/dist/utils/absoluteDims.js +0 -7
  254. package/dist/utils/contextualWebComponents.js +0 -44
  255. package/dist/utils/copyToClipboard.js +0 -28
  256. package/dist/utils/derive-utils.js +0 -61
  257. package/dist/utils/devStringify.js +0 -20
  258. package/dist/utils/invariant.js +0 -79
  259. package/dist/utils/isMac.js +0 -2
  260. package/dist/utils/keyboardUtils.js +0 -23
  261. package/dist/utils/mousePositionD.js +0 -18
  262. package/dist/utils/redux/actionCreator.js +0 -15
  263. package/dist/utils/redux/actionCreator.test.js +0 -35
  264. package/dist/utils/redux/actionReducersBundle.js +0 -18
  265. package/dist/utils/redux/atomFromReduxStore.js +0 -11
  266. package/dist/utils/redux/configureStore.js +0 -18
  267. package/dist/utils/redux/pointerFriendlySelector.js +0 -8
  268. package/dist/utils/redux/withHistory/withBatchActions.js +0 -13
  269. package/dist/utils/redux/withHistory/withHistory.js +0 -157
  270. package/dist/utils/renderInPortalInContext.js +0 -38
  271. package/dist/utils/selectClosestHTMLAncestor.js +0 -13
  272. package/dist/utils/tightJsonStringify.js +0 -27
  273. package/dist/utils/tightJsonStringify.test.js +0 -25
  274. package/dist/utils/useRefAndState.js +0 -32
@@ -1,38 +0,0 @@
1
- import React, { forwardRef, useContext } from 'react';
2
- import styled from 'styled-components';
3
- import ArrowContext from './ArrowContext';
4
- const Container = styled.div `
5
- position: absolute;
6
- width: 0;
7
- height: 0;
8
- color: var(--popover-arrow-color);
9
- pointer-events: none;
10
- `;
11
- const Adjust = styled.div `
12
- width: 12px;
13
- height: 8px;
14
- position: absolute;
15
- left: -7px;
16
- top: -8px;
17
- text-align: center;
18
- line-height: 0;
19
- `;
20
- const InnerTriangle = styled.path `
21
- fill: var(--popover-bg);
22
- `;
23
- const InnerStroke = styled.path `
24
- fill: var(--popover-inner-stroke);
25
- `;
26
- const OuterStroke = styled.path `
27
- fill: var(--popover-outer-stroke);
28
- `;
29
- const PopoverArrow = forwardRef(({ className }, ref) => {
30
- const arrowStyle = useContext(ArrowContext);
31
- return (React.createElement(Container, { className: className, ref: ref, style: { ...arrowStyle } },
32
- React.createElement(Adjust, null,
33
- React.createElement("svg", { width: "12", height: "8", viewBox: "0 0 12 8", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
34
- React.createElement(OuterStroke, { d: "M6 0L0 6H12L6 0Z" }),
35
- React.createElement(InnerStroke, { d: "M6 1.5L0 7.5H12L6 1.5Z" }),
36
- React.createElement(InnerTriangle, { d: "M6 3L0 9H12L6 3Z" })))));
37
- });
38
- export default PopoverArrow;
@@ -1,46 +0,0 @@
1
- import { Atom } from '@tomorrowevening/theatre-dataverse';
2
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
3
- import React, { createContext, useCallback, useContext, useEffect, useMemo, } from 'react';
4
- const ctx = createContext(null);
5
- let lastTooltipId = 0;
6
- export const useTooltipOpenState = () => {
7
- const id = useMemo(() => lastTooltipId++, []);
8
- const { cur, set } = useContext(ctx);
9
- const [isOpenRef, isOpen] = useRefAndState(false);
10
- const setIsOpen = useCallback((shouldOpen, delay) => {
11
- set(shouldOpen ? id : -1, delay);
12
- }, []);
13
- useEffect(() => {
14
- return cur.onStale(() => {
15
- const flag = cur.getValue() === id;
16
- if (isOpenRef.current !== flag)
17
- isOpenRef.current = flag;
18
- });
19
- }, [cur, id]);
20
- return [isOpen, setIsOpen];
21
- };
22
- const TooltipContext = ({ children }) => {
23
- const currentTooltipId = useMemo(() => new Atom(-1), []);
24
- const cur = currentTooltipId.prism;
25
- const set = useMemo(() => {
26
- let lastTimeout = undefined;
27
- return (id, delay) => {
28
- const overridingPreviousTimeout = lastTimeout !== undefined;
29
- if (lastTimeout !== undefined) {
30
- clearTimeout(lastTimeout);
31
- lastTimeout = undefined;
32
- }
33
- if (delay === 0 || overridingPreviousTimeout) {
34
- currentTooltipId.set(id);
35
- }
36
- else {
37
- lastTimeout = setTimeout(() => {
38
- currentTooltipId.set(id);
39
- lastTimeout = undefined;
40
- }, delay);
41
- }
42
- };
43
- }, []);
44
- return React.createElement(ctx.Provider, { value: { cur, set } }, children);
45
- };
46
- export default TooltipContext;
@@ -1,103 +0,0 @@
1
- import React from 'react';
2
- import { cloneElement, useLayoutEffect, useState } from 'react';
3
- import useWindowSize from 'react-use/esm/useWindowSize';
4
- import useBoundingClientRect from '@tomorrowevening/theatre-studio/uiComponents/useBoundingClientRect';
5
- import ArrowContext from './ArrowContext';
6
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
7
- import useOnClickOutside from '@tomorrowevening/theatre-studio/uiComponents/useOnClickOutside';
8
- import onPointerOutside from '@tomorrowevening/theatre-studio/uiComponents/onPointerOutside';
9
- import noop from '@tomorrowevening/theatre-shared/utils/noop';
10
- import { clamp } from 'lodash-es';
11
- const minimumDistanceOfArrowToEdgeOfPopover = 8;
12
- const TooltipWrapper = (props) => {
13
- const originalElement = props.children();
14
- const [ref, container] = useRefAndState(null);
15
- const style = originalElement.props.style
16
- ? { ...originalElement.props.style }
17
- : {};
18
- style.position = 'absolute';
19
- const containerRect = useBoundingClientRect(container);
20
- const targetRect = useBoundingClientRect(props.target);
21
- const windowSize = useWindowSize();
22
- const [arrowContextValue, setArrowContextValue] = useState({});
23
- useLayoutEffect(() => {
24
- if (!containerRect || !container || !targetRect)
25
- return;
26
- const gap = props.verticalGap ?? 8;
27
- const arrowStyle = {};
28
- let verticalPlacement = props.verticalPlacement ?? 'bottom';
29
- let top = 0;
30
- let left = 0;
31
- if (verticalPlacement === 'bottom') {
32
- if (targetRect.bottom + containerRect.height + gap < windowSize.height) {
33
- verticalPlacement = 'bottom';
34
- top = targetRect.bottom + gap;
35
- arrowStyle.top = '0px';
36
- }
37
- else if (targetRect.top > containerRect.height + gap) {
38
- verticalPlacement = 'top';
39
- top = targetRect.top - (containerRect.height + gap);
40
- arrowStyle.bottom = '0px';
41
- arrowStyle.transform = 'rotateZ(180deg)';
42
- }
43
- else {
44
- verticalPlacement = 'overlay';
45
- }
46
- }
47
- else if (verticalPlacement === 'top') {
48
- if (targetRect.top > containerRect.height + gap) {
49
- verticalPlacement = 'top';
50
- top = targetRect.top - (containerRect.height + gap);
51
- arrowStyle.bottom = '0px';
52
- arrowStyle.transform = 'rotateZ(180deg)';
53
- }
54
- else if (targetRect.bottom + containerRect.height + gap <
55
- windowSize.height) {
56
- verticalPlacement = 'bottom';
57
- top = targetRect.bottom + gap;
58
- arrowStyle.top = '0px';
59
- }
60
- else {
61
- verticalPlacement = 'overlay';
62
- }
63
- }
64
- let arrowLeft = 0;
65
- if (verticalPlacement !== 'overlay') {
66
- const anchorLeft = targetRect.left + targetRect.width / 2;
67
- if (anchorLeft < containerRect.width / 2) {
68
- left = gap;
69
- arrowLeft = Math.max(anchorLeft - gap, minimumDistanceOfArrowToEdgeOfPopover);
70
- }
71
- else if (anchorLeft + containerRect.width / 2 > windowSize.width) {
72
- left = windowSize.width - (gap + containerRect.width);
73
- arrowLeft = Math.min(anchorLeft - left, containerRect.width - minimumDistanceOfArrowToEdgeOfPopover);
74
- }
75
- else {
76
- left = anchorLeft - containerRect.width / 2;
77
- arrowLeft = containerRect.width / 2;
78
- }
79
- arrowStyle.left = arrowLeft + 'px';
80
- }
81
- const { minX = -Infinity, maxX = Infinity, minY = -Infinity, maxY = Infinity, } = props.constraints ?? {};
82
- const pos = {
83
- left: clamp(left, minX, maxX - containerRect.width),
84
- top: clamp(top, minY, maxY + containerRect.height),
85
- };
86
- container.style.left = pos.left + 'px';
87
- container.style.top = pos.top + 'px';
88
- setArrowContextValue(arrowStyle);
89
- if (props.onPointerOutside) {
90
- return onPointerOutside(container, props.onPointerOutside.threshold, props.onPointerOutside.callback);
91
- }
92
- }, [
93
- containerRect,
94
- container,
95
- props.target,
96
- targetRect,
97
- windowSize,
98
- props.onPointerOutside,
99
- ]);
100
- useOnClickOutside([container, props.target ?? null], props.onClickOutside ?? noop);
101
- return (React.createElement(ArrowContext.Provider, { value: arrowContextValue }, cloneElement(originalElement, { ref, style })));
102
- };
103
- export default TooltipWrapper;
@@ -1,132 +0,0 @@
1
- import { usePointerCapturing } from '@tomorrowevening/theatre-studio/UIRoot/PointerCapturing';
2
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
3
- import React, { useCallback, useContext, useEffect, useRef } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { PortalContext } from 'reakit';
6
- import TooltipWrapper from './TooltipWrapper';
7
- import { contextMenuShownContext } from '@tomorrowevening/theatre-studio/panels/DetailPanel/DetailPanel';
8
- const PopoverAutoCloseLock = React.createContext({
9
- // defaults have no effects, since there would not be a
10
- // parent popover to worry about auto-closing.
11
- takeFocus() {
12
- return {
13
- releaseFocus() { },
14
- };
15
- },
16
- });
17
- export default function usePopover(opts, render) {
18
- const _debug = (...args) => { };
19
- // want to make sure that we don't close a popover when dragging something (like a curve editor handle)
20
- // I think this could be improved to handle closing after done dragging, better.
21
- const { isPointerBeingCaptured } = usePointerCapturing(`usePopover`);
22
- const [stateRef, state] = useRefAndState({
23
- isOpen: false,
24
- });
25
- const optsRef = useRef(opts);
26
- const close = useCallback((reason) => {
27
- _debug(`closing due to "${reason}"`);
28
- stateRef.current = { isOpen: false };
29
- }, []);
30
- const open = useCallback((e, target) => {
31
- const opts = typeof optsRef.current === 'function'
32
- ? optsRef.current()
33
- : optsRef.current;
34
- function onClickOutside() {
35
- if (lock.childHasFocusRef.current)
36
- return;
37
- if (opts.closeOnClickOutside !== false) {
38
- close('clicked outside popover');
39
- }
40
- }
41
- stateRef.current = {
42
- isOpen: true,
43
- clickPoint: { clientX: e.clientX, clientY: e.clientY },
44
- target,
45
- opts,
46
- onClickOutside: onClickOutside,
47
- onPointerOutside: opts.closeWhenPointerIsDistant === false
48
- ? undefined
49
- : {
50
- threshold: opts.pointerDistanceThreshold ?? 100,
51
- callback: () => {
52
- if (lock.childHasFocusRef.current)
53
- return;
54
- // this is a bit weird, because when you stop capturing, then the popover can close on you...
55
- // TODO: Better fixes?
56
- if (isPointerBeingCaptured())
57
- return;
58
- close('pointer outside');
59
- },
60
- },
61
- };
62
- }, []);
63
- const toggle = useCallback((...args) => {
64
- if (stateRef.current.isOpen) {
65
- close('toggled');
66
- }
67
- else {
68
- open(...args);
69
- }
70
- }, []);
71
- /**
72
- * See doc comment on {@link useAutoCloseLockState}.
73
- * Used to ensure that moving far away from a parent popover doesn't
74
- * close a child popover.
75
- */
76
- const lock = useAutoCloseLockState({
77
- _debug,
78
- state,
79
- });
80
- // TODO: this lock is now exported from the detail panel, do refactor it when you get the chance
81
- const [, addContextMenu] = useContext(contextMenuShownContext);
82
- useEffect(() => {
83
- let removeContextMenu;
84
- if (state.isOpen) {
85
- removeContextMenu = addContextMenu();
86
- }
87
- return () => removeContextMenu?.();
88
- }, [state.isOpen]);
89
- const portalLayer = useContext(PortalContext);
90
- const node = state.isOpen ? (createPortal(React.createElement(PopoverAutoCloseLock.Provider, { value: lock.childPopoverLock },
91
- React.createElement(TooltipWrapper, { children: render, target: state.target, onClickOutside: state.onClickOutside, onPointerOutside: state.onPointerOutside, constraints: state.opts.constraints, verticalGap: state.opts.verticalGap })), portalLayer)) : (React.createElement(React.Fragment, null));
92
- return { node, open, close, toggle, isOpen: state.isOpen };
93
- }
94
- /**
95
- * Keep track of the current lock state, and provide
96
- * a lock that can be passed down to popover children.
97
- *
98
- * Used to ensure that moving far away from a parent popover doesn't
99
- * close a child popover.
100
- * When child popovers are opened, we want to suspend all auto-closing
101
- * behaviors for parenting popovers.
102
- */
103
- function useAutoCloseLockState(options) {
104
- const parentLock = useContext(PopoverAutoCloseLock);
105
- useEffect(() => {
106
- if (options.state.isOpen) {
107
- // when this "popover" is open, then take focus from parent
108
- const focused = parentLock.takeFocus();
109
- options._debug('take focus');
110
- return () => {
111
- // when closed / unmounted, release focus
112
- options._debug('release focus');
113
- focused.releaseFocus();
114
- };
115
- }
116
- }, [options.state.isOpen]);
117
- // child of us
118
- const childHasFocusRef = useRef(false);
119
- return {
120
- childHasFocusRef: childHasFocusRef,
121
- childPopoverLock: {
122
- takeFocus() {
123
- childHasFocusRef.current = true;
124
- return {
125
- releaseFocus() {
126
- childHasFocusRef.current = false;
127
- },
128
- };
129
- },
130
- },
131
- };
132
- }
@@ -1,33 +0,0 @@
1
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
2
- import { useContext } from 'react';
3
- import { useEffect } from 'react';
4
- import React from 'react';
5
- import TooltipWrapper from './TooltipWrapper';
6
- import { createPortal } from 'react-dom';
7
- import { useTooltipOpenState } from './TooltipContext';
8
- import { PortalContext } from 'reakit';
9
- import noop from '@tomorrowevening/theatre-shared/utils/noop';
10
- export default function useTooltip(opts, render) {
11
- const enabled = opts.enabled !== false;
12
- const [isOpen, setIsOpen] = useTooltipOpenState();
13
- const [targetRef, targetNode] = useRefAndState(null);
14
- useEffect(() => {
15
- if (!enabled) {
16
- return;
17
- }
18
- const target = targetRef.current;
19
- if (!target)
20
- return;
21
- const onMouseEnter = () => setIsOpen(true, opts.enterDelay ?? 400);
22
- const onMouseLeave = () => setIsOpen(false, opts.exitDelay ?? 200);
23
- target.addEventListener('mouseenter', onMouseEnter);
24
- target.addEventListener('mouseleave', onMouseLeave);
25
- return () => {
26
- target.removeEventListener('mouseenter', onMouseEnter);
27
- target.removeEventListener('mouseleave', onMouseLeave);
28
- };
29
- }, [targetRef, enabled, opts.enterDelay, opts.exitDelay]);
30
- const portalLayer = useContext(PortalContext);
31
- const node = enabled && isOpen && targetNode ? (createPortal(React.createElement(TooltipWrapper, { children: render, target: targetNode, onClickOutside: noop, verticalPlacement: opts.verticalPlacement, verticalGap: opts.verticalGap }), portalLayer)) : (React.createElement(React.Fragment, null));
32
- return [node, targetRef, isOpen];
33
- }
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- const Container = styled.div `
4
- position: absolute;
5
- inset: ${(props) => props.room * -1}px;
6
- `;
7
- const RoomToClick = (props) => {
8
- return React.createElement(Container, { room: props.room });
9
- };
10
- export default RoomToClick;
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- import styled, { css } from 'styled-components';
3
- const Container = styled.div `
4
- width: ${(props) => (props.sizing === 'em' ? '1em' : '100%')};
5
- ${(props) => props.sizing === 'absoluteFill' &&
6
- css `
7
- & > svg {
8
- position: absolute;
9
- top: 0;
10
- left: 0;
11
- right: 0;
12
- bottom: 0;
13
- }
14
- `}
15
- `;
16
- const SvgIcon = (props) => {
17
- return (React.createElement(Container, { sizing: props.sizing || 'em', dangerouslySetInnerHTML: { __html: props.src } }));
18
- };
19
- export default SvgIcon;
@@ -1,30 +0,0 @@
1
- import mousePositionD from '@tomorrowevening/theatre-studio/utils/mousePositionD';
2
- import { usePrism } from '@tomorrowevening/theatre-react';
3
- import { val } from '@tomorrowevening/theatre-dataverse';
4
- import React from 'react';
5
- import { createPortal } from 'react-dom';
6
- const ShowMousePosition = (props) => {
7
- const pos = usePrism(() => val(mousePositionD) ?? { clientX: 0, clientY: 0 }, []);
8
- return createPortal(React.createElement(React.Fragment, null,
9
- React.createElement("div", { style: {
10
- position: 'fixed',
11
- top: '0',
12
- bottom: '0',
13
- width: '1px',
14
- background: 'rgba(255, 255, 255, 0.2)',
15
- pointerEvents: 'none',
16
- zIndex: 9999,
17
- left: `${pos.clientX}px`,
18
- } }),
19
- React.createElement("div", { style: {
20
- position: 'fixed',
21
- left: '0',
22
- right: '0',
23
- height: '1px',
24
- background: 'rgba(255, 255, 255, 0.2)',
25
- pointerEvents: 'none',
26
- zIndex: 9999,
27
- top: `${pos.clientY}px`,
28
- } })), document.body);
29
- };
30
- export default ShowMousePosition;
@@ -1,15 +0,0 @@
1
- import React, { createContext, useContext, useState } from 'react';
2
- const editingContext = createContext(undefined);
3
- /**
4
- * Provides the current mode the color picker is in. When editing, the picker should be
5
- * stateful and disregard controlling props, while not editing, it should behave
6
- * in a controlled manner.
7
- */
8
- export const EditingProvider = ({ children, }) => {
9
- const [editing, setEditing] = useState(false);
10
- return (React.createElement(editingContext.Provider, { value: {
11
- editing,
12
- setEditing,
13
- } }, children));
14
- };
15
- export const useEditing = () => useContext(editingContext);
@@ -1,31 +0,0 @@
1
- import React from 'react';
2
- import { AlphaColorPicker } from './common/AlphaColorPicker';
3
- import { equalColorObjects } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/compare';
4
- import { rgbaToHsva, hsvaToRgba, } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/convert';
5
- import { EditingProvider } from './EditingProvider';
6
- const normalizeRgba = (rgba) => {
7
- return {
8
- r: rgba.r / 255,
9
- g: rgba.g / 255,
10
- b: rgba.b / 255,
11
- a: rgba.a,
12
- };
13
- };
14
- const denormalizeRgba = (rgba) => {
15
- return {
16
- r: rgba.r * 255,
17
- g: rgba.g * 255,
18
- b: rgba.b * 255,
19
- a: rgba.a,
20
- };
21
- };
22
- const colorModel = {
23
- defaultColor: { r: 0, g: 0, b: 0, a: 1 },
24
- toHsva: (rgba) => rgbaToHsva(denormalizeRgba(rgba)),
25
- fromHsva: (hsva) => normalizeRgba(hsvaToRgba(hsva)),
26
- equal: equalColorObjects,
27
- };
28
- export const RgbaColorPicker = (props) => (React.createElement(EditingProvider, null,
29
- React.createElement(AlphaColorPicker, { ...props, permanentlySetValue: (newColor) => {
30
- props.permanentlySetValue(newColor);
31
- }, colorModel: colorModel })));
@@ -1,54 +0,0 @@
1
- import React from 'react';
2
- import { Interactive } from './Interactive';
3
- import { Pointer } from './Pointer';
4
- import { hsvaToHslaString } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/convert';
5
- import { clamp } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/clamp';
6
- import { round } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/round';
7
- import styled from 'styled-components';
8
- const Container = styled.div `
9
- position: relative;
10
- height: 16px;
11
- border-radius: 2px;
12
- // Checkerboard
13
- background-color: #fff;
14
- background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
15
- `;
16
- const Gradient = styled.div.attrs(({ colorFrom, colorTo }) => ({
17
- style: {
18
- backgroundImage: `linear-gradient(90deg, ${colorFrom}, ${colorTo})`,
19
- },
20
- })) `
21
- content: '';
22
- position: absolute;
23
- left: 0;
24
- top: 0;
25
- right: 0;
26
- bottom: 0;
27
- pointer-events: none;
28
- border-radius: inherit;
29
-
30
- // Improve rendering on light backgrounds
31
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
32
- `;
33
- const StyledPointer = styled(Pointer) `
34
- // Checkerboard
35
- background-color: #fff;
36
- background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><rect x="8" width="8" height="8"/><rect y="8" width="8" height="8"/></svg>');
37
- `;
38
- export const Alpha = ({ className, hsva, onChange }) => {
39
- const handleMove = (interaction) => {
40
- onChange({ a: interaction.left });
41
- };
42
- const handleKey = (offset) => {
43
- // Alpha always fit into [0, 1] range
44
- onChange({ a: clamp(hsva.a + offset.left) });
45
- };
46
- // We use `Object.assign` instead of the spread operator
47
- // to prevent adding the polyfill (about 150 bytes gzipped)
48
- const colorFrom = hsvaToHslaString(Object.assign({}, hsva, { a: 0 }));
49
- const colorTo = hsvaToHslaString(Object.assign({}, hsva, { a: 1 }));
50
- return (React.createElement(Container, { className: className },
51
- React.createElement(Gradient, { colorFrom: colorFrom, colorTo: colorTo }),
52
- React.createElement(Interactive, { onMove: handleMove, onKey: handleKey, "aria-label": "Alpha", "aria-valuetext": `${round(hsva.a * 100)}%` },
53
- React.createElement(StyledPointer, { left: hsva.a, color: hsvaToHslaString(hsva) }))));
54
- };
@@ -1,28 +0,0 @@
1
- import React, { useEffect } from 'react';
2
- import { Hue } from './Hue';
3
- import { Saturation } from './Saturation';
4
- import { Alpha } from './Alpha';
5
- import { useColorManipulation } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/hooks/useColorManipulation';
6
- import styled from 'styled-components';
7
- const Container = styled.div `
8
- position: relative;
9
- display: flex;
10
- gap: 4px;
11
- flex-direction: column;
12
- width: 200px;
13
- height: 200px;
14
- user-select: none;
15
- cursor: default;
16
- `;
17
- export const AlphaColorPicker = ({ className, colorModel, color = colorModel.defaultColor, temporarilySetValue, permanentlySetValue, discardTemporaryValue, ...rest }) => {
18
- const [tempHsva, updateHsva] = useColorManipulation(colorModel, color, temporarilySetValue, permanentlySetValue);
19
- useEffect(() => {
20
- return () => {
21
- discardTemporaryValue();
22
- };
23
- }, []);
24
- return (React.createElement(Container, { ...rest },
25
- React.createElement(Saturation, { hsva: tempHsva, onChange: updateHsva }),
26
- React.createElement(Hue, { hue: tempHsva.h, onChange: updateHsva }),
27
- React.createElement(Alpha, { hsva: tempHsva, onChange: updateHsva })));
28
- };
@@ -1,41 +0,0 @@
1
- import React from 'react';
2
- import { Interactive } from './Interactive';
3
- import { Pointer } from './Pointer';
4
- import { hsvaToHslString } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/convert';
5
- import { clamp } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/clamp';
6
- import { round } from '@tomorrowevening/theatre-studio/uiComponents/colorPicker/utils/round';
7
- import styled from 'styled-components';
8
- const Container = styled.div `
9
- position: relative;
10
- height: 16px;
11
- border-radius: 2px;
12
-
13
- background: linear-gradient(
14
- to right,
15
- #f00 0%,
16
- #ff0 17%,
17
- #0f0 33%,
18
- #0ff 50%,
19
- #00f 67%,
20
- #f0f 83%,
21
- #f00 100%
22
- );
23
- `;
24
- const StyledPointer = styled(Pointer) `
25
- z-index: 2;
26
- `;
27
- const HueBase = ({ className, hue, onChange }) => {
28
- const handleMove = (interaction) => {
29
- onChange({ h: 360 * interaction.left });
30
- };
31
- const handleKey = (offset) => {
32
- // Hue measured in degrees of the color circle ranging from 0 to 360
33
- onChange({
34
- h: clamp(hue + offset.left * 360, 0, 360),
35
- });
36
- };
37
- return (React.createElement(Container, { className: className },
38
- React.createElement(Interactive, { onMove: handleMove, onKey: handleKey, "aria-label": "Hue", "aria-valuetext": round(hue) },
39
- React.createElement(StyledPointer, { left: hue / 360, color: hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 }) }))));
40
- };
41
- export const Hue = React.memo(HueBase);