- Fix bug that prevented video block meta editor from opening #318
- Fix
ed.execCommand('link:toggle')
⇢onRequestLink
callback.
- Clean up link dance internals (#314)
- Save-as-you-type, even non-valid URLs, to avoid inconsistent state bug
- New callback prop for native menus:
onRequestLink
#314- Extending
ed.execCommand('link:toggle', {href, title})
(title optional) to make<a>
with current selection
- Extending
- React fix: array child wants key
- Meta modal autoFocus (also blurs PM editable, so you don't type under the meta modal)
- Click to select node (not onMouseDown / onTouchStart)
- Responsive modal padding
- Some style tweaks
- All of these:
- Merge
featureFlags
prop from 1.4.x - ed.version (#306)
- Link input
type="url"
for mobile input keyboard - Show attributions in inline view
- Show block type & link in inline view
hr
padding for easier selection
- Node v7.4.0
- Clarify link placeholder
- iframe widget name + drag handle
- Click to select simplification
- Delete block wording & close modal
- No text select draggable widgets
- Enter in text area to close modal and menu
- Modal style
- Fix bug where clicking "Edit" would select node and jump away from pointer
- Default
coverPrefs
- Fix blur: prevents delete by backspace from "under" modal
- Merge v1 patch
- Fix bug that sometimes focused top of doc on clicking block "edit"
- Blur editable on modal open.
- Don't allow typing over node selection. Fixes bug that media view can be typed over and deleted after clicking "edit."
- Modal media block meta editing! 🎉
- Fixed menu hack only on iOS
- Fix gh-pages widget serving (.nojekyll)
- Fix link menu form position
- Fix file drops: on both media blocks & text
- ProseMirror 0.17.0
- URL modal attached to menu
- URL pre-filled if selected text is link-like (#288)
- bump imgflo-url to ignore
blob:
URLs
- fix
menuBar: false
- BREAKING --
mountApp
is async because of a React change, and does not returned
props.onMount
callback is called withed
instance
- ProseMirror 0.16.0 -- big refactor to get up to date
- Redo all plugins & everything we have built on PM
- Widgets are inline: major simplification
- h1-h3 empty block placeholders
featureFlags: {edCta, edEmbed}
to match API
onCommandsChanged
will now return"flagged"
for commands diabled byfeatureFlags
featureFlags
prop to reduce functionality for freeloaderz
- Fix plugin
detach
to cleanup listener leaks 🚱
- ed-location 2.0.1 fixes bug that lost coordinates in middle of ocean
- Nix react-tap-event-plugin
- Fix doubled hr again (#299)
- Fix doubled hr (#299)
- Section divider support as
hr
- "Horizontal rule" added to "Add" menu
horizontal_rule:insert
command added
- Restore
menuBar
prop to enable/disable the menu bar. - Align menu items with content
- Don't show cover image if marked unsalvageable. (#294)
- BREAKING - Remove
menuTip
andmenuBar
props and tooltip menu (to potentially revisit later) (#289)
- Add needed margin-top when tooltip menu is enabled
- Don't hide image, add media menu items (less bounce in menu bar)
- With tooltip menu, recommend >= 48px margin at top of host page / element (menu potentially offscreen with style tweaks in last patch)
- Allow bold, italic, link with whole block selected (#283)
- Confirm remove attribution
- Menu:
- move bold before italic
- center icons
- more compact for small screens (#281)
- Fold wording - "Below this line will render on the item page."
- BREAKING -
quote
blocks treated as media, so we can read and write attribution; formatting will be lost (#279)- Remove
blockquote:wrap
command - Add
ed_add_quote
command - DEBT - the hack to get the text from
metadata.description
orhtml
is 🙈 ... ideally we would support formatting and attribution, but for now it is a choice- (New "debt" tag in changelog: hopefully these items will be paid off (made nice) in later versions)
- Remove
- ed-userhtml 0.2.1 adds height input, fixes text getting stripped by API
- Fix overeager menu dismissing (#277)
Tagging 1.0.0 in celebration of launching The Grid
- CTA widget
- Change checkbox wording to "Link can open in frame"
- Change field to
block.metadata.canFrame
- UNSUPPORTED widget - clients can have different versions of Ed, so it is important to show placeholders for unsupported blocks (#271)
- Descriptive type labels: h1 - Main title, h2 - Section heading, h3 - Subsection heading, p - Body text
- Fix menu sizing (#275)
- Show image title and description. Matches how DS uses image block title. (#275)
- Whitelist of transformations that are accepted from
setContent
... usually these updates were stale API data.
- Fix image dropdown saving for 0.20.4 changes
- Fix where CTA widget read / write metadata
- EXPERIMENTAL - Ignore updates "from above" in CTA widget (can be API data some keystrokes behind current state)
- Link inputs
autocapitalize='none'
to help with (#272) on mobile
- Attempt to suppress Safari contenteditable formatting ("BIU" tooltip)
- JS safety with valid url testing
- Menu to add & widget to edit basic link CTA. Command key
ed_add_cta
- Whitelist
block.text
to match what ced outputs.
- NEW -- ed-userhtml widget for interactive/userhtml blocks
- ▶ Link for video, audio, interactive in top-right of blocks, opens in new window. (#260)
- FIX --
ed.setCoverPreview
fixed
- NEW -- optional
props.coverPrefs: {filter, crop, overlay}
for site-wide cover preferences. Boolean, default true. (#223)
- FIX -- ProseMirror 0.9.1 -- fixes paste hr and media blocks (#252)
- Update React to 15.2.1
- Update more dependencies
- Perf boost for when setContent is hit with old news
- BREAKING --
updatePlaceholder
is nowupdateProgress
, with same arguments - BREAKING --
{status, progress, failed}
will not be set from initial content orsetContent
: you must callupdateProgress
- BREAKING --
ed.updateProgress
updates internally and does not change content block metadata (#237) - Simplifying updates = perf improvements with
updateProgress
ed.updateProgress(id, {progress: null})
will now remove progress bared.updateProgress(id, {failed: true})
will now show an error message and retry button
- Dismiss meta dropdown by clicking out of menu or focusing editable (#229)
- Patch ProseMirror 0.8.3
- Updates ed-location to 2.0.0, which outputs block html as an iframe of a simple map viewer
- Swallow file drop on iframe widgets (won't redirect editor to local image)
- Drop style tweak
- NEW -- Images can be removed from
article
blocks (#243) - Less-chunky metadata editing on small screens (#236)
- Disable ProseMirror format menu on media block selection
- Indicator to drop file on block (#235)
- UI in menus add code and location blocks (#245)
ed_add_code
anded_add_location
added to commands
- Show coverPrefs when there is a cover. Show upload when that's allowed.
getContent
whitelist cover unsalvageable, so{id, type, html, metadata, cover: {src, width, height, unsalvageable}}
- Use rsync for
npm run copycss
- Copy css to dist with build
- Update to ProseMirror 0.8.2
- BREAKING -- changed dist directory
dist/build.js
for all-inclusive built library that exposeswindow.TheGridEd
dist/ed.js
(package main) for the React component
- BREAKING -- commands
link:set
andlink:unset
are replaced withlink:toggle
- Minimize
getContent
output to only include block{id, type, html, metadata, cover: {src, width, height}}
- Refactor to easily use Ed as React component.
props.widgetPath
for the iframe widget base directory. Defaults to'./node_modules/'
- Add
location
widget (no UI to add yet)
- Focus new iframe widget (type ``` to test with code block)
- NEW -- optional
options.onDropFileOnBlock(id, file)
to a block's cover
- NEW -- optional
options.onDropFiles(index, files)
to drop files into editor flow
- Render image with hover
title
- Attribution
via
can be added and edited (#114) - Open urls in new tab (#130)
- Placeholder cancel button style tweak (#218)
- Media / attribution style tweak, put image back in box (#226)
- Remove attribution (#225)
- "Image" menu on blocks
- "Upload New Image" button moved here
metadata.coverPrefs
checkboxen (#199)- Image hover title editing
- Image caption editing (#213)
- Message and upload button for
cover.unsalvageable
(#195)
- FIX -- Upload Image Button disappears after cancel upload (#219)
- NEW -- Upload new cover for blocks that support it (only
image
andarticle
now) (#71)options.onRequestCoverUpload(id)
- similar to onShareFile, but hit with block id instead of indexed.setCover(id, cover)
- once image uploads, cover object with{src, width, height}
- Upload progress available in non-placeholder blocks
- See Readme and Demo
- Added blocks with various states to /#fixture, to help with dev and styling
- Build fix "It looks like you're using a minified copy of the development build of React" error.
- Fix negative margin in block without cover
- Update block cover from app (#216)
- On conversion to full post, scroll to focused title
- Space media with blank
p
: easier focus on mobile - Skip empty blocks with
getContent
(#204) - Focus on load
- Add label to Author & Publisher dropdown (#203)
- Validate urls added as attribution; don't trigger change events while invalid (#129)
- Widget layout now runs on a loop, so whack layouts shouldn't stay off for long (#208)
- Improvements to "Make Full Post" UX (#210)
- put button after content
- reshow buttons if
hr
or cover image is removed - focus editable after click
- Style fix for attribution buttons (#205)
- Placeholder plugin for empty h1 and paragraph (#202)
- Fix gh-pages code editor includes
Major fixes, but API is stable from 0.10.x tag.
- Fix ``` shortcut to add a code block (#25)
- "Upload Image" button show logic: don't show on block selection
- Reverting 0.11.0 prototype
- Revert special-cased fold block
- Revert special-case media delete / joinBackward: default behavior selects media before deleting it now
- Don't space media with empty
p
: default behavior allows select media block + enter to add a block - NEW fold behavior: Unstarred blocks render below
hr
- FIX jumping cursors (#201)
- All mounted doc changes now via ProseMirror transforms
- NEW -- button to add first image
- NEW -- button to add title and fold
(archived)
- Styling font sizing throughout
- Add image change/remove to all images and "upload" button to empty image
- Default to empty image/title/description above the fold
- Change fold copy
- Change integration-points for Webapp, so that attribution-editor can have updatetable progressbars (subject to change in future)
- Styling small screen button 100% width
- Styling for small screen first (#187)
- FIX -- "Upload Image" button was triggering
onShareFile
callback twice (#179)
- Functions in block schema for regenerating html on metadata changes. (#182)
- Styling meta titles for small screens (#176)
- Styling covers like cards (#177)
- Autofocus fold textarea
- FIX -- React issue with fold textarea-autosize (#176)
- ProseMirror 0.6.1 -- iOS and Android ❤️
- Fixed
ed.execCommand('ed_upload_image')
- 🍎 Double-space → period hack (#109)
- NEW --
options.onCommandsChanged
to get changing commands in a native toolbar (#173) - NEW --
ed.execCommand
to apply a command from an app
- FIX -- Range errors around media divs
- NEW --
options.onMount
called once editable and widgets are initialized
- FIX -- "Upload Image" button in Firefox works now
- ProseMirror 0.6.0
- Upload image toolbar button doesn't need to be on blank line
- Simplify flow from an empty post
- Paste a URL and type some commentary: URL is shared above fold and commentary becomes a paragraph below
- Type above fold then share photo: photo is above fold and text becomes a paragraph below
- Start typing above the fold, then click "Add More" to reveal full editor
- Style above and below fold media @narrowdesign
- Dependencies (react, babel, lodash)
- ced 0.1.2 -- fixes firefox not showing language dropdown, and overzealous encoding
- FIX -- setCoverPreview was trigging fold block change when it shouldn't have (#150)
- New UI component: NavItemConfirm
- "Remove block" in block "..." dropdown now asks for confirmation
- FIX -- removing fold media fixed
- NEW --
ed.setCoverPreview(id, src)
(#92)src
is ablob:
ordata:
url for the local image to show while uploading / measuring- Preview takes precedence over content array version of
cover.src
- Setting src
null
will show real cover
- @narrowdesign 1st style/ux pass (#139)
- ProseMirror 0.5.1
- FIX -- iframe cut / paste works (#19)
- FIX -- all media copy / paste works (#140)
- Hotfix demo for 0.7.0 change to
ed.updatePlaceholder
arguments
- Update to ProseMirror 0.5.0
- Fixes (re)focus showing empty block menu (#125)
Fixes Android blockers (#29?) (#104?)
- BREAKING - changed arguments for
ed.updatePlaceholder
toid, {status, progress, failed}
- Placholder block
metadata.failed
will show in red and have an "×" button to remove
- Placholder block
- Hotfix
ed.getContent()
on 📱 (#105)
- Demo starts blank to test the initial flow
- Demo /#fixture loads the fixture: useful for reloading and debugging
- Made DropdownGroup to make meta editors more responsive (#126)
- Credit Add "..." menu on media blocks to add attribution (and remove block)
- Placeholder progress bar
progress
0-100 withed.updatePlaceholder(id, status, progress)
ored.setContent([{id, metadata: {status, progress}}])
- NEW -- X button on the Placeholder component triggers
options.onPlaceholderCancel(id)
- When that is hit,
ed.getContent()
will already have removed the cancelled placeholder block
- When that is hit,
- Delete from under media block ignored
- The Fold view above main editable for sharing and editing one primary media block
- Didn't change the interface, so these should work as before:
ed.setContent(content)
ed.insertPlaceholders(index, count)
ed.updatePlaceholder(id, status, progress)
- Prepended some "internal" method names with
_
... don't use those - Main html structure now defined and initialized with React: App
- Refactor internal dataflow
- (React but not Flux, mainly because Editable should only be initialized once)
- BREAKING --
options.[menuBar|menuTip]
made camelCase - BREAKING -- no more
options.onAutosave
: apps will do that logic
- Popovers don't autohide on scroll, makes meta editing easier on Android
- 🍎 Pulldown negative scroll accounted for with menu (#98)
- Space first, last, and subsequent media blocks with empty paragraphs (#94)
- Tap editable bottom padding focuses end... works better than tap-add-text plugin
- Tests and logic to convert irregular Grid types
quote
andtext
(#93)
- 🍎 Smoother "fixed" menu hack
- 🍎 FIX -- in iOS only menubar sticky by
absolute
, notfixed
(#69 try again)
- 🍎 FIX -- menubar sticky by CSS, not JS (#69)
- ProseMirror 0.4.0
- FIX --
setContent
could merge with outdated cached version of content (#72)
- NEW -- tap under PM content to add and focus a new text block
- NEW -- These changes make it possible for Ed to be responsible for all content array manipulation
ed.insertPlaceholders(index, count)
will insert placeholders and return an array or new block idsed.updatePlaceholder(id, status, progress)
will update a placeholder widget (progress
is optional, 0-100)
- PM is initialized with initialContent (simplifies constructor and tests)
- FIX -- Metadata changes also bounce onAutosave
- Reenable autoinput rules: >, #, ##, ###, *, 1.
- Tighten schema for types that can only be top-level blocks: media, heading, and blockquote. This means those commands don't show in menus when they shouldn't. Also, HTML paste goes through same schema for sanitization.
- NEW -- Placeholder blocks can now have
metadata.progress
(0-100) for a progress bar. - Couple
ed.plugin.widget
events to make tests more solid.
- Widgets now reinitialize when block type changes.
ed.insertBlocks
for file share flow (demo). (Convenience method: app can stillgetContent
, splice blocks,setContent
.)- Tweak merging logic, add tests
- Fixed placeholder merging logic:
setContent
can only add placeholders or convert them to real blocks. - Tests!
- Padding tweaks for menubar
- "Upload Image" button in menubar
- Fix bug with fixing selection in
setContent
- BREAKING --
onShareUrl
is called with{block, url}
(block id, url to share) now. - BREAKING -- Ed is now responsible for creating and inserting the placeholder before hitting
.onShareUrl
(demo).
- Fix selection when
setContent
splices in non-focusable Media nodes.
- Fix "Upload Image" in new line menu.
- Ed
options.imgfloConfig = {server, key, secret}
for sizing and proxying images through imgflo- If not present (as in demo), will continue to load images directly
- All images are proxied (currently
block.cover.src
andblock.metadata.author[n].avatar
)
- Metadata editing works, triggering same
ed.onChange
as other edits
- No interface changes. Tweaks to demo file input dance.
- Demo implementation of Ed's
options.onShareUrl
- Placeholder component to show placeholder metadata.status for uploads and shares
- Updated to ProseMirror 0.2.0
- Demo implementation of Ed's
options.onShareFile