Skip to content

Commit c811c4b

Browse files
Display in widget preview the theme style
1 parent 90485ae commit c811c4b

File tree

9 files changed

+35
-11
lines changed

9 files changed

+35
-11
lines changed

public/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>Widget Builder</title>
7+
<link href="" id="theme-host-stylesheet" rel="stylesheet"/>
78
</head>
89
<body>
910
<div id="root"></div>

src/cli/create/starterTemplate.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import startWidgetBuilder from '../../server';
1010

1111
const createStarterTemplate = () => {
1212
const program = new Command('create');
13+
const themeHost = process.env.WIDGET_BUILDER_THEME_HOST ? process.env.WIDGET_BUILDER_THEME_HOST : 'http://localhost:3000';
1314

1415
program
1516
.arguments('<widget-template-name>')
@@ -27,7 +28,7 @@ const createStarterTemplate = () => {
2728
try {
2829
const widgetTemplateDir = path.resolve(`./${name}`);
2930
createStarterWidgetTemplate.generate(name);
30-
startWidgetBuilder(widgetTemplateDir, { autoOpen: true });
31+
startWidgetBuilder(widgetTemplateDir, { autoOpen: true }, themeHost);
3132
} catch (e) {
3233
log.error(e.message);
3334
}

src/cli/run/start.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import AUTH_CONFIG from '../../services/auth/authConfig';
1010

1111
const startCommand = () => {
1212
const program = new Command('start');
13+
const themeHost = process.env.WIDGET_BUILDER_THEME_HOST ? process.env.WIDGET_BUILDER_THEME_HOST : 'http://localhost:3000';
1314

1415
return program
1516
.arguments('[widgetPath]')
@@ -31,7 +32,7 @@ const startCommand = () => {
3132
widgetDir += `/${widgetPath}`;
3233
}
3334

34-
startWidgetBuilder(widgetDir, options);
35+
startWidgetBuilder(widgetDir, options, themeHost);
3536
});
3637
};
3738

src/client/components/App/App.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ export class App extends Component<{}, {}> {
2525
this.socket.on('disconnect', () => {
2626
this.socket = undefined;
2727
});
28+
29+
this.socket.on('event', (data: SocketData) => {
30+
// const stylesheetTag = document.createElement('link');
31+
// stylesheetTag.rel = 'stylesheet';
32+
// stylesheetTag.href = `${data.themeHost}/stencil/00000000-0000-0000-0000-000000000001/css/theme-00000000-0000-0000-0000-000000000001.css`;
33+
// document.head.appendChild(stylesheetTag);
34+
const elem = document.getElementById('theme-host-stylesheet');
35+
if (elem) {
36+
elem.setAttribute('href', `${data.themeHost}/stencil/00000000-0000-0000-0000-000000000001/css/theme-00000000-0000-0000-0000-000000000001.css`);
37+
}
38+
});
2839
}
2940

3041
mountWidget(html: string) {

src/server/index.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ interface Watcher {
2323
directory: string;
2424
sockets: Socket[];
2525
options: Options;
26+
themeHost: string;
2627
}
2728

28-
function setupFileWatcher({ directory, sockets, options }: Watcher) {
29+
function setupFileWatcher({
30+
directory, sockets, options, themeHost,
31+
}: Watcher) {
2932
chokidar.watch(directory).on('all', (fileEvent: string, filePath: string) => {
3033
// We only care about change events
3134
if (fileEvent !== 'change') { return; }
@@ -38,15 +41,15 @@ function setupFileWatcher({ directory, sockets, options }: Watcher) {
3841
case WidgetFileType.CONFIGURATION:
3942
case WidgetFileType.QUERY:
4043
liveReload({
41-
directory, sockets, fileEvent, filePath, options,
44+
directory, sockets, fileEvent, filePath, options, themeHost,
4245
});
4346
break;
4447

4548
case WidgetFileType.QUERY_PARAMS_BUILDER:
4649
validateQueryParamsBuilder(directory);
4750

4851
liveReload({
49-
directory, sockets, fileEvent, filePath, options,
52+
directory, sockets, fileEvent, filePath, options, themeHost,
5053
});
5154
break;
5255

@@ -57,7 +60,7 @@ function setupFileWatcher({ directory, sockets, options }: Watcher) {
5760
generateConfig(directory);
5861

5962
liveReload({
60-
directory, sockets, fileEvent, filePath, options,
63+
directory, sockets, fileEvent, filePath, options, themeHost,
6164
});
6265

6366
break;
@@ -71,7 +74,7 @@ function setupFileWatcher({ directory, sockets, options }: Watcher) {
7174
});
7275
}
7376

74-
export default function startWidgetBuilder(directory: string, options: Options) {
77+
export default function startWidgetBuilder(directory: string, options: Options, themeHost: string) {
7578
const app = express();
7679
app.use(express.static(path.join(__dirname, '../', 'client')));
7780

@@ -102,6 +105,7 @@ export default function startWidgetBuilder(directory: string, options: Options)
102105
event: 'initialize',
103106
html,
104107
path: '',
108+
themeHost,
105109
},
106110
});
107111
})
@@ -132,5 +136,6 @@ export default function startWidgetBuilder(directory: string, options: Options)
132136
directory,
133137
sockets,
134138
options,
139+
themeHost,
135140
});
136141
}

