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
380
Taming Content Editable with Ember.js
gavinjoyce
1
370
Other Decks in Technology
See All in Technology
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
110
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
170
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
650
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
450
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
160
Red Hat OpenStack Services on OpenShift
tamemiya
0
120
Agile Leadership Summit Keynote 2026
m_seki
1
650
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
370
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
200
Producing Creativity
orderedlist
PRO
348
40k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Paper Plane
katiecoart
PRO
0
46k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
86
Designing Experiences People Love
moore
144
24k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
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