rn-studio 0.2.1 → 0.3.0

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 (45) hide show
  1. package/bin/rn-studio-init.js +173 -0
  2. package/bin/rn-studio-server.js +77 -14
  3. package/dist/StudioProvider.d.ts +5 -18
  4. package/dist/StudioProvider.d.ts.map +1 -1
  5. package/dist/StudioProvider.js +118 -41
  6. package/dist/StudioProvider.js.map +1 -1
  7. package/dist/ast/AstEngine.d.ts.map +1 -1
  8. package/dist/ast/AstEngine.js +10 -0
  9. package/dist/ast/AstEngine.js.map +1 -1
  10. package/dist/ast/UndoStack.d.ts +18 -0
  11. package/dist/ast/UndoStack.d.ts.map +1 -0
  12. package/dist/ast/UndoStack.js +105 -0
  13. package/dist/ast/UndoStack.js.map +1 -0
  14. package/dist/components/AddPropertyModal.d.ts +19 -0
  15. package/dist/components/AddPropertyModal.d.ts.map +1 -0
  16. package/dist/components/AddPropertyModal.js +174 -0
  17. package/dist/components/AddPropertyModal.js.map +1 -0
  18. package/dist/components/InspectorPanel.js +35 -5
  19. package/dist/components/InspectorPanel.js.map +1 -1
  20. package/dist/components/SelectionOverlay.d.ts.map +1 -1
  21. package/dist/components/SelectionOverlay.js +5 -0
  22. package/dist/components/SelectionOverlay.js.map +1 -1
  23. package/dist/components/StyleEditor.d.ts +5 -3
  24. package/dist/components/StyleEditor.d.ts.map +1 -1
  25. package/dist/components/StyleEditor.js +45 -11
  26. package/dist/components/StyleEditor.js.map +1 -1
  27. package/dist/data/styleProperties.d.ts +26 -0
  28. package/dist/data/styleProperties.d.ts.map +1 -0
  29. package/dist/data/styleProperties.js +142 -0
  30. package/dist/data/styleProperties.js.map +1 -0
  31. package/dist/types.d.ts +19 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/utils/autoScroll.d.ts +15 -0
  34. package/dist/utils/autoScroll.d.ts.map +1 -0
  35. package/dist/utils/autoScroll.js +132 -0
  36. package/dist/utils/autoScroll.js.map +1 -0
  37. package/dist/utils/findFiberBySource.d.ts +17 -0
  38. package/dist/utils/findFiberBySource.d.ts.map +1 -0
  39. package/dist/utils/findFiberBySource.js +76 -0
  40. package/dist/utils/findFiberBySource.js.map +1 -0
  41. package/dist/utils/persistence.d.ts +12 -0
  42. package/dist/utils/persistence.d.ts.map +1 -0
  43. package/dist/utils/persistence.js +44 -0
  44. package/dist/utils/persistence.js.map +1 -0
  45. package/package.json +3 -2
@@ -33,28 +33,39 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.StyleEditor = void 0;
36
+ exports.defaultValueFor = exports.StyleEditor = void 0;
37
37
  const react_1 = __importStar(require("react"));
38
38
  const react_native_1 = require("react-native");
39
39
  const StudioProvider_1 = require("../StudioProvider");
40
+ const AddPropertyModal_1 = require("./AddPropertyModal");
41
+ const styleProperties_1 = require("../data/styleProperties");
42
+ Object.defineProperty(exports, "defaultValueFor", { enumerable: true, get: function () { return styleProperties_1.defaultValueFor; } });
40
43
  /**
41
44
  * StyleEditor
42
45
  *
43
- * Flat list of editable style properties for the currently selected
44
- * component. Value changes are debounced (300ms) before being flushed
45
- * through the WebSocket bridge.
46
+ * Scrollable list of editable style properties for the currently
47
+ * selected component, preceded by a "+ Add property" button that opens
48
+ * the searchable RN-wide style picker modal.
46
49
  */
