24 Commits

Author SHA1 Message Date
77a83f6a4e Some ideas on API
probably not going to continue, as there is nowhere near enough need for
it
2025-10-24 14:29:51 +02:00
a1fa8bea3d make eslint default linter 2024-01-08 21:26:02 +01:00
b4cc35084c some more TS config 2024-01-08 20:53:24 +01:00
90653fa34e restructure, move to TS 2024-01-08 20:37:18 +01:00
janis
ad27645c39 Some more work on refactoring 2024-01-08 16:16:45 +01:00
thawk
629f7686f3 Add relative move and rotate to rel plugin (#794)
The relative position in rel plugin is currently based on the world coordinate. So for the same effect, like fly in from the right-hand side, we must use different `data-rel-x/y/z` value. Why not let the plugin do the hard part?

So I introduce a `data-rel-position`, when set to `relative`, all relative attribute is based on the position and rotation of previous slide. So no matter the rotation of previous slide, data-rel-x="1000" always looks like fly in from the right-hand side. We can change the position and rotation of one slide, and the position of all following slides will be changed too.

When `data-rel-position` is set to `relative`, relative rotation has a clear meaning. It describes the relative rotations between slides. We don't need to set rotations for all slide, setting the key slides is enough. If `data-rel-position` is not relative, the effect of `data-rel-rotate-x/y/z` is not clear, so they're only used when `data-rel-position="relative"`.

After the introduction of relative rotation, there're 6 attribute that will inherit from previous slide. If we want to set a relative X move, we have to set all other 5 attributes to 0. It's boring. So a `data-rel-clear` is used to set all 6 attributes to 0, and then the value specified in current slide is applied. 

The `examples/3D-positions/index.html` shows some usage. As you can see, the html code of two slide ring is the same, and slides except for the first two in a ring has no position attributes. It work by inheriting the previous one.

This PR invokes a lot math calculations. Basically, the rotation of a slide is translated into the coordinate describing the directions of X/Y/Z axes. And `data-rel-x/y/z` can be easily calculated by that. The rotations is the hard part, I mainly use the algorithm in the Quaternions and spatial rotation - Wikipedia to compose two and more rotations.  I'm not a math guy, hope I don't make much mistakes.
2022-04-24 21:37:50 +03:00
Henrik Ingo
ddfb5eb78c Release version 1.1.0 2020-04-10 20:58:05 +03:00
Henrik Ingo
ef57b5b471 Add npm run all to run build+test+lint 2020-03-29 11:32:18 +03:00
Henrik Ingo
511d87e726 Update all node_modules to newest versions 2020-03-29 11:26:05 +03:00
Moritz
898083116b Update dependencies and remove outdated ones (#722)
* Update dependencies and remove outdated ones
* Add package lock file
* Add minified file
* Karma now uses headless browser to run QUnit
* Add to readme that node and npm install is required
* Update license info
* Add lint-new but don't use it in CI yet
2019-04-10 10:21:23 +03:00
Henrik Ingo
e8394d0899 Remove beta label from version strings.
Also update Copyright / Author info in core module.
2018-03-09 10:23:25 +02:00
Henrik Ingo
df3532085f impressConsole broke init() if root element didn't have id="impress"
Also adds regression tests to prevent this from happening in the future
as well as upgrades karma-chrome-launcher to newest version.

Fixes #654
2017-12-31 14:36:43 +02:00
Henrik Ingo
2a8f784592 Bump version to 1.0.0-beta1 2017-11-05 18:42:27 +02:00
Henrik Ingo
e847fb4fb4 Add another demo presentation: examples/classic-slides
Add one presentation that provides a very simple demo, using
impress.js to create a very traditional "slide show". Possibly
it's an easier way to learn impress.js (it's commented, just like
the official demo.) It uses the relative positioning plugin and
uses "speaker notes", which aren't shown in the presentation,
but are picked up and shown in the speaker console (press 'P').
Also uses autoplay, forms... and includes short demo of all the extra
addons from extras/. (Highlight.js, Markdown.js, Mathjax.js, Mermaid.js)
2017-11-05 18:42:27 +02:00
Henrik Ingo
0dc8b43650 Introduce plugin framework
* Source files are under src/
* js/impress.js is now generated, but remains part of the repo (so it just works)
* npm run build
* build.js uses buildify node module
* Break out navigation and resize plugins from core src/impress.js file
2017-09-25 03:01:58 +03:00
Henrik Ingo
0b6dbede8b Lock versions for firefox and syn node modules 2017-09-24 13:32:49 +03:00
Henrik Ingo
deca6c0ec3 Remove embedded qunit.js and syn.js, only use them as node modules
I will squash this commit with the previous so that qunit.js and syn.js
are never pushed to the repo.
2017-09-19 00:00:39 +03:00
Henrik Ingo
7aaea7fd37 Merge more testing coverage from henrikingo fork
* core_tests.js and navigation_tests.js have more tests
* qunit_test_runner.html runs QUnit in a browser (without karma) and
  provides a generic iframe based platform to test different  presentations.
* copy qunit.js and syn.js into the repo. This allows qunit_test_runner.html
  to work without any dependency on node/npm. (Karma obviously does need them.)
* Move jscs cli option to .jscsrc instead
2017-09-16 13:08:51 +03:00
John-David Dalton
66ca2c02d8 Add sauce test script to package.json and command to circle.yml. (#582) 2016-09-26 16:11:06 -07:00
John-David Dalton
77a9ce5e4a Add sauce labs integration. 2016-09-26 14:10:54 -07:00
Fagner Brack
1f074925b2 release version 0.6.0 2016-07-03 18:16:40 +10:00
Nik Butenko
2c27f31263 Run tests with Karma test runner
Closes gh-566.
2016-06-16 21:35:08 +10:00
Fagner Brack
5bdd534321 Execute the tests through npm
Closes gh-556.
2016-05-07 18:40:30 +10:00
Fagner Brack
3f4eddeb6e Apply JSHint and JSCS with jQuery configs
Closes gh-535. Closes gh-529.
2016-04-16 16:55:49 +10:00