Skip to content

Commit 2d063e6

Browse files
committed
Change the bridge injection for TextStyles
1 parent b8bc142 commit 2d063e6

File tree

7 files changed

+100
-106
lines changed

7 files changed

+100
-106
lines changed

src/index.common.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export { default as Platform } from './Platform';
22
export { default as StyleSheet } from './StyleSheet';
33
export * from './components';
4-
export { default as TextStyles } from './sharedStyles/TextStyles';
54
export { getSymbolComponentByName, getSymbolMasterByName, injectSymbols } from './symbol';

src/index.node.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@ import { default as _renderToJSON } from './renderToJSON';
33
import { makeSymbol as _makeSymbol } from './symbol';
44
import { SketchLayer, WrappedSketchLayer, PlatformBridge } from './types';
55
import { FileFormat1 as FileFormat } from '@sketch-hq/sketch-file-format-ts';
6+
import { default as _TextStyles } from './sharedStyles/TextStyles';
7+
8+
function getDefaultPlatformBridge() {
9+
return require('./platformBridges/NodeMacOSBridge');
10+
}
611

712
export async function render(
813
element: React.ReactElement,
914
container?: SketchLayer | WrappedSketchLayer,
10-
platformBridge: PlatformBridge = require('./platformBridges/NodeMacOSBridge'),
15+
platformBridge: PlatformBridge = getDefaultPlatformBridge(),
1116
): Promise<SketchLayer | Array<SketchLayer>> {
1217
return _render(element, container, platformBridge);
1318
}
1419

1520
export async function renderToJSON(
1621
element: React.ReactElement,
17-
platformBridge: PlatformBridge = require('./platformBridges/NodeMacOSBridge'),
22+
platformBridge: PlatformBridge = getDefaultPlatformBridge(),
1823
): Promise<FileFormat.AnyLayer> {
1924
return _renderToJSON(element, platformBridge);
2025
}
@@ -23,9 +28,11 @@ export async function makeSymbol(
2328
Component: React.ComponentType<any>,
2429
symbolProps?: string | SymbolMasterProps,
2530
document?: SketchDocumentData | SketchDocument | WrappedSketchDocument,
26-
bridge: PlatformBridge = require('./platformBridges/NodeMacOSBridge'),
31+
bridge: PlatformBridge = getDefaultPlatformBridge(),
2732
) {
2833
return _makeSymbol(Component, symbolProps, document, bridge);
2934
}
3035

36+
export const TextStyles = _TextStyles(getDefaultPlatformBridge);
37+
3138
export * from './index.common';

src/index.sketch.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { default as _renderToJSON } from './renderToJSON';
33
import { makeSymbol as _makeSymbol } from './symbol';
44
import { SketchLayer, WrappedSketchLayer, PlatformBridge } from './types';
55
import { FileFormat1 as FileFormat } from '@sketch-hq/sketch-file-format-ts';
6+
import { default as _TextStyles } from './sharedStyles/TextStyles';
67
import SketchBridge from './platformBridges/SketchBridge';
78

