refactor: resource controllers
This commit is contained in:
parent
7f1180083f
commit
a54b9b8230
|
@ -11,7 +11,7 @@ import {resourceSelector, UriContext} from '@persea/core';
|
|||
const Resource = ({uri, uuid}) => {
|
||||
const latus = useLatus();
|
||||
const resource = useSelector((state) => resourceSelector(state, `${uuid}${uri}`));
|
||||
const Component = latus.get('%resource-renderers')(uri);
|
||||
const {Component} = latus.get('%resource-controllers')(uri);
|
||||
const buffer = Buffer.from(resource, 'base64');
|
||||
return (
|
||||
<div className="resource">
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import flatten from 'lodash.flatten';
|
||||
|
||||
import BinaryResourceRenderer from './resource-renderers/binary';
|
||||
import ImageResourceRenderer from './resource-renderers/image';
|
||||
import TextResourceRenderer from './resource-renderers/text';
|
||||
import BinaryResource from './resource-controllers/binary';
|
||||
import ImageResource from './resource-controllers/image';
|
||||
import TextResource from './resource-controllers/text';
|
||||
import {projects, user} from './state';
|
||||
|
||||
export {default as Number} from './components/number';
|
||||
|
@ -19,17 +19,17 @@ export * from './state';
|
|||
export default {
|
||||
hooks: {
|
||||
'@latus/core/config': () => ({
|
||||
'resource-renderers': [],
|
||||
'resource-controllers': [],
|
||||
}),
|
||||
'@latus/core/starting': async (latus) => {
|
||||
const Renderers = flatten(await latus.invokeOrdered('@persea/core/resource-renderers'));
|
||||
Renderers.push(
|
||||
ImageResourceRenderer,
|
||||
TextResourceRenderer,
|
||||
BinaryResourceRenderer,
|
||||
const Controllers = flatten(await latus.invokeOrdered('@persea/core/resource-controllers'));
|
||||
Controllers.push(
|
||||
ImageResource,
|
||||
TextResource,
|
||||
BinaryResource,
|
||||
);
|
||||
const Renderer = (uri) => Renderers.find(({matcher}) => uri.match(matcher)).Component;
|
||||
latus.set('%resource-renderers', Renderer);
|
||||
const Controller = (uri) => Controllers.find(({matcher}) => uri.match(matcher));
|
||||
latus.set('%resource-controllers', Controller);
|
||||
},
|
||||
'@latus/redux/slices': () => ({
|
||||
projects,
|
||||
|
|
|
@ -5,7 +5,7 @@ import {
|
|||
import HexEditor from 'react-hex-editor';
|
||||
import oneDarkPro from 'react-hex-editor/themes/oneDarkPro';
|
||||
|
||||
const BinaryRendererComponent = ({buffer}) => (
|
||||
const BinaryComponent = ({buffer}) => (
|
||||
<HexEditor
|
||||
className="binary-renderer"
|
||||
columns={0x10}
|
||||
|
@ -18,18 +18,18 @@ const BinaryRendererComponent = ({buffer}) => (
|
|||
/>
|
||||
);
|
||||
|
||||
BinaryRendererComponent.propTypes = {
|
||||
BinaryComponent.propTypes = {
|
||||
buffer: PropTypes.shape({
|
||||
buffer: PropTypes.shape({}),
|
||||
length: PropTypes.number,
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
export default class BinaryResourceRenderer {
|
||||
export default class BinaryController {
|
||||
|
||||
static Component({buffer}) {
|
||||
return (
|
||||
<BinaryRendererComponent buffer={buffer} />
|
||||
<BinaryComponent buffer={buffer} />
|
||||
);
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@ import {
|
|||
React,
|
||||
} from '@latus/react';
|
||||
|
||||
const ImageRendererComponent = ({buffer}) => (
|
||||
const ImageComponent = ({buffer}) => (
|
||||
<div className="image-renderer">
|
||||
<div
|
||||
className="holder"
|
||||
|
@ -12,17 +12,17 @@ const ImageRendererComponent = ({buffer}) => (
|
|||
</div>
|
||||
);
|
||||
|
||||
ImageRendererComponent.propTypes = {
|
||||
ImageComponent.propTypes = {
|
||||
buffer: PropTypes.shape({
|
||||
toString: PropTypes.func,
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
export default class ImageResourceRenderer {
|
||||
export default class ImageController {
|
||||
|
||||
static Component({buffer}) {
|
||||
return (
|
||||
<ImageRendererComponent buffer={buffer} />
|
||||
<ImageComponent buffer={buffer} />
|
||||
);
|
||||
}
|
||||
|
|
@ -3,21 +3,21 @@ import {
|
|||
React,
|
||||
} from '@latus/react';
|
||||
|
||||
const TextRendererComponent = ({buffer}) => (
|
||||
const TextComponent = ({buffer}) => (
|
||||
<div className="text-renderer">{buffer.toString()}</div>
|
||||
);
|
||||
|
||||
TextRendererComponent.propTypes = {
|
||||
TextComponent.propTypes = {
|
||||
buffer: PropTypes.shape({
|
||||
toString: PropTypes.func,
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
export default class TextResourceRenderer {
|
||||
export default class TextController {
|
||||
|
||||
static Component({buffer}) {
|
||||
return (
|
||||
<TextRendererComponent buffer={buffer} />
|
||||
<TextComponent buffer={buffer} />
|
||||
);
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ import {basename, extname} from 'path';
|
|||
|
||||
import {camelCase} from '@latus/core';
|
||||
|
||||
import EntityRenderer from './resource-renderers/entity';
|
||||
import EntityController from './resource-controllers/entity';
|
||||
|
||||
export default {
|
||||
hooks: {
|
||||
|
@ -10,8 +10,8 @@ export default {
|
|||
const TraitRenderers = latus.invokeReduce('@persea/entity/trait-renderers');
|
||||
latus.set('%trait-renderers', TraitRenderers);
|
||||
},
|
||||
'@persea/core/resource-renderers': () => [
|
||||
EntityRenderer,
|
||||
'@persea/core/resource-controllers': () => [
|
||||
EntityController,
|
||||
],
|
||||
'@persea/entity/trait-renderers': () => {
|
||||
const context = require.context('./trait-renderers', false, /\.jsx$/);
|
||||
|
|
|
@ -14,7 +14,7 @@ import {
|
|||
import Traits from './traits';
|
||||
import View from './view';
|
||||
|
||||
const EntityRendererComponent = ({
|
||||
const EntityComponent = ({
|
||||
buffer,
|
||||
path,
|
||||
}) => {
|
||||
|
@ -44,23 +44,23 @@ const EntityRendererComponent = ({
|
|||
);
|
||||
};
|
||||
|
||||
EntityRendererComponent.defaultProps = {
|
||||
EntityComponent.defaultProps = {
|
||||
path: '',
|
||||
};
|
||||
|
||||
EntityRendererComponent.propTypes = {
|
||||
EntityComponent.propTypes = {
|
||||
buffer: PropTypes.shape({}).isRequired,
|
||||
path: PropTypes.string,
|
||||
};
|
||||
|
||||
export default class EntityResourceRenderer {
|
||||
export default class EntityController {
|
||||
|
||||
static Component({
|
||||
buffer,
|
||||
path,
|
||||
}) {
|
||||
return (
|
||||
<EntityRendererComponent
|
||||
<EntityComponent
|
||||
buffer={buffer}
|
||||
path={path}
|
||||
/>
|
|
@ -7,7 +7,7 @@ import {
|
|||
import {Number, Stage} from '@persea/core';
|
||||
import {useJsonPatcher} from '@persea/json';
|
||||
|
||||
import Entity from '../../resource-renderers/entity';
|
||||
import Entity from '../../resource-controllers/entity';
|
||||
import useEntity from '../../hooks/use-entity';
|
||||
|
||||
const emitterJson = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import JsonResourceComponent from './json';
|
||||
import JsonController from './resource-controllers/json';
|
||||
import reducer from './state/reducer';
|
||||
|
||||
export {default as useJsonPatcher} from './hooks/use-json-patcher';
|
||||
|
@ -7,8 +7,8 @@ export * from './state';
|
|||
export default {
|
||||
hooks: {
|
||||
'@latus/redux/reducers': () => reducer,
|
||||
'@persea/core/resource-renderers': () => [
|
||||
JsonResourceComponent,
|
||||
'@persea/core/resource-controllers': () => [
|
||||
JsonController,
|
||||
],
|
||||
},
|
||||
};
|
||||
|
|
|
@ -2,7 +2,7 @@ import {React} from '@latus/react';
|
|||
import {Prism as SyntaxHighlighter} from 'react-syntax-highlighter/dist/cjs/index';
|
||||
import {dark} from 'react-syntax-highlighter/dist/cjs/styles/prism';
|
||||
|
||||
export default class JsonResourceRenderer {
|
||||
export default class JsonController {
|
||||
|
||||
static Component({buffer}) {
|
||||
return (
|
Loading…
Reference in New Issue
Block a user