Newer
Older
David Sehnal
committed
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { PluginContext } from './context';
import { Plugin } from './ui/plugin'
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { PluginCommands } from './command';
function getParam(name: string, regex: string): string {
let r = new RegExp(`${name}=(${regex})[&]?`, 'i');
return decodeURIComponent(((window.location.search || '').match(r) || [])[1] || '');
}
export function createPlugin(target: HTMLElement): PluginContext {
const ctx = new PluginContext();
ReactDOM.render(React.createElement(Plugin, { plugin: ctx }), target);
try {
trySetSnapshot(ctx);
} catch (e) {
console.warn('Failed to load snapshot', e);
}
}
function trySetSnapshot(ctx: PluginContext) {
const snapshotUrl = getParam('snapshot-url', `[^&]+`);
if (!snapshotUrl) return;
// const data = JSON.parse(atob(snapshot));
// setTimeout(() => ctx.state.setSnapshot(data), 250);
PluginCommands.State.Snapshots.Fetch.dispatch(ctx, { url: snapshotUrl })