89
export async function render(
@@ -29,4 +30,6 @@ export async function makeSymbol(
2930
return _makeSymbol(Component, symbolProps, document, bridge);
3031
}
3132

33+
export const TextStyles = _TextStyles(() => SketchBridge);
34+
3235
export * from './index.common';

src/platformBridges/getDefaultBridge.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/render.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { getDocumentDataFromContainer, getDocumentDataFromContext } from './util
1717
import isNativeDocument from './utils/isNativeDocument';
1818
import isNativePage from './utils/isNativePage';
1919
import isNativeSymbolsPage from './utils/isNativeSymbolsPage';
20-
import getDefaultBridge from './platformBridges/getDefaultBridge';
2120

2221
export const renderLayers = (layers: Array<any>, container: SketchLayer): SketchLayer => {
2322
if (container.addLayers === undefined) {

src/sharedStyles/TextStyles.ts

Lines changed: 87 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import sharedTextStyles from '../utils/sharedTextStyles';
1414
import { makeTextStyle } from '../jsonUtils/textLayers';
1515
import pick from '../utils/pick';
1616
import { INHERITABLE_FONT_STYLES } from '../utils/constants';
17-
import getDefaultBridge from '../platformBridges/getDefaultBridge';
1817

1918
type MurmurHash = string;
2019

@@ -27,104 +26,100 @@ type RegisteredStyle = {
2726

2827
type StyleHash = { [key: string]: RegisteredStyle };
2928

30-
let _styles: StyleHash = {};
31-
const _byName: { [key: string]: MurmurHash } = {};
32-
33-
const registerStyle = (
34-
name: string,
35-
style: TextStyle,
36-
platformBridge: PlatformBridge = getDefaultBridge(),
37-
): void => {
38-
const safeStyle = pick(style, INHERITABLE_FONT_STYLES);
39-
const hash = hashStyle(safeStyle);
40-
const sketchStyle = makeTextStyle(safeStyle, null, platformBridge);
41-
const sharedObjectID = sharedTextStyles.addStyle(name, sketchStyle);
42-
43-
// FIXME(gold): side effect :'(
44-
_byName[name] = hash;
45-
46-
_styles[hash] = {
47-
cssStyle: safeStyle,
48-
name,
49-
sketchStyle,
50-
sharedObjectID,
51-
};
52-
};
53-
5429
type Options = {
5530
clearExistingStyles?: boolean;
5631
document?: SketchDocumentData | SketchDocument | WrappedSketchDocument;
5732
};
5833

59-
const create = (
60-
styles: { [key: string]: TextStyle },
61-
options: Options = {},
62-
platformBridge: PlatformBridge = getDefaultBridge(),
63-
): StyleHash => {
64-
const { clearExistingStyles, document } = options;
65-
66-
const doc = getDocument(document);
67-
68-
if (isRunningInSketch() && parseInt(getSketchVersion()) < 50) {
69-
doc.showMessage('💎 Requires Sketch 50+ 💎');
70-
return {};
71-
}
72-
73-
sharedTextStyles.setDocument(doc);
34+
let _styles: StyleHash = {};
35+
const _byName: { [key: string]: MurmurHash } = {};
7436

75-
if (clearExistingStyles) {
37+
const TextStyles = (getDefaultBridge: () => PlatformBridge) => ({
38+
registerStyle(
39+
name: string,
40+
style: TextStyle,
41+
platformBridge: PlatformBridge = getDefaultBridge(),
42+
) {
43+
const safeStyle = pick(style, INHERITABLE_FONT_STYLES);
44+
const hash = hashStyle(safeStyle);
45+
const sketchStyle = makeTextStyle(safeStyle, null, platformBridge);
46+
const sharedObjectID = sharedTextStyles.addStyle(name, sketchStyle);
47+
48+
// FIXME(gold): side effect :'(
49+
_byName[name] = hash;
50+
51+
_styles[hash] = {
52+
cssStyle: safeStyle,
53+
name,
54+
sketchStyle,
55+
sharedObjectID,
56+
};
57+
},
58+
59+
create(
60+
styles: { [key: string]: TextStyle },
61+
options: Options = {},
62+
platformBridge: PlatformBridge = getDefaultBridge(),
63+
) {
64+
const { clearExistingStyles, document } = options;
65+
66+
const doc = getDocument(document);
67+
68+
if (isRunningInSketch() && parseInt(getSketchVersion()) < 50) {
69+
doc.showMessage('💎 Requires Sketch 50+ 💎');
70+
return {};
71+
}
72+
73+
sharedTextStyles.setDocument(doc);
74+
75+
if (clearExistingStyles) {
76+
_styles = {};
77+
sharedTextStyles.setStyles([]);
78+
}
79+
80+
Object.keys(styles).forEach(name => this.registerStyle(name, styles[name], platformBridge));
81+
82+
return _styles;
83+
},
84+
85+
resolve(style: TextStyle): RegisteredStyle | undefined {
86+
const safeStyle = pick(style, INHERITABLE_FONT_STYLES);
87+
const hash = hashStyle(safeStyle);
88+
89+
return _styles[hash];
90+
},
91+
92+
get(
93+
name: string,
94+
document?: SketchDocumentData | SketchDocument | WrappedSketchDocument,
95+
): TextStyle | undefined {
96+
const hash = _byName[name];
97+
const style = _styles[hash];
98+
99+
if (style) {
100+
return style.cssStyle;
101+
}
102+
103+
return sharedTextStyles.getStyle(name, document ? getDocument(document) : undefined);
104+
},
105+
106+
clear(): void {
76107
_styles = {};
77108
sharedTextStyles.setStyles([]);
78-
}
79-
80-
Object.keys(styles).forEach(name => registerStyle(name, styles[name], platformBridge));
81-
82-
return _styles;
83-
};
84-
85-
const resolve = (style: TextStyle): RegisteredStyle | undefined => {
86-
const safeStyle = pick(style, INHERITABLE_FONT_STYLES);
87-
const hash = hashStyle(safeStyle);
88-
89-
return _styles[hash];
90-
};
91-
92-
const get = (
93-
name: string,
94-
document?: SketchDocumentData | SketchDocument | WrappedSketchDocument,
95-
): TextStyle | undefined => {
96-
const hash = _byName[name];
97-
const style = _styles[hash];
98-
99-
if (style) {
100-
return style.cssStyle;
101-
}
102-
103-
return sharedTextStyles.getStyle(name, document ? getDocument(document) : undefined);
104-
};
105-
106-
const clear = () => {
107-
_styles = {};
108-
sharedTextStyles.setStyles([]);
109-
};
110-
111-
const toJSON = (): FileFormat.SharedStyle[] =>
112-
Object.keys(_styles).map(k => ({
113-
_class: 'sharedStyle',
114-
do_objectID: _styles[k].sharedObjectID,
115-
name: _styles[k].name,
116-
value: _styles[k].sketchStyle,
117-
}));
118-
119-
const styles = () => _styles;
120-
121-
const TextStyles = {
122-
create,
123-
resolve,
124-
get,
125-
styles,
126-
clear,
127-
toJSON,
128-
};
109+
},
110+
111+
toJSON(): FileFormat.SharedStyle[] {
112+
return Object.keys(_styles).map(k => ({
113+
_class: 'sharedStyle',
114+
do_objectID: _styles[k].sharedObjectID,
115+
name: _styles[k].name,
116+
value: _styles[k].sketchStyle,
117+
}));
118+
},
119+
120+
styles() {
121+
return _styles;
122+
},
123+
});
129124

130125
export default TextStyles;

src/symbol.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { renderLayers } from './render';
1313
import { resetLayer } from './resets';
1414
import { getDocumentData } from './utils/getDocument';
1515
import { SketchDocumentData, SketchDocument, WrappedSketchDocument, PlatformBridge } from './types';
16-
import getDefaultBridge from './platformBridges/getDefaultBridge';
1716
import isRunningInSketch from './utils/isRunningInSketch';
1817

1918
let id = 0;

0 commit comments

Comments
 (0)