Skip to content
Snippets Groups Projects
Commit 13db5407 authored by chris's avatar chris
Browse files

pass component in progress

parent a5711826
No related branches found
No related tags found
1 merge request!289Pm node views portals
...@@ -48,7 +48,7 @@ const Editors = () => { ...@@ -48,7 +48,7 @@ const Editors = () => {
case 'ncbi': case 'ncbi':
break; break;
default: default:
return <Editoria />; return <HHMI />;
} }
}; };
......
...@@ -4,6 +4,7 @@ import { Wax } from 'wax-prosemirror-core'; ...@@ -4,6 +4,7 @@ import { Wax } from 'wax-prosemirror-core';
import { HhmiLayout } from './layout'; import { HhmiLayout } from './layout';
import { config } from './config'; import { config } from './config';
import TestComponent from './MultipleChoiceQuestionService/components/TestComponent';
const renderImage = file => { const renderImage = file => {
const reader = new FileReader(); const reader = new FileReader();
...@@ -24,6 +25,7 @@ const Hhmi = () => { ...@@ -24,6 +25,7 @@ const Hhmi = () => {
fileUpload={file => renderImage(file)} fileUpload={file => renderImage(file)}
value="" value=""
targetFormat="JSON" targetFormat="JSON"
nodeViews={[{ multiple_choice: { component: TestComponent } }]}
// readonly // readonly
layout={HhmiLayout} layout={HhmiLayout}
// onChange={source => console.log(source)} // onChange={source => console.log(source)}
......
import { injectable } from 'inversify'; import { injectable } from 'inversify';
import { Tools } from 'wax-prosemirror-services'; import { Tools } from 'wax-prosemirror-services';
import { wrapIn } from 'prosemirror-commands';
@injectable() @injectable()
class MultipleChoiceQuestion extends Tools { class MultipleChoiceQuestion extends Tools {
...@@ -8,7 +9,9 @@ class MultipleChoiceQuestion extends Tools { ...@@ -8,7 +9,9 @@ class MultipleChoiceQuestion extends Tools {
name = 'Multiple Choice'; name = 'Multiple Choice';
get run() { get run() {
return (state, dispatch) => {}; return (state, dispatch) => {
wrapIn(state.config.schema.nodes.multiple_choice)(state, dispatch);
};
} }
get active() { get active() {
......
import { Service } from 'wax-prosemirror-services'; import { Service } from 'wax-prosemirror-services';
import MultipleChoiceQuestion from './MultipleChoiceQuestion'; import MultipleChoiceQuestion from './MultipleChoiceQuestion';
import multipleChoiceNode from './schema/multipleChoiceNode';
class MultipleChoiceQuestionService extends Service { class MultipleChoiceQuestionService extends Service {
boot() {} boot() {}
...@@ -7,7 +8,10 @@ class MultipleChoiceQuestionService extends Service { ...@@ -7,7 +8,10 @@ class MultipleChoiceQuestionService extends Service {
register() { register() {
this.container.bind('MultipleChoiceQuestion').to(MultipleChoiceQuestion); this.container.bind('MultipleChoiceQuestion').to(MultipleChoiceQuestion);
const createNode = this.container.get('CreateNode'); const createNode = this.container.get('CreateNode');
console.log(createNode); createNode({
multiple_choice: multipleChoiceNode,
});
console.log(this.schema);
} }
} }
......
// const multipleChoiceNode = {
// group: 'block multiple',
// content: 'text*',
// atom: true,
// code: true,
// toDOM: () => ['multiple-choice', { class: 'multiple-choice' }, 0],
// parseDOM: [
// {
// tag: 'multiple-choice',
// },
// ],
// };
const multipleChoiceNode = {
content: 'block+',
group: 'block',
defining: true,
parseDOM: [{ tag: 'multiple-choice' }],
toDOM() {
return ['multiple-choice', 0];
},
};
export default multipleChoiceNode;
...@@ -17,17 +17,8 @@ import { ...@@ -17,17 +17,8 @@ import {
DisplayToolGroupService, DisplayToolGroupService,
TextBlockLevelService, TextBlockLevelService,
TextToolGroupService, TextToolGroupService,
NoteService,
NoteToolGroupService,
TrackChangeService,
CommentsService,
CodeBlockService,
CodeBlockToolGroupService,
DisplayTextToolGroupService, DisplayTextToolGroupService,
MathService, MathService,
FindAndReplaceService,
EditingSuggestingService,
TrackingAndEditingToolGroupService,
FullScreenService, FullScreenService,
FullScreenToolGroupService, FullScreenToolGroupService,
SpecialCharactersService, SpecialCharactersService,
...@@ -38,13 +29,13 @@ import { ...@@ -38,13 +29,13 @@ import {
BottomInfoService, BottomInfoService,
TransformService, TransformService,
TransformToolGroupService, TransformToolGroupService,
TrackOptionsToolGroupService,
TrackCommentOptionsToolGroupService,
CustomTagInlineToolGroupService,
CustomTagBlockToolGroupService,
CustomTagService,
} from 'wax-prosemirror-services'; } from 'wax-prosemirror-services';
/* Questions Services */
import MultipleChoiceQuestionService from '../MultipleChoiceQuestionService/MultipleChoiceQuestionService';
import QuestionsToolGroupService from '../QuestionsToolGroupService/QuestionsToolGroupService';
import { DefaultSchema } from 'wax-prosemirror-utilities'; import { DefaultSchema } from 'wax-prosemirror-utilities';
import { WaxSelectionPlugin } from 'wax-prosemirror-plugins'; import { WaxSelectionPlugin } from 'wax-prosemirror-plugins';
...@@ -77,6 +68,7 @@ export default { ...@@ -77,6 +68,7 @@ export default {
'Images', 'Images',
'SpecialCharacters', 'SpecialCharacters',
'Tables', 'Tables',
'Questions',
'FullScreen', 'FullScreen',
], ],
}, },
...@@ -93,6 +85,8 @@ export default { ...@@ -93,6 +85,8 @@ export default {
], ],
services: [ services: [
new MultipleChoiceQuestionService(),
new QuestionsToolGroupService(),
new DisplayBlockLevelService(), new DisplayBlockLevelService(),
new DisplayToolGroupService(), new DisplayToolGroupService(),
new TextBlockLevelService(), new TextBlockLevelService(),
......
...@@ -66,6 +66,7 @@ const Wax = props => { ...@@ -66,6 +66,7 @@ const Wax = props => {
user, user,
onChange, onChange,
targetFormat, targetFormat,
nodeViews,
} = props; } = props;
if (!application) return null; if (!application) return null;
...@@ -144,6 +145,7 @@ const Wax = props => { ...@@ -144,6 +145,7 @@ const Wax = props => {
targetFormat={targetFormat} targetFormat={targetFormat}
TrackChange={TrackChange} TrackChange={TrackChange}
user={user} user={user}
nodeViews={nodeViews}
> >
{({ editor }) => <WaxRender className={className} editor={editor} />} {({ editor }) => <WaxRender className={className} editor={editor} />}
</WaxView> </WaxView>
......
...@@ -10,7 +10,6 @@ import { trackedTransaction } from 'wax-prosemirror-services'; ...@@ -10,7 +10,6 @@ import { trackedTransaction } from 'wax-prosemirror-services';
import { WaxContext, useReactNodeViewPortals } from './WaxContext'; import { WaxContext, useReactNodeViewPortals } from './WaxContext';
import transformPasted from './helpers/TransformPasted'; import transformPasted from './helpers/TransformPasted';
import { createReactNodeView } from './ReactNodeView'; import { createReactNodeView } from './ReactNodeView';
import BlockQuote from './BlockQuote';
let previousDoc; let previousDoc;
...@@ -23,13 +22,13 @@ export default props => { ...@@ -23,13 +22,13 @@ export default props => {
autoFocus, autoFocus,
user, user,
targetFormat, targetFormat,
nodeViews,
} = props; } = props;
const editorRef = useRef(); const editorRef = useRef();
let view; let view;
const context = useContext(WaxContext); const context = useContext(WaxContext);
const { createPortal } = useReactNodeViewPortals(); const { createPortal } = useReactNodeViewPortals();
const handleCreatePortal = useCallback(createPortal, []); const handleCreatePortal = useCallback(createPortal, []);
const setEditorRef = useCallback( const setEditorRef = useCallback(
...@@ -49,19 +48,7 @@ export default props => { ...@@ -49,19 +48,7 @@ export default props => {
user, user,
scrollMargin: 200, scrollMargin: 200,
scrollThreshold: 200, scrollThreshold: 200,
nodeViews: { nodeViews: createNodeVies(),
blockquote(node, view, getPos, decorations) {
console.log('rerenders for ever');
return createReactNodeView({
node,
view,
getPos,
decorations,
component: BlockQuote,
onCreatePortal: handleCreatePortal,
});
},
},
handleDOMEvents: { handleDOMEvents: {
blur: onBlur blur: onBlur
? view => { ? view => {
...@@ -97,6 +84,26 @@ export default props => { ...@@ -97,6 +84,26 @@ export default props => {
[readonly], [readonly],
); );
const createNodeVies = () => {
const test = nodeViews.map((nodeView, key) => {
return {
multiple_choice(node, view, getPos, decorations) {
console.log('rerenders for ever');
return createReactNodeView({
node,
view,
getPos,
decorations,
component: nodeView.multiple_choice.component,
onCreatePortal: handleCreatePortal,
});
},
};
});
console.log(test);
return test[0];
};
const dispatchTransaction = transaction => { const dispatchTransaction = transaction => {
const { TrackChange } = props; const { TrackChange } = props;
const tr = const tr =
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment