Giter VIP home page Giter VIP logo

dekk's Introduction

Dekk

Dekk logo

Dekk is a modular presentation library written in React.js.

Travis branch

npm GitHub license

Patternplate

Demos

The demo can be viewed as a default or live deck or speaker deck

Default mode

  • Dekk demo
  • Includes: URLs and Paging.
  • This viewmode is a standalone version.

Presenter mode

  • Presenter demo
  • includes URLs, Paging and LocalStorage as publisher.
  • This viewmode controls a live deck.

Live mode

  • Live demo
  • Includes LocalStorage as subscriber.
  • Paging and URLs are disabled.
  • This viewmode is controlled from a speaker deck.

Getting Started

To create your first Deck we recommend reading the Getting started guide. It will show you how to use a precofugured Dekk to create your presentation.

If you want to use your own logic, you can start from here and just follow along:

Examples

There are a few copy & paste examples which you can use. They show some configuration options of Dekk.

Developing Dekk

You are welcome to help develop Dekk. to contribute please follow these steps:

Prepare:

Please take the time and read our contributing guidelines and the code of conduct

  1. Node.js, npm

Please ensure that you are running the correct node version. The supported engines are listed in package.json~engines.

  1. Clone Dekk
git clone [email protected]:dekk-app/dekk.git
cd dekk
  1. Install and bootstrap
yarn
npx lerna bootstrap
  1. start development mode

This opens a webpack-dev-server on localhost (port 8080)

yarn develop
  1. open your browser. The hosted content is defined in gh/pages/gh-pages.js

Dependencies

Without the work of these amazing libraries Dekk would not work. So let's thank the creators and contributers of these projects.

Special thanks

To develop Dekk a lot more than just those 4 packages were needed 😱

npx thanks (top 10)

Author Where to Donate Dependencies
sindresorhus patreon.com/sindresorhus Β eslint-config-xo-react + 195 more
feross patreon.com/feross Β safe-buffer, resolve + 10 more
mafintosh patreon.com/mafintosh Β safe-buffer, resolve + 7 more
mikeal patreon.com/mikeal Β request, form-data + 6 more
nzakas paypal.me/nczonline Β eslint, estraverse + 6 more
juliangruber patreon.com/juliangruber Β isarray, balanced-match + 6 more
hughsk hughsk.io/donate Β resolve, is-typedarray + 5 more
thlorenz patreon.com/thlorenz Β resolve + 5 more
hueniverse patreon.com/eranhammer Β qs, boom, hoek, hawk, sntp + 1 more
yoshuawuyts patreon.com/yoshuawuyts Β resolve, timers-browserify + 1 more

Β© Copyright 2021 Gregor Adams

Contributors

Thanks goes to these wonderful people (emoji key):


Gregor Adams

πŸ’» πŸ“– πŸ€” πŸš‡ βœ…

Mario Nebl

πŸ€” πŸ”§

Tim Pietrusky

πŸ› πŸ€”

This project follows the all-contributors specification. Contributions of any kind welcome!

dekk's People

Contributors

mischah avatar pixelass avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dekk's Issues

Access the "getting started" from the navigation

Issue description

It is not possible to access the "getting started" page by using the left side navigation.

Of course you could click on the Dekk icon in the top side navigation, but I would not expect to have the "getting started" as the "main" page of Dekk. So I would also not try to use that. I would expect the getting started as first element in the left side navigation.

Steps to reproduce

Versions

  1. yarn: 1.3.2
  2. node 6.9.1
  3. dekk: 1.0.0-17

How to use "Code"

Issue description

The documentation is missing an example on how Code should be used.

I'm trying it like this, but I only get errors:

      <Code>
        const helloWorld = foo => {
          console.log(foo)
        }
      </Code>

or like this:

      <Code>
      {
        const helloWorld = foo => {
          console.log(foo)
        }
      }
      </Code>

Steps to reproduce

  • Open Code documentation

Versions

  1. dekk: 1.0.0-17

web wrapper

Add a web wrapper around Dekk.
This wraps Dekk into an editor.

Animation "fadeSwipe" does not exist

Issue description

In the examples it says fadeSwipe, but the only animation that exists in fadeSlide.

Steps to reproduce

Versions

  1. yarn: 1.3.2
  2. node 6.9.1
  3. dekk: 1.0.0-17

Config component is required

Issue description

Without having the config component loaded, dekk will fail with the following message:

Uncaught TypeError: Cannot read property 'paging' of undefined
    at Deck.get (index.js:286)

Steps to reproduce

  • Use the gh-pages example

Steps to fix

  • Load the Config component
  • Add the Config component into Deck component

Versions

dekk 1.0.0-4

  1. yarn: 1.3.2
  2. node 6.9.1

Preconfigured "Dekk" in "getting started" is confusing

Issue description

It's confusing for me that the preconfigured Dekk is called Dekk. Don't get me wrong: I love that there is a default component to use without having to touch everything else. BUT when I want to change something, it gets confusing, because after the "getting started" you use the dekk/deck component.

I'm not sure how to address this issue. Maybe rename the preconfigured Dekk into PreconfiguredDeck? So that it's clear that this is the base to get started?

Steps to reproduce

  • Open the getting started and create your App based on the steps
  • Open anything else from the documentation

Versions

  1. dekk: 1.0.0-17

Use Fragment in ImageGrid & Grid

Issue description

It's not possible to wrap a Fragment around a FitImage when using Grid & ImageGrid master slides.

<Fragment order={1}>
  <FitImage
     src="https://placehold.it/600"
     alt="this is a placeholder image. please adjust the alt accordingly"/>
</Fragment>

Actual result

I don't see any image.

Steps to reproduce

  • Wrap Fragment around FitImage and use that in an Grid or ImageGrid

