@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,57 +0,0 @@
1
- import { pointerEventsAutoInNormalMode } from '@tomorrowevening/theatre-studio/css';
2
- import { lockedCursorCssVarName } from '@tomorrowevening/theatre-studio/uiComponents/PointerEventsHandler';
3
- import { css } from 'styled-components';
4
- import SnapCursor from './SnapCursor.svg';
5
- import { absoluteDims } from '@tomorrowevening/theatre-studio/utils/absoluteDims';
6
- import DopeSnap from './DopeSnap';
7
- import { includeLockFrameStampAttrs } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
8
- const HIT_ZONE_SIZE_PX = 12;
9
- const SNAP_CURSOR_SIZE_PX = 34;
10
- const BEING_DRAGGED_CLASS = 'beingDragged';
11
- /**
12
- * Helper CSS for consistent display of the `⸢⸤⸣⸥` thing
13
- */
14
- export const DopeSnapHitZoneUI = {
15
- BEING_DRAGGED_CLASS,
16
- CSS: css `
17
- position: absolute;
18
- ${absoluteDims(HIT_ZONE_SIZE_PX)};
19
- ${pointerEventsAutoInNormalMode};
20
-
21
- &.${BEING_DRAGGED_CLASS} {
22
- pointer-events: none !important;
23
- }
24
- `,
25
- CSS_WHEN_SOMETHING_DRAGGING: css `
26
- pointer-events: auto;
27
- cursor: var(${lockedCursorCssVarName});
28
-
29
- // ⸢⸤⸣⸥ thing
30
- // This box extends the hitzone so the user does not
31
- // accidentally leave the hitzone
32
- &:hover:after {
33
- position: absolute;
34
- top: calc(50% - ${SNAP_CURSOR_SIZE_PX / 2}px);
35
- left: calc(50% - ${SNAP_CURSOR_SIZE_PX / 2}px);
36
- width: ${SNAP_CURSOR_SIZE_PX}px;
37
- height: ${SNAP_CURSOR_SIZE_PX}px;
38
- display: block;
39
- content: ' ';
40
- background: url(${SnapCursor}) no-repeat 100% 100%;
41
- // This icon might also fit: GiConvergenceTarget
42
- }
43
- `,
44
- /** Intrinsic element props for `<HitZone/>`s */
45
- reactProps(config) {
46
- return {
47
- // `data-pos` and `includeLockFrameStampAttrs` are used by FrameStampPositionProvider
48
- // in order to handle snapping the playhead. Adding these props effectively
49
- // causes the playhead to "snap" to the marker on mouse over.
50
- // `pointerEventsAutoInNormalMode` and `lockedCursorCssVarName` in the CSS above are also
51
- // used to make this behave correctly.
52
- ...includeLockFrameStampAttrs(config.position),
53
- ...DopeSnap.includePositionSnapAttrs(config.position),
54
- className: config.isDragging ? DopeSnapHitZoneUI.BEING_DRAGGED_CLASS : '',
55
- };
56
- },
57
- };
@@ -1,233 +0,0 @@
1
- import { prism, val } from '@tomorrowevening/theatre-dataverse';
2
- import { usePrism, useVal } from '@tomorrowevening/theatre-react';
3
- import { pointerEventsAutoInNormalMode } from '@tomorrowevening/theatre-studio/css';
4
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
5
- import { topStripHeight } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/RightOverlay/TopStrip';
6
- import useContextMenu from '@tomorrowevening/theatre-studio/uiComponents/simpleContextMenu/useContextMenu';
7
- import useDrag from '@tomorrowevening/theatre-studio/uiComponents/useDrag';
8
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
9
- import React, { useMemo } from 'react';
10
- import styled from 'styled-components';
11
- import { useLockFrameStampPosition } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
12
- export const focusRangeStripTheme = {
13
- enabled: {
14
- backgroundColor: '#2C2F34',
15
- stroke: '#646568',
16
- },
17
- disabled: {
18
- backgroundColor: '#282a2cc5',
19
- stroke: '#595a5d',
20
- },
21
- hover: {
22
- backgroundColor: '#34373D',
23
- stroke: '#C8CAC0',
24
- },
25
- dragging: {
26
- backgroundColor: '#3F444A',
27
- stroke: '#C8CAC0',
28
- },
29
- thumbWidth: 9,
30
- hitZoneWidth: 26,
31
- rangeStripMinWidth: 30,
32
- };
33
- const stripWidth = 1000;
34
- export const RangeStrip = styled.div `
35
- position: absolute;
36
- height: ${() => topStripHeight - 1}px;
37
- background-color: ${(props) => props.enabled
38
- ? focusRangeStripTheme.enabled.backgroundColor
39
- : focusRangeStripTheme.disabled.backgroundColor};
40
- cursor: grab;
41
- top: 0;
42
- left: 0;
43
- width: ${stripWidth}px;
44
- transform-origin: left top;
45
- &:hover {
46
- background-color: ${focusRangeStripTheme.hover.backgroundColor};
47
- }
48
- &.dragging {
49
- background-color: ${focusRangeStripTheme.dragging.backgroundColor};
50
- cursor: grabbing !important;
51
- }
52
- ${pointerEventsAutoInNormalMode};
53
-
54
- /* covers the one pixel space between the focus range strip and the top strip
55
- of the sequence editor panel, which would have caused that one pixel to act
56
- like a panel drag zone */
57
- &:after {
58
- display: block;
59
- content: ' ';
60
- position: absolute;
61
- bottom: -1px;
62
- height: 1px;
63
- left: 0;
64
- right: 0;
65
- background: transparent;
66
- pointer-events: normal;
67
- z-index: -1;
68
- }
69
- `;
70
- /**
71
- * Clamps the lower and upper bounds of a range to the lower and upper bounds of the reference range, while maintaining the original width of the range. If the range to be clamped has a greater width than the reference range, then the reference range is returned.
72
- *
73
- * @param range - The range bounds to be clamped
74
- * @param referenceRange - The reference range
75
- *
76
- * @returns The clamped bounds.
77
- *
78
- * @example
79
- * ```ts
80
- * clampRange([-1, 4], [2, 3]) // returns [2, 3]
81
- * clampRange([-1, 2.5], [2, 3]) // returns [2, 2.5]
82
- * ```
83
- */
84
- function clampRange(range, referenceRange) {
85
- let overflow = 0;
86
- const [start, end] = range;
87
- const [lower, upper] = referenceRange;
88
- if (end - start > upper - lower)
89
- return [lower, upper];
90
- if (start < lower) {
91
- overflow = 0 - start;
92
- }
93
- if (end > upper) {
94
- overflow = upper - end;
95
- }
96
- return [start + overflow, end + overflow];
97
- }
98
- const FocusRangeStrip = ({ layoutP }) => {
99
- const existingRangeD = useMemo(() => prism(() => {
100
- const { projectId, sheetId } = val(layoutP.sheet).address;
101
- const existingRange = val(getStudio().atomP.ahistoric.projects.stateByProjectId[projectId]
102
- .stateBySheetId[sheetId].sequence.focusRange);
103
- return existingRange;
104
- }), [layoutP]);
105
- const [rangeStripRef, rangeStripNode] = useRefAndState(null);
106
- const [contextMenu] = useContextMenu(rangeStripNode, {
107
- menuItems: () => {
108
- const sheet = val(layoutP.sheet);
109
- const existingRange = existingRangeD.getValue();
110
- return [
111
- {
112
- label: 'Delete focus range',
113
- callback: () => {
114
- getStudio()
115
- .tempTransaction(({ stateEditors }) => {
116
- stateEditors.studio.ahistoric.projects.stateByProjectId.stateBySheetId.sequence.focusRange.unset({
117
- ...sheet.address,
118
- });
119
- })
120
- .commit();
121
- },
122
- },
123
- {
124
- label: existingRange?.enabled
125
- ? 'Disable focus range'
126
- : 'Enable focus range',
127
- callback: () => {
128
- if (existingRange !== undefined) {
129
- getStudio()
130
- .tempTransaction(({ stateEditors }) => {
131
- stateEditors.studio.ahistoric.projects.stateByProjectId.stateBySheetId.sequence.focusRange.set({
132
- ...sheet.address,
133
- range: existingRange.range,
134
- enabled: !existingRange.enabled,
135
- });
136
- })
137
- .commit();
138
- }
139
- },
140
- },
141
- ];
142
- },
143
- });
144
- const scaledSpaceToUnitSpace = useVal(layoutP.scaledSpace.toUnitSpace);
145
- const sheet = useVal(layoutP.sheet);
146
- const gestureHandlers = useMemo(() => {
147
- let newStartPosition, newEndPosition;
148
- return {
149
- debugName: 'FocusRangeStrip',
150
- onDragStart(event) {
151
- let tempTransaction;
152
- let existingRange = existingRangeD.getValue();
153
- if (!existingRange)
154
- return false;
155
- const startPosBeforeDrag = existingRange.range.start;
156
- const endPosBeforeDrag = existingRange.range.end;
157
- let dragHappened = false;
158
- const sequence = val(layoutP.sheet).getSequence();
159
- return {
160
- onDrag(dx) {
161
- existingRange = existingRangeD.getValue();
162
- if (existingRange) {
163
- dragHappened = true;
164
- const deltaPos = scaledSpaceToUnitSpace(dx);
165
- const start = startPosBeforeDrag + deltaPos;
166
- let end = endPosBeforeDrag + deltaPos;
167
- if (end < start) {
168
- end = start;
169
- }
170
- ;
171
- [newStartPosition, newEndPosition] = clampRange([start, end], [0, sequence.length]).map((pos) => sequence.closestGridPosition(pos));
172
- if (tempTransaction) {
173
- tempTransaction.discard();
174
- }
175
- tempTransaction = getStudio().tempTransaction(({ stateEditors }) => {
176
- stateEditors.studio.ahistoric.projects.stateByProjectId.stateBySheetId.sequence.focusRange.set({
177
- ...sheet.address,
178
- range: {
179
- start: newStartPosition,
180
- end: newEndPosition,
181
- },
182
- enabled: existingRange?.enabled ?? true,
183
- });
184
- });
185
- }
186
- },
187
- onDragEnd() {
188
- if (existingRange) {
189
- if (dragHappened && tempTransaction !== undefined) {
190
- tempTransaction.commit();
191
- }
192
- else if (tempTransaction) {
193
- tempTransaction.discard();
194
- }
195
- }
196
- },
197
- };
198
- },
199
- lockCSSCursorTo: 'grabbing',
200
- };
201
- }, [sheet, scaledSpaceToUnitSpace]);
202
- const [isDragging] = useDrag(rangeStripNode, gestureHandlers);
203
- useLockFrameStampPosition(isDragging, -1);
204
- return usePrism(() => {
205
- const existingRange = existingRangeD.getValue();
206
- const range = existingRange?.range || { start: 0, end: 0 };
207
- let startX = val(layoutP.clippedSpace.fromUnitSpace)(range.start);
208
- let endX = val(layoutP.clippedSpace.fromUnitSpace)(range.end);
209
- let scaleX, translateX;
210
- if (startX < 0) {
211
- startX = 0;
212
- }
213
- if (endX > val(layoutP.clippedSpace.width)) {
214
- endX = val(layoutP.clippedSpace.width);
215
- }
216
- if (startX > endX) {
217
- translateX = 0;
218
- scaleX = 0;
219
- }
220
- else {
221
- translateX = startX;
222
- scaleX = (endX - startX) / stripWidth;
223
- }
224
- if (!existingRange)
225
- return React.createElement(React.Fragment, null);
226
- return (React.createElement(React.Fragment, null,
227
- contextMenu,
228
- React.createElement(RangeStrip, { id: "range-strip", enabled: existingRange.enabled, className: `${isDragging ? 'dragging' : ''} ${existingRange.enabled ? 'enabled' : ''}`, ref: rangeStripRef, style: {
229
- transform: `translateX(${translateX}px) scale(${scaleX}, 1)`,
230
- } })));
231
- }, [layoutP, rangeStripRef, existingRangeD, contextMenu, isDragging]);
232
- };
233
- export default FocusRangeStrip;
@@ -1,217 +0,0 @@
1
- import { prism, val } from '@tomorrowevening/theatre-dataverse';
2
- import { usePrism, useVal } from '@tomorrowevening/theatre-react';
3
- import getStudio from '@tomorrowevening/theatre-studio/getStudio';
4
- import { topStripHeight, topStripTheme, } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/RightOverlay/TopStrip';
5
- import { lockedCursorCssVarName, useCssCursorLock, } from '@tomorrowevening/theatre-studio/uiComponents/PointerEventsHandler';
6
- import useDrag from '@tomorrowevening/theatre-studio/uiComponents/useDrag';
7
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
8
- import React, { useMemo } from 'react';
9
- import styled from 'styled-components';
10
- import { includeLockFrameStampAttrs, useLockFrameStampPosition, } from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/FrameStampPositionProvider';
11
- import { focusRangeStripTheme, RangeStrip } from './FocusRangeStrip';
12
- import DopeSnap from '@tomorrowevening/theatre-studio/panels/SequenceEditorPanel/RightOverlay/DopeSnap';
13
- const TheDiv = styled.div `
14
- position: absolute;
15
- top: 0;
16
- // the right handle has to be pulled back by its width since its right side indicates its position, not its left side
17
- left: ${(props) => props.type === 'start' ? 0 : -focusRangeStripTheme.thumbWidth}px;
18
- transform-origin: left top;
19
- width: ${focusRangeStripTheme.thumbWidth}px;
20
- height: ${() => topStripHeight - 1}px;
21
- z-index: 3;
22
-
23
- --bg: ${({ enabled }) => enabled
24
- ? focusRangeStripTheme.enabled.backgroundColor
25
- : focusRangeStripTheme.disabled.backgroundColor};
26
-
27
- stroke: ${focusRangeStripTheme.enabled.stroke};
28
- user-select: none;
29
-
30
- cursor: ${(props) => (props.type === 'start' ? 'w-resize' : 'e-resize')};
31
-
32
- // no pointer events unless pointer-root is in normal mode _and_ the
33
- // focus range is enabled
34
- #pointer-root & {
35
- pointer-events: none;
36
- }
37
-
38
- #pointer-root.normal & {
39
- pointer-events: auto;
40
- }
41
-
42
- #pointer-root.draggingPositionInSequenceEditor & {
43
- pointer-events: auto;
44
- cursor: var(${lockedCursorCssVarName});
45
- }
46
-
47
- &.dragging {
48
- pointer-events: none !important;
49
- }
50
-
51
- // highlight the handle if it's hovered, or the whole strip is hovverd
52
- ${() => RangeStrip}:hover ~ &, &:hover {
53
- --bg: ${focusRangeStripTheme.hover.backgroundColor};
54
- stroke: ${focusRangeStripTheme.hover.stroke};
55
- }
56
-
57
- // highlight the handle when it's being dragged or the whole strip is being dragged.
58
- // using dragging.dragging to give this selector priority, as it seems to be overridden
59
- // by the hover selector above
60
- &.dragging,
61
- ${() => RangeStrip}.dragging.dragging ~ & {
62
- --bg: ${focusRangeStripTheme.dragging.backgroundColor};
63
- stroke: ${focusRangeStripTheme.dragging.stroke};
64
- }
65
-
66
- #pointer-root.draggingPositionInSequenceEditor &:hover {
67
- --bg: ${focusRangeStripTheme.dragging.backgroundColor};
68
- stroke: #40aaa4;
69
- }
70
-
71
- background-color: var(--bg);
72
-
73
- // a larger hit zone
74
- &:before {
75
- display: block;
76
- content: ' ';
77
- position: absolute;
78
- inset: -8px;
79
- }
80
- `;
81
- /**
82
- * This acts as a bit of a horizontal shadow that covers the frame numbers that show up
83
- * right next to the thumb, making the appearance of the focus range more tidy.
84
- */
85
- const ColoredMargin = styled.div `
86
- position: absolute;
87
- top: 0;
88
- bottom: 0;
89
- pointer-events: none;
90
-
91
- background: linear-gradient(
92
- ${(props) => (props.type === 'start' ? 90 : -90)}deg,
93
- var(--bg) 0%,
94
- #ffffff00 100%
95
- );
96
-
97
- width: 12px;
98
- left: ${(props) => props.type === 'start'
99
- ? focusRangeStripTheme.thumbWidth
100
- : // pushing the right-side thumb's margin 1px to the right to make sure there is no space
101
- // between it and the thumb
102
- -focusRangeStripTheme.thumbWidth + 1}px;
103
- `;
104
- const OuterColoredMargin = styled.div `
105
- position: absolute;
106
- top: 0;
107
- bottom: 0;
108
- pointer-events: none;
109
-
110
- background: linear-gradient(
111
- ${(props) => (props.type === 'start' ? -90 : 90)}deg,
112
- ${() => topStripTheme.backgroundColor} 0%,
113
- #ffffff00 100%
114
- );
115
-
116
- width: 12px;
117
- left: ${(props) => props.type === 'start' ? -12 : focusRangeStripTheme.thumbWidth}px;
118
- `;
119
- const FocusRangeThumb = ({ layoutP, thumbType }) => {
120
- const [hitZoneRef, hitZoneNode] = useRefAndState(null);
121
- const existingRangeD = useMemo(() => prism(() => {
122
- const { projectId, sheetId } = val(layoutP.sheet).address;
123
- const existingRange = val(getStudio().atomP.ahistoric.projects.stateByProjectId[projectId]
124
- .stateBySheetId[sheetId].sequence.focusRange);
125
- return existingRange;
126
- }), [layoutP]);
127
- const gestureHandlers = useMemo(() => {
128
- return {
129
- debugName: 'FocusRangeThumb',
130
- onDragStart() {
131
- let tempTransaction;
132
- let range;
133
- const sheet = val(layoutP.sheet);
134
- const sequence = sheet.getSequence();
135
- const defaultRange = { start: 0, end: sequence.length };
136
- let existingRange = existingRangeD.getValue() || {
137
- range: defaultRange,
138
- enabled: false,
139
- };
140
- const focusRangeEnabled = existingRange.enabled;
141
- const posBeforeDrag = existingRange.range[thumbType];
142
- const scaledSpaceToUnitSpace = val(layoutP.scaledSpace.toUnitSpace);
143
- const minFocusRangeStripWidth = scaledSpaceToUnitSpace(focusRangeStripTheme.rangeStripMinWidth);
144
- return {
145
- onDrag(dx, _, event) {
146
- let newPosition;
147
- const snapPos = DopeSnap.checkIfMouseEventSnapToPos(event, {
148
- ignore: hitZoneNode,
149
- });
150
- if (snapPos == null) {
151
- const deltaPos = scaledSpaceToUnitSpace(dx);
152
- const oldPosPlusDeltaPos = posBeforeDrag + deltaPos;
153
- newPosition = oldPosPlusDeltaPos;
154
- }
155
- else {
156
- newPosition = snapPos;
157
- }
158
- range = existingRangeD.getValue()?.range || defaultRange;
159
- // Make sure that the focus range has a minimal width
160
- if (thumbType === 'start') {
161
- // Prevent the start thumb from going below 0
162
- newPosition = Math.max(Math.min(newPosition, range['end'] - minFocusRangeStripWidth), 0);
163
- }
164
- else {
165
- // Prevent the start thumb from going over the length of the sequence
166
- newPosition = Math.min(Math.max(newPosition, range['start'] + minFocusRangeStripWidth), sheet.getSequence().length);
167
- }
168
- const newPositionInFrame = sheet
169
- .getSequence()
170
- .closestGridPosition(newPosition);
171
- if (tempTransaction !== undefined) {
172
- tempTransaction.discard();
173
- }
174
- tempTransaction = getStudio().tempTransaction(({ stateEditors }) => {
175
- stateEditors.studio.ahistoric.projects.stateByProjectId.stateBySheetId.sequence.focusRange.set({
176
- ...sheet.address,
177
- range: { ...range, [thumbType]: newPositionInFrame },
178
- enabled: focusRangeEnabled,
179
- });
180
- });
181
- },
182
- onDragEnd(dragHappened) {
183
- if (dragHappened)
184
- tempTransaction?.commit();
185
- else
186
- tempTransaction?.discard();
187
- },
188
- };
189
- },
190
- };
191
- }, [layoutP]);
192
- const [isDragging] = useDrag(hitZoneNode, gestureHandlers);
193
- useCssCursorLock(isDragging, 'draggingPositionInSequenceEditor', thumbType === 'start' ? 'w-resize' : 'e-resize');
194
- const existingRange = useVal(existingRangeD);
195
- useLockFrameStampPosition(isDragging, existingRange?.range[thumbType] ?? 0);
196
- return usePrism(() => {
197
- const existingRange = existingRangeD.getValue();
198
- if (!existingRange)
199
- return null;
200
- const { enabled } = existingRange;
201
- const position = existingRange.range[thumbType];
202
- let posInClippedSpace = val(layoutP.clippedSpace.fromUnitSpace)(position);
203
- if (posInClippedSpace < 0 ||
204
- val(layoutP.clippedSpace.width) < posInClippedSpace) {
205
- posInClippedSpace = -10000;
206
- }
207
- return (React.createElement(TheDiv, { ref: hitZoneRef, ...DopeSnap.includePositionSnapAttrs(position), ...includeLockFrameStampAttrs(position), className: `${isDragging && 'dragging'} ${enabled && 'enabled'}`, enabled: enabled, type: thumbType, style: {
208
- transform: `translate3d(${posInClippedSpace}px, 0, 0)`,
209
- } },
210
- React.createElement(ColoredMargin, { type: thumbType, enabled: enabled }),
211
- React.createElement(OuterColoredMargin, { type: thumbType }),
212
- React.createElement("svg", { viewBox: "0 0 9 18", xmlns: "http://www.w3.org/2000/svg" },
213
- React.createElement("line", { x1: "4", y1: "6", x2: "4", y2: "12" }),
214
- React.createElement("line", { x1: "6", y1: "6", x2: "6", y2: "12" }))));
215
- }, [layoutP, hitZoneRef, existingRangeD, isDragging]);
216
- };
217
- export default FocusRangeThumb;