Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Taming Content Editable with Ember.js - Ember NYC
Search
Gavin Joyce
May 29, 2015
Technology
1
110
Taming Content Editable with Ember.js - Ember NYC
Gavin Joyce
May 29, 2015
Tweet
Share
More Decks by Gavin Joyce
See All by Gavin Joyce
Scaling Ember at Intercom - EmberCamp London
gavinjoyce
1
230
Taming large Rails apps with Mutations
gavinjoyce
2
370
Taming Content Editable with Ember.js
gavinjoyce
1
370
Other Decks in Technology
See All in Technology
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
500
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
160
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
850
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
180
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
2
230
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
160
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
2
350
[TechNight #90-1] 本当に使える?ZDMの新機能を実践検証してみた
oracle4engineer
PRO
3
140
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
5
570
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
1
410
Witchcraft for Memory
pocke
1
150
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.6k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
GitHub's CSS Performance
jonrohan
1031
460k
How to train your dragon (web standard)
notwaldorf
92
6.1k
A better future with KSS
kneath
239
17k
Become a Pro
speakerdeck
PRO
28
5.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
Taming Content Editable with Ember.js @gavinjoyce
[email protected]
Intercom Composer
Intercom Composer Direct messages
Intercom Composer Email Messages
Intercom Composer In-App Messages
Intercom Composer Shared Inbox
blog.intercom.io/ember-delivers-rapid-improvements-at-intercom
Creating content in Intercom (demo) simple composer, auto message wizard,
inbox, mentions, emoji, saved replies
None
embercom-composer cli addon (demo) selection, undo stack, outlines, editors, rules
yeah, but why? https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable
https://speakerdeck.com/patocallaghan/contenteditable and much more….
Block Object Model (build a block editor, not an HTML
editor)
Block Selection do Stack Block List The DOM Composer component
The BOM
The BOM The DOM Editor View Event Handling DOM Selection
UI Coordinates Rendering Composer component
The BOM Composer State BOM Selection Undo Stack Blocks The
DOM Editor View Event Handling DOM Selection UI Coordinates Rendering Composer component
Composer State The BOM
Composer State Undo Stack The BOM
Composer State Block Selection Undo Stack The BOM
Composer State Block Selection Undo Stack Block List The BOM
Composer State Block Selection Undo Stack The BOM Paragraph Item
Ordered List Block List
Paragraph Composer State Block Selection Undo Stack Block List Item
Ordered List Command • Backspace • Delete • Return • Sync • Insert Attribute • Insert Character • Insert Block • Paste • ...
None
None
Blocks Paragraph text: “hello there” Entities Italic (0 -> 5)
Bold (6 -> 14) Selection: 0:0:1 → 0:0:1
Blocks Paragraph text: “hello there” Entities Italic (0 -> 5)
Bold (6 -> 14) Selection: 0:0:2 → 0:0:9
Blocks Paragraph text: “hello there” Entities Italic (0 -> 5)
Bold (9 -> 14) Selection: 0:0:2 → 0:0:9
Blocks Paragraph text: “hello there” Entities Italic (0 -> 5)
Bold (2 -> 14) Selection: 0:0:2 → 0:0:9
None
None
> 1.5k Tests
Syncing
Syncing UI Event
Syncing UI Event Command
Syncing UI Event Command Sync or
Syncing UI Event Command Sync Mutate BOM or
Syncing UI Event Command Sync Mutate BOM Rerender? or
Undo Stack github.com/intercom/ember-undo-stack
intercom.io/careers
We believe Intercom is a place to come and deliver
career defining achievements intercom.io/careers
We believe Intercom is a place to come and deliver
career defining achievements intercom.io/careers Dublin & San Francisco
Thanks for listening! @gavinjoyce
[email protected]
Questions? @gavinjoyce