Skip to content

Major Refactor #863

@janishutz

Description

@janishutz

V3.0

Since I will again have much more time to spend on other projects in the near future, I wanted to do something I had wanted to do for a long time, which is making impress.js much more flexible. Since this requires some major rewrites, I am strongly in favour of making this a breaking change, meaning that some APIs will go away / be replaced by new ones as well as some additional ones coming to impress.

New features

  • For example, to enable more flexibility in transitions, I would like to expose a movement API such that all the positioning / transitioning (I haven't thought about how exactly to do it just yet) will be handled in plugins to allow for more versatile transitions like zoom-in zoom-out or zoom-out zoom-in between the movement.
  • Work to reduce the amount of open issues by trying to address all suggestions and bugs in them
  • Migrate to eslint from jshint
  • Update all plugins to the new api
  • Update all the unit tests to work with the new APIs
  • Update the demo
  • Update the examples
  • Update website to allow for switching between impress.js versions for docs
  • Optimize docs building script by enforcing certain md restrictions like only allowing for absolute links to other docs
  • Add option to customize mouse-navigation (click to go to next step or click onto a step to go to that one (like a simple toggle))
  • Clean up plugins (merge similar ones)
  • ensure that keylisteners are in the main impress function (or one of them) and it calls functions in plugins if they request a certain key.

Other considerations

  • I would argue that still supporting the V2.0 series would be something that is required to do, but only for bug fixes.
  • I will be adding a guide to migrate both plugins and presentations to the new version. Though, presentations will NOT be needed to update to still work, they should continue working in the same way as they do now with the new version, only that there will be more features available.

Final thoughts

If you have any suggestions or concerns, please let me know. I am planning to start on this in December 2023 or January 2024.
I am also planning to use this as an opportunity to drop support for IE and use more modern web APIs to make it more flexible and to speed things up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions