Commit Graph

154 Commits

Author SHA1 Message Date
thawk
dc3cf69747 Fix issue that data-x/y/z can't use relative-to-screen-size unit. (#815) 2022-07-21 21:49:39 +03:00
Henrik Ingo
78c954ac09 Change default target resolution to HD 1920x1080.
If you aren't setting target width and height explicitly in the root div,
this change will likely affect the size and layout of your presentation
steps. See DOCUMENTATION.md for details and how to fix.
2022-05-29 11:41:25 +03:00
Christoph Neumann
bc3612118a Fix impress().lib.util reference in blackout.js (#810) 2022-05-02 16:33:18 +03: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
thawk
d3760dfa0a make data-x/y/z supports relative-to-screen size (#804) 2022-02-13 12:35:52 +02:00
thawk
20f74a8b56 Fix relative-to-screen-size calculation (h and w) (#799) 2022-01-30 17:17:56 +02:00
thawk
4bceee7fd2 use decodeURIComponent() to get ID from URL hash 2021-08-03 13:22:23 +03:00
Ikko Ashimine
63dba5f128 Update impress.js 2021-07-28 22:05:03 +03:00
thawk
e366207cea apply markdown dialect to all elements 2021-07-28 11:01:40 +03:00
Daniel Sockwell
4c9d2e38aa Add ability to specify substep order (#779)
The substep plugin currently shows each substep in the order in which
it appears in the HTML.  This is not always an ideal fit for some
presentation styles, where it would be helpful to specify a different
order (e.g., to add annotations to an image).

This commit allows users to specify a custom order via the
`data-substep-order` attribute.  Substeps without a
`data-substep-order` attribute are revealed last.

This commit also updates the Substep README to document the new
feature.
2021-02-26 16:24:10 +02:00
Tim Gates
d8e2f17f95 docs: Fix simple typo, glithes -> glitches (#773) 2020-09-13 20:33:02 +03:00
Henrik Ingo
ddfb5eb78c Release version 1.1.0 2020-04-10 20:58:05 +03:00
Mohamed Feddad
93b846f07a Add autoplay URL parameter trigger. (#764)
Resolves #720
2020-04-02 13:21:20 +03:00
Mohamed Feddad
203b85808c Add markdown dialect attribute. (#763)
Resolves #724
2020-04-01 10:08:27 +03:00
Henrik Ingo
99484d11b8 node build.js forgotten in a media plugin update
Fixes b7983887aa
2020-03-29 11:28:54 +03:00
Oliver Sanders
934c2266c4 substep: add substep-active class (#741) 2019-09-11 14:42:24 +03:00
Henrik Ingo
05cf6ffded rel: In teardown, only reset data-x/y/z attribute if we modified it.
Fixes downstream bug in impressionist:
https://github.com/henrikingo/impressionist/issues/20
2019-06-27 06:58:48 +03:00
Christoph Weiler
628b78f3fd Bugfix: Scaling bug on swipe, when window scale is not 1 (#736) 2019-06-13 13:27:27 +03:00
Will Soares
c61403d57a Trigger event on substep enter (#730) 2019-04-25 13:41:50 +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
Guilherme I F L Weizenmann
97546a5536 Add fullscreen with support to remote presentation controller (#712)
- F5 to enter/exit
- Escape to exit
2019-02-06 13:36:04 +02:00
Guilherme I F L Weizenmann
6db3f7c877 Add support for "." to enter/exit blackout screen (#716)
* Add support for "." to enter/exit blackout screen

- This is the default on Power Point
- THis add support for remote controller presentation blackout key

* Rename autoplay event call from resume to play
2019-02-06 13:25:11 +02:00
Guilherme I F L Weizenmann
6776a0dab7 Add pause and play events to autoplay (#713)
This is useful to request pause/resume from other plugins
2019-02-06 13:21:51 +02:00
Henrik Ingo
4d3adb09cd Fix form plugin for input fields.
It turns out input[type=text] will only find input fields where
the type attribute is explicitly set to text, but would skip
fields that left it out and defaulted to type text. This changes
to catch all types of input elements.
2019-01-01 21:40:46 +02:00
zilioti
65870699f4 Add keyup event for shift space previous slide (#706) 2018-10-22 11:18:53 -04:00
Henrik Ingo
194ae3bb62 Fixes to data-rel-to
Fixes 80ffff0e8f
2018-05-08 20:01:11 +03:00
Henrik Ingo
67079504b5 Run node build.js to update js/impress.js from previous commit 2018-05-08 19:18:07 +03:00
Holger Teichert
80ffff0e8f rel: Add relative positioning relative to any previous step. (#686) 2018-05-01 21:57:40 +03:00
Holger Teichert
c09ce88749 New plugin: media (#676)
The media plugin can autoplay and autopause/autostop <audio> and <video> elements when entering and leaving a step.

Support for impressConsole: don't autoplay in preview window and play but mute clips in current window.
2018-03-17 16:33:34 +02: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
Jon Schlinkert
fbb17083d5 Fix condition in if statement for data-rotate-order
References #673
2018-03-04 13:58:41 +02:00
Henrik Ingo
e99a2df7f2 Fix typo 2018-01-07 18:46:36 +02:00
Henrik Ingo
4b5fe0fbf8 Set stopPropagation() event handlers for text input fields
Fixes #525 #140
2018-01-06 18:28:34 +02:00
Henrik Ingo
8b14eda98f Broader try-catch for handling impress-console-button disappearance (#652)
The previous attempt at merely reading a property of event.target was
incorrect. It worked at first but errors reappeared later, so must
have been a reace.

This wraps the entire navigation event handlers in the try-catch, and
then checks for the very specific error and suppresses it. Other errors
are rethrown as is.
2018-01-01 16:03:13 +02:00
Henrik Ingo
784a6d245b Also sync js/impress.js / Forgot to run node build.js 2018-01-01 15:32:16 +02:00
Henrik Ingo
729651dd5d Fix lint errors 2018-01-01 15:27:33 +02:00
Henrik Ingo
e92e02ccb4 Make impress-console-button actually clickable (#651)
Changed the onclick handler to trigger the impress:console:open event
and not use the impressConsole() global function any more. The latter
is considered deprecated now that impressConsole is integrated into
impress.js itself.

Also catch some errors that appear in event handlers when the target
for the click event was immediately removed from DOM.

Fixes #651
2018-01-01 15:05:55 +02:00
Naja Melan
b86214c6e9 impressConsole: Don't put onclick inside style attribute (#652) 2018-01-01 12:54:55 +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
d6c6cd47c2 Change gc.lib.addCallback to gc.lib.pushCallback (#626) 2017-11-05 18:42:27 +02:00
Henrik Ingo
2a8f784592 Bump version to 1.0.0-beta1 2017-11-05 18:42:27 +02:00
Henrik Ingo
443a4a82c1 Fix goto plugin: set lib variable from impress:init 2017-11-05 18:42:27 +02:00
Henrik Ingo
c9c1943f39 Update build.js to activate all the plugins added in previous commits
Also adds esversion:6 to .jshintrc. This is required by impressConsole.js.
2017-10-30 17:07:14 +02:00
Henrik Ingo
fd8bc69eb9 Add code comment that impress().swipe() is internal API method.
By internal, we mean it is not documented on DOCUMENTATION.md.
2017-10-23 22:29:59 +03:00
Henrik Ingo
b56b16d1cf Add support for data-rotate-order="xyz" attribute.
It turns out in CSS 3D, the order in which you specify for example
the rotateX(), rotateY() and rotateZ() transformations matter.
Each rotation is relative to the objects then-current position.
Impress.js being hardwired to always do rotateX->rotateY->rotateZ
was therefore limiting, and in fact there are some positions that
can never be reached with an xyz order. The new data-rotate-order=""
attribute allows to specify the order as a permutation of the 3
letters x, y, z, thus relaxing this limitation.

See http://openlife.cc/blogs/2016/october/3d-rotations-css-and-impressjs
for (much) more details.
2017-10-23 22:29:59 +03:00
Henrik Ingo
aa93a8b563 Support data-transition-duration attributes for step elements.
If the next element has its own data-transition-duration attribute,
use that value instead of the global setting.

References:
https://github.com/impress/impress.js/issues/142
2017-10-23 22:29:59 +03:00
Henrik Ingo
b15b07ef49 Trigger impress:steprefresh for every onStepEnter ( goto() )
Unlike impress:stepenter, we emit impress:steprefresh event also
when the "entered" step is the current step. This allows plugins
to reload or redraw objects if needed.

(Note that resize plugin already calls goto() on the active element
for similar purposes when it sees a window resize event. Emitting
impress:steprefresh allows other plugins to join in such a refresh,
and also others can call goto() if a refresh is needed.)
2017-10-23 22:29:59 +03:00
Kurt Zenisek
f0b99f81ac Add Mobile plugin, which allows authors to hide most slides with CSS.
The Mobile plugin adds CSS classes body.impress-mobile and
div.prev, div.next. These can be used in CSS to hide non-active
steps completely, in order to reduce memory consumption on
small mobile devices.
2017-10-23 22:29:59 +03:00
and3rson
b10f710499 Add swipe support for navigation between steps
Also:
 - Removes the code that allowed navigation by tapping left/right edge of screen.
   - Actually, this was already removed in this branch...
 - Removes the code that disabled impress.js on mobile devices
 - Adds new API call impress().swipe()

Refactored for the plugin api from this pull request by @and3rson:
https://github.com/impress/impress.js/pull/496

Manually "cherry picked" from
c44fd0f4c1
2017-10-23 22:29:59 +03:00
Henrik Ingo
10632c2ebc Add rel goto and skip plugins to build.js too 2017-10-21 14:31:56 +03:00