@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,162 +0,0 @@
1
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
2
- import useContextMenu from '@tomorrowevening/theatre-studio/uiComponents/simpleContextMenu/useContextMenu';
3
- import useDrag from '@tomorrowevening/theatre-studio/uiComponents/useDrag';
4
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
5
- import { val } from '@tomorrowevening/theatre-dataverse';
6
- import React, { useMemo, useRef, useState } from 'react';
7
- import styled from 'styled-components';
8
- import { useLockFrameStampPosition } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
9
- import { includeLockFrameStampAttrs } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
10
- import { pointerEventsAutoInNormalMode } from '@tomorrowevening/theatre-studio/css';
11
- import { lockedCursorCssVarName, useCssCursorLock, } from '@tomorrowevening/theatre-studio/uiComponents/PointerEventsHandler';
12
- import DopeSnap from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/RightOverlay/DopeSnap';
13
- import { useKeyframeInlineEditorPopover } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/useSingleKeyframeInlineEditorPopover';
14
- import usePresence, { PresenceFlag, } from '@tomorrowevening/theatre-studio/uiComponents/usePresence';
15
- export const dotSize = 6;
16
- const Circle = styled.circle `
17
- fill: var(--main-color);
18
- stroke-width: 1px;
19
- vector-effect: non-scaling-stroke;
20
-
21
- r: 2px;
22
- `;
23
- const HitZone = styled.circle `
24
- stroke-width: 6px;
25
- vector-effect: non-scaling-stroke;
26
- r: 6px;
27
- fill: transparent;
28
- ${pointerEventsAutoInNormalMode};
29
-
30
- &:hover + ${Circle} {
31
- r: 6px;
32
- }
33
-
34
- #pointer-root.normal & {
35
- cursor: ew-resize;
36
- }
37
-
38
- #pointer-root.draggingPositionInSequenceEditor & {
39
- pointer-events: auto;
40
- cursor: var(${lockedCursorCssVarName});
41
- }
42
-
43
- &.beingDragged {
44
- pointer-events: none !important;
45
- }
46
- `;
47
- const GraphEditorDotNonScalar = (props) => {
48
- const [ref, node] = useRefAndState(null);
49
- const { index, trackData, itemKey } = props;
50
- const cur = trackData.keyframes[index];
51
- const [contextMenu] = useKeyframeContextMenu(node, props);
52
- const presence = usePresence(itemKey);
53
- const curValue = props.which === 'left' ? 0 : 1;
54
- const inlineEditorPopover = useKeyframeInlineEditorPopover([
55
- {
56
- type: 'primitiveProp',
57
- keyframe: props.keyframe,
58
- pathToProp: props.pathToProp,
59
- propConfig: props.propConfig,
60
- sheetObject: props.sheetObject,
61
- trackId: props.trackId,
62
- },
63
- ]);
64
- const isDragging = useDragKeyframe({
65
- node,
66
- props,
67
- // dragging does not work with also having a click listener
68
- onDetectedClick: (event) => inlineEditorPopover.toggle(event, event.target instanceof Element ? event.target : node),
69
- });
70
- const cyInExtremumSpace = props.extremumSpace.fromValueSpace(curValue);
71
- return (React.createElement(React.Fragment, null,
72
- React.createElement(HitZone, { ref: ref, style: {
73
- // @ts-ignore
74
- cx: `calc(var(--unitSpaceToScaledSpaceMultiplier) * ${cur.position} * 1px)`,
75
- cy: `calc((var(--graphEditorVerticalSpace) - var(--graphEditorVerticalSpace) * ${cyInExtremumSpace}) * 1px)`,
76
- }, ...presence.attrs, ...includeLockFrameStampAttrs(cur.position), ...DopeSnap.includePositionSnapAttrs(cur.position), className: isDragging ? 'beingDragged' : '' }),
77
- React.createElement(Circle, { style: {
78
- // @ts-ignore
79
- cx: `calc(var(--unitSpaceToScaledSpaceMultiplier) * ${cur.position} * 1px)`,
80
- cy: `calc((var(--graphEditorVerticalSpace) - var(--graphEditorVerticalSpace) * ${cyInExtremumSpace}) * 1px)`,
81
- fill: presence.flag === PresenceFlag.Primary ? 'white' : undefined,
82
- } }),
83
- inlineEditorPopover.node,
84
- contextMenu));
85
- };
86
- export default GraphEditorDotNonScalar;
87
- function useDragKeyframe(options) {
88
- const [isDragging, setIsDragging] = useState(false);
89
- useLockFrameStampPosition(isDragging, options.props.keyframe.position);
90
- const propsRef = useRef(options.props);
91
- propsRef.current = options.props;
92
- const gestureHandlers = useMemo(() => {
93
- return {
94
- debugName: 'GraphEditorDotNonScalar/useDragKeyframe',
95
- lockCSSCursorTo: 'ew-resize',
96
- onDragStart(event) {
97
- setIsDragging(true);
98
- const propsAtStartOfDrag = propsRef.current;
99
- const toUnitSpace = val(propsAtStartOfDrag.layoutP.scaledSpace.toUnitSpace);
100
- const unlockExtremums = propsAtStartOfDrag.extremumSpace.lock();
101
- let tempTransaction;
102
- return {
103
- onDrag(dx, dy) {
104
- const original = propsAtStartOfDrag.trackData.keyframes[propsAtStartOfDrag.index];
105
- const deltaPos = toUnitSpace(dx);
106
- const updatedKeyframes = [];
107
- const cur = {
108
- ...original,
109
- position: original.position + deltaPos,
110
- value: original.value,
111
- handles: [...original.handles],
112
- };
113
- updatedKeyframes.push(cur);
114
- tempTransaction?.discard();
115
- tempTransaction = getStudio().tempTransaction(({ stateEditors }) => {
116
- stateEditors.coreByProject.historic.sheetsById.sequence.replaceKeyframes({
117
- ...propsAtStartOfDrag.sheetObject.address,
118
- trackId: propsAtStartOfDrag.trackId,
119
- keyframes: updatedKeyframes,
120
- snappingFunction: val(propsAtStartOfDrag.layoutP.sheet).getSequence().closestGridPosition,
121
- });
122
- });
123
- },
124
- onDragEnd(dragHappened) {
125
- setIsDragging(false);
126
- unlockExtremums();
127
- if (dragHappened) {
128
- tempTransaction?.commit();
129
- }
130
- else {
131
- tempTransaction?.discard();
132
- options.onDetectedClick(event);
133
- }
134
- },
135
- };
136
- },
137
- };
138
- }, []);
139
- useDrag(options.node, gestureHandlers);
140
- useCssCursorLock(isDragging, 'draggingPositionInSequenceEditor', 'ew-resize');
141
- return isDragging;
142
- }
143
- function useKeyframeContextMenu(node, props) {
144
- return useContextMenu(node, {
145
- menuItems: () => {
146
- return [
147
- {
148
- label: 'Delete',
149
- callback: () => {
150
- getStudio().transaction(({ stateEditors }) => {
151
- stateEditors.coreByProject.historic.sheetsById.sequence.deleteKeyframes({
152
- ...props.sheetObject.address,
153
- keyframeIds: [props.keyframe.id],
154
- trackId: props.trackId,
155
- });
156
- });
157
- },
158
- },
159
- ];
160
- },
161
- });
162
- }
@@ -1,209 +0,0 @@
1
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
2
- import useContextMenu from '@tomorrowevening/theatre-studio/uiComponents/simpleContextMenu/useContextMenu';
3
- import useDrag from '@tomorrowevening/theatre-studio/uiComponents/useDrag';
4
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
5
- import { val } from '@tomorrowevening/theatre-dataverse';
6
- import React, { useMemo, useRef, useState } from 'react';
7
- import styled from 'styled-components';
8
- import { useLockFrameStampPosition } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
9
- import { includeLockFrameStampAttrs } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
10
- import { pointerEventsAutoInNormalMode } from '@tomorrowevening/theatre-studio/css';
11
- import { lockedCursorCssVarName, useCssCursorLock, } from '@tomorrowevening/theatre-studio/uiComponents/PointerEventsHandler';
12
- import DopeSnap from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/RightOverlay/DopeSnap';
13
- import { useKeyframeInlineEditorPopover } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/DopeSheet/Right/BasicKeyframedTrack/KeyframeEditor/useSingleKeyframeInlineEditorPopover';
14
- import usePresence, { PresenceFlag, } from '@tomorrowevening/theatre-studio/uiComponents/usePresence';
15
- export const dotSize = 6;
16
- const Circle = styled.circle `
17
- fill: var(--main-color);
18
- stroke-width: 1px;
19
- vector-effect: non-scaling-stroke;
20
-
21
- r: 2px;
22
- `;
23
- const HitZone = styled.circle `
24
- stroke-width: 6px;
25
- vector-effect: non-scaling-stroke;
26
- r: 6px;
27
- fill: transparent;
28
- ${pointerEventsAutoInNormalMode};
29
-
30
- &:hover + ${Circle} {
31
- r: 6px;
32
- }
33
-
34
- #pointer-root.normal & {
35
- cursor: move;
36
- }
37
-
38
- #pointer-root.draggingPositionInSequenceEditor & {
39
- pointer-events: auto;
40
- cursor: var(${lockedCursorCssVarName});
41
- }
42
-
43
- &.beingDragged {
44
- pointer-events: none !important;
45
- }
46
- `;
47
- const GraphEditorDotScalar = (props) => {
48
- const [ref, node] = useRefAndState(null);
49
- const { index, trackData } = props;
50
- const cur = trackData.keyframes[index];
51
- const [contextMenu] = useKeyframeContextMenu(node, props);
52
- const presence = usePresence(props.itemKey);
53
- const curValue = cur.value;
54
- const cyInExtremumSpace = props.extremumSpace.fromValueSpace(curValue);
55
- const inlineEditorPopover = useKeyframeInlineEditorPopover([
56
- {
57
- type: 'primitiveProp',
58
- keyframe: props.keyframe,
59
- pathToProp: props.pathToProp,
60
- propConfig: props.propConfig,
61
- sheetObject: props.sheetObject,
62
- trackId: props.trackId,
63
- },
64
- ]);
65
- const isDragging = useDragKeyframe({
66
- node,
67
- props,
68
- // dragging does not work with also having a click listener
69
- onDetectedClick: (event) => inlineEditorPopover.toggle(event, event.target instanceof Element ? event.target : node),
70
- });
71
- return (React.createElement(React.Fragment, null,
72
- React.createElement(HitZone, { ref: ref, style: {
73
- // @ts-ignore
74
- cx: `calc(var(--unitSpaceToScaledSpaceMultiplier) * ${cur.position} * 1px)`,
75
- cy: `calc((var(--graphEditorVerticalSpace) - var(--graphEditorVerticalSpace) * ${cyInExtremumSpace}) * 1px)`,
76
- }, ...includeLockFrameStampAttrs(cur.position), ...DopeSnap.includePositionSnapAttrs(cur.position), ...presence.attrs, className: isDragging ? 'beingDragged' : '' }),
77
- React.createElement(Circle, { style: {
78
- // @ts-ignore
79
- cx: `calc(var(--unitSpaceToScaledSpaceMultiplier) * ${cur.position} * 1px)`,
80
- cy: `calc((var(--graphEditorVerticalSpace) - var(--graphEditorVerticalSpace) * ${cyInExtremumSpace}) * 1px)`,
81
- fill: presence.flag === PresenceFlag.Primary ? 'white' : undefined,
82
- } }),
83
- inlineEditorPopover.node,
84
- contextMenu));
85
- };
86
- export default GraphEditorDotScalar;
87
- function useDragKeyframe(options) {
88
- const [isDragging, setIsDragging] = useState(false);
89
- useLockFrameStampPosition(isDragging, options.props.keyframe.position);
90
- const propsRef = useRef(options.props);
91
- propsRef.current = options.props;
92
- const gestureHandlers = useMemo(() => {
93
- return {
94
- debugName: 'GraphEditorDotScalar/useDragKeyframe',
95
- lockCSSCursorTo: 'move',
96
- onDragStart(event) {
97
- setIsDragging(true);
98
- const keepSpeeds = !!event.altKey;
99
- const propsAtStartOfDrag = propsRef.current;
100
- const toUnitSpace = val(propsAtStartOfDrag.layoutP.scaledSpace.toUnitSpace);
101
- const verticalToExtremumSpace = val(propsAtStartOfDrag.layoutP.graphEditorVerticalSpace.toExtremumSpace);
102
- const unlockExtremums = propsAtStartOfDrag.extremumSpace.lock();
103
- let tempTransaction;
104
- return {
105
- onDrag(dx, dy) {
106
- const original = propsAtStartOfDrag.trackData.keyframes[propsAtStartOfDrag.index];
107
- const deltaPos = toUnitSpace(dx);
108
- const dyInVerticalSpace = -dy;
109
- const dYInExtremumSpace = verticalToExtremumSpace(dyInVerticalSpace);
110
- const dYInValueSpace = propsAtStartOfDrag.extremumSpace.deltaToValueSpace(dYInExtremumSpace);
111
- const updatedKeyframes = [];
112
- const cur = {
113
- ...original,
114
- position: original.position + deltaPos,
115
- value: original.value + dYInValueSpace,
116
- handles: [...original.handles],
117
- };
118
- updatedKeyframes.push(cur);
119
- if (keepSpeeds) {
120
- const prev = propsAtStartOfDrag.trackData.keyframes[propsAtStartOfDrag.index - 1];
121
- if (prev &&
122
- Math.abs(original.value - prev.value) >
123
- 0) {
124
- const newPrev = {
125
- ...prev,
126
- handles: [...prev.handles],
127
- };
128
- updatedKeyframes.push(newPrev);
129
- newPrev.handles[3] = preserveRightHandle(prev.handles[3], prev.value, prev.value, original.value, cur.value);
130
- }
131
- const next = propsAtStartOfDrag.trackData.keyframes[propsAtStartOfDrag.index + 1];
132
- if (next &&
133
- Math.abs(original.value - next.value) >
134
- 0) {
135
- const newNext = {
136
- ...next,
137
- handles: [...next.handles],
138
- };
139
- updatedKeyframes.push(newNext);
140
- newNext.handles[1] = preserveLeftHandle(newNext.handles[1], newNext.value, newNext.value, original.value, cur.value);
141
- }
142
- }
143
- tempTransaction?.discard();
144
- tempTransaction = getStudio().tempTransaction(({ stateEditors }) => {
145
- stateEditors.coreByProject.historic.sheetsById.sequence.replaceKeyframes({
146
- ...propsAtStartOfDrag.sheetObject.address,
147
- trackId: propsAtStartOfDrag.trackId,
148
- keyframes: updatedKeyframes,
149
- snappingFunction: val(propsAtStartOfDrag.layoutP.sheet).getSequence().closestGridPosition,
150
- });
151
- });
152
- },
153
- onDragEnd(dragHappened) {
154
- setIsDragging(false);
155
- unlockExtremums();
156
- if (dragHappened) {
157
- tempTransaction?.commit();
158
- }
159
- else {
160
- tempTransaction?.discard();
161
- options.onDetectedClick(event);
162
- }
163
- },
164
- };
165
- },
166
- };
167
- }, []);
168
- useDrag(options.node, gestureHandlers);
169
- useCssCursorLock(isDragging, 'draggingPositionInSequenceEditor', 'move');
170
- return isDragging;
171
- }
172
- function useKeyframeContextMenu(node, props) {
173
- return useContextMenu(node, {
174
- menuItems: () => {
175
- return [
176
- {
177
- label: 'Delete',
178
- callback: () => {
179
- getStudio().transaction(({ stateEditors }) => {
180
- stateEditors.coreByProject.historic.sheetsById.sequence.deleteKeyframes({
181
- ...props.sheetObject.address,
182
- keyframeIds: [props.keyframe.id],
183
- trackId: props.trackId,
184
- });
185
- });
186
- },
187
- },
188
- ];
189
- },
190
- });
191
- }
192
- function preserveRightHandle(rightHandleInKeyframeDeltaSpace, originalValueOfMovedKeyframe, newValueOfMovedKeyframe, originalValueOfNeighbouringKeyframe, newValueOfNeighbouringKeyframe) {
193
- const diffOfHandleYToMovingKeyframeInValueSpace = (originalValueOfNeighbouringKeyframe - originalValueOfMovedKeyframe) *
194
- rightHandleInKeyframeDeltaSpace;
195
- const newHandleYInKeyframeDeltaSpace = diffOfHandleYToMovingKeyframeInValueSpace /
196
- (newValueOfNeighbouringKeyframe - newValueOfMovedKeyframe);
197
- return newHandleYInKeyframeDeltaSpace;
198
- }
199
- function preserveLeftHandle(leftHandleInKeyframeDeltaSpace, originalValueOfMovedKeyframe, newValueOfMovedKeyframe, originalValueOfNeighbouringKeyframe, newValueOfNeighbouringKeyframe) {
200
- const handleYInValueSpace = (originalValueOfMovedKeyframe - originalValueOfNeighbouringKeyframe) *
201
- leftHandleInKeyframeDeltaSpace +
202
- originalValueOfNeighbouringKeyframe;
203
- const diffOfHandleYToMovingKeyframeInValueSpace = handleYInValueSpace - originalValueOfMovedKeyframe;
204
- const newHandleYInValueSpace = diffOfHandleYToMovingKeyframeInValueSpace + newValueOfMovedKeyframe;
205
- const diffOfNewHandleYToNeighbouringKeyframe = newHandleYInValueSpace - newValueOfNeighbouringKeyframe;
206
- const newHandleYInKeyframeDeltaSpace = diffOfNewHandleYToNeighbouringKeyframe /
207
- (newValueOfMovedKeyframe - newValueOfNeighbouringKeyframe);
208
- return newHandleYInKeyframeDeltaSpace;
209
- }
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import { transformBox } from './Curve';
4
- export const dotSize = 6;
5
- const SVGPath = styled.path `
6
- stroke-width: 2;
7
- stroke: var(--main-color);
8
- stroke-dasharray: 3 2;
9
- fill: none;
10
- vector-effect: non-scaling-stroke;
11
- opacity: 0.3;
12
- `;
13
- const GraphEditorNonScalarDash = (props) => {
14
- const { index, trackData } = props;
15
- const pathD = `M 0 0 L 1 1`;
16
- const transform = transformBox(trackData.keyframes[index].position, props.extremumSpace.fromValueSpace(0), 0, props.extremumSpace.fromValueSpace(1) -
17
- props.extremumSpace.fromValueSpace(0));
18
- return (React.createElement(React.Fragment, null,
19
- React.createElement(SVGPath, { d: pathD, style: {
20
- transform,
21
- } })));
22
- };
23
- export default GraphEditorNonScalarDash;
@@ -1,30 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import Curve from './Curve';
4
- import CurveHandle from './CurveHandle';
5
- import GraphEditorDotScalar from './GraphEditorDotScalar';
6
- import GraphEditorDotNonScalar from './GraphEditorDotNonScalar';
7
- import GraphEditorNonScalarDash from './GraphEditorNonScalarDash';
8
- const Container = styled.g `
9
- /* position: absolute; */
10
- `;
11
- const noConnector = React.createElement(React.Fragment, null);
12
- const KeyframeEditor = (props) => {
13
- const { index, trackData, isScalar } = props;
14
- const cur = trackData.keyframes[index];
15
- const next = trackData.keyframes[index + 1];
16
- const connected = cur.connectedRight && !!next;
17
- const shouldShowCurve = connected && next.value !== cur.value;
18
- return (React.createElement(Container, null,
19
- shouldShowCurve ? (React.createElement(React.Fragment, null,
20
- React.createElement(Curve, { ...props }),
21
- !cur.type ||
22
- (cur.type === 'bezier' && (React.createElement(React.Fragment, null,
23
- React.createElement(CurveHandle, { ...props, which: "left" }),
24
- React.createElement(CurveHandle, { ...props, which: "right" })))))) : (noConnector),
25
- isScalar ? (React.createElement(GraphEditorDotScalar, { ...props })) : (React.createElement(React.Fragment, null,
26
- React.createElement(GraphEditorDotNonScalar, { ...props, which: "left" }),
27
- React.createElement(GraphEditorDotNonScalar, { ...props, which: "right" }),
28
- React.createElement(GraphEditorNonScalarDash, { ...props })))));
29
- };
30
- export default KeyframeEditor;
@@ -1,73 +0,0 @@
1
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
2
- import { decodePathToProp } from '@tomorrowevening/theatre-shared/utils/addresses';
3
- import getDeep from '@tomorrowevening/theatre-shared/utils/getDeep';
4
- import { usePrism } from '@tomorrowevening/theatre-react';
5
- import { val } from '@tomorrowevening/theatre-dataverse';
6
- import React from 'react';
7
- import styled from 'styled-components';
8
- import { contentWidth } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/DopeSheet/Right/Right';
9
- import HorizontallyScrollableArea from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/DopeSheet/Right/HorizontallyScrollableArea';
10
- import PrimitivePropGraph from './PrimitivePropGraph';
11
- import FrameGrid from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameGrid/FrameGrid';
12
- import { transparentize } from 'polished';
13
- export const graphEditorColors = {
14
- '1': { iconColor: '#b98b08' },
15
- '2': { iconColor: '#70a904' },
16
- '3': { iconColor: '#2e928a' },
17
- '4': { iconColor: '#a943bb' },
18
- '5': { iconColor: '#b90808' },
19
- '6': { iconColor: '#b4bf0e' },
20
- };
21
- const Container = styled.div `
22
- position: absolute;
23
- right: 0;
24
- bottom: 0;
25
- background: ${transparentize(0.03, '#1a1c1e')};
26
- `;
27
- const SVGContainer = styled.svg `
28
- position: absolute;
29
- top: 0;
30
- left: 0;
31
- margin: 0;
32
- pointer-events: none;
33
- `;
34
- const GraphEditor = ({ layoutP }) => {
35
- return usePrism(() => {
36
- const sheet = val(layoutP.sheet);
37
- const selectedPropsByObject = val(getStudio().atomP.historic.projects.stateByProjectId[sheet.address.projectId].stateBySheetId[sheet.address.sheetId].sequenceEditor
38
- .selectedPropsByObject);
39
- const height = val(layoutP.graphEditorDims.height);
40
- const unitSpaceToScaledSpaceMultiplier = val(layoutP.scaledSpace.fromUnitSpace)(1);
41
- const graphs = [];
42
- if (selectedPropsByObject) {
43
- for (const [objectKey, props] of Object.entries(selectedPropsByObject)) {
44
- const sheetObject = sheet.getObject(objectKey);
45
- if (!sheetObject)
46
- continue;
47
- const validSequenceTracks = val(sheetObject.template.getMapOfValidSequenceTracks_forStudio());
48
- for (const [encodedPathToProp, graphEditorColor] of Object.entries(props)) {
49
- const pathToProp = decodePathToProp(encodedPathToProp);
50
- const possibleSequenceTrackId = getDeep(validSequenceTracks, pathToProp);
51
- if (!possibleSequenceTrackId)
52
- continue;
53
- graphs.push(React.createElement(PrimitivePropGraph, { key: `graph-${objectKey}-${encodedPathToProp}`, sheetObject: sheetObject, pathToProp: pathToProp, layoutP: layoutP, trackId: possibleSequenceTrackId, color: graphEditorColor }));
54
- }
55
- }
56
- }
57
- const width = val(layoutP.rightDims.width);
58
- return (React.createElement(Container, { style: {
59
- width: width + 'px',
60
- height: height + 'px',
61
- // @ts-expect-error
62
- '--unitSpaceToScaledSpaceMultiplier': unitSpaceToScaledSpaceMultiplier,
63
- '--graphEditorVerticalSpace': `${val(layoutP.graphEditorVerticalSpace.space)}`,
64
- } },
65
- React.createElement(FrameGrid, { layoutP: layoutP, width: width, height: height }),
66
- React.createElement(HorizontallyScrollableArea, { layoutP: layoutP, height: height },
67
- React.createElement(SVGContainer, { width: contentWidth, height: height, viewBox: `0 0 ${contentWidth} ${height}` },
68
- React.createElement("g", { style: {
69
- transform: `translate(${val(layoutP.scaledSpace.leftPadding)}px, ${val(layoutP.graphEditorDims.padding.top)}px)`,
70
- } }, graphs)))));
71
- }, [layoutP]);
72
- };
73
- export default GraphEditor;
@@ -1,20 +0,0 @@
1
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
2
- import { usePrism } from '@tomorrowevening/theatre-react';
3
- import { val } from '@tomorrowevening/theatre-dataverse';
4
- import React from 'react';
5
- import BasicKeyframedTrack from './BasicKeyframedTrack/BasicKeyframedTrack';
6
- const PrimitivePropGraph = (props) => {
7
- return usePrism(() => {
8
- const { sheetObject, trackId } = props;
9
- const trackData = val(getStudio().atomP.historic.coreByProject[sheetObject.address.projectId]
10
- .sheetsById[sheetObject.address.sheetId].sequence.tracksByObject[sheetObject.address.objectKey].trackData[trackId]);
11
- if (trackData?.type !== 'BasicKeyframedTrack') {
12
- console.error(`trackData type ${trackData?.type} is not yet supported on the graph editor`);
13
- return React.createElement(React.Fragment, null);
14
- }
15
- else {
16
- return React.createElement(BasicKeyframedTrack, { ...props, trackData: trackData });
17
- }
18
- }, [props.trackId, props.layoutP]);
19
- };
20
- export default PrimitivePropGraph;
@@ -1,59 +0,0 @@
1
- import { val } from '@tomorrowevening/theatre-dataverse';
2
- import { useVal } from '@tomorrowevening/theatre-react';
3
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
4
- import React, { useCallback } from 'react';
5
- import styled from 'styled-components';
6
- import { VscTriangleUp } from 'react-icons/all';
7
- import { includeLockFrameStampAttrs } from './FrameStampPositionProvider';
8
- const Container = styled.button `
9
- outline: none;
10
- background-color: #1c1d21;
11
- border: 1px solid #191919;
12
- border-radius: 2px;
13
- display: flex;
14
- bottom: 14px;
15
- right: 8px;
16
- z-index: 1;
17
- position: absolute;
18
-
19
- padding: 4px 8px;
20
- display: flex;
21
- color: #656d77;
22
- line-height: 20px;
23
- font-size: 10px;
24
-
25
- &:hover {
26
- color: white;
27
- }
28
-
29
- & > svg {
30
- transition: transform 0.3s;
31
- transform: rotateZ(0deg);
32
- }
33
-
34
- &:hover > svg {
35
- transform: rotateZ(-20deg);
36
- }
37
-
38
- &.open > svg {
39
- transform: rotateZ(-180deg);
40
- }
41
-
42
- &.open:hover > svg {
43
- transform: rotateZ(-160deg);
44
- }
45
- `;
46
- const GraphEditorToggle = ({ layoutP }) => {
47
- const isOpen = useVal(layoutP.graphEditorDims.isOpen);
48
- const toggle = useCallback(() => {
49
- const isOpen = val(layoutP.graphEditorDims.isOpen);
50
- getStudio().transaction(({ stateEditors }) => {
51
- stateEditors.studio.historic.panels.sequenceEditor.graphEditor.setIsOpen({
52
- isOpen: !isOpen,
53
- });
54
- });
55
- }, [layoutP]);
56
- return (React.createElement(Container, { onClick: toggle, title: 'Toggle graph editor', className: isOpen ? 'open' : '', ...includeLockFrameStampAttrs('hide') },
57
- React.createElement(VscTriangleUp, null)));
58
- };
59
- export default GraphEditorToggle;
@@ -1,36 +0,0 @@
1
- // Pretty much same code as for keyframe and similar for playhead.
2
- // Consider if we should unify the implementations.
3
- // - See "useLockFrameStampPosition"
4
- // - Also see "pointerPositionInUnitSpace" for a related impl (for different problem)
5
- const POSITION_SNAP_ATTR = 'data-pos';
6
- /**
7
- * Uses `[data-pos]` attribute to understand potential snap targets.
8
- */
9
- const DopeSnap = {
10
- checkIfMouseEventSnapToPos(event, options) {
11
- const snapTarget = event
12
- .composedPath()
13
- .find((el) => el instanceof Element &&
14
- el !== options?.ignore &&
15
- el.hasAttribute(POSITION_SNAP_ATTR));
16
- if (snapTarget) {
17
- const snapPos = parseFloat(snapTarget.getAttribute(POSITION_SNAP_ATTR));
18
- if (isFinite(snapPos)) {
19
- return snapPos;
20
- }
21
- }
22
- return null;
23
- },
24
- /**
25
- * Use as a spread in a React element
26
- *
27
- * @example
28
- * ```tsx
29
- * <div {...DopeSnap.includePositionSnapAttrs(10)}/>
30
- * ```
31
- */
32
- includePositionSnapAttrs(position) {
33
- return { [POSITION_SNAP_ATTR]: position };
34
- },
35
- };
36
- export default DopeSnap;