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
100
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
360
Other Decks in Technology
See All in Technology
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
Engineer Career Talk
lycorp_recruit_jp
0
180
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
680
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
140
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
The Role of Developer Relations in AI Product Success.
giftojabu1
1
130
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Code Reviewing Like a Champion
maltzj
520
39k
Facilitating Awesome Meetings
lara
50
6.1k
BBQ
matthewcrist
85
9.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
4 Signs Your Business is Dying
shpigford
180
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
A better future with KSS
kneath
238
17k
Music & Morning Musume
bryan
46
6.2k
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