From 7f1180083fd07e64363c219e21e1abf66315ce3f Mon Sep 17 00:00:00 2001 From: cha0s Date: Tue, 26 Jan 2021 23:25:28 -0600 Subject: [PATCH] feat: auto styles --- config/.neutrinorc.js | 5 ++++ packages/core/src/client/index.js | 26 ------------------- .../{client => }/components/number/index.jsx | 2 -- .../{client => }/components/number/index.scss | 0 .../{client => }/components/range/index.jsx | 2 -- .../{client => }/components/range/index.scss | 0 .../{client => components}/stage/index.jsx | 2 -- .../binary => components/stage}/index.scss | 0 .../components/vector-range/index.jsx | 2 -- .../components/vector-range/index.scss | 0 .../{client => }/components/vector/index.jsx | 6 +++-- .../{client => }/components/vector/index.scss | 0 packages/core/src/index.js | 20 ++++++++++++++ .../binary/index.jsx | 15 ++++++++--- .../binary}/index.scss | 0 .../image/index.jsx | 7 ++--- .../image/index.scss | 0 .../text/index.jsx | 7 ++--- .../text/index.scss | 0 packages/entity/.neutrinorc.js | 4 +++ packages/entity/src/client/index.js | 26 ------------------- packages/entity/src/index.js | 24 +++++++++++++++++ .../entity}/index.jsx | 7 ++--- .../entity}/index.scss | 0 .../entity}/stage/index.jsx | 4 +-- .../entity}/stage/index.scss | 0 .../entity}/traits/index.jsx | 2 -- .../entity}/traits/index.scss | 0 .../entity}/view/index.jsx | 9 ++++--- .../entity}/view/index.scss | 0 .../entity/src/trait-renderers/emitted.jsx | 4 +-- .../entity/src/trait-renderers/emitter.jsx | 2 -- .../src/trait-renderers/emitter/particle.jsx | 6 ++--- .../entity/src/trait-renderers/existent.jsx | 2 -- 34 files changed, 90 insertions(+), 94 deletions(-) rename packages/core/src/{client => }/components/number/index.jsx (98%) rename packages/core/src/{client => }/components/number/index.scss (100%) rename packages/core/src/{client => }/components/range/index.jsx (98%) rename packages/core/src/{client => }/components/range/index.scss (100%) rename packages/core/src/{client => components}/stage/index.jsx (97%) rename packages/core/src/{client/renderers/binary => components/stage}/index.scss (100%) rename packages/core/src/{client => }/components/vector-range/index.jsx (98%) rename packages/core/src/{client => }/components/vector-range/index.scss (100%) rename packages/core/src/{client => }/components/vector/index.jsx (95%) rename packages/core/src/{client => }/components/vector/index.scss (100%) rename packages/core/src/{client/renderers => resource-renderers}/binary/index.jsx (79%) rename packages/core/src/{client/stage => resource-renderers/binary}/index.scss (100%) rename packages/core/src/{client/renderers => resource-renderers}/image/index.jsx (88%) rename packages/core/src/{client/renderers => resource-renderers}/image/index.scss (100%) rename packages/core/src/{client/renderers => resource-renderers}/text/index.jsx (85%) rename packages/core/src/{client/renderers => resource-renderers}/text/index.scss (100%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/index.jsx (94%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/index.scss (100%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/stage/index.jsx (93%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/stage/index.scss (100%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/traits/index.jsx (98%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/traits/index.scss (100%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/view/index.jsx (82%) rename packages/entity/src/{entity-renderer => resource-renderers/entity}/view/index.scss (100%) diff --git a/config/.neutrinorc.js b/config/.neutrinorc.js index 3ab1f32..1760bba 100644 --- a/config/.neutrinorc.js +++ b/config/.neutrinorc.js @@ -45,6 +45,11 @@ module.exports = { const testEntry = neutrino.config.entry('test').clear(); testPaths.forEach((path) => testEntry.add(path)); } + const cssPaths = glob.sync('./src/**/*.{css,scss}'); + if (cssPaths.length > 0) { + const cssEntry = neutrino.config.entry('index.css').clear(); + cssPaths.forEach((path) => cssEntry.add(path)); + } neutrino.options.output = '.'; react({ clean: false, diff --git a/packages/core/src/client/index.js b/packages/core/src/client/index.js index 518efeb..e69de29 100644 --- a/packages/core/src/client/index.js +++ b/packages/core/src/client/index.js @@ -1,26 +0,0 @@ -import flatten from 'lodash.flatten'; - -import BinaryResourceRenderer from './renderers/binary'; -import ImageResourceRenderer from './renderers/image'; -import TextResourceRenderer from './renderers/text'; - -export {default as Number} from './components/number'; -export {default as Range, rangePropType} from './components/range'; -export {default as Vector, vectorPropType} from './components/vector'; -export {default as VectorRange, vectorRangePropType} from './components/vector-range'; -export {default as Stage} from './stage'; - -export default { - hooks: { - '@latus/core/starting': async (latus) => { - const Renderers = flatten(await latus.invokeOrdered('@persea/core/resource-renderers')); - Renderers.push( - ImageResourceRenderer, - TextResourceRenderer, - BinaryResourceRenderer, - ); - const Renderer = (uri) => Renderers.find(({matcher}) => uri.match(matcher)).Component; - latus.set('%resource-renderers', Renderer); - }, - }, -}; diff --git a/packages/core/src/client/components/number/index.jsx b/packages/core/src/components/number/index.jsx similarity index 98% rename from packages/core/src/client/components/number/index.jsx rename to packages/core/src/components/number/index.jsx index 3e045c0..06833b8 100644 --- a/packages/core/src/client/components/number/index.jsx +++ b/packages/core/src/components/number/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import { PropTypes, React, diff --git a/packages/core/src/client/components/number/index.scss b/packages/core/src/components/number/index.scss similarity index 100% rename from packages/core/src/client/components/number/index.scss rename to packages/core/src/components/number/index.scss diff --git a/packages/core/src/client/components/range/index.jsx b/packages/core/src/components/range/index.jsx similarity index 98% rename from packages/core/src/client/components/range/index.jsx rename to packages/core/src/components/range/index.jsx index 9278f63..5ceab20 100644 --- a/packages/core/src/client/components/range/index.jsx +++ b/packages/core/src/components/range/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import { PropTypes, React, diff --git a/packages/core/src/client/components/range/index.scss b/packages/core/src/components/range/index.scss similarity index 100% rename from packages/core/src/client/components/range/index.scss rename to packages/core/src/components/range/index.scss diff --git a/packages/core/src/client/stage/index.jsx b/packages/core/src/components/stage/index.jsx similarity index 97% rename from packages/core/src/client/stage/index.jsx rename to packages/core/src/components/stage/index.jsx index ca6afb8..4fcaaa9 100644 --- a/packages/core/src/client/stage/index.jsx +++ b/packages/core/src/components/stage/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import {Renderer} from '@avocado/graphics'; import { PropTypes, diff --git a/packages/core/src/client/renderers/binary/index.scss b/packages/core/src/components/stage/index.scss similarity index 100% rename from packages/core/src/client/renderers/binary/index.scss rename to packages/core/src/components/stage/index.scss diff --git a/packages/core/src/client/components/vector-range/index.jsx b/packages/core/src/components/vector-range/index.jsx similarity index 98% rename from packages/core/src/client/components/vector-range/index.jsx rename to packages/core/src/components/vector-range/index.jsx index c93c932..6960613 100644 --- a/packages/core/src/client/components/vector-range/index.jsx +++ b/packages/core/src/components/vector-range/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import { PropTypes, React, diff --git a/packages/core/src/client/components/vector-range/index.scss b/packages/core/src/components/vector-range/index.scss similarity index 100% rename from packages/core/src/client/components/vector-range/index.scss rename to packages/core/src/components/vector-range/index.scss diff --git a/packages/core/src/client/components/vector/index.jsx b/packages/core/src/components/vector/index.jsx similarity index 95% rename from packages/core/src/client/components/vector/index.jsx rename to packages/core/src/components/vector/index.jsx index 5452d51..78a0ee0 100644 --- a/packages/core/src/client/components/vector/index.jsx +++ b/packages/core/src/components/vector/index.jsx @@ -1,6 +1,8 @@ -import './index.scss'; +import { + PropTypes, + React, +} from '@latus/react'; -import {PropTypes, React} from '@latus/react'; import Number from '../number'; const Vector = ({ diff --git a/packages/core/src/client/components/vector/index.scss b/packages/core/src/components/vector/index.scss similarity index 100% rename from packages/core/src/client/components/vector/index.scss rename to packages/core/src/components/vector/index.scss diff --git a/packages/core/src/index.js b/packages/core/src/index.js index 83b2539..7ab226c 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,5 +1,15 @@ +import flatten from 'lodash.flatten'; + +import BinaryResourceRenderer from './resource-renderers/binary'; +import ImageResourceRenderer from './resource-renderers/image'; +import TextResourceRenderer from './resource-renderers/text'; import {projects, user} from './state'; +export {default as Number} from './components/number'; +export {default as Range, rangePropType} from './components/range'; +export {default as Vector, vectorPropType} from './components/vector'; +export {default as VectorRange, vectorRangePropType} from './components/vector-range'; +export {default as Stage} from './components/stage'; export {default as ProjectContext} from './context/project'; export {default as UriContext} from './context/uri'; export {default as useProject} from './hooks/use-project'; @@ -11,6 +21,16 @@ export default { '@latus/core/config': () => ({ 'resource-renderers': [], }), + '@latus/core/starting': async (latus) => { + const Renderers = flatten(await latus.invokeOrdered('@persea/core/resource-renderers')); + Renderers.push( + ImageResourceRenderer, + TextResourceRenderer, + BinaryResourceRenderer, + ); + const Renderer = (uri) => Renderers.find(({matcher}) => uri.match(matcher)).Component; + latus.set('%resource-renderers', Renderer); + }, '@latus/redux/slices': () => ({ projects, user, diff --git a/packages/core/src/client/renderers/binary/index.jsx b/packages/core/src/resource-renderers/binary/index.jsx similarity index 79% rename from packages/core/src/client/renderers/binary/index.jsx rename to packages/core/src/resource-renderers/binary/index.jsx index 96c5492..fe22cd2 100644 --- a/packages/core/src/client/renderers/binary/index.jsx +++ b/packages/core/src/resource-renderers/binary/index.jsx @@ -1,6 +1,7 @@ -import './index.scss'; - -import {PropTypes, React} from '@latus/react'; +import { + PropTypes, + React, +} from '@latus/react'; import HexEditor from 'react-hex-editor'; import oneDarkPro from 'react-hex-editor/themes/oneDarkPro'; @@ -32,8 +33,16 @@ export default class BinaryResourceRenderer { ); } + static encode(buffer) { + return buffer.toString('base64'); + } + static get matcher() { return /.*/; } + static decode(encoded) { + return Buffer.from(encoded, 'base64'); + } + } diff --git a/packages/core/src/client/stage/index.scss b/packages/core/src/resource-renderers/binary/index.scss similarity index 100% rename from packages/core/src/client/stage/index.scss rename to packages/core/src/resource-renderers/binary/index.scss diff --git a/packages/core/src/client/renderers/image/index.jsx b/packages/core/src/resource-renderers/image/index.jsx similarity index 88% rename from packages/core/src/client/renderers/image/index.jsx rename to packages/core/src/resource-renderers/image/index.jsx index 9a937c0..a01834d 100644 --- a/packages/core/src/client/renderers/image/index.jsx +++ b/packages/core/src/resource-renderers/image/index.jsx @@ -1,6 +1,7 @@ -import './index.scss'; - -import {PropTypes, React} from '@latus/react'; +import { + PropTypes, + React, +} from '@latus/react'; const ImageRendererComponent = ({buffer}) => (
diff --git a/packages/core/src/client/renderers/image/index.scss b/packages/core/src/resource-renderers/image/index.scss similarity index 100% rename from packages/core/src/client/renderers/image/index.scss rename to packages/core/src/resource-renderers/image/index.scss diff --git a/packages/core/src/client/renderers/text/index.jsx b/packages/core/src/resource-renderers/text/index.jsx similarity index 85% rename from packages/core/src/client/renderers/text/index.jsx rename to packages/core/src/resource-renderers/text/index.jsx index d1dca45..4a74d44 100644 --- a/packages/core/src/client/renderers/text/index.jsx +++ b/packages/core/src/resource-renderers/text/index.jsx @@ -1,6 +1,7 @@ -import './index.scss'; - -import {PropTypes, React} from '@latus/react'; +import { + PropTypes, + React, +} from '@latus/react'; const TextRendererComponent = ({buffer}) => (
{buffer.toString()}
diff --git a/packages/core/src/client/renderers/text/index.scss b/packages/core/src/resource-renderers/text/index.scss similarity index 100% rename from packages/core/src/client/renderers/text/index.scss rename to packages/core/src/resource-renderers/text/index.scss diff --git a/packages/entity/.neutrinorc.js b/packages/entity/.neutrinorc.js index d6c3d9d..bfa7912 100644 --- a/packages/entity/.neutrinorc.js +++ b/packages/entity/.neutrinorc.js @@ -1 +1,5 @@ module.exports = require('../../config/.neutrinorc'); + +module.exports.use.push((neutrino) => { + neutrino.config.entry('index.css').prepend('react-tabs/style/react-tabs.scss'); +}); diff --git a/packages/entity/src/client/index.js b/packages/entity/src/client/index.js index a9c287b..e69de29 100644 --- a/packages/entity/src/client/index.js +++ b/packages/entity/src/client/index.js @@ -1,26 +0,0 @@ -import 'react-tabs/style/react-tabs.css'; - -import {basename, extname} from 'path'; - -import {camelCase} from '@latus/core'; - -import EntityRenderer from '../entity-renderer'; - -export default { - hooks: { - '@latus/core/starting': async (latus) => { - const TraitRenderers = latus.invokeReduce('@persea/entity/trait-renderers'); - latus.set('%trait-renderers', TraitRenderers); - }, - '@persea/core/resource-renderers': () => [ - EntityRenderer, - ], - '@persea/entity/trait-renderers': () => { - const context = require.context('../trait-renderers', false, /\.jsx$/); - return context.keys().reduce((r, key) => ({ - ...r, - [camelCase(basename(key, extname(key)))]: context(key).default, - }), {}); - }, - }, -}; diff --git a/packages/entity/src/index.js b/packages/entity/src/index.js index e69de29..6c31be5 100644 --- a/packages/entity/src/index.js +++ b/packages/entity/src/index.js @@ -0,0 +1,24 @@ +import {basename, extname} from 'path'; + +import {camelCase} from '@latus/core'; + +import EntityRenderer from './resource-renderers/entity'; + +export default { + hooks: { + '@latus/core/starting': async (latus) => { + const TraitRenderers = latus.invokeReduce('@persea/entity/trait-renderers'); + latus.set('%trait-renderers', TraitRenderers); + }, + '@persea/core/resource-renderers': () => [ + EntityRenderer, + ], + '@persea/entity/trait-renderers': () => { + const context = require.context('./trait-renderers', false, /\.jsx$/); + return context.keys().reduce((r, key) => ({ + ...r, + [camelCase(basename(key, extname(key)))]: context(key).default, + }), {}); + }, + }, +}; diff --git a/packages/entity/src/entity-renderer/index.jsx b/packages/entity/src/resource-renderers/entity/index.jsx similarity index 94% rename from packages/entity/src/entity-renderer/index.jsx rename to packages/entity/src/resource-renderers/entity/index.jsx index 4520e0a..b0dd167 100644 --- a/packages/entity/src/entity-renderer/index.jsx +++ b/packages/entity/src/resource-renderers/entity/index.jsx @@ -1,8 +1,9 @@ -import './index.scss'; - import {join} from 'path'; -import {PropTypes, React} from '@latus/react'; +import { + PropTypes, + React, +} from '@latus/react'; import { Tab, Tabs, diff --git a/packages/entity/src/entity-renderer/index.scss b/packages/entity/src/resource-renderers/entity/index.scss similarity index 100% rename from packages/entity/src/entity-renderer/index.scss rename to packages/entity/src/resource-renderers/entity/index.scss diff --git a/packages/entity/src/entity-renderer/stage/index.jsx b/packages/entity/src/resource-renderers/entity/stage/index.jsx similarity index 93% rename from packages/entity/src/entity-renderer/stage/index.jsx rename to packages/entity/src/resource-renderers/entity/stage/index.jsx index 17550b4..0cf2ddb 100644 --- a/packages/entity/src/entity-renderer/stage/index.jsx +++ b/packages/entity/src/resource-renderers/entity/stage/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import {Rectangle, Vector} from '@avocado/math'; import { PropTypes, @@ -7,7 +5,7 @@ import { useEffect, useState, } from '@latus/react'; -import {Stage} from '@persea/core/client'; +import {Stage} from '@persea/core'; const EntityStage = ({entity}) => { const [size, setSize] = useState([0, 0]); diff --git a/packages/entity/src/entity-renderer/stage/index.scss b/packages/entity/src/resource-renderers/entity/stage/index.scss similarity index 100% rename from packages/entity/src/entity-renderer/stage/index.scss rename to packages/entity/src/resource-renderers/entity/stage/index.scss diff --git a/packages/entity/src/entity-renderer/traits/index.jsx b/packages/entity/src/resource-renderers/entity/traits/index.jsx similarity index 98% rename from packages/entity/src/entity-renderer/traits/index.jsx rename to packages/entity/src/resource-renderers/entity/traits/index.jsx index 07ae2b8..a443742 100644 --- a/packages/entity/src/entity-renderer/traits/index.jsx +++ b/packages/entity/src/resource-renderers/entity/traits/index.jsx @@ -1,5 +1,3 @@ -import './index.scss'; - import {join} from 'path'; import {Trait as BaseTrait} from '@avocado/traits'; diff --git a/packages/entity/src/entity-renderer/traits/index.scss b/packages/entity/src/resource-renderers/entity/traits/index.scss similarity index 100% rename from packages/entity/src/entity-renderer/traits/index.scss rename to packages/entity/src/resource-renderers/entity/traits/index.scss diff --git a/packages/entity/src/entity-renderer/view/index.jsx b/packages/entity/src/resource-renderers/entity/view/index.jsx similarity index 82% rename from packages/entity/src/entity-renderer/view/index.jsx rename to packages/entity/src/resource-renderers/entity/view/index.jsx index a2f482c..3f5eb47 100644 --- a/packages/entity/src/entity-renderer/view/index.jsx +++ b/packages/entity/src/resource-renderers/entity/view/index.jsx @@ -1,8 +1,9 @@ -import './index.scss'; +import { + PropTypes, + React, +} from '@latus/react'; -import {PropTypes, React} from '@latus/react'; - -import useEntity from '../../hooks/use-entity'; +import useEntity from '../../../hooks/use-entity'; import EntityStage from '../stage'; const View = ({json}) => { diff --git a/packages/entity/src/entity-renderer/view/index.scss b/packages/entity/src/resource-renderers/entity/view/index.scss similarity index 100% rename from packages/entity/src/entity-renderer/view/index.scss rename to packages/entity/src/resource-renderers/entity/view/index.scss diff --git a/packages/entity/src/trait-renderers/emitted.jsx b/packages/entity/src/trait-renderers/emitted.jsx index c5ad9a2..ba15be3 100644 --- a/packages/entity/src/trait-renderers/emitted.jsx +++ b/packages/entity/src/trait-renderers/emitted.jsx @@ -1,5 +1,3 @@ -import './emitted.scss'; - import {join} from 'path'; import { @@ -13,7 +11,7 @@ import { rangePropType, VectorRange, vectorRangePropType, -} from '@persea/core/client'; +} from '@persea/core'; import {useJsonPatcher} from '@persea/json'; const Emitted = ({json, path}) => { diff --git a/packages/entity/src/trait-renderers/emitter.jsx b/packages/entity/src/trait-renderers/emitter.jsx index ed1e699..6fd3557 100644 --- a/packages/entity/src/trait-renderers/emitter.jsx +++ b/packages/entity/src/trait-renderers/emitter.jsx @@ -1,5 +1,3 @@ -import './emitter.scss'; - import {join} from 'path'; import {PropTypes, React} from '@latus/react'; diff --git a/packages/entity/src/trait-renderers/emitter/particle.jsx b/packages/entity/src/trait-renderers/emitter/particle.jsx index 07b625a..8b09719 100644 --- a/packages/entity/src/trait-renderers/emitter/particle.jsx +++ b/packages/entity/src/trait-renderers/emitter/particle.jsx @@ -1,15 +1,13 @@ -import './particle.scss'; - import {EntityListView} from '@avocado/entity'; import { PropTypes, React, useLatus, } from '@latus/react'; -import {Number, Stage} from '@persea/core/client'; +import {Number, Stage} from '@persea/core'; import {useJsonPatcher} from '@persea/json'; -import Entity from '../../entity-renderer'; +import Entity from '../../resource-renderers/entity'; import useEntity from '../../hooks/use-entity'; const emitterJson = { diff --git a/packages/entity/src/trait-renderers/existent.jsx b/packages/entity/src/trait-renderers/existent.jsx index 3673a4a..1fb90ad 100644 --- a/packages/entity/src/trait-renderers/existent.jsx +++ b/packages/entity/src/trait-renderers/existent.jsx @@ -1,5 +1,3 @@ -import './existent.scss'; - import {join} from 'path'; import {PropTypes, React} from '@latus/react';