diff --git a/.pnp.js b/.pnp.js index 6850dcf1c..c280797d7 100755 --- a/.pnp.js +++ b/.pnp.js @@ -3892,6 +3892,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@apollo/link-retry", "npm:2.0.0-beta.3"], ["@babel/core", "npm:7.11.6"], ["@babel/preset-react", "virtual:22157ea722f8d6428f1fcf0a6f7f6c7d6b902d9c785256c60a65fe6cd0db76ebccc7c1457ee047df0ba6909ff018e300c4f4957a60f5b670089810dfc417af9b#npm:7.10.4"], + ["@lowdefy/block-tools", "workspace:packages/blockTools"], ["babel-loader", "virtual:e7dd2bdbec1b3ec399e5f3318d0a58728583b58181f43cb8f4f372a1b2b9707e2ffcf76bd80aad3c5c64a731754028a8070020628ca4fa0a02fe260c179762ae#npm:8.1.0"], ["bundle-loader", "npm:0.5.6"], ["graphql", "npm:15.3.0"], diff --git a/packages/blockTools/package.json b/packages/blockTools/package.json index 488b098e0..aebe6d4a3 100644 --- a/packages/blockTools/package.json +++ b/packages/blockTools/package.json @@ -1,6 +1,6 @@ { "name": "@lowdefy/block-tools", - "version": "1.0.0", + "version": "1.0.1-experimental.1", "licence": "Apache-2.0", "description": "Lowdefy Block Tools", "homepage": "https://lowdefy.com", diff --git a/packages/blockTools/src/connectBlock.js b/packages/blockTools/src/connectBlock.js index a18e2c5d0..f0daa3dc2 100644 --- a/packages/blockTools/src/connectBlock.js +++ b/packages/blockTools/src/connectBlock.js @@ -15,10 +15,11 @@ */ import React from 'react'; +import makeCssClass from './makeCssClass'; const defaultMethods = (methods) => ({ + makeCssClass, callAction: methods.callAction || (() => undefined), - makeCss: methods.makeCss || (() => undefined), registerAction: methods.registerAction || (() => undefined), registerMethod: methods.registerMethod || (() => undefined), ...methods, diff --git a/packages/blockTools/src/emotion.js b/packages/blockTools/src/emotion.js index 5d91657c8..19b9a26f6 100644 --- a/packages/blockTools/src/emotion.js +++ b/packages/blockTools/src/emotion.js @@ -17,16 +17,16 @@ import createEmotion from 'create-emotion'; const windowContext = window || {}; -let emotion; -// memoize emotion -if (!windowContext.emotion) { +const initEmotion = () => { const { css, injectGlobal } = createEmotion({ container: document.getElementById('emotion'), }); - emotion = { css, injectGlobal }; -} else { - emotion = windowContext.emotion; -} + windowContext.emotion = { css, injectGlobal }; +}; -export default emotion; +const getEmotionCss = () => { + return windowContext.emotion.css; +}; + +export { initEmotion, getEmotionCss }; diff --git a/packages/blockTools/src/index.js b/packages/blockTools/src/index.js index 4f58e35ea..00e1f708f 100644 --- a/packages/blockTools/src/index.js +++ b/packages/blockTools/src/index.js @@ -15,10 +15,18 @@ */ import connectBlock from './connectBlock'; -import emotion from './emotion'; +import { getEmotionCss, initEmotion } from './emotion'; import ErrorBoundary from './ErrorBoundary'; import makeCssClass from './makeCssClass.js'; import mediaToCssObject from './mediaToCssObject.js'; import useRunAfterUpdate from './useRunAfterUpdate'; -export { connectBlock, emotion, ErrorBoundary, makeCssClass, mediaToCssObject, useRunAfterUpdate }; +export { + connectBlock, + ErrorBoundary, + getEmotionCss, + initEmotion, + makeCssClass, + mediaToCssObject, + useRunAfterUpdate, +}; diff --git a/packages/blockTools/src/makeCssClass.js b/packages/blockTools/src/makeCssClass.js index c11d75ebf..a396f3dbd 100644 --- a/packages/blockTools/src/makeCssClass.js +++ b/packages/blockTools/src/makeCssClass.js @@ -16,11 +16,13 @@ import { mergeObjects } from '@lowdefy/helpers'; import mediaToCssObject from './mediaToCssObject'; -import emotion from './emotion'; +import { getEmotionCss } from './emotion'; -const makeCssClass = (styles, options = {}) => - options.styleObjectOnly +const makeCssClass = (styles, options = {}) => { + const css = getEmotionCss(); + return options.styleObjectOnly ? mediaToCssObject(mergeObjects(styles), options) - : emotion.css(mediaToCssObject(mergeObjects(styles), options)); + : css(mediaToCssObject(mergeObjects(styles), options)); +}; export default makeCssClass; diff --git a/packages/blockTools/tests/makeCssClass.test.js b/packages/blockTools/tests/makeCssClass.test.js index 34a13664b..6406b10f5 100644 --- a/packages/blockTools/tests/makeCssClass.test.js +++ b/packages/blockTools/tests/makeCssClass.test.js @@ -15,6 +15,7 @@ */ import makeCssClass from '../src/makeCssClass'; +import { initEmotion } from '../src/emotion'; const mockCss = jest.fn(); const mockCssImp = (obj) => ({ @@ -28,6 +29,7 @@ jest.mock('create-emotion', () => () => ({ beforeEach(() => { mockCss.mockReset(); mockCss.mockImplementation(mockCssImp); + initEmotion(); }); test('object with no media', () => { diff --git a/packages/express/server.js b/packages/express/server.js index 96cae51ce..5a02b01e3 100644 --- a/packages/express/server.js +++ b/packages/express/server.js @@ -37,4 +37,4 @@ const app = express(); server.applyMiddleware({ app }); app.use(express.static('shell/dist')); -app.listen({ port: 4000 }, () => console.log(`🚀 Server ready at http://localhost:4000`)); +app.listen({ port: 3000 }, () => console.log(`🚀 Server ready at http://localhost:3000`)); diff --git a/packages/express/shell/src/Shell.js b/packages/express/shell/src/Shell.js index ff51cd9c4..143bfb1c1 100644 --- a/packages/express/shell/src/Shell.js +++ b/packages/express/shell/src/Shell.js @@ -20,7 +20,7 @@ import useDynamicScript from './utils/useDynamicScript'; function Engine() { const { ready, failed } = useDynamicScript({ - url: 'https://unpkg.com/nxjdkxbp/dist/remoteEntry.js', + url: 'http://localhost:3001/remoteEntry.js', }); if (!ready) { @@ -31,7 +31,7 @@ function Engine() { return