@remotion/studio 4.0.477 → 4.0.479
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.
- package/dist/components/AssetSelector.js +8 -14
- package/dist/components/Button.d.ts +1 -0
- package/dist/components/Button.js +8 -5
- package/dist/components/CanvasIfSizeIsAvailable.js +2 -6
- package/dist/components/CompactExplanation.d.ts +12 -0
- package/dist/components/CompactExplanation.js +52 -0
- package/dist/components/CompositionSelector.js +2 -4
- package/dist/components/CurrentAsset.d.ts +3 -1
- package/dist/components/CurrentAsset.js +42 -34
- package/dist/components/CurrentComposition.d.ts +1 -1
- package/dist/components/CurrentComposition.js +38 -31
- package/dist/components/DefaultPropsEditor.d.ts +12 -2
- package/dist/components/DefaultPropsEditor.js +2 -2
- package/dist/components/EditorGuides/Guide.js +37 -9
- package/dist/components/EditorRuler/Ruler.js +4 -14
- package/dist/components/EditorRuler/index.js +9 -4
- package/dist/components/EffectPickerModal.d.ts +5 -0
- package/dist/components/EffectPickerModal.js +179 -0
- package/dist/components/InlineAction.js +1 -0
- package/dist/components/InspectorInfoHeader.d.ts +11 -0
- package/dist/components/InspectorInfoHeader.js +55 -0
- package/dist/components/InspectorPanel/DefaultInspector.d.ts +8 -0
- package/dist/components/InspectorPanel/DefaultInspector.js +93 -0
- package/dist/components/InspectorPanel/EasingInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/EasingInspector.js +41 -0
- package/dist/components/InspectorPanel/GuideInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/GuideInspector.js +55 -0
- package/dist/components/InspectorPanel/KeyframeInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/KeyframeInspector.js +109 -0
- package/dist/components/InspectorPanel/SelectedInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SelectedInspector.js +26 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +116 -0
- package/dist/components/InspectorPanel/common.d.ts +15 -0
- package/dist/components/InspectorPanel/common.js +18 -0
- package/dist/components/InspectorPanel/inspector-selection.d.ts +10 -0
- package/dist/components/InspectorPanel/inspector-selection.js +34 -0
- package/dist/components/InspectorPanel/styles.d.ts +27 -0
- package/dist/components/InspectorPanel/styles.js +178 -0
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +2 -0
- package/dist/components/InspectorPanel/use-track-for-selection.js +22 -0
- package/dist/components/InspectorPanel.d.ts +8 -0
- package/dist/components/InspectorPanel.js +26 -0
- package/dist/components/InspectorPanelLayout.d.ts +1 -0
- package/dist/components/InspectorPanelLayout.js +4 -0
- package/dist/components/InspectorSequenceSection.d.ts +16 -0
- package/dist/components/InspectorSequenceSection.js +147 -0
- package/dist/components/InspectorSourceLocation.d.ts +7 -0
- package/dist/components/InspectorSourceLocation.js +71 -0
- package/dist/components/MenuToolbar.d.ts +1 -0
- package/dist/components/MenuToolbar.js +4 -1
- package/dist/components/Modals.js +3 -3
- package/dist/components/NewComposition/InputDragger.js +1 -1
- package/dist/components/NewComposition/RemInput.d.ts +1 -0
- package/dist/components/NewComposition/RemInput.js +8 -2
- package/dist/components/NewComposition/RemTextarea.d.ts +1 -0
- package/dist/components/NewComposition/RemTextarea.js +8 -2
- package/dist/components/NewComposition/ValidationMessage.d.ts +3 -0
- package/dist/components/NewComposition/ValidationMessage.js +16 -5
- package/dist/components/OptionsPanel.d.ts +1 -1
- package/dist/components/OptionsPanel.js +8 -17
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +2 -7
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +3 -10
- package/dist/components/QuickSwitcher/shared.d.ts +4 -0
- package/dist/components/QuickSwitcher/shared.js +24 -0
- package/dist/components/RenderModal/DataEditor.d.ts +29 -2
- package/dist/components/RenderModal/DataEditor.js +107 -56
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -0
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +25 -7
- package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +2 -1
- package/dist/components/RenderModal/SchemaEditor/Fieldset.js +10 -5
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +4 -0
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +27 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +23 -9
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +8 -1
- package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -6
- package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +2 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +9 -11
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
- package/dist/components/RenderModal/WarningIndicatorButton.d.ts +1 -0
- package/dist/components/RenderModal/WarningIndicatorButton.js +17 -4
- package/dist/components/RenderModal/get-render-modal-warnings.d.ts +2 -1
- package/dist/components/RenderModal/get-render-modal-warnings.js +6 -3
- package/dist/components/RendersTab.js +1 -1
- package/dist/components/SegmentedControl.d.ts +3 -0
- package/dist/components/SegmentedControl.js +11 -5
- package/dist/components/SelectedOutlineElement.js +135 -31
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
- package/dist/components/SelectedOutlineOverlay.js +45 -29
- package/dist/components/SelectedOutlineUvControls.d.ts +9 -0
- package/dist/components/SelectedOutlineUvControls.js +64 -10
- package/dist/components/Tabs/index.js +4 -4
- package/dist/components/Timeline/EasingEditorModal.d.ts +5 -4
- package/dist/components/Timeline/EasingEditorModal.js +597 -124
- package/dist/components/Timeline/KeyframeSettingsModal.d.ts +2 -2
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -2
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +15 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +85 -1
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +10 -3
- package/dist/components/Timeline/TimelineEffectItem.d.ts +2 -2
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +8 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +24 -20
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +5 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +4 -4
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -1
- package/dist/components/Timeline/TimelineExpandedSection.js +5 -19
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +8 -2
- package/dist/components/Timeline/TimelineKeyframeControls.js +24 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -47
- package/dist/components/Timeline/TimelineKeyframedValue.d.ts +1 -1
- package/dist/components/Timeline/TimelineKeyframedValue.js +8 -10
- package/dist/components/Timeline/TimelineNumberField.js +5 -11
- package/dist/components/Timeline/TimelineRotationField.js +5 -6
- package/dist/components/Timeline/TimelineScaleField.js +4 -8
- package/dist/components/Timeline/TimelineSelection.d.ts +6 -0
- package/dist/components/Timeline/TimelineSelection.js +109 -14
- package/dist/components/Timeline/TimelineSequence.js +22 -14
- package/dist/components/Timeline/TimelineSequenceItem.js +12 -67
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +12 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +56 -52
- package/dist/components/Timeline/TimelineTransformOriginField.js +4 -5
- package/dist/components/Timeline/TimelineTranslateField.js +4 -5
- package/dist/components/Timeline/TimelineUvCoordinateField.js +4 -4
- package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -0
- package/dist/components/Timeline/TimelineVideoInfo.js +93 -8
- package/dist/components/Timeline/call-add-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-delete-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-move-keyframe.d.ts +2 -2
- package/dist/components/Timeline/call-update-keyframe-settings.d.ts +3 -3
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +27 -1
- package/dist/components/Timeline/duplicate-selected-timeline-item.d.ts +7 -0
- package/dist/components/Timeline/duplicate-selected-timeline-item.js +32 -3
- package/dist/components/Timeline/parse-keyframe-field-from-node-path.js +2 -2
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +3 -3
- package/dist/components/Timeline/reset-selected-timeline-props.js +19 -5
- package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
- package/dist/components/Timeline/save-sequence-prop.d.ts +2 -2
- package/dist/components/Timeline/sequence-props-subscription-store.d.ts +3 -3
- package/dist/components/Timeline/timeline-field-display-utils.d.ts +5 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +244 -0
- package/dist/components/Timeline/timeline-video-filmstrip-times.d.ts +17 -0
- package/dist/components/Timeline/timeline-video-filmstrip-times.js +22 -0
- package/dist/components/Timeline/update-selected-easing.d.ts +47 -4
- package/dist/components/Timeline/update-selected-easing.js +40 -9
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +13 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +73 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -3
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +11 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +33 -0
- package/dist/components/VisualControls/VisualControlsContent.d.ts +1 -1
- package/dist/components/VisualControls/VisualControlsContent.js +4 -5
- package/dist/components/effect-drag-and-drop.d.ts +10 -0
- package/dist/components/effect-drag-and-drop.js +17 -8
- package/dist/components/effect-picker-search.d.ts +5 -0
- package/dist/components/effect-picker-search.js +77 -0
- package/dist/components/import-assets.d.ts +11 -2
- package/dist/components/import-assets.js +61 -6
- package/dist/components/selected-outline-drag.d.ts +44 -2
- package/dist/components/selected-outline-drag.js +74 -1
- package/dist/components/selected-outline-types.d.ts +7 -7
- package/dist/components/selected-outline-uv.d.ts +4 -3
- package/dist/components/selected-outline-uv.js +6 -2
- package/dist/error-overlay/remotion-overlay/Overlay.js +3 -0
- package/dist/esm/{chunk-t8fjnw2d.js → chunk-fge2mq5p.js} +17004 -13432
- package/dist/esm/internals.mjs +17004 -13432
- package/dist/esm/previewEntry.mjs +26617 -23041
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/editor-guide-selection.js +1 -1
- package/dist/helpers/get-preview-file-type.js +1 -1
- package/dist/helpers/render-codec-label.d.ts +2 -0
- package/dist/helpers/render-codec-label.js +49 -0
- package/dist/helpers/ruler-canvas-size.d.ts +5 -0
- package/dist/helpers/ruler-canvas-size.js +17 -0
- package/dist/helpers/timeline-layout.d.ts +4 -4
- package/dist/helpers/use-media-metadata.d.ts +8 -2
- package/dist/helpers/use-media-metadata.js +17 -4
- package/dist/state/modals.d.ts +9 -4
- package/package.json +12 -12
|
@@ -73,12 +73,13 @@ const EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerR
|
|
|
73
73
|
if (!shouldDeleteGuideRef.current) {
|
|
74
74
|
shouldDeleteGuideRef.current = true;
|
|
75
75
|
}
|
|
76
|
-
(0, ForceSpecificCursor_1.forceSpecificCursor)('no-drop');
|
|
77
76
|
setGuidesList((prevState) => {
|
|
78
77
|
const newGuides = prevState.map((guide) => {
|
|
79
78
|
if (guide.id !== draggingGuideId) {
|
|
80
79
|
return guide;
|
|
81
80
|
}
|
|
81
|
+
const desiredCursor = guide.orientation === 'vertical' ? 'ew-resize' : 'ns-resize';
|
|
82
|
+
(0, ForceSpecificCursor_1.forceSpecificCursor)(desiredCursor);
|
|
82
83
|
return {
|
|
83
84
|
...guide,
|
|
84
85
|
show: false,
|
|
@@ -124,9 +125,10 @@ const EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerR
|
|
|
124
125
|
canvasPosition.top,
|
|
125
126
|
]);
|
|
126
127
|
const onMouseUp = (0, react_1.useCallback)(() => {
|
|
128
|
+
const shouldDeleteGuide = shouldDeleteGuideRef.current;
|
|
127
129
|
setGuidesList((prevState) => {
|
|
128
130
|
const newGuides = prevState.filter((selected) => {
|
|
129
|
-
if (!
|
|
131
|
+
if (!shouldDeleteGuide) {
|
|
130
132
|
return true;
|
|
131
133
|
}
|
|
132
134
|
return selected.id !== draggingGuideId;
|
|
@@ -135,7 +137,7 @@ const EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerR
|
|
|
135
137
|
return newGuides;
|
|
136
138
|
});
|
|
137
139
|
const deletedGuideWasSelected = selectedItems.some((item) => item.type === 'guide' && item.guideId === draggingGuideId);
|
|
138
|
-
if (
|
|
140
|
+
if (shouldDeleteGuide && deletedGuideWasSelected) {
|
|
139
141
|
clearSelection();
|
|
140
142
|
}
|
|
141
143
|
shouldDeleteGuideRef.current = false;
|
|
@@ -143,6 +145,7 @@ const EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerR
|
|
|
143
145
|
shouldCreateGuideRef.current = false;
|
|
144
146
|
setDraggingGuideId(() => null);
|
|
145
147
|
document.removeEventListener('pointerup', onMouseUp);
|
|
148
|
+
document.removeEventListener('pointercancel', onMouseUp);
|
|
146
149
|
document.removeEventListener('pointermove', onMouseMove);
|
|
147
150
|
}, [
|
|
148
151
|
clearSelection,
|
|
@@ -154,14 +157,16 @@ const EditorRulers = ({ contentDimensions, canvasSize, assetMetadata, containerR
|
|
|
154
157
|
onMouseMove,
|
|
155
158
|
selectedItems,
|
|
156
159
|
]);
|
|
157
|
-
(0, react_1.
|
|
160
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
158
161
|
if (draggingGuideId !== null) {
|
|
159
162
|
document.addEventListener('pointermove', onMouseMove);
|
|
160
163
|
document.addEventListener('pointerup', onMouseUp);
|
|
164
|
+
document.addEventListener('pointercancel', onMouseUp);
|
|
161
165
|
}
|
|
162
166
|
return () => {
|
|
163
167
|
document.removeEventListener('pointermove', onMouseMove);
|
|
164
168
|
document.removeEventListener('pointerup', onMouseUp);
|
|
169
|
+
document.removeEventListener('pointercancel', onMouseUp);
|
|
165
170
|
if (requestAnimationFrameRef.current) {
|
|
166
171
|
cancelAnimationFrame(requestAnimationFrameRef.current);
|
|
167
172
|
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EffectPickerModal = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const colors_1 = require("../helpers/colors");
|
|
8
|
+
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
9
|
+
const modals_1 = require("../state/modals");
|
|
10
|
+
const ContextMenu_1 = require("./ContextMenu");
|
|
11
|
+
const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
|
|
12
|
+
const effect_picker_search_1 = require("./effect-picker-search");
|
|
13
|
+
const layout_1 = require("./layout");
|
|
14
|
+
const is_menu_item_1 = require("./Menu/is-menu-item");
|
|
15
|
+
const DismissableModal_1 = require("./NewComposition/DismissableModal");
|
|
16
|
+
const RemInput_1 = require("./NewComposition/RemInput");
|
|
17
|
+
const shared_1 = require("./QuickSwitcher/shared");
|
|
18
|
+
const container = {
|
|
19
|
+
width: 500,
|
|
20
|
+
};
|
|
21
|
+
const content = {
|
|
22
|
+
padding: '12px 16px 10px',
|
|
23
|
+
};
|
|
24
|
+
const inputStyle = {
|
|
25
|
+
width: '100%',
|
|
26
|
+
};
|
|
27
|
+
const resultList = {
|
|
28
|
+
height: 320,
|
|
29
|
+
overflowY: 'auto',
|
|
30
|
+
paddingBottom: 10,
|
|
31
|
+
};
|
|
32
|
+
const noResults = {
|
|
33
|
+
color: colors_1.LIGHT_TEXT,
|
|
34
|
+
fontSize: 13,
|
|
35
|
+
padding: '12px 16px',
|
|
36
|
+
};
|
|
37
|
+
const resultContainer = {
|
|
38
|
+
cursor: 'pointer',
|
|
39
|
+
display: 'flex',
|
|
40
|
+
flexDirection: 'row',
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
padding: '7px 16px',
|
|
43
|
+
};
|
|
44
|
+
const labelContainer = {
|
|
45
|
+
flex: 1,
|
|
46
|
+
minWidth: 0,
|
|
47
|
+
};
|
|
48
|
+
const label = {
|
|
49
|
+
fontSize: shared_1.QUICK_SWITCHER_RESULT_LABEL_FONT_SIZE,
|
|
50
|
+
overflow: 'hidden',
|
|
51
|
+
textOverflow: 'ellipsis',
|
|
52
|
+
whiteSpace: 'nowrap',
|
|
53
|
+
};
|
|
54
|
+
const category = {
|
|
55
|
+
color: colors_1.LIGHT_TEXT,
|
|
56
|
+
fontSize: 11,
|
|
57
|
+
flexShrink: 0,
|
|
58
|
+
};
|
|
59
|
+
const EffectPickerResult = ({ item, selected, onSelected }) => {
|
|
60
|
+
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
61
|
+
const ref = (0, react_1.useRef)(null);
|
|
62
|
+
(0, shared_1.useScrollIntoViewOnSelected)(ref, selected);
|
|
63
|
+
const style = (0, react_1.useMemo)(() => {
|
|
64
|
+
return {
|
|
65
|
+
...resultContainer,
|
|
66
|
+
backgroundColor: (0, colors_1.getBackgroundFromHoverState)({ hovered, selected }),
|
|
67
|
+
};
|
|
68
|
+
}, [hovered, selected]);
|
|
69
|
+
const labelStyle = (0, react_1.useMemo)(() => {
|
|
70
|
+
return {
|
|
71
|
+
...label,
|
|
72
|
+
color: selected || hovered ? 'white' : colors_1.LIGHT_TEXT,
|
|
73
|
+
};
|
|
74
|
+
}, [hovered, selected]);
|
|
75
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
76
|
+
onSelected(item);
|
|
77
|
+
}, [item, onSelected]);
|
|
78
|
+
const contextMenuValues = (0, react_1.useMemo)(() => {
|
|
79
|
+
const documentationLink = (0, studio_shared_1.getEffectDocumentationLink)(item);
|
|
80
|
+
return [
|
|
81
|
+
{
|
|
82
|
+
type: 'item',
|
|
83
|
+
id: `open-${item.id}-docs`,
|
|
84
|
+
keyHint: null,
|
|
85
|
+
label: 'Open effect docs',
|
|
86
|
+
leftItem: null,
|
|
87
|
+
disabled: false,
|
|
88
|
+
onClick: () => {
|
|
89
|
+
window.open(documentationLink, '_blank', 'noopener,noreferrer');
|
|
90
|
+
},
|
|
91
|
+
quickSwitcherLabel: null,
|
|
92
|
+
subMenu: null,
|
|
93
|
+
value: `open-${item.id}-docs`,
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
}, [item]);
|
|
97
|
+
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: null, children: jsx_runtime_1.jsxs("div", { ref: ref, style: style, onClick: onClick, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), children: [
|
|
98
|
+
jsx_runtime_1.jsx("div", { style: labelContainer, children: jsx_runtime_1.jsx("div", { style: labelStyle, children: item.label }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: category, children: item.category })
|
|
99
|
+
] }) }));
|
|
100
|
+
};
|
|
101
|
+
const EffectPickerContent = ({ state }) => {
|
|
102
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
103
|
+
const [query, setQuery] = (0, react_1.useState)('');
|
|
104
|
+
const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
|
|
105
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
106
|
+
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
107
|
+
const results = (0, react_1.useMemo)(() => {
|
|
108
|
+
return (0, effect_picker_search_1.filterEffectCatalog)({ items: studio_shared_1.EFFECT_CATALOG, query });
|
|
109
|
+
}, [query]);
|
|
110
|
+
const selectedIndexRounded = results.length === 0 ? -1 : (0, shared_1.loopIndex)(selectedIndex, results.length);
|
|
111
|
+
const selectItem = (0, react_1.useCallback)((item) => {
|
|
112
|
+
setSelectedModal(null);
|
|
113
|
+
(0, effect_drag_and_drop_1.addEffectToSequence)({
|
|
114
|
+
clientId: state.clientId,
|
|
115
|
+
effect: item.effect,
|
|
116
|
+
fileName: state.fileName,
|
|
117
|
+
nodePath: state.nodePath,
|
|
118
|
+
});
|
|
119
|
+
}, [setSelectedModal, state.clientId, state.fileName, state.nodePath]);
|
|
120
|
+
const onArrowDown = (0, react_1.useCallback)(() => {
|
|
121
|
+
setSelectedIndex((i) => i + 1);
|
|
122
|
+
}, []);
|
|
123
|
+
const onArrowUp = (0, react_1.useCallback)(() => {
|
|
124
|
+
setSelectedIndex((i) => i - 1);
|
|
125
|
+
}, []);
|
|
126
|
+
const onEnter = (0, react_1.useCallback)(() => {
|
|
127
|
+
if (selectedIndexRounded === -1) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
selectItem(results[selectedIndexRounded]);
|
|
131
|
+
}, [results, selectItem, selectedIndexRounded]);
|
|
132
|
+
(0, react_1.useEffect)(() => {
|
|
133
|
+
const downBinding = keybindings.registerKeybinding({
|
|
134
|
+
key: 'ArrowDown',
|
|
135
|
+
callback: onArrowDown,
|
|
136
|
+
commandCtrlKey: false,
|
|
137
|
+
event: 'keydown',
|
|
138
|
+
preventDefault: true,
|
|
139
|
+
triggerIfInputFieldFocused: true,
|
|
140
|
+
keepRegisteredWhenNotHighestContext: false,
|
|
141
|
+
});
|
|
142
|
+
const upBinding = keybindings.registerKeybinding({
|
|
143
|
+
key: 'ArrowUp',
|
|
144
|
+
callback: onArrowUp,
|
|
145
|
+
commandCtrlKey: false,
|
|
146
|
+
event: 'keydown',
|
|
147
|
+
preventDefault: true,
|
|
148
|
+
triggerIfInputFieldFocused: true,
|
|
149
|
+
keepRegisteredWhenNotHighestContext: false,
|
|
150
|
+
});
|
|
151
|
+
const enterBinding = keybindings.registerKeybinding({
|
|
152
|
+
key: 'Enter',
|
|
153
|
+
callback: onEnter,
|
|
154
|
+
commandCtrlKey: false,
|
|
155
|
+
event: 'keydown',
|
|
156
|
+
preventDefault: true,
|
|
157
|
+
triggerIfInputFieldFocused: true,
|
|
158
|
+
keepRegisteredWhenNotHighestContext: false,
|
|
159
|
+
});
|
|
160
|
+
return () => {
|
|
161
|
+
downBinding.unregister();
|
|
162
|
+
upBinding.unregister();
|
|
163
|
+
enterBinding.unregister();
|
|
164
|
+
};
|
|
165
|
+
}, [keybindings, onArrowDown, onArrowUp, onEnter]);
|
|
166
|
+
const onTextChange = (0, react_1.useCallback)((e) => {
|
|
167
|
+
setQuery(e.target.value);
|
|
168
|
+
setSelectedIndex(0);
|
|
169
|
+
}, []);
|
|
170
|
+
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
171
|
+
jsx_runtime_1.jsx("div", { style: content, children: jsx_runtime_1.jsx(RemInput_1.RemotionInput, { ref: inputRef, type: "text", style: inputStyle, autoFocus: true, status: "ok", value: query, onChange: onTextChange, placeholder: "Search effects...", rightAlign: false }) }), jsx_runtime_1.jsx("div", { style: resultList, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: results.length === 0 ? (jsx_runtime_1.jsx("div", { style: noResults, children: "No effects found" })) : (results.map((item, i) => {
|
|
172
|
+
return (jsx_runtime_1.jsx(EffectPickerResult, { item: item, selected: selectedIndexRounded === i, onSelected: selectItem }, item.id));
|
|
173
|
+
})) })
|
|
174
|
+
] }));
|
|
175
|
+
};
|
|
176
|
+
const EffectPickerModal = ({ state }) => {
|
|
177
|
+
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { children: jsx_runtime_1.jsx(EffectPickerContent, { state: state }) }));
|
|
178
|
+
};
|
|
179
|
+
exports.EffectPickerModal = EffectPickerModal;
|
|
@@ -22,6 +22,7 @@ const InlineAction = ({ renderAction, onClick, disabled, title, }) => {
|
|
|
22
22
|
: (0, colors_1.getBackgroundFromHoverState)({ hovered, selected: false }),
|
|
23
23
|
height: 24,
|
|
24
24
|
width: 24,
|
|
25
|
+
padding: 0,
|
|
25
26
|
display: 'inline-flex',
|
|
26
27
|
justifyContent: 'center',
|
|
27
28
|
alignItems: 'center',
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const INSPECTOR_INFO_HEADER_MIN_HEIGHT = 84;
|
|
3
|
+
export declare const InspectorInfoHeader: React.FC<{
|
|
4
|
+
readonly children?: React.ReactNode;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const InspectorInfoTitle: React.FC<{
|
|
7
|
+
readonly children: React.ReactNode;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const InspectorInfoSubtitle: React.FC<{
|
|
10
|
+
readonly children: React.ReactNode;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InspectorInfoSubtitle = exports.InspectorInfoTitle = exports.InspectorInfoHeader = exports.INSPECTOR_INFO_HEADER_MIN_HEIGHT = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../helpers/colors");
|
|
6
|
+
const InspectorPanelLayout_1 = require("./InspectorPanelLayout");
|
|
7
|
+
exports.INSPECTOR_INFO_HEADER_MIN_HEIGHT = 84;
|
|
8
|
+
const container = {
|
|
9
|
+
backgroundColor: colors_1.BACKGROUND,
|
|
10
|
+
color: 'white',
|
|
11
|
+
display: 'block',
|
|
12
|
+
minHeight: exports.INSPECTOR_INFO_HEADER_MIN_HEIGHT,
|
|
13
|
+
padding: `6px ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px`,
|
|
14
|
+
};
|
|
15
|
+
const row = {
|
|
16
|
+
backgroundColor: colors_1.BACKGROUND,
|
|
17
|
+
display: 'flex',
|
|
18
|
+
flexDirection: 'row',
|
|
19
|
+
lineHeight: '18px',
|
|
20
|
+
minWidth: 0,
|
|
21
|
+
};
|
|
22
|
+
const content = {
|
|
23
|
+
minWidth: 0,
|
|
24
|
+
width: '100%',
|
|
25
|
+
};
|
|
26
|
+
const title = {
|
|
27
|
+
backgroundColor: colors_1.BACKGROUND,
|
|
28
|
+
color: 'white',
|
|
29
|
+
fontSize: 12,
|
|
30
|
+
lineHeight: '18px',
|
|
31
|
+
overflow: 'hidden',
|
|
32
|
+
textOverflow: 'ellipsis',
|
|
33
|
+
whiteSpace: 'nowrap',
|
|
34
|
+
};
|
|
35
|
+
const subtitle = {
|
|
36
|
+
backgroundColor: colors_1.BACKGROUND,
|
|
37
|
+
color: colors_1.LIGHT_TEXT,
|
|
38
|
+
fontSize: 12,
|
|
39
|
+
lineHeight: '18px',
|
|
40
|
+
overflow: 'hidden',
|
|
41
|
+
textOverflow: 'ellipsis',
|
|
42
|
+
whiteSpace: 'nowrap',
|
|
43
|
+
};
|
|
44
|
+
const InspectorInfoHeader = ({ children }) => {
|
|
45
|
+
return (jsx_runtime_1.jsx("div", { style: container, children: children === undefined || children === null ? null : (jsx_runtime_1.jsx("div", { style: row, children: jsx_runtime_1.jsx("div", { style: content, children: children }) })) }));
|
|
46
|
+
};
|
|
47
|
+
exports.InspectorInfoHeader = InspectorInfoHeader;
|
|
48
|
+
const InspectorInfoTitle = ({ children }) => {
|
|
49
|
+
return jsx_runtime_1.jsx("div", { style: title, children: children });
|
|
50
|
+
};
|
|
51
|
+
exports.InspectorInfoTitle = InspectorInfoTitle;
|
|
52
|
+
const InspectorInfoSubtitle = ({ children }) => {
|
|
53
|
+
return jsx_runtime_1.jsx("div", { style: subtitle, children: children });
|
|
54
|
+
};
|
|
55
|
+
exports.InspectorInfoSubtitle = InspectorInfoSubtitle;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { _InternalTypes } from 'remotion';
|
|
3
|
+
import type { UpdaterFunction } from '../RenderModal/SchemaEditor/ZodSwitch';
|
|
4
|
+
export declare const DefaultInspector: React.FC<{
|
|
5
|
+
readonly composition: _InternalTypes['AnyComposition'] | null;
|
|
6
|
+
readonly currentDefaultProps: Record<string, unknown>;
|
|
7
|
+
readonly setDefaultProps: UpdaterFunction<Record<string, unknown>>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultInspector = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const VisualControls_1 = require("../../visual-controls/VisualControls");
|
|
8
|
+
const CurrentAsset_1 = require("../CurrentAsset");
|
|
9
|
+
const CurrentComposition_1 = require("../CurrentComposition");
|
|
10
|
+
const DefaultPropsEditor_1 = require("../DefaultPropsEditor");
|
|
11
|
+
const get_zod_if_possible_1 = require("../get-zod-if-possible");
|
|
12
|
+
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
13
|
+
const ObserveDefaultPropsContext_1 = require("../ObserveDefaultPropsContext");
|
|
14
|
+
const DataEditor_1 = require("../RenderModal/DataEditor");
|
|
15
|
+
const zod_schema_type_1 = require("../RenderModal/SchemaEditor/zod-schema-type");
|
|
16
|
+
const WarningIndicatorButton_1 = require("../RenderModal/WarningIndicatorButton");
|
|
17
|
+
const SegmentedControl_1 = require("../SegmentedControl");
|
|
18
|
+
const VisualControlsContent_1 = require("../VisualControls/VisualControlsContent");
|
|
19
|
+
const common_1 = require("./common");
|
|
20
|
+
const styles_1 = require("./styles");
|
|
21
|
+
const DefaultInspector = ({ composition, currentDefaultProps, setDefaultProps }) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
24
|
+
const hasSelectedAsset = (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset';
|
|
25
|
+
const z = (0, get_zod_if_possible_1.useZodIfPossible)();
|
|
26
|
+
const canSaveDefaultProps = (0, react_1.useContext)(ObserveDefaultPropsContext_1.ObserveDefaultPropsContext);
|
|
27
|
+
const { handles: visualControlHandles } = (0, react_1.useContext)(VisualControls_1.VisualControlsContext);
|
|
28
|
+
const [defaultPropsMode, setDefaultPropsMode] = (0, react_1.useState)('schema');
|
|
29
|
+
const compositionId = (_a = composition === null || composition === void 0 ? void 0 : composition.id) !== null && _a !== void 0 ? _a : null;
|
|
30
|
+
const hasVisualControls = Object.keys(visualControlHandles).length > 0;
|
|
31
|
+
(0, react_1.useEffect)(() => {
|
|
32
|
+
setDefaultPropsMode('schema');
|
|
33
|
+
}, [compositionId]);
|
|
34
|
+
const defaultPropsModeItems = (0, react_1.useMemo)(() => {
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
key: 'schema',
|
|
38
|
+
label: 'Schema',
|
|
39
|
+
onClick: () => {
|
|
40
|
+
setDefaultPropsMode('schema');
|
|
41
|
+
},
|
|
42
|
+
selected: defaultPropsMode === 'schema',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: 'json',
|
|
46
|
+
label: 'JSON',
|
|
47
|
+
onClick: () => {
|
|
48
|
+
setDefaultPropsMode('json');
|
|
49
|
+
},
|
|
50
|
+
selected: defaultPropsMode === 'json',
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
}, [defaultPropsMode]);
|
|
54
|
+
const canShowDefaultPropsSection = (0, react_1.useMemo)(() => {
|
|
55
|
+
if (!z || !(composition === null || composition === void 0 ? void 0 : composition.schema) || !composition.defaultProps) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (!(typeof composition.schema.safeParse ===
|
|
59
|
+
'function')) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return (0, zod_schema_type_1.getZodSchemaType)(composition.schema) !== 'any';
|
|
63
|
+
}, [composition === null || composition === void 0 ? void 0 : composition.defaultProps, composition === null || composition === void 0 ? void 0 : composition.schema, z]);
|
|
64
|
+
const { setShowWarning, showWarning } = (0, DataEditor_1.useDataEditorWarningVisibility)();
|
|
65
|
+
const { warnings: defaultPropsWarnings } = (0, DataEditor_1.useDataEditorWarnings)({
|
|
66
|
+
canSaveDefaultProps: (_b = canSaveDefaultProps === null || canSaveDefaultProps === void 0 ? void 0 : canSaveDefaultProps.canSaveDefaultProps) !== null && _b !== void 0 ? _b : null,
|
|
67
|
+
defaultProps: currentDefaultProps,
|
|
68
|
+
mode: defaultPropsMode,
|
|
69
|
+
propsEditType: 'default-props',
|
|
70
|
+
showCannotSaveDefaultPropsWarning: canShowDefaultPropsSection,
|
|
71
|
+
});
|
|
72
|
+
if (hasSelectedAsset) {
|
|
73
|
+
return (jsx_runtime_1.jsx("div", { style: styles_1.scrollableContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx("div", { style: styles_1.compositionSection, children: jsx_runtime_1.jsx(CurrentAsset_1.CurrentAsset, {}) }) }));
|
|
74
|
+
}
|
|
75
|
+
if (composition === null) {
|
|
76
|
+
return jsx_runtime_1.jsx("div", { style: styles_1.container });
|
|
77
|
+
}
|
|
78
|
+
return (jsx_runtime_1.jsxs("div", { style: styles_1.scrollableContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [
|
|
79
|
+
jsx_runtime_1.jsx("div", { style: styles_1.compositionSection, children: jsx_runtime_1.jsx(CurrentComposition_1.CurrentComposition, {}) }), canShowDefaultPropsSection ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
80
|
+
jsx_runtime_1.jsx("div", { style: styles_1.inspectorSectionDivider }), jsx_runtime_1.jsxs("div", { style: styles_1.defaultPropsSection, children: [
|
|
81
|
+
jsx_runtime_1.jsx(common_1.InspectorSectionHeader, { children: jsx_runtime_1.jsxs("div", { style: styles_1.sectionHeaderRow, children: [
|
|
82
|
+
jsx_runtime_1.jsxs("div", { style: styles_1.sectionHeaderStart, children: [
|
|
83
|
+
jsx_runtime_1.jsx("span", { style: styles_1.sectionHeaderTitle, children: "Default Props" }), jsx_runtime_1.jsx(SegmentedControl_1.SegmentedControl, { items: defaultPropsModeItems, needsWrapping: false, size: "compact" })
|
|
84
|
+
] }), jsx_runtime_1.jsx("div", { style: styles_1.sectionHeaderEnd, children: defaultPropsWarnings.length > 0 ? (jsx_runtime_1.jsx(WarningIndicatorButton_1.WarningIndicatorButton, { setShowWarning: setShowWarning, showWarning: showWarning, warningCount: defaultPropsWarnings.length, size: "compact" })) : null })
|
|
85
|
+
] }) }), defaultPropsWarnings.length > 0 && showWarning ? (jsx_runtime_1.jsx("div", { style: styles_1.defaultPropsWarningContainer, children: jsx_runtime_1.jsx(common_1.InspectorDefaultPropsWarnings, { warnings: defaultPropsWarnings }) })) : null, jsx_runtime_1.jsx(DefaultPropsEditor_1.DefaultPropsEditor, { unresolvedComposition: composition, defaultProps: currentDefaultProps, setDefaultProps: setDefaultProps, propsEditType: "default-props", schemaErrorMode: "compact", layout: "inspector", mode: defaultPropsMode, onModeChange: setDefaultPropsMode, hideModeControls: canShowDefaultPropsSection, warnings: defaultPropsWarnings, showWarning: false, setShowWarning: setShowWarning, hideWarningButton: true }, composition.id)
|
|
86
|
+
] })
|
|
87
|
+
] })) : null, hasVisualControls ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
88
|
+
jsx_runtime_1.jsx("div", { style: styles_1.inspectorSectionDivider }), jsx_runtime_1.jsxs("div", { style: styles_1.visualControlsSection, children: [
|
|
89
|
+
jsx_runtime_1.jsx(common_1.InspectorSectionHeader, { children: "Visual Controls" }), jsx_runtime_1.jsx(VisualControlsContent_1.VisualControlsContent, {})
|
|
90
|
+
] })
|
|
91
|
+
] })) : null] }));
|
|
92
|
+
};
|
|
93
|
+
exports.DefaultInspector = DefaultInspector;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EasingInspector = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
8
|
+
const SegmentedControl_1 = require("../SegmentedControl");
|
|
9
|
+
const EasingEditorModal_1 = require("../Timeline/EasingEditorModal");
|
|
10
|
+
const TimelineSelection_1 = require("../Timeline/TimelineSelection");
|
|
11
|
+
const update_selected_easing_1 = require("../Timeline/update-selected-easing");
|
|
12
|
+
const common_1 = require("./common");
|
|
13
|
+
const styles_1 = require("./styles");
|
|
14
|
+
const EasingInspector = ({ selection }) => {
|
|
15
|
+
const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
|
|
16
|
+
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
17
|
+
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
18
|
+
const initialEasing = (0, react_1.useMemo)(() => (0, update_selected_easing_1.getTimelineEasingValueForSelection)({
|
|
19
|
+
selection,
|
|
20
|
+
sequences,
|
|
21
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
22
|
+
propStatuses,
|
|
23
|
+
}), [overrideIdToNodePathMappings, propStatuses, selection, sequences]);
|
|
24
|
+
const state = (0, react_1.useMemo)(() => {
|
|
25
|
+
if (initialEasing === null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
initialEasing,
|
|
30
|
+
selections: [selection],
|
|
31
|
+
};
|
|
32
|
+
}, [initialEasing, selection]);
|
|
33
|
+
const renderHeader = (0, react_1.useCallback)((modeItems) => (jsx_runtime_1.jsx(common_1.InspectorSectionHeader, { children: jsx_runtime_1.jsx("div", { style: styles_1.sectionHeaderRow, children: jsx_runtime_1.jsxs("div", { style: styles_1.sectionHeaderStart, children: [
|
|
34
|
+
jsx_runtime_1.jsx("span", { style: styles_1.sectionHeaderTitle, children: "Easing" }), jsx_runtime_1.jsx(SegmentedControl_1.SegmentedControl, { items: modeItems, needsWrapping: false, size: "compact" })
|
|
35
|
+
] }) }) })), []);
|
|
36
|
+
if (state === null) {
|
|
37
|
+
return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Easing unavailable" });
|
|
38
|
+
}
|
|
39
|
+
return (jsx_runtime_1.jsx("div", { style: styles_1.selectedContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(EasingEditorModal_1.EasingEditor, { state: state, renderHeader: renderHeader }, (0, TimelineSelection_1.getTimelineSelectionKey)(selection)) }));
|
|
40
|
+
};
|
|
41
|
+
exports.EasingInspector = EasingInspector;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GuideInspector = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const editor_guides_1 = require("../../state/editor-guides");
|
|
7
|
+
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
8
|
+
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
9
|
+
const common_1 = require("./common");
|
|
10
|
+
const styles_1 = require("./styles");
|
|
11
|
+
const updateGuidePosition = ({ guideId, persist, position, setGuidesList, }) => {
|
|
12
|
+
setGuidesList((prevState) => {
|
|
13
|
+
const newGuides = prevState.map((guide) => {
|
|
14
|
+
if (guide.id !== guideId) {
|
|
15
|
+
return guide;
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
...guide,
|
|
19
|
+
position: Math.round(position),
|
|
20
|
+
show: true,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
if (persist) {
|
|
24
|
+
(0, editor_guides_1.persistGuidesList)(newGuides);
|
|
25
|
+
}
|
|
26
|
+
return newGuides;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
const GuideInspector = ({ selection }) => {
|
|
30
|
+
const { guidesList, setGuidesList } = (0, react_1.useContext)(editor_guides_1.EditorShowGuidesContext);
|
|
31
|
+
const guide = guidesList.find((candidate) => candidate.id === selection.guideId);
|
|
32
|
+
const onValueChange = (0, react_1.useCallback)((value) => {
|
|
33
|
+
updateGuidePosition({
|
|
34
|
+
guideId: selection.guideId,
|
|
35
|
+
persist: false,
|
|
36
|
+
position: value,
|
|
37
|
+
setGuidesList,
|
|
38
|
+
});
|
|
39
|
+
}, [selection.guideId, setGuidesList]);
|
|
40
|
+
const onValueChangeEnd = (0, react_1.useCallback)((value) => {
|
|
41
|
+
updateGuidePosition({
|
|
42
|
+
guideId: selection.guideId,
|
|
43
|
+
persist: true,
|
|
44
|
+
position: value,
|
|
45
|
+
setGuidesList,
|
|
46
|
+
});
|
|
47
|
+
}, [selection.guideId, setGuidesList]);
|
|
48
|
+
if (!guide) {
|
|
49
|
+
return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Guide unavailable" });
|
|
50
|
+
}
|
|
51
|
+
return (jsx_runtime_1.jsxs("div", { style: styles_1.selectedContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [
|
|
52
|
+
jsx_runtime_1.jsxs(common_1.InspectorSectionHeader, { children: [guide.orientation === 'vertical' ? 'Vertical' : 'Horizontal', " guide"] }), jsx_runtime_1.jsx("div", { style: styles_1.guideDetailsContainer, children: jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: guide.orientation === 'vertical' ? 'X position' : 'Y position', children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: guide.position, status: "ok", onValueChange: onValueChange, onValueChangeEnd: onValueChangeEnd, onTextChange: () => undefined, step: 1, formatter: (value) => String(Math.round(Number(value))), rightAlign: true, small: true }) }) })
|
|
53
|
+
] }));
|
|
54
|
+
};
|
|
55
|
+
exports.GuideInspector = GuideInspector;
|