Versions

  1. dekk: 1.0.0-17

Roadmap to Version 2.0.0

  • Rewrite Dekk
  • Use React Context API
  • React 17+
  • Use emotion.js
  • use memo
  • use functional components
  • provide hooks for common operations
  • use framer-motion for animations
  • ensure SSR compatibility
  • Rethink Master slides
  • Rethink Fragments and Sequences
  • Take Accessibility VERY SERIOUS
  • Rewrite Presenter View
  • Better plugin API
  • Add interaction API
  • Better streaming API
  • Optimize for performance
  • Better mobile / responsive support
  • Rethink core vs community packages

Speaker layout

Issue description

I would be nice to have the ability to define speaker-deck layouts.

This could look similar to createStyledMaster

const SpeakerDeck = createStyledSpeakerDeck(
  <Layout>
    <Slot name="Current" withComponent={Current})/>
    <Slot name="Next" withComponent={Next})/>
    <Slot name="Notes" withComponent={Notes})/>
  </Layout>
)`
  display: grid;
  grid-template-rows: 1fr 1fr;
  grid-template-columns: 1fr 1fr
  grid-template-areas:
    "Current Next"
    "Notes Notes";
`

Versions

  • dekk: 1.0.0-11

vulnerability issue

Issue description

There is a vulnerability issue for react and react-dom

Steps to reproduce

Versions

  1. dekk: v2.0.0-2

How to use plugins with default values

Issue description

What is the desired way to use all plugins with their default values? Because doing it like this

<Deck>
    <Plugins>
    </Plugins>
</Deck>

is throwing an error:

index.js:260 Uncaught TypeError: Cannot read property 'type' of undefined
    at index.js:260
    at Array.map (<anonymous>)

Steps to reproduce

  • Add the Plugins component without any elements to the Deck

Versions

  1. yarn: 1.3.2
  2. node: 6.9.1
  3. dekk: 1.0.0-5

Add timeline to fragments

Issue description

Fragments only allow simple transitions. It would be nice to have the same capabilities as we have with <Slide/>.

Slides and fragments could also use the same animations.

Versions

  • dekk: 1.0.0.-4

How to use "FitImage"

Issue description

The documentation is missing an example on how FitImage should be used.

Steps to reproduce

Versions

  1. dekk: 1.0.0-17

Plugins vs. global elements

Issue description

The new feature Plugins allows rendering global elements inside Deck.
There is no separation of Plugins and actually rendered components.

We could add a "slot" similar to Plugins which will allow separating both cases.

Steps to reproduce

Use the new feature Plugins and create a plugin that renders more than null.

Example: https://github.com/sinnerschrader/dekk/blob/ac4b54362e1868af5eb91e35b7e1d53b3c245858/gh-pages/gh-pages.js#L30-L36

Versions

Refactoring (identifier naming)

Issue description

The identifier naming is 🐯 ("wild"). Some newer features try to make these easier to understand: (See #12)

  • fragment => fragmentOrder
  • fragmentCount => fragmentIndex
  • page => slideIndex
  • pageCount => slideCount
  • ... (everything should use the same identifier for the same purpose

Steps to reproduce

Look at the source code (Store and anything in core that uses store + dependants)

Versions

  • dekk: 1.0.0-4

Increase precision of Timer

Issue description

Timer would be nice with seconds and milliseconds.

"Minutes only" are limiting the usage.

Steps to reproduce

  • Use `import Timer, {renderCountdown} from '@dekk/countdown'"

Versions

  1. dekk: 1.0.0-17

[poll] Dekk plugins

Issue description

We want to change the config/plugin logic

Suggestion 1

const plugins = [
  url({type: 'hash'})
  paging({trigger: 'keyup'})
]
<Deck plugins={plugins}></Deck>

Suggestion 2

<Deck>
  <Plugins >
    <Url type="hash" />
    <Paging trigger="keyup"/>
  </Plugins>
</Deck>

Set paging = true gives warning

Issue description

When setting the paging={true} I receive this warning in the browser console:

Warning: Failed prop type: Invalid prop `paging` of value `true` supplied to `Config`, expected one of [false].
    in Config (created by App)
    in App

Steps to reproduce

  • Use the Config component
  • Set paging to true: <Config paging={true} url='hash'/>

Versions

1.0.0.-4

  1. yarn: 1.3.2
  2. node 6.9.1

ToC not working in documentation

Issue description

The ToC on every page is not working, its always pointing to the home page.

Steps to reproduce

  • Click on any element in any ToC

Versions

  1. yarn: 1.3.2
  2. node 6.9.1
  3. dekk: 1.0.0-17

Master slide "Big" with only one area A

Issue description

Right now we only Cover and Chapter. Both of them are dividing the screen into A and B.

It would be nice to have an element that is in center of the whole screen. And that in only one area A.

This way the Cover would be different from the Chapter and people can use it in different ways.

Proposal

Big

Slot Content Alignment
A Any center, bottom
┏━━━━━━━━━━━━━━━┓
┃               ┃
┃       A       ┃
┃               ┃
┗━━━━━━━━━━━━━━━┛

Versions

  1. dekk: 1.0.0-17

"Text" inside "Main" master slide not working

Issue description

When using the Text component in the Main master slide I get this error:

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Steps to reproduce

  • Use the Main master slide
  • Add the Text element like this:
    <A>
      <Text>This is some text</Text>
    </A>

Versions

  1. yarn: 1.5.1
  2. node 6.9.1
  3. dekk: 1.0.0

pubnub / webRTC

Should pubnub be used. Are there other options?
Best case: something native, serverless.

running a server is not a problem and will probably be needed for routing anyways.

Discussion open.

Lerna

Does it make sense to use lerna for this project?

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.