src/services/auth/generate.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ WIDGET_BUILDER_AUTH_ID=${config.clientId}
1818
WIDGET_BUILDER_AUTH_TOKEN=${config.accessToken}
1919
WIDGET_BUILDER_CHANNEL_ID=1
2020
WIDGET_BUILDER_API_GATEWAY_BASE=${config.apiPath.replace(/\/$/, '')}
21+
WIDGET_BUILDER_THEME_HOST=http://localhost:3000
2122
`;
2223

2324

src/services/auth/generate.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ WIDGET_BUILDER_AUTH_ID=${clientId}
2020
WIDGET_BUILDER_AUTH_TOKEN=${accessToken}
2121
WIDGET_BUILDER_CHANNEL_ID=1
2222
WIDGET_BUILDER_API_GATEWAY_BASE=${apiPath.replace(/\/$/, '')}
23+
WIDGET_BUILDER_THEME_HOST=http://localhost:3000
2324
`;
2425

2526
try {

src/services/broadcast/liveReload.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ interface WidgetChangeBroadcast {
1111
sockets: Socket[];
1212
fileEvent: string;
1313
filePath: string;
14+
themeHost: string;
1415
}
1516

1617
export interface Options {
@@ -24,7 +25,7 @@ interface LiveReloadPayload extends WidgetChangeBroadcast {
2425
}
2526

2627
const broadcastWidgetChange = ({
27-
directory, sockets, fileEvent, filePath,
28+
directory, sockets, fileEvent, filePath, themeHost,
2829
}: WidgetChangeBroadcast) => {
2930
renderWidget(directory)
3031
.then((html: string) => {
@@ -34,6 +35,7 @@ const broadcastWidgetChange = ({
3435
event: fileEvent,
3536
html,
3637
path: filePath,
38+
themeHost,
3739
},
3840
});
3941
log.info(messages.rerenderWidget());
@@ -44,20 +46,20 @@ const broadcastWidgetChange = ({
4446
};
4547

4648
export default function liveReload({
47-
directory, sockets, fileEvent, filePath, options,
49+
directory, sockets, fileEvent, filePath, options, themeHost,
4850
}: LiveReloadPayload) {
4951
if (options && options.genQueryParams) {
5052
generateQueryParams(directory)
5153
.then(() => {
5254
broadcastWidgetChange({
53-
directory, sockets, fileEvent, filePath,
55+
directory, sockets, fileEvent, filePath, themeHost,
5456
});
5557
});
5658

5759
return;
5860
}
5961

6062
broadcastWidgetChange({
61-
directory, sockets, fileEvent, filePath,
63+
directory, sockets, fileEvent, filePath, themeHost,
6264
});
6365
}

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface SocketData {
1818
event: string;
1919
html: string;
2020
path: string;
21+
themeHost: string;
2122
}
2223

2324
export default WidgetFileType;

0 commit comments

Comments
 (0)