47
50
  const StyleEditor = () => {
48
- const { selectedComponent, updateStyle } = (0, StudioProvider_1.useStudio)();
51
+ const { selectedComponent, updateStyle, addStyleProperty } = (0, StudioProvider_1.useStudio)();
52
+ const [addOpen, setAddOpen] = (0, react_1.useState)(false);
49
53
  if (!selectedComponent) {
50
54
  return (react_1.default.createElement(react_native_1.View, { style: styles.empty },
51
55
  react_1.default.createElement(react_native_1.Text, { style: styles.emptyText }, "No component selected")));
52
56
  }
53
- if (!selectedComponent.styles.length) {
54
- return (react_1.default.createElement(react_native_1.View, { style: styles.empty },
55
- react_1.default.createElement(react_native_1.Text, { style: styles.emptyText }, "This component has no inline styles to edit.")));
56
- }
57
- return (react_1.default.createElement(react_native_1.FlatList, { data: selectedComponent.styles, keyExtractor: (s) => s.key, style: { flex: 1 }, contentContainerStyle: [styles.list, { paddingBottom: 40 }], showsVerticalScrollIndicator: true, keyboardShouldPersistTaps: "handled", renderItem: ({ item }) => (react_1.default.createElement(StyleRow, { property: item, onCommit: (value) => updateStyle(item.key, value) })) }));
57
+ const existing = selectedComponent.styles.map((s) => s.key);
58
+ const Header = (react_1.default.createElement(react_native_1.TouchableOpacity, { style: styles.addButton, onPress: () => setAddOpen(true), activeOpacity: 0.7 },
59
+ react_1.default.createElement(react_native_1.Text, { style: styles.addPlus }, "\uFF0B"),
60
+ react_1.default.createElement(react_native_1.Text, { style: styles.addLabel }, "Add property")));
61
+ return (react_1.default.createElement(react_1.default.Fragment, null,
62
+ react_1.default.createElement(react_native_1.FlatList, { data: selectedComponent.styles, keyExtractor: (s) => s.key, style: { flex: 1 }, contentContainerStyle: [styles.list, { paddingBottom: 40 }], showsVerticalScrollIndicator: true, keyboardShouldPersistTaps: "handled", ListHeaderComponent: Header, ListEmptyComponent: react_1.default.createElement(react_native_1.Text, { style: styles.emptyText }, "This component has no inline styles yet. Tap \"Add property\" to insert one."), renderItem: ({ item }) => (react_1.default.createElement(StyleRow, { property: item, onCommit: (value) => updateStyle(item.key, value) })) }),
63
+ react_1.default.createElement(AddPropertyModal_1.AddPropertyModal, { visible: addOpen, existingKeys: existing, onClose: () => setAddOpen(false), onPick: (def) => {
64
+ const value = typeof def.default === 'boolean'
65
+ ? (def.default ? 'true' : 'false')
66
+ : def.default;
67
+ addStyleProperty(def.key, value);
68
+ } })));
58
69
  };
59
70
  exports.StyleEditor = StyleEditor;
