@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,199 +0,0 @@
1
- import { useLayoutEffect, useRef } from 'react';
2
- import { useCssCursorLock } from './PointerEventsHandler';
3
- import { usePointerCapturing } from '@tomorrowevening/theatre-studio/UIRoot/PointerCapturing';
4
- import noop from '@tomorrowevening/theatre-shared/utils/noop';
5
- import { isSafari } from './isSafari';
6
- import useRefAndState from '@tomorrowevening/theatre-studio/utils/useRefAndState';
7
- export var MouseButton;
8
- (function (MouseButton) {
9
- MouseButton[MouseButton["Left"] = 0] = "Left";
10
- MouseButton[MouseButton["Middle"] = 1] = "Middle";
11
- // Not including Right because it _might_ interfere with chord clicking.
12
- // So we'll wait for chord-clicking to land before exploring right-button gestures
13
- })(MouseButton || (MouseButton = {}));
14
- /** How far in total does the cursor have to move before we decide that the user is dragging */
15
- const DRAG_DETECTION_DISTANCE_THRESHOLD = 3;
16
- const DRAG_DETECTION_WAS_POINTER_LOCK_MOVEMENT = 100;
17
- export default function useDrag(target, opts) {
18
- const optsRef = useRef(opts);
19
- optsRef.current = opts;
20
- /**
21
- * Safari has a gross behavior with locking the pointer changes the height of the webpage
22
- * See {@link UseDragOpts.shouldPointerLock} for more context.
23
- */
24
- const isPointerLockUsed = opts.shouldPointerLock && !isSafari;
25
- const stateRef = useRef({
26
- domDragStarted: false,
27
- });
28
- const { capturePointer } = usePointerCapturing(`useDrag for ${opts.debugName}`);
29
- const callbacksRef = useRef({ onDrag: noop, onDragEnd: noop, onClick: noop });
30
- const capturedPointerRef = useRef();
31
- // needed to have a state on the react lifecycle which can be updated
32
- // via a ref (e.g. via the below layout effect).
33
- const [isDraggingRef, isDragging] = useRefAndState(false);
34
- useLayoutEffect(() => {
35
- if (!target)
36
- return;
37
- const ensureIsDraggingUpToDateForReactLifecycle = () => {
38
- const isDragging = stateRef.current.domDragStarted && stateRef.current.detection.detected;
39
- if (isDraggingRef.current !== isDragging) {
40
- isDraggingRef.current = isDragging;
41
- }
42
- };
43
- const dragHandler = (event) => {
44
- if (!stateRef.current.domDragStarted)
45
- return;
46
- const stateStarted = stateRef.current;
47
- if (didPointerLockCauseMovement(event, stateStarted))
48
- return;
49
- if (!stateStarted.detection.detected) {
50
- stateStarted.detection.totalDistanceMoved +=
51
- Math.abs(event.movementY) + Math.abs(event.movementX);
52
- if (stateStarted.detection.totalDistanceMoved >
53
- DRAG_DETECTION_DISTANCE_THRESHOLD) {
54
- if (isPointerLockUsed) {
55
- target.requestPointerLock();
56
- }
57
- stateStarted.detection = {
58
- detected: true,
59
- dragMovement: { x: 0, y: 0 },
60
- dragEventCount: 0,
61
- };
62
- ensureIsDraggingUpToDateForReactLifecycle();
63
- }
64
- }
65
- // drag detection threshold checking
66
- if (stateStarted.detection.detected) {
67
- stateStarted.detection.dragEventCount += 1;
68
- const { dragMovement } = stateStarted.detection;
69
- if (isPointerLockUsed) {
70
- // when locked, the pointer event screen position is going to be 0s, since the pointer can't move.
71
- // So, we use the movement on the event
72
- dragMovement.x += event.movementX;
73
- dragMovement.y += event.movementY;
74
- }
75
- else {
76
- const { startPos } = stateStarted;
77
- dragMovement.x = event.screenX - startPos.x;
78
- dragMovement.y = event.screenY - startPos.y;
79
- }
80
- callbacksRef.current.onDrag(dragMovement.x, dragMovement.y, event, event.movementX, event.movementY);
81
- }
82
- };
83
- const dragEndHandler = (e) => {
84
- removeDragListeners();
85
- if (!stateRef.current.domDragStarted)
86
- return;
87
- const dragHappened = stateRef.current.detection.detected;
88
- stateRef.current = { domDragStarted: false };
89
- if (opts.shouldPointerLock && !isSafari)
90
- document.exitPointerLock();
91
- callbacksRef.current.onDragEnd(dragHappened);
92
- // ensure that the window is focused after a successful drag
93
- // this fixes an issue where after dragging something like the playhead
94
- // through an iframe, you can immediately hit [space] and the animation
95
- // will play, even if you hadn't been focusing in the iframe at the start
96
- // of the drag.
97
- //
98
- // Fixes https://linear.app/theatre/issue/P-177/beginners-scrubbing-the-playhead-from-within-an-iframe-then-[space]
99
- window.focus();
100
- if (!dragHappened) {
101
- callbacksRef.current.onClick(e);
102
- }
103
- ensureIsDraggingUpToDateForReactLifecycle();
104
- };
105
- const addDragListeners = () => {
106
- document.addEventListener('mousemove', dragHandler);
107
- document.addEventListener('mouseup', dragEndHandler);
108
- };
109
- const removeDragListeners = () => {
110
- capturedPointerRef.current?.release();
111
- document.removeEventListener('mousemove', dragHandler);
112
- document.removeEventListener('mouseup', dragEndHandler);
113
- };
114
- const preventUnwantedClick = (event) => {
115
- if (optsRef.current.disabled)
116
- return;
117
- if (!stateRef.current.domDragStarted)
118
- return;
119
- if (stateRef.current.detection.detected) {
120
- if (!optsRef.current.dontBlockMouseDown) {
121
- event.stopPropagation();
122
- event.preventDefault();
123
- }
124
- stateRef.current.detection = {
125
- detected: false,
126
- totalDistanceMoved: 0,
127
- };
128
- ensureIsDraggingUpToDateForReactLifecycle();
129
- }
130
- };
131
- const dragStartHandler = (event) => {
132
- // defensively release
133
- capturedPointerRef.current?.release();
134
- const opts = optsRef.current;
135
- if (opts.disabled === true)
136
- return;
137
- const acceptedButtons = opts.buttons ?? [MouseButton.Left];
138
- if (!acceptedButtons.includes(event.button))
139
- return;
140
- const returnOfOnDragStart = opts.onDragStart(event);
141
- if (returnOfOnDragStart === false) {
142
- // we should ignore the gesture
143
- return;
144
- }
145
- callbacksRef.current.onDrag = returnOfOnDragStart.onDrag;
146
- callbacksRef.current.onDragEnd = returnOfOnDragStart.onDragEnd ?? noop;
147
- callbacksRef.current.onClick = returnOfOnDragStart.onClick ?? noop;
148
- // need to capture pointer after we know the provided handler wants to handle drag start
149
- capturedPointerRef.current = capturePointer('Drag start');
150
- if (!opts.dontBlockMouseDown) {
151
- event.stopPropagation();
152
- event.preventDefault();
153
- }
154
- stateRef.current = {
155
- domDragStarted: true,
156
- startPos: { x: event.screenX, y: event.screenY },
157
- detection: {
158
- detected: false,
159
- totalDistanceMoved: 0,
160
- },
161
- };
162
- ensureIsDraggingUpToDateForReactLifecycle();
163
- addDragListeners();
164
- };
165
- const onMouseDown = (e) => {
166
- dragStartHandler(e);
167
- };
168
- target.addEventListener('mousedown', onMouseDown);
169
- target.addEventListener('click', preventUnwantedClick);
170
- return () => {
171
- removeDragListeners();
172
- target.removeEventListener('mousedown', onMouseDown);
173
- target.removeEventListener('click', preventUnwantedClick);
174
- if (stateRef.current.domDragStarted) {
175
- callbacksRef.current.onDragEnd?.(stateRef.current.detection.detected);
176
- }
177
- stateRef.current = { domDragStarted: false };
178
- ensureIsDraggingUpToDateForReactLifecycle();
179
- };
180
- }, [target]);
181
- useCssCursorLock(isDragging && !!opts.lockCSSCursorTo, 'dragging', opts.lockCSSCursorTo);
182
- return [isDragging];
183
- }
184
- /**
185
- * shouldPointerLock moves the mouse to the center of your screen in firefox, which
186
- * can cause it to report very large movementX when the pointer lock begins. This
187
- * function hackily detects unnaturally large movements of the mouse.
188
- *
189
- * @param event - MouseEvent from onDrag
190
- * @returns
191
- */
192
- function didPointerLockCauseMovement(event, state) {
193
- const isEarlyInDragging = !state.detection.detected ||
194
- (state.detection.detected && state.detection.dragEventCount < 3);
195
- return (isEarlyInDragging &&
196
- // sudden movement
197
- (Math.abs(event.movementX) > DRAG_DETECTION_WAS_POINTER_LOCK_MOVEMENT ||
198
- Math.abs(event.movementY) > DRAG_DETECTION_WAS_POINTER_LOCK_MOVEMENT));
199
- }
@@ -1,30 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- export default function useHotspot(spot) {
3
- const [active, setActive] = useState(false);
4
- useEffect(() => {
5
- const hoverListener = (e) => {
6
- const threshold = active ? 200 : 50;
7
- // This is a super specific solution just for now so that the hotspot region
8
- // excludes the pin button.
9
- const topBuffer = 56;
10
- let mouseInside = spot === 'left' ? e.x < threshold : e.x > window.innerWidth - threshold;
11
- mouseInside &&= e.y > topBuffer;
12
- if (mouseInside) {
13
- setActive(true);
14
- }
15
- else {
16
- setActive(false);
17
- }
18
- };
19
- document.addEventListener('mousemove', hoverListener);
20
- const leaveListener = () => {
21
- setActive(false);
22
- };
23
- document.addEventListener('mouseleave', leaveListener);
24
- return () => {
25
- document.removeEventListener('mousemove', hoverListener);
26
- document.removeEventListener('mouseleave', leaveListener);
27
- };
28
- }, [active]);
29
- return active;
30
- }
@@ -1,23 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- export default function useHover(target) {
3
- const [isHovered, setIsHovered] = useState(false);
4
- useEffect(() => {
5
- setIsHovered(false);
6
- if (!target)
7
- return;
8
- const onMouseEnter = () => {
9
- setIsHovered(true);
10
- };
11
- const onMouseLeave = () => {
12
- setIsHovered(false);
13
- };
14
- target.addEventListener('mouseenter', onMouseEnter);
15
- target.addEventListener('mouseleave', onMouseLeave);
16
- return () => {
17
- setIsHovered(false);
18
- target.removeEventListener('mouseenter', onMouseEnter);
19
- target.removeEventListener('mouseleave', onMouseLeave);
20
- };
21
- }, [target]);
22
- return isHovered;
23
- }
@@ -1,33 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- /**
3
- * A react hook that returns true if the pointer is hovering over the target element and not its descendants
4
- */
5
- export default function useHoverWithoutDescendants(target) {
6
- const [isHovered, setIsHovered] = useState(false);
7
- useEffect(() => {
8
- setIsHovered(false);
9
- if (!target)
10
- return;
11
- const onMouseEnterOrMove = (e) => {
12
- if (e.target === target) {
13
- setIsHovered(true);
14
- }
15
- else {
16
- setIsHovered(false);
17
- }
18
- };
19
- const onMouseLeave = () => {
20
- setIsHovered(false);
21
- };
22
- target.addEventListener('mouseenter', onMouseEnterOrMove);
23
- target.addEventListener('mousemove', onMouseEnterOrMove);
24
- target.addEventListener('mouseleave', onMouseLeave);
25
- return () => {
26
- setIsHovered(false);
27
- target.removeEventListener('mouseenter', onMouseEnterOrMove);
28
- target.removeEventListener('mousemove', onMouseEnterOrMove);
29
- target.removeEventListener('mouseleave', onMouseLeave);
30
- };
31
- }, [target]);
32
- return isHovered;
33
- }
@@ -1,9 +0,0 @@
1
- import { useState } from 'react';
2
- import useKeyDownCallback from './useKeyDownCallback';
3
- export default function useKeyDown(combo) {
4
- const [state, setState] = useState(false);
5
- useKeyDownCallback(combo, ({ down }) => {
6
- setState(down);
7
- });
8
- return state;
9
- }
@@ -1,28 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- export default function useKeyDownCallback(combo, listener) {
3
- const refs = useRef({ combo, listener });
4
- refs.current = { combo, listener };
5
- useEffect(() => {
6
- function onKeyDown(event) {
7
- if (event.key === refs.current.combo) {
8
- refs.current.listener({ down: true, event });
9
- }
10
- }
11
- function onKeyUp(event) {
12
- if (event.key === refs.current.combo) {
13
- refs.current.listener({ down: false, event });
14
- }
15
- }
16
- function onBlur(event) {
17
- refs.current.listener({ down: false, event: undefined });
18
- }
19
- document.addEventListener('keydown', onKeyDown);
20
- document.addEventListener('keyup', onKeyUp);
21
- window.addEventListener('blur', onBlur);
22
- return () => {
23
- document.removeEventListener('keydown', onKeyDown);
24
- document.removeEventListener('keyup', onKeyUp);
25
- window.removeEventListener('blur', onBlur);
26
- };
27
- }, []);
28
- }
@@ -1,17 +0,0 @@
1
- import { useMemo, useState } from 'react';
2
- export default function useLockSet() {
3
- const [isLocked, _setIsLocked] = useState(false);
4
- const addLock = useMemo(() => {
5
- const locks = new Set();
6
- return () => {
7
- const unlock = () => {
8
- locks.delete(unlock);
9
- _setIsLocked(locks.size > 0);
10
- };
11
- locks.add(unlock);
12
- _setIsLocked(true);
13
- return unlock;
14
- };
15
- }, []);
16
- return [isLocked, addLock];
17
- }
@@ -1,16 +0,0 @@
1
- import React, { useContext, useMemo } from 'react';
2
- const loggerContext = React.createContext(null);
3
- export function ProvideLogger(props) {
4
- return (React.createElement(loggerContext.Provider, { value: props.logger }, props.children));
5
- }
6
- export function useLogger(name, key) {
7
- const parentLogger = useContext(loggerContext);
8
- return useMemo(() => {
9
- if (name) {
10
- return parentLogger.named(name, key);
11
- }
12
- else {
13
- return parentLogger;
14
- }
15
- }, [parentLogger, name, key]);
16
- }
@@ -1,25 +0,0 @@
1
- import { useEffect } from 'react';
2
- export default function useOnClickOutside(container, onOutside, enabled) {
3
- useEffect(() => {
4
- if (!container || enabled === false)
5
- return;
6
- const containers = Array.isArray(container)
7
- ? container.filter((container) => container)
8
- : [container];
9
- const onMouseDown = (e) => {
10
- if (containers.every((container) => !e.composedPath().includes(container))) {
11
- onOutside(e);
12
- }
13
- };
14
- window.addEventListener('mousedown', onMouseDown, {
15
- capture: true,
16
- passive: false,
17
- });
18
- return () => {
19
- window.removeEventListener('mousedown', onMouseDown, {
20
- capture: true,
21
- passive: false,
22
- });
23
- };
24
- }, [container, enabled]);
25
- }
@@ -1,12 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- export default function useOnKeyDown(callback) {
3
- const ref = useRef(callback);
4
- ref.current = callback;
5
- useEffect(() => {
6
- const onKeyDown = (ev) => ref.current(ev);
7
- window.addEventListener('keydown', onKeyDown);
8
- return () => {
9
- window.removeEventListener('keydown', onKeyDown);
10
- };
11
- }, []);
12
- }
@@ -1,156 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import { useEffect } from 'react';
3
- import { useLogger } from './useLogger';
4
- import { prism, pointerToPrism } from '@tomorrowevening/theatre-dataverse';
5
- import { Atom } from '@tomorrowevening/theatre-dataverse';
6
- import { usePrismInstance } from '@tomorrowevening/theatre-react';
7
- import { selectClosestHTMLAncestor } from '@tomorrowevening/theatre-studio/utils/selectClosestHTMLAncestor';
8
- import pointerDeep from '@tomorrowevening/theatre-shared/utils/pointerDeep';
9
- /** To mean the presence value */
10
- export var PresenceFlag;
11
- (function (PresenceFlag) {
12
- /** Self is hovered or what represents "self" is being hovered */
13
- PresenceFlag[PresenceFlag["Primary"] = 2] = "Primary";
14
- /** Related item is hovered */
15
- PresenceFlag[PresenceFlag["Secondary"] = 1] = "Secondary";
16
- // /** Tutorial */
17
- // TutorialEmphasis = 0,
18
- })(PresenceFlag || (PresenceFlag = {}));
19
- const undefinedD = prism(() => undefined);
20
- undefinedD.keepHot(); // constant anyway...
21
- function createPresenceContext(options) {
22
- const currentUserHoverItemB = new Atom(undefined);
23
- const currentUserHoverFlagItemsAtom = new Atom({});
24
- // keep as part of presence creation
25
- const relationsAtom = new Atom({});
26
- let lastRelationId = 0;
27
- return {
28
- addRelatedFlags(itemKey, relationships) {
29
- const relationId = String(++lastRelationId);
30
- // "clean up" paths returned from relationships declared
31
- const undoAtPaths = relationships.map((rel) => {
32
- const presence = {
33
- flag: rel.flag,
34
- };
35
- const path = [rel.affects, itemKey, relationId];
36
- relationsAtom.setByPointer((p) => pointerDeep(p, path), presence);
37
- return path;
38
- });
39
- return () => {
40
- for (const pathToUndo of undoAtPaths) {
41
- relationsAtom.setByPointer((p) => pointerDeep(p, pathToUndo), undefined);
42
- }
43
- };
44
- },
45
- usePresenceFlag(itemKey) {
46
- if (!options.enabled)
47
- return undefined;
48
- const focusD = useMemo(() => {
49
- if (!itemKey)
50
- return undefinedD;
51
- // this is the thing being hovered
52
- const currentD = currentUserHoverItemB.prism;
53
- const primaryFocusDer = pointerToPrism(currentUserHoverFlagItemsAtom.pointer[itemKey]);
54
- const relationsDer = pointerToPrism(relationsAtom.pointer[itemKey]);
55
- return prism(() => {
56
- const primary = primaryFocusDer.getValue();
57
- if (primary) {
58
- return PresenceFlag.Primary;
59
- }
60
- else {
61
- const related = relationsDer.getValue();
62
- const current = currentD.getValue();
63
- const rels = related && current && related[current];
64
- if (rels) {
65
- // can this be cached into a derived atom?
66
- let best;
67
- for (const rel of Object.values(rels)) {
68
- if (!rel)
69
- continue;
70
- if (best && best >= rel.flag)
71
- continue;
72
- best = rel.flag;
73
- }
74
- return best;
75
- }
76
- return undefined;
77
- }
78
- });
79
- }, [itemKey]);
80
- return usePrismInstance(focusD);
81
- },
82
- setUserHover(itemKeyOpt) {
83
- const prev = currentUserHoverItemB.get();
84
- if (prev === itemKeyOpt) {
85
- return;
86
- }
87
- if (prev) {
88
- currentUserHoverFlagItemsAtom.setByPointer((p) => p[prev], false);
89
- }
90
- currentUserHoverItemB.set(itemKeyOpt);
91
- if (itemKeyOpt) {
92
- currentUserHoverFlagItemsAtom.setByPointer((p) => p[itemKeyOpt], true);
93
- }
94
- },
95
- };
96
- }
97
- const presenceInternalCtx = React.createContext(createPresenceContext({ enabled: false }));
98
- export function ProvidePresenceRoot({ children }) {
99
- const presence = useMemo(() => createPresenceContext({ enabled: false }), []);
100
- return React.createElement(presenceInternalCtx.Provider, { children, value: presence }, children);
101
- }
102
- const PRESENCE_ITEM_DATA_ATTR = 'data-pi-key';
103
- export default function usePresence(key) {
104
- const presenceInternal = React.useContext(presenceInternalCtx);
105
- const flag = presenceInternal.usePresenceFlag(key);
106
- return {
107
- attrs: {
108
- [PRESENCE_ITEM_DATA_ATTR]: key,
109
- },
110
- flag,
111
- useRelations(getRelations, deps) {
112
- useEffect(() => {
113
- return key && presenceInternal.addRelatedFlags(key, getRelations());
114
- }, [key, ...deps]);
115
- },
116
- };
117
- }
118
- export function usePresenceListenersOnRootElement(target) {
119
- const presence = React.useContext(presenceInternalCtx);
120
- const logger = useLogger('PresenceListeners');
121
- useEffect(() => {
122
- // keep track of current primary hover to make sure we make changes to presence distinct
123
- let currentItemKeyUserHover;
124
- if (!target)
125
- return;
126
- const onMouseOver = (event) => {
127
- if (event.target instanceof Node) {
128
- const found = selectClosestHTMLAncestor(event.target, `[${PRESENCE_ITEM_DATA_ATTR}]`);
129
- if (found) {
130
- const itemKey = found.getAttribute(PRESENCE_ITEM_DATA_ATTR);
131
- if (currentItemKeyUserHover !== itemKey) {
132
- currentItemKeyUserHover = itemKey;
133
- presence.setUserHover((itemKey || undefined));
134
- logger._debug('Updated current hover', { itemKey });
135
- }
136
- return;
137
- }
138
- // remove hover
139
- if (currentItemKeyUserHover != null) {
140
- currentItemKeyUserHover = null;
141
- presence.setUserHover(undefined);
142
- logger._debug('Cleared current hover');
143
- }
144
- }
145
- };
146
- target.addEventListener('mouseover', onMouseOver);
147
- return () => {
148
- target.removeEventListener('mouseover', onMouseOver);
149
- // remove hover
150
- if (currentItemKeyUserHover != null) {
151
- currentItemKeyUserHover = null;
152
- logger._debug('Cleared current hover as part of cleanup');
153
- }
154
- };
155
- }, [target, presence]);
156
- }
@@ -1,11 +0,0 @@
1
- import { Atom } from '@tomorrowevening/theatre-dataverse';
2
- import { useLayoutEffect, useMemo } from 'react';
3
- export default function useValToAtom(val) {
4
- const atom = useMemo(() => {
5
- return new Atom(val);
6
- }, []);
7
- useLayoutEffect(() => {
8
- atom.set(val);
9
- }, [val]);
10
- return atom;
11
- }
@@ -1,7 +0,0 @@
1
- /** Create CSS rule string for centered and give it this width and height */
2
- export const absoluteDims = (w, h = w) => `
3
- left: ${w * -0.5}px;
4
- top: ${h * -0.5}px;
5
- width: ${w}px;
6
- height: ${h}px;
7
- `;
@@ -1,44 +0,0 @@
1
- import { getMounter } from './renderInPortalInContext';
2
- export function registerContextualWebComponent(ReactComponent, componentName,
3
- // currently only supporting string prop types
4
- propKeys) {
5
- if (typeof window === 'undefined' || typeof customElements === 'undefined')
6
- return;
7
- const propList = Object.keys(propKeys);
8
- class CustomWebComponent extends HTMLElement {
9
- _mounted = false;
10
- _mountOrRender;
11
- _unmount;
12
- static get observedAttributes() {
13
- return propList;
14
- }
15
- constructor() {
16
- super();
17
- const { mountOrRender, unmount } = getMounter();
18
- this._mountOrRender = mountOrRender;
19
- this._unmount = unmount;
20
- }
21
- connectedCallback() {
22
- // const shadow = this.attachShadow({mode: 'open'})
23
- this._mounted = true;
24
- this._render();
25
- }
26
- _render() {
27
- const props = Object.fromEntries(propList.map((propName) => [
28
- propName,
29
- this.getAttribute(propName),
30
- ]));
31
- this._mountOrRender(ReactComponent, props, this);
32
- }
33
- attributeChangedCallback() {
34
- if (!this._mounted)
35
- return;
36
- this._render();
37
- }
38
- disconnectedCallback() {
39
- this._mounted = false;
40
- this._unmount();
41
- }
42
- }
43
- customElements.define(componentName, CustomWebComponent);
44
- }
@@ -1,28 +0,0 @@
1
- export async function copyToClipboard(text) {
2
- if (navigator.clipboard) {
3
- return navigator.clipboard
4
- .writeText(text)
5
- .then(() => {
6
- return true;
7
- })
8
- .catch(() => {
9
- return false;
10
- });
11
- }
12
- else {
13
- const tempTextArea = document.createElement('textarea');
14
- tempTextArea.value = text;
15
- document.body.appendChild(tempTextArea);
16
- tempTextArea.focus();
17
- tempTextArea.select();
18
- try {
19
- const successful = document.execCommand('copy');
20
- document.body.removeChild(tempTextArea);
21
- return Promise.resolve(successful);
22
- }
23
- catch (err) {
24
- document.body.removeChild(tempTextArea);
25
- return Promise.resolve(false);
26
- }
27
- }
28
- }