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
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Gavin Joyce
May 15, 2015
Technology
1
370
Taming Content Editable with Ember.js
A talk I gave to Ember London:
http://www.meetup.com/London-Emberjs-User-Group/events/221220636/
Gavin Joyce
May 15, 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 - Ember NYC
gavinjoyce
1
110
Other Decks in Technology
See All in Technology
AI駆動開発を事業のコアに置く
tasukuonizawa
1
210
Cosmos World Foundation Model Platform for Physical AI
takmin
0
910
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
140
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.6k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.4k
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
2
210
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
240
Digitization部 紹介資料
sansan33
PRO
1
6.8k
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Spectacular Lies of Maps
axbom
PRO
1
520
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
96
So, you think you're a good person
axbom
PRO
2
1.9k
We Have a Design System, Now What?
morganepeng
54
8k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
340
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Curious Case for Waylosing
cassininazir
0
240
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Between Models and Reality
mayunak
1
190
Transcript
Taming Content Editable with Ember.js @gavinjoyce
[email protected]
http://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
yeah, but why? https://speakerdeck.com/patocallaghan/contenteditable
Block Object Model (build a block editor, not a 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
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
• Open Source • CSS Slurping • Editors • Performance
• Testing
• Open Source • CSS Slurping • Editors • Performance
• Testing
• Open Source • CSS Slurping • Editors • Performance
• Testing
• Open Source • CSS Slurping • Editors • Performance
• Testing
• Open Source • CSS Slurping • Editors • Performance
• Testing (2k+ tests)
Questions? @gavinjoyce
[email protected]