From d15efc6fb6ae495c4f62a27753c0a2e2324d5d8b Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Fri, 19 Jan 2018 16:28:56 +0000 Subject: [PATCH] Create cmEditor directive to connect to ShareJS --- .../ide/editor/directives/aceEditor.coffee | 3 ++ .../ide/editor/directives/cmEditor.coffee | 32 +++++++++++++++++++ .../web/public/stylesheets/app/editor.less | 11 ++++++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 services/web/public/coffee/ide/editor/directives/cmEditor.coffee diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 3b43a05afd..989bd75127 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -428,6 +428,9 @@ define [ if rendererData? rendererData.lineHeight = editor.renderer.lineHeight + scope.$on '$destroy', () -> + detachFromAce(scope.sharejsDoc) + template: """
+ App.directive "cmEditor", () -> + return { + scope: { + sharejsDoc: "=" + } + + link: (scope, element, attrs) -> + cm = Frontend.richText.init(element.find('.cm-editor-wrapper')[0]) + + scope.$watch "sharejsDoc", (sharejsDoc, oldSharejsDoc) -> + if oldSharejsDoc? + detachFromCM(oldSharejsDoc) + if sharejsDoc? + attachToCM(sharejsDoc) + + attachToCM = (sharejsDoc) -> + cm.setValue(sharejsDoc.getSnapshot()) + sharejsDoc.attachToCM(cm) + + detachFromCM = (sharejsDoc) -> + sharejsDoc.detachFromCM() + + scope.$on 'destroy', () -> + detachFromCM(scope.sharejsDoc) + + template: """ +
+ """ + } \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor.less b/services/web/public/stylesheets/app/editor.less index 36084cd2a5..54fa3b97c1 100644 --- a/services/web/public/stylesheets/app/editor.less +++ b/services/web/public/stylesheets/app/editor.less @@ -75,8 +75,9 @@ top: 40px; } -#editor { +#editor, #editor-rich-text { .full-size; + top: 40px; // TODO: replace with toolbar height var } .loading-screen { @@ -190,6 +191,14 @@ } } +.cm-editor-wrapper { + height: 100%; + + .CodeMirror { + height: 100%; + } +} + // The internal components of the aceEditor directive .ace-editor-wrapper { .full-size;