60
71
  const StyleRow = ({ property, onCommit }) => {
@@ -90,6 +101,29 @@ const StyleRow = ({ property, onCommit }) => {
90
101
  };
91
102
  const styles = react_native_1.StyleSheet.create({
92
103
  list: { padding: 16 },
104
+ addButton: {
105
+ flexDirection: 'row',
106
+ alignItems: 'center',
107
+ justifyContent: 'center',
108
+ backgroundColor: '#1a1a1a',
109
+ borderWidth: 1,
110
+ borderColor: '#2a2a2a',
111
+ borderRadius: 10,
112
+ paddingVertical: 12,
113
+ marginBottom: 12,
114
+ gap: 8,
115
+ },
116
+ addPlus: {
117
+ color: '#7C9BFF',
118
+ fontSize: 18,
119
+ fontWeight: '700',
120
+ lineHeight: 20,
121
+ },
122
+ addLabel: {
123
+ color: '#e5e5e5',
124
+ fontSize: 13,
125
+ fontWeight: '600',
126
+ },
93
127
  row: {
94
128
  flexDirection: 'row',
95
129
  alignItems: 'center',
@@ -139,6 +173,6 @@ const styles = react_native_1.StyleSheet.create({
139
173
  fontWeight: '700',
140
174
  },
141
175
  empty: { padding: 32, alignItems: 'center' },
142
- emptyText: { color: '#888', fontSize: 13 },
176
+ emptyText: { color: '#888', fontSize: 13, textAlign: 'center' },
143
177
  });
144
178
  //# sourceMappingURL=StyleEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StyleEditor.js","sourceRoot":"","sources":["../../src/components/StyleEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StyleEditor.js","sourceRoot":"","sources":["../../src/components/StyleEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Comprehensive list of React Native style properties, grouped by
3
+ * category, with default values the "+ Add property" flow can use
4
+ * when a style is inserted for the first time.
5
+ *
6
+ * Ordered for UX: most common props appear first within each group.
7
+ */
8
+ import type { StyleProperty } from '../types';
9
+ export interface StylePropertyDef {
10
+ key: string;
11
+ type: StyleProperty['type'];
12
+ default: string | number | boolean;
13
+ group: StyleGroup;
14
+ /** Optional enum values for smart editors (dropdowns). */
15
+ enum?: string[];
16
+ }
17
+ export type StyleGroup = 'Layout' | 'Flex' | 'Spacing' | 'Sizing' | 'Position' | 'Background' | 'Border' | 'Shadow' | 'Typography' | 'Transform' | 'Visibility';
18
+ export declare const STYLE_PROPERTIES: StylePropertyDef[];
19
+ export declare const STYLE_GROUPS: StyleGroup[];
20
+ /**
21
+ * Returns the default value we should insert when the user adds a new
22
+ * style property via the "+ Add property" flow.
23
+ */
24
+ export declare function defaultValueFor(key: string): string | number | boolean;
25
+ export declare function styleDef(key: string): StylePropertyDef | undefined;
26
+ //# sourceMappingURL=styleProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleProperties.d.ts","sourceRoot":"","sources":["../../src/data/styleProperties.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,KAAK,EAAE,UAAU,CAAC;IAClB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,YAAY,CAAC;AAIjB,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAiH9C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAAU,EAYpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAGtE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAElE"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /**
3
+ * Comprehensive list of React Native style properties, grouped by
4
+ * category, with default values the "+ Add property" flow can use
5
+ * when a style is inserted for the first time.
6
+ *
7
+ * Ordered for UX: most common props appear first within each group.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.STYLE_GROUPS = exports.STYLE_PROPERTIES = void 0;
11
+ exports.defaultValueFor = defaultValueFor;
12
+ exports.styleDef = styleDef;
13
+ /* eslint-disable @typescript-eslint/no-explicit-any */
14
+ exports.STYLE_PROPERTIES = [
15
+ // ── Layout ──────────────────────────────────────────────────────
16
+ { key: 'display', type: 'string', default: 'flex', group: 'Layout', enum: ['flex', 'none'] },
17
+ { key: 'overflow', type: 'string', default: 'visible', group: 'Layout', enum: ['visible', 'hidden', 'scroll'] },
18
+ { key: 'aspectRatio', type: 'number', default: 1, group: 'Layout' },
19
+ { key: 'zIndex', type: 'number', default: 0, group: 'Layout' },
20
+ { key: 'direction', type: 'string', default: 'inherit', group: 'Layout', enum: ['inherit', 'ltr', 'rtl'] },
21
+ // ── Flex ────────────────────────────────────────────────────────
22
+ { key: 'flex', type: 'number', default: 1, group: 'Flex' },
23
+ { key: 'flexDirection', type: 'string', default: 'column', group: 'Flex', enum: ['row', 'column', 'row-reverse', 'column-reverse'] },
24
+ { key: 'flexWrap', type: 'string', default: 'nowrap', group: 'Flex', enum: ['wrap', 'nowrap', 'wrap-reverse'] },
25
+ { key: 'flexGrow', type: 'number', default: 0, group: 'Flex' },
26
+ { key: 'flexShrink', type: 'number', default: 1, group: 'Flex' },
27
+ { key: 'flexBasis', type: 'number', default: 0, group: 'Flex' },
28
+ { key: 'justifyContent', type: 'string', default: 'flex-start', group: 'Flex', enum: ['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly'] },
29
+ { key: 'alignItems', type: 'string', default: 'stretch', group: 'Flex', enum: ['flex-start', 'flex-end', 'center', 'stretch', 'baseline'] },
30
+ { key: 'alignSelf', type: 'string', default: 'auto', group: 'Flex', enum: ['auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline'] },
31
+ { key: 'alignContent', type: 'string', default: 'flex-start', group: 'Flex', enum: ['flex-start', 'flex-end', 'center', 'stretch', 'space-between', 'space-around'] },
32
+ { key: 'gap', type: 'number', default: 8, group: 'Flex' },
33
+ { key: 'rowGap', type: 'number', default: 8, group: 'Flex' },
34
+ { key: 'columnGap', type: 'number', default: 8, group: 'Flex' },
35
+ // ── Spacing ─────────────────────────────────────────────────────
36
+ { key: 'padding', type: 'number', default: 16, group: 'Spacing' },
37
+ { key: 'paddingHorizontal', type: 'number', default: 16, group: 'Spacing' },
38
+ { key: 'paddingVertical', type: 'number', default: 12, group: 'Spacing' },
39
+ { key: 'paddingTop', type: 'number', default: 12, group: 'Spacing' },
40
+ { key: 'paddingRight', type: 'number', default: 16, group: 'Spacing' },
41
+ { key: 'paddingBottom', type: 'number', default: 12, group: 'Spacing' },
42
+ { key: 'paddingLeft', type: 'number', default: 16, group: 'Spacing' },
43
+ { key: 'paddingStart', type: 'number', default: 16, group: 'Spacing' },
44
+ { key: 'paddingEnd', type: 'number', default: 16, group: 'Spacing' },
45
+ { key: 'margin', type: 'number', default: 16, group: 'Spacing' },
46
+ { key: 'marginHorizontal', type: 'number', default: 16, group: 'Spacing' },
47
+ { key: 'marginVertical', type: 'number', default: 12, group: 'Spacing' },
48
+ { key: 'marginTop', type: 'number', default: 12, group: 'Spacing' },
49
+ { key: 'marginRight', type: 'number', default: 16, group: 'Spacing' },
50
+ { key: 'marginBottom', type: 'number', default: 12, group: 'Spacing' },
51
+ { key: 'marginLeft', type: 'number', default: 16, group: 'Spacing' },
52
+ { key: 'marginStart', type: 'number', default: 16, group: 'Spacing' },
53
+ { key: 'marginEnd', type: 'number', default: 16, group: 'Spacing' },
54
+ // ── Sizing ──────────────────────────────────────────────────────
55
+ { key: 'width', type: 'number', default: 100, group: 'Sizing' },
56
+ { key: 'height', type: 'number', default: 100, group: 'Sizing' },
57
+ { key: 'minWidth', type: 'number', default: 0, group: 'Sizing' },
58
+ { key: 'minHeight', type: 'number', default: 0, group: 'Sizing' },
59
+ { key: 'maxWidth', type: 'number', default: 400, group: 'Sizing' },
60
+ { key: 'maxHeight', type: 'number', default: 400, group: 'Sizing' },
61
+ // ── Position ────────────────────────────────────────────────────
62
+ { key: 'position', type: 'string', default: 'relative', group: 'Position', enum: ['absolute', 'relative', 'static'] },
63
+ { key: 'top', type: 'number', default: 0, group: 'Position' },
64
+ { key: 'right', type: 'number', default: 0, group: 'Position' },
65
+ { key: 'bottom', type: 'number', default: 0, group: 'Position' },
66
+ { key: 'left', type: 'number', default: 0, group: 'Position' },
67
+ { key: 'start', type: 'number', default: 0, group: 'Position' },
68
+ { key: 'end', type: 'number', default: 0, group: 'Position' },
69
+ // ── Background ──────────────────────────────────────────────────
70
+ { key: 'backgroundColor', type: 'color', default: '#7C9BFF', group: 'Background' },
71
+ { key: 'opacity', type: 'number', default: 1, group: 'Background' },
72
+ // ── Border ──────────────────────────────────────────────────────
73
+ { key: 'borderRadius', type: 'number', default: 8, group: 'Border' },
74
+ { key: 'borderTopLeftRadius', type: 'number', default: 8, group: 'Border' },
75
+ { key: 'borderTopRightRadius', type: 'number', default: 8, group: 'Border' },
76
+ { key: 'borderBottomLeftRadius', type: 'number', default: 8, group: 'Border' },
77
+ { key: 'borderBottomRightRadius', type: 'number', default: 8, group: 'Border' },
78
+ { key: 'borderWidth', type: 'number', default: 1, group: 'Border' },
79
+ { key: 'borderTopWidth', type: 'number', default: 1, group: 'Border' },
80
+ { key: 'borderRightWidth', type: 'number', default: 1, group: 'Border' },
81
+ { key: 'borderBottomWidth', type: 'number', default: 1, group: 'Border' },
82
+ { key: 'borderLeftWidth', type: 'number', default: 1, group: 'Border' },
83
+ { key: 'borderColor', type: 'color', default: '#2a2a2a', group: 'Border' },
84
+ { key: 'borderTopColor', type: 'color', default: '#2a2a2a', group: 'Border' },
85
+ { key: 'borderRightColor', type: 'color', default: '#2a2a2a', group: 'Border' },
86
+ { key: 'borderBottomColor', type: 'color', default: '#2a2a2a', group: 'Border' },
87
+ { key: 'borderLeftColor', type: 'color', default: '#2a2a2a', group: 'Border' },
88
+ { key: 'borderStyle', type: 'string', default: 'solid', group: 'Border', enum: ['solid', 'dotted', 'dashed'] },
89
+ // ── Shadow (iOS) ────────────────────────────────────────────────
90
+ { key: 'shadowColor', type: 'color', default: '#000000', group: 'Shadow' },
91
+ { key: 'shadowOpacity', type: 'number', default: 0.25, group: 'Shadow' },
92
+ { key: 'shadowRadius', type: 'number', default: 8, group: 'Shadow' },
93
+ { key: 'elevation', type: 'number', default: 4, group: 'Shadow' },
94
+ // ── Typography (Text) ───────────────────────────────────────────
95
+ { key: 'color', type: 'color', default: '#fafafa', group: 'Typography' },
96
+ { key: 'fontSize', type: 'number', default: 14, group: 'Typography' },
97
+ { key: 'fontWeight', type: 'string', default: '400', group: 'Typography', enum: ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'] },
98
+ { key: 'fontFamily', type: 'string', default: 'System', group: 'Typography' },
99
+ { key: 'fontStyle', type: 'string', default: 'normal', group: 'Typography', enum: ['normal', 'italic'] },
100
+ { key: 'lineHeight', type: 'number', default: 20, group: 'Typography' },
101
+ { key: 'letterSpacing', type: 'number', default: 0, group: 'Typography' },
102
+ { key: 'textAlign', type: 'string', default: 'auto', group: 'Typography', enum: ['auto', 'left', 'right', 'center', 'justify'] },
103
+ { key: 'textAlignVertical', type: 'string', default: 'auto', group: 'Typography', enum: ['auto', 'top', 'bottom', 'center'] },
104
+ { key: 'textDecorationLine', type: 'string', default: 'none', group: 'Typography', enum: ['none', 'underline', 'line-through', 'underline line-through'] },
105
+ { key: 'textDecorationStyle', type: 'string', default: 'solid', group: 'Typography', enum: ['solid', 'double', 'dotted', 'dashed'] },
106
+ { key: 'textDecorationColor', type: 'color', default: '#fafafa', group: 'Typography' },
107
+ { key: 'textTransform', type: 'string', default: 'none', group: 'Typography', enum: ['none', 'uppercase', 'lowercase', 'capitalize'] },
108
+ { key: 'textShadowColor', type: 'color', default: '#000000', group: 'Typography' },
109
+ { key: 'textShadowRadius', type: 'number', default: 2, group: 'Typography' },
110
+ { key: 'writingDirection', type: 'string', default: 'auto', group: 'Typography', enum: ['auto', 'ltr', 'rtl'] },
111
+ { key: 'includeFontPadding', type: 'boolean', default: true, group: 'Typography' },
112
+ // ── Transform ───────────────────────────────────────────────────
113
+ { key: 'transformOrigin', type: 'string', default: 'center', group: 'Transform' },
114
+ // Note: the `transform` array form is handled via inline editing, not here.
115
+ // ── Visibility ──────────────────────────────────────────────────
116
+ { key: 'pointerEvents', type: 'string', default: 'auto', group: 'Visibility', enum: ['auto', 'none', 'box-none', 'box-only'] },
117
+ ];
118
+ exports.STYLE_GROUPS = [
119
+ 'Layout',
120
+ 'Flex',
121
+ 'Spacing',
122
+ 'Sizing',
123
+ 'Position',
124
+ 'Background',
125
+ 'Border',
126
+ 'Shadow',
127
+ 'Typography',
128
+ 'Transform',
129
+ 'Visibility',
130
+ ];
131
+ /**
132
+ * Returns the default value we should insert when the user adds a new
133
+ * style property via the "+ Add property" flow.
134
+ */
135
+ function defaultValueFor(key) {
136
+ const def = exports.STYLE_PROPERTIES.find((p) => p.key === key);
137
+ return def ? def.default : 0;
138
+ }
139
+ function styleDef(key) {
140
+ return exports.STYLE_PROPERTIES.find((p) => p.key === key);
141
+ }
142
+ //# sourceMappingURL=styleProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleProperties.js","sourceRoot":"","sources":["../../src/data/styleProperties.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -45,6 +45,15 @@ export interface StudioContextValue {
45
45
  selectComponent: (node: ComponentNode) => void;
46
46
  clearSelection: () => void;
47
47
  updateStyle: (key: string, value: string | number) => void;
48
+ /** Add a new style property to the selected component. */
49
+ addStyleProperty: (key: string, value: string | number | boolean) => void;
50
+ /** Undo the last style change across all components. */
51
+ undo: () => void;
52
+ /** Redo the last undone change. */
53
+ redo: () => void;
54
+ /** Current undo/redo stack depths, updated by server ACKs. */
55
+ canUndo: boolean;
56
+ canRedo: boolean;
48
57
  }
49
58
  /** WebSocket message protocol — discriminated union. */
50
59
  export type StudioMessage = {
@@ -64,6 +73,16 @@ export type StudioMessage = {
64
73
  propName: string;
65
74
  value: unknown;
66
75
  };
76
+ } | {
77
+ type: 'UNDO';
78
+ } | {
79
+ type: 'REDO';
80
+ } | {
81
+ type: 'STACK_STATE';
82
+ payload: {
83
+ undo: number;
84
+ redo: number;
85
+ };
67
86
  } | {
68
87
  type: 'PING';
69
88
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;CAC1B;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,CAAC;AAEf,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;CAC5D;AAED,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACtD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE;QACP,MAAM,EAAE,cAAc,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;KACxB,CAAC;CACH,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,cAAc,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEpD,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnF;;;;GAIG;AACH,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,KAAK,CAAC;QACd,UAAU,aAAa,CAAC,CAAC;YACvB,gBAAgB,CAAC,EAAE,cAAc,CAAC;SACnC;KACF;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;CAC1B;AAED,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,CAAC;AAEf,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3D,0DAA0D;IAC1D,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAC1E,wDAAwD;IACxD,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACtD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE;QACP,MAAM,EAAE,cAAc,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;KACxB,CAAC;CACH,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,cAAc,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEpD,mCAAmC;AACnC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnF;;;;GAIG;AACH,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,KAAK,CAAC;QACd,UAAU,aAAa,CAAC,CAAC;YACvB,gBAAgB,CAAC,EAAE,cAAc,CAAC;SACnC;KACF;CACF"}
@@ -0,0 +1,15 @@
1
+ interface Frame {
2
+ left: number;
3
+ top: number;
4
+ width: number;
5
+ height: number;
6
+ }
7
+ /**
8
+ * Called by SelectionOverlay after a successful selection. `fiber` is
9
+ * the `closestInstance` from `getInspectorDataForViewAtPoint`. `frame`
10
+ * is its measured pageX/Y box. If the component is already visible
11
+ * above the panel, this is a no-op.
12
+ */
13
+ export declare function autoScrollToComponent(fiber: any, frame: Frame): void;
14
+ export {};
15
+ //# sourceMappingURL=autoScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoScroll.d.ts","sourceRoot":"","sources":["../../src/utils/autoScroll.ts"],"names":[],"mappings":"AAaA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA4CD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAsEpE"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.autoScrollToComponent = autoScrollToComponent;
4
+ /**
5
+ * autoScrollToComponent
6
+ *
7
+ * When a component is selected and the inspector panel slides up
8
+ * covering the bottom 60% of the screen, the component itself may be
9
+ * hidden behind the panel. This utility walks the fiber tree to find
10
+ * the nearest scrollable ancestor and scrolls so that the component
11
+ * appears in the top ~25% of the visible area (above the panel).
12
+ */
13
+ const react_native_1 = require("react-native");
14
+ const SCREEN_HEIGHT = react_native_1.Dimensions.get('window').height;
15
+ /** Panel covers the bottom 60% of the screen — visible area is 0..VISIBLE_BOTTOM. */
16
+ const VISIBLE_BOTTOM = Math.round(SCREEN_HEIGHT * 0.4);
17
+ /** Desired top padding for the selected component inside the visible area. */
18
+ const TOP_PADDING = Math.round(SCREEN_HEIGHT * 0.12);
19
+ /**
20
+ * Walks a fiber's `.return` chain looking for the nearest ancestor
21
+ * whose stateNode exposes a `scrollTo` method (ScrollView, FlatList,
22
+ * SectionList, KeyboardAwareScrollView, etc.).
23
+ */
24
+ function findScrollableAncestor(fiber) {
25
+ let current = fiber;
26
+ let safety = 0;
27
+ while (current && safety < 200) {
28
+ safety++;
29
+ const node = current.stateNode;
30
+ if (node) {
31
+ if (typeof node.scrollTo === 'function')
32
+ return node;
33
+ if (typeof node.scrollToOffset === 'function') {
34
+ return {
35
+ scrollTo: ({ y, animated }) => node.scrollToOffset({ offset: y, animated }),
36
+ getInnerViewNode: typeof node.getNativeScrollRef === 'function'
37
+ ? () => {
38
+ const ref = node.getNativeScrollRef();
39
+ return ref && (0, react_native_1.findNodeHandle)(ref);
40
+ }
41
+ : undefined,
42
+ };
43
+ }
44
+ if (typeof node.getScrollResponder === 'function') {
45
+ const r = node.getScrollResponder();
46
+ if (r && typeof r.scrollTo === 'function')
47
+ return r;
48
+ }
49
+ }
50
+ current = current.return;
51
+ }
52
+ return null;
53
+ }
54
+ /**
55
+ * Called by SelectionOverlay after a successful selection. `fiber` is
56
+ * the `closestInstance` from `getInspectorDataForViewAtPoint`. `frame`
57
+ * is its measured pageX/Y box. If the component is already visible
58
+ * above the panel, this is a no-op.
59
+ */
60
+ function autoScrollToComponent(fiber, frame) {
61
+ if (!fiber || !frame)
62
+ return;
63
+ // Already inside the visible area? Nothing to do.
64
+ if (frame.top >= TOP_PADDING && frame.top + frame.height <= VISIBLE_BOTTOM) {
65
+ return;
66
+ }
67
+ const scrollable = findScrollableAncestor(fiber);
68
+ if (!scrollable || typeof scrollable.scrollTo !== 'function')
69
+ return;
70
+ // Resolve the scroll content view handle.
71
+ let contentTag = null;
72
+ try {
73
+ if (typeof scrollable.getInnerViewNode === 'function') {
74
+ contentTag = scrollable.getInnerViewNode();
75
+ }
76
+ else if (scrollable._innerViewRef) {
77
+ contentTag = (0, react_native_1.findNodeHandle)(scrollable._innerViewRef);
78
+ }
79
+ else {
80
+ contentTag = (0, react_native_1.findNodeHandle)(scrollable);
81
+ }
82
+ }
83
+ catch {
84
+ contentTag = null;
85
+ }
86
+ if (!contentTag)
87
+ return;
88
+ // Resolve the target host view's handle.
89
+ let targetTag = null;
90
+ try {
91
+ // Prefer the fiber's stateNode (host fibers have a nativeTag'd stateNode).
92
+ const sn = fiber.stateNode;
93
+ if (sn) {
94
+ targetTag =
95
+ (0, react_native_1.findNodeHandle)(sn) ||
96
+ (sn.canonical && sn.canonical.nativeTag) ||
97
+ null;
98
+ }
99
+ }
100
+ catch {
101
+ targetTag = null;
102
+ }
103
+ if (!targetTag)
104
+ return;
105
+ // Measure the target's y inside the scroll content, then scroll to
106
+ // that position minus the desired top padding.
107
+ try {
108
+ react_native_1.UIManager.measureLayout(targetTag, contentTag, () => {
109
+ // onFail: silently ignore.
110
+ }, (_x, y) => {
111
+ const targetY = Math.max(0, y - TOP_PADDING);
112
+ try {
113
+ scrollable.scrollTo({ y: targetY, animated: true });
114
+ }
115
+ catch {
116
+ // Some custom scroll components expect different signatures.
117
+ }
118
+ });
119
+ }
120
+ catch {
121
+ // measureLayout is unavailable on some edge-case architectures;
122
+ // fall back to a best-guess scroll using the page-space delta.
123
+ try {
124
+ scrollable.scrollTo({
125
+ y: Math.max(0, frame.top - TOP_PADDING),
126
+ animated: true,
127
+ });
128
+ }
129
+ catch { }
130
+ }
131
+ }
132
+ //# sourceMappingURL=autoScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoScroll.js","sourceRoot":"","sources":["../../src/utils/autoScroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * findFiberBySource
3
+ *
4
+ * Walks all live React fiber trees via the React DevTools hook and
5
+ * returns the first fiber whose memoizedProps carry a
6
+ * `__rnStudioSource` or `__source` matching the supplied coordinates.
7
+ *
8
+ * Used by StudioProvider to re-select the previously selected
9
+ * component after a Metro Fast Refresh or full reload.
10
+ */
11
+ import type { SourceLocation } from '../types';
12
+ /**
13
+ * Public entry point. Returns the first matching fiber or null. Safe
14
+ * to call even if React DevTools isn't installed.
15
+ */
16
+ export declare function findFiberBySource(target: SourceLocation): any | null;
17
+ //# sourceMappingURL=findFiberBySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findFiberBySource.d.ts","sourceRoot":"","sources":["../../src/utils/findFiberBySource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAsC/C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,GAAG,GAAG,IAAI,CAgCpE"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findFiberBySource = findFiberBySource;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ function matchesSource(props, target) {
6
+ if (!props || typeof props !== 'object')
7
+ return false;
8
+ if (props.__rnStudioSource &&
9
+ props.__rnStudioSource.file === target.file &&
10
+ props.__rnStudioSource.line === target.line) {
11
+ return true;
12
+ }
13
+ if (props.__source &&
14
+ props.__source.fileName === target.file &&
15
+ props.__source.lineNumber === target.line) {
16
+ return true;
17
+ }
18
+ return false;
19
+ }
20
+ function walkFiber(fiber, target) {
21
+ if (!fiber)
22
+ return null;
23
+ const queue = [fiber];
24
+ let safety = 0;
25
+ while (queue.length && safety < 10000) {
26
+ safety++;
27
+ const node = queue.shift();
28
+ if (!node)
29
+ continue;
30
+ if (matchesSource(node.memoizedProps, target))
31
+ return node;
32
+ if (node.child)
33
+ queue.push(node.child);
34
+ if (node.sibling)
35
+ queue.push(node.sibling);
36
+ }
37
+ return null;
38
+ }
39
+ /**
40
+ * Public entry point. Returns the first matching fiber or null. Safe
41
+ * to call even if React DevTools isn't installed.
42
+ */
43
+ function findFiberBySource(target) {
44
+ const hook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
45
+ if (!hook || !hook.renderers)
46
+ return null;
47
+ try {
48
+ const renderers = Array.from(hook.renderers.values());
49
+ for (const renderer of renderers) {
50
+ // Fiber roots may be exposed via `getFiberRoots(rendererID)` or a
51
+ // Set stored on the renderer itself; defensively handle both.
52
+ const rendererID = [...hook.renderers.keys()].find((k) => hook.renderers.get(k) === renderer);
53
+ let roots = null;
54
+ if (typeof hook.getFiberRoots === 'function' && rendererID != null) {
55
+ roots = hook.getFiberRoots(rendererID);
56
+ }
57
+ if (!roots && renderer.getFiberRoots) {
58
+ roots = renderer.getFiberRoots();
59
+ }
60
+ if (!roots)
61
+ continue;
62
+ for (const root of roots) {
63
+ const fiberRoot = root.current || root;
64
+ const found = walkFiber(fiberRoot, target);
65
+ if (found)
66
+ return found;
67
+ }
68
+ }
69
+ }
70
+ catch {
71
+ // DevTools hook internals shift between RN versions; swallow any
72
+ // reflection errors — re-selection is best-effort.
73
+ }
74
+ return null;
75
+ }
76
+ //# sourceMappingURL=findFiberBySource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findFiberBySource.js","sourceRoot":"","sources":["../../src/utils/findFiberBySource.ts"],"names":[],"mappings":"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"}