Skip to content

Commit

Permalink
Update cards to be in format expected by dom renderer
Browse files Browse the repository at this point in the history
This is based on the changes to mobiledoc-dom-renderer in
bustle/mobiledoc-dom-renderer#18

This allows rendering, but the cards themselves don't render yet
because ember-mobiledoc-editor doesn't use the updates to mobiledoc-kit
from #238

wip refs #236
  • Loading branch information
bantic committed Nov 19, 2015
1 parent 194172d commit b6b0a1b
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 89 deletions.
24 changes: 15 additions & 9 deletions demo/app/components/mobiledoc-dom-renderer.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
import Ember from 'ember';
import { cardsHash } from '../mobiledoc-cards/index';
import { cards } from '../mobiledoc-cards/index';
import Renderer from 'ember-mobiledoc-dom-renderer';

let { computed, run } = Ember;

let renderer = new Renderer({cards});

export default Ember.Component.extend({
domRenderer: computed(function(){
return new Renderer();
}),
didRender() {
let domRenderer = this.get('domRenderer');
let mobiledoc = this.get('mobiledoc');
if (!mobiledoc) {
return;
}

run(() => {
let target = this.$();
target.empty();
if (mobiledoc) {
domRenderer.render(mobiledoc, target[0], cardsHash);
if (this._teardownRender) {
this._teardownRender();
this._teardownRender = null;
}

let target = this.$();
let { result, teardown } = renderer.render(mobiledoc);
target.append(result);
this._teardownRender = teardown;
});
}
});
64 changes: 31 additions & 33 deletions demo/app/mobiledoc-cards/codemirror.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,41 @@ let getCode = ({code}) => {

export default {
name: 'codemirror-card',
display: {
setup(element, options, env, payload) {
$(element).empty();
let code = getCode(payload);
let button = $('<button>Edit</button>');
type: 'dom',
render({env, options, payload}) {
let element = $('<div></div>');
let code = getCode(payload);
let button = $('<button>Edit</button>');

if (env.edit) {
button.on('click', env.edit);
$(element).append(button);
}

let ta = $(`<textarea>${code}</textarea>`);
$(element).append(ta);
CodeMirror.fromTextArea(ta[0], {
mode: 'javascript',
readOnly: 'nocursor'
});
if (env.edit) {
button.on('click', env.edit);
$(element).append(button);
}
},
edit: {
setup(element, options, env, payload) {
$(element).empty();

let code = getCode(payload);
let ta = $(`<textarea>${code}</textarea>`);
let ta = $(`<textarea>${code}</textarea>`);
$(element).append(ta);
CodeMirror.fromTextArea(ta[0], {
mode: 'javascript',
readOnly: 'nocursor'
});
return element[0];
},
edit({env, options, payload}) {
let element = $('<div></div>');
let code = getCode(payload);
let ta = $(`<textarea>${code}</textarea>`);

let button = $('<button>Save</button>');
$(element).append(button);
let button = $('<button>Save</button>');
$(element).append(button);

$(element).append(ta);
let cm = CodeMirror.fromTextArea(ta[0], {
mode: 'javascript'
});
button.on('click', () => {
let code = cm.getValue();
env.save({code});
});
}
$(element).append(ta);
let cm = CodeMirror.fromTextArea(ta[0], {
mode: 'javascript'
});
button.on('click', () => {
let code = cm.getValue();
env.save({code});
});
return element[0];
}
};
7 changes: 6 additions & 1 deletion demo/app/mobiledoc-cards/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ function displayImage(element, src=defaultSrc) {

export default {
name: 'image-card',
type: 'dom',
render() {},
edit() {}
/*
display: {
setup(element, options, env, payload) {
displayImage(element, payload.src);
Expand Down Expand Up @@ -52,8 +56,9 @@ export default {
}
},
text: {
setup(/*str, options, env, payload*/) {
setup(str, options, env, payload) {
return "[image]";
}
}
*/
};
8 changes: 1 addition & 7 deletions demo/app/mobiledoc-cards/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,10 @@ import selfieCard from './selfie';
import imageCard from './image';
import codemirrorCard from './codemirror';

export let cardsList = [
export const cards = [
inputCard,
simpleCard,
selfieCard,
imageCard,
codemirrorCard
];

let cardsHash = {};
cardsList.forEach(card => {
cardsHash[card.name] = card;
});
export { cardsHash };
54 changes: 24 additions & 30 deletions demo/app/mobiledoc-cards/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,34 @@ let { $ } = Ember;

export default {
name: 'input-card',
display: {
setup(element, options, env, payload) {
$(element).empty();

var text = 'I am in display mode';
if (payload.name) {
text = 'Hello, ' + payload.name + '!';
}
var card = $(`<div>${text}</div>`);
var button = $('<button>Edit</button>');
button.on('click', env.edit);
type: 'dom',
render({env, payload}) {
var text = 'I am in display mode';
if (payload.name) {
text = 'Hello, ' + payload.name + '!';
}
var card = $(`<div>${text}</div>`);
var button = $('<button>Edit</button>');
button.on('click', env.edit);

if (env.edit) {
card.append(button);
}
$(element).append(card);
if (env.edit) {
card.append(button);
}
return card[0];
},
edit: {
setup(element, options, env) {
$(element).empty();
var card = $('<div>What is your name?</div>');
card.innerHTML = 'What is your name?';
edit({env}) {
var card = $('<div>What is your name?</div>');
card.innerHTML = 'What is your name?';

var input = $('<input placeholder="Enter your name...">');
var button = $('<button>Save</button>');
button.on('click', () => {
var name = input.val();
env.save({name});
});
var input = $('<input placeholder="Enter your name...">');
var button = $('<button>Save</button>');
button.on('click', () => {
var name = input.val();
env.save({name});
});

card.append(input);
card.append(button);
$(element).append(card);
}
card.append(input);
card.append(button);
return card[0];
}
};
5 changes: 5 additions & 0 deletions demo/app/mobiledoc-cards/selfie.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ let { $ } = Ember;

export default {
name: 'selfie-card',
type: 'dom',
render() {},
edit() {}
/*
display: {
setup(element, options, env, payload) {
$(element).empty();
Expand Down Expand Up @@ -89,4 +93,5 @@ export default {
return "[ :-) ]";
}
}
*/
};
18 changes: 9 additions & 9 deletions demo/app/mobiledoc-cards/simple.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ let { $ } = Ember;

export default {
name: 'simple-card',
display: {
setup(element, options, env) {
var card = document.createElement('span');
card.innerHTML = 'Hello, world';
element.appendChild(card);
var button = $('<button>Remove card</button>');
button.on('click', env.remove);
$(element).append(button);
}
type: 'dom',
render({env}) {
var element = document.createElement('div');
var card = document.createElement('span');
card.innerHTML = 'Hello, world';
element.appendChild(card);
var button = $('<button>Remove card</button>');
button.on('click', env.remove);
return element;
}
};

0 comments on commit b6b0a1b

Please sign in to comment.