Giter Site home page Giter Site logo

react-designer's Introduction

react-designer

React designer is WYSIWYG editor for easy content creation (legal contracts, business forms, marketing leaflets, inforgrafics, technical guides, visual reports, rich dashboards, tutorials and other content, etc.).

Warning: Nevertheless, i must repeatedly stress that it is still a prototype and work in progress.

Demo

Live demo

Features

  • directly manipulate the layout of a document without having to type or remember names of components, elements, properties or other layout commands.
  • precise visual layout that corresponds to an existing paper version
    • support for various output formats - html, pdf, ...
  • high-quality on-screen output and on-printer output (only partially implemented)
  • comfortable user experience - basic WYSIWYG features
    • support drag nad drop - resize object length, move object positions
    • support manipulating objects -> copy, move, up, down objects in object schema hierarchy
    • highlighting currently selected object and its parent
    • minimum input, maximum output
    • remove the barriers of entry
  • build-in html content publishing (preview of html dynamic document)
  • binding support using react-binding - experimental
  • props inheritance - when rendering occurs -> the props value is resolved by using a value resolution strategy (Binding Value -> Local Value -> Style Value -> Default Value)
  • usable for big documents - careful designed to use react performance
    • we won't render the component if it doesn't need it
    • simple comparison is fast because of using immutable data structure
  • undo/redo functionality

Basic principle

Content publishing

There are many ways how you can publish content created in react-designer. Feel free to write your own content publisher.

  • HtmlRenderer react-html-pages-renderer- provide high-quality on-screen output
    • HtmlRenderer - renders html - expands to full screen
    • HtmlPagesRenderer - allow the user to visualize what the document will look like when printed
  • PDFRenderer - provide high-quality printed output on a variety of printers
    • PDFRenderer - transforms directly to PDF (not implemented yet)
    • HmtlToPDFRenderer - transforms to PDF from HTML (implemented using phantomjs - node-html-pdf)

Get started

$ npm install
$ npm start

Warning: Bug fix in babel-core -> web pack loads package.json as javascript - fix by adding .json extension in node_modules/babel-core/lib/api/node.js - replace require("../../package") with require("../../package.json")

Roadmap

  • support for more positioning schemas (especially to support for responsive design)
  • support for typography (vertical rhythm, modular scale, web fonts, etc.)
  • support for more fonts (google fonts)
  • support for print (PDF) - 300 DPI pixel perfect print
    • support html fragments -> to pdf (using html parser)
    • custom PDF rendering - (no dependency on PhantomJS or Electron)
  • improve designer experience
    • move objects in object browser
    • disabled add widget when box is selected
    • improve property editor
  • performance issues
    • recheck - should component update
    • parse property values (parseInt,etc.) - to many places - remove defensive programming favor contract by design
  • data binding refactoring
    • support for binding to remote stores (consider falcor)
    • data watchers - if some data changes, it changes on the other site

License

MIT. Copyright (c) 2015 Roman Samec

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.