reveal.js-appearance 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +115 -82
- package/package.json +72 -63
- package/plugin/appearance/appearance.css +10 -234
- package/plugin/appearance/appearance.js +1 -15
- package/plugin/appearance/appearance.mjs +673 -0
- package/CHANGELOG.md +0 -112
- package/plugin/appearance/appearance.esm.js +0 -15
package/CHANGELOG.md
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
## [1.3.2] - 2023-11-18
|
|
5
|
-
### Added
|
|
6
|
-
- Added embedded example to the demo’s
|
|
7
|
-
|
|
8
|
-
### Changed
|
|
9
|
-
- Fixed a bug where the plugin would not work if in an embedded presentation
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## [1.3.1] - 2023-11-05
|
|
13
|
-
### Added
|
|
14
|
-
- Added Terser to minimize files
|
|
15
|
-
|
|
16
|
-
### Changed
|
|
17
|
-
- Fixed invisible elements in auto-animate slides
|
|
18
|
-
- Changed demo to align normal and MarkDown slides
|
|
19
|
-
- Changed loadStyle function
|
|
20
|
-
- Updated gulp file and dev dependencies
|
|
21
|
-
|
|
22
|
-
## [1.3.0] - 2023-10-25
|
|
23
|
-
### Added
|
|
24
|
-
- Added word and character appearances
|
|
25
|
-
|
|
26
|
-
### Changed
|
|
27
|
-
- The plugin is totally refactored and uses a promise.
|
|
28
|
-
- Fix for fragments as Appearance items
|
|
29
|
-
- Another fix for hidden items in speaker view
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## [1.2.1] - 2023-07-22
|
|
33
|
-
### Added
|
|
34
|
-
- Fix for hidden items in print and speaker view
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## [1.2.0] - 2023-05-05
|
|
38
|
-
### Added
|
|
39
|
-
- Added local, specified, auto-appear
|
|
40
|
-
- Added Markdown example
|
|
41
|
-
- Added fix for Quarto list items
|
|
42
|
-
|
|
43
|
-
### Changed
|
|
44
|
-
- Reordered documentation
|
|
45
|
-
- Fragments can now be Appearance items
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
## [1.1.3] - 2022-06-26
|
|
49
|
-
### Changed
|
|
50
|
-
- Fixed a bug if there was no previous slide
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
## [1.1.2] - 2022-06-26
|
|
54
|
-
### Added
|
|
55
|
-
- Added auto-loading of styles.
|
|
56
|
-
|
|
57
|
-
### Changed
|
|
58
|
-
- Changed the internal delay mechanism to use CSS animation delay in combination to adding the trigger on the parent, not each animated element. This will improve the performance.
|
|
59
|
-
- ***Breaking change***: Moved to Animate.css version 4, but added a compatibility mode
|
|
60
|
-
|
|
61
|
-
## [1.1.1] - 2021-11-27
|
|
62
|
-
### Added
|
|
63
|
-
- Added a new `autoappear` mode, for use in cases where adding animation classes is too much of a hassle, like inside Markdown.
|
|
64
|
-
- Started keeping the changelog.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
## [1.1.0] - 2021-09-03
|
|
69
|
-
### Added
|
|
70
|
-
- Added Github corner badge
|
|
71
|
-
|
|
72
|
-
### Changed
|
|
73
|
-
- Changed readme
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
## [1.0.9] - 2021-06-30
|
|
78
|
-
### Changed
|
|
79
|
-
- Fixed a bug where '=' was '=='.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
## [1.0.8] - 2021-06-27
|
|
84
|
-
### Added
|
|
85
|
-
- Choose an event at which Appearance launches its animations
|
|
86
|
-
|
|
87
|
-
### Changed
|
|
88
|
-
- Appearance now shows the complete slides from the overview
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
## [1.0.7] - 2020-06-28
|
|
93
|
-
### Changed
|
|
94
|
-
- Clearing timeouts that are in past slides. This solves 'hanging' Appearance items if you slide back and forth.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
## [1.0.6] - 2020-06-28
|
|
99
|
-
### Changed
|
|
100
|
-
- Fix bug that hid Appearance items in PDF exports.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
## [1.0.5] - 2020-05-20
|
|
105
|
-
### Added
|
|
106
|
-
- Added compatibility with the new Reveal.js 4 that changes the way plugins work.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
## [1.0.4] - 2020-05-20
|
|
111
|
-
### Added
|
|
112
|
-
- The 1.0.4 release is compatible with Reveal.js 3. Reveal versions lower than 4 have no "slidetransitionend" event, so this release also has the Transit.js plugin included (see https://github.com/Martinomagnifico/reveal.js-transit for more information).
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/*****************************************************************
|
|
2
|
-
*
|
|
3
|
-
* Appearance for Reveal.js
|
|
4
|
-
* Version 1.3.3
|
|
5
|
-
*
|
|
6
|
-
* @author: Martijn De Jongh (Martino), martijn.de.jongh@gmail.com
|
|
7
|
-
* https://github.com/martinomagnifico
|
|
8
|
-
*
|
|
9
|
-
* @license
|
|
10
|
-
* MIT licensed
|
|
11
|
-
*
|
|
12
|
-
* Copyright (C) 2023 Martijn De Jongh (Martino)
|
|
13
|
-
*
|
|
14
|
-
******************************************************************/
|
|
15
|
-
const e=e=>e&&"object"==typeof e&&!Array.isArray(e),t=(a,...s)=>{if(!s.length)return a;const n=s.shift();if(e(a)&&e(n))for(const s in n)e(n[s])?(a[s]||Object.assign(a,{[s]:{}}),t(a[s],n[s])):Object.assign(a,{[s]:n[s]});return t(a,...s)},a=e=>{let t="";return"string"==typeof e&&(e=e.replace(/[“”]/g,'"').replace(/[‘’]/g,"'")),t=(e=>{try{return JSON.parse(e)&&!!e}catch(e){return!1}})(e)?e:"object"==typeof e?JSON.stringify(e,null,2):"{"===e.trim().replace(/'/g,'"').charAt(0)?e.trim().replace(/'/g,'"'):`{${e.trim().replace(/'/g,'"')}}`,t},s=(e,t,a)=>{let s,n=document.querySelector("head"),r=!1;if("script"===t?document.querySelector(`srcipt[src="${e}"]`)?r=!0:(s=document.createElement("script"),s.type="text/javascript",s.src=e):"stylesheet"===t&&(document.querySelector(`link[href="${e}"]`)?r=!0:(s=document.createElement("link"),s.rel="stylesheet",s.href=e)),!r){const e=()=>{"function"==typeof a&&(a.call(),a=null)};s.onload=e,s.onreadystatechange=function(){"loaded"===this.readyState&&e()},n.appendChild(s)}},n=(e,t)=>{e.debug&&console.log(t)},r=(e,t)=>{let a=(e=>{let t,a=document.querySelector(`script[src$="${e}"]`);return t=a?a.getAttribute("src").slice(0,-1*e.length):import.meta.url.slice(0,import.meta.url.lastIndexOf("/")+1),t})(t),n=t.replace(/\.[^/.]+$/,""),r=e.csspath.appearance?e.csspath.appearance:`${a}${n}.css`||`plugin/${n}/${n}.css`,i=e.compatibility?e.animatecsspath.compat:e.animatecsspath.link;e.debug&&(console.log("Paths:"),console.log(` - Plugin path = ${a}`),console.log(` - Appearance CSS path = ${r}`),console.log(` - AnimateCSS CSS path = ${i}`)),s(i,"stylesheet",(function(){s(r,"stylesheet")}))},i=(e,t)=>{let a=e.parentNode;if(a){for(const t of a.children)if(t!==e&&t.dataset.appearParent)return;a.classList=e.classList,(({attributes:e},t,a)=>{[...e].filter((({nodeName:e})=>e.includes("data"))).forEach((({nodeName:e,nodeValue:s})=>{(a&&e!==a||!a)&&t.setAttribute(e,s)}))})(e,a,"data-appear-parent"),a.innerHTML=e.innerHTML,a.classList.add(t)}},l=(e,t,a)=>Array.from(a.querySelectorAll(`.${e}`)).filter((e=>!e.closest(`.${t}`))),o=(e,t,a)=>{const s=[l(t,a,e),...Array.from(e.querySelectorAll(`.${a}`)).map((e=>((e,t,a)=>Array.from(a.querySelectorAll(`.${e}`)).filter((e=>e.closest(`.${t}`)===a)))(t,a,e)))];return!!s.some((e=>e.length>0))&&s},c=(e,t)=>{t.hideagain&&e.from&&e.from.dataset.appearanceCanStart&&e.from.removeAttribute("data-appearance-can-start")},d=(e,t,a)=>{if(t.hideagain&&e&&e.from){let t=e.from.querySelectorAll(a.animatecss);t&&t.forEach((e=>{e.classList.remove("animationended")}));let s=e.from.querySelectorAll(".fragment.visible");s&&s.forEach((e=>{e.classList.remove("visible")}))}},p=()=>{const e={names:{}};let s={};const l=(e,t,s)=>{n(e,"------------- Preloading -------------");let l=t.names;r(e,l.es5Filename),e.compatibility&&(l.animatecss=".backInDown, .backInLeft, .backInRight, .backInUp, .bounceIn, .bounceInDown, .bounceInLeft, .bounceInRight, .bounceInUp, .fadeIn, .fadeInDown, .fadeInDownBig, .fadeInLeft, .fadeInLeftBig, .fadeInRight, .fadeInRightBig, .fadeInUp, .fadeInUpBig, .fadeInTopLeft, .fadeInTopRight, .fadeInBottomLeft, .fadeInBottomRight, .flipInX, .flipInY, .lightSpeedInRight, .lightSpeedInLeft, .rotateIn, .rotateInDownLeft, .rotateInDownRight, .rotateInUpLeft, .rotateInUpRight, .jackInTheBox, .rollIn, .zoomIn, .zoomInDown, .zoomInLeft, .zoomInRight, .zoomInUp, .slideInDown, .slideInLeft, .slideInRight, .slideInUp, .skidLeft, .skidLeftBig, .skidRight, .skidRightBig, .shrinkIn, .shrinkInBlur",l.baseclass=e.compatibilitybaseclass),t.appearances=Array.from(t.slides.querySelectorAll(l.animatecss)),t.regularSections.forEach((s=>((e,t,s)=>{let n=null;if(e.hasAttribute("data-autoappear")){let a=e.dataset.autoappear;n="auto"==a||""==a||a.length<1||"true"==a?t.autoelements?t.autoelements:null:a}else t.autoappear&&t.autoelements&&(n=t.autoelements);if(n){let t=JSON.parse(a(n));Object.entries(t).forEach((([t,a])=>{let n=Array.from(e.querySelectorAll(t)).filter((e=>!s.appearances.includes(e)));n.length&&n.forEach((e=>{s.appearances.push(e);let t=[],n=null,r=!1,i=null,l=null;Array.isArray(a)?(t=a[0].split(/[ ,]+/),n=a[1]):"string"==typeof a?t=a.split(/[ ,]+/):a.constructor===Object&&((a.class||a.animation)&&(t=(a.animation?a.animation:a.class).split(/[ ,]+/)),a.speed&&(r=String(a.speed),r.includes("animate__")||(r=`animate__${r}`)),a.delay&&(n=String(a.delay)),a.split&&(i=String(a.split)),a["container-delay"]&&(l=String(a["container-delay"]))),e.classList.add(...t),r&&e.classList.add(r),n&&(e.dataset.delay||(e.dataset.delay=n)),i&&(e.dataset.split=i),l&&(e.dataset.containerDelay=l)}))}))}})(s,e,t))),t.appearances.forEach(((t,a)=>{((e,t,a)=>{let s=a.baseclass;e.hasAttribute("data-appear-parent")&&i(e,s),t.appearparents&&e.parentNode&&e.parentNode.tagName&&"SPAN"==e.tagName&&"LI"==e.parentNode.tagName&&String(e.outerHTML).length==String(e.parentNode.innerHTML).length&&i(e)})(t,e,l),((e,t)=>{e.classList.contains(t.baseclass)||e.classList.add(t.baseclass),e.classList.contains(t.fragmentClass)&&e.classList.add("custom")})(t,l),t.hasAttribute("data-split")&&((e,t)=>{let a=!1,s=" ";if("words"==t?a=e.textContent.trim().split(/\s+/):"letters"==t&&(a=e.textContent.trim().split(""),s=""),a){const t=Array.from(e.classList).filter((e=>e.startsWith("animate__"))),n=a.map(((t,a)=>{const s=document.createElement("span");return s.textContent=t," "==t&&(s.textContent=" "),e.dataset.delay&&0!==a&&(s.dataset.delay=e.dataset.delay),e.dataset.containerDelay&&0===a&&(s.dataset.delay=e.dataset.containerDelay),e.classList.forEach((e=>e.startsWith("animate__")&&s.classList.add(e))),s.outerHTML})).join(s);t.forEach((t=>e.classList.remove(t))),e.removeAttribute("data-delay"),e.removeAttribute("data-split"),e.removeAttribute("data-container-delay"),e.innerHTML=n}})(t,t.dataset.split)})),t.regularSections.forEach(((t,a)=>{let s=o(t,l.baseclass,l.fragmentClass);s&&s.forEach((t=>{((e,t,a)=>{let s=0;e.forEach(((e,a)=>{if(0==a&&e.dataset.delay||0!=a){let a=t.delay;e.dataset&&e.dataset.delay&&(a=parseInt(e.dataset.delay)),s+=a,e.style.setProperty("animation-delay",s+"ms"),e.removeAttribute("data-delay")}}))})(t,e)}))})),(e=>{setTimeout(e,0)})(s)},p=(t,a,s)=>{let r=e.names;return r.baseclass=a.baseclass,r.compatibilitybaseclass=a.compatibilitybaseclass,r.fragmentSelector=".fragment",r.fragmentClass="fragment",r.speedClasses=["slower","slow","fast","faster"],r.speedClasses.push(...r.speedClasses.map((e=>`animate__${e}`))),r.animatecss='[class^="animate__"],[class*=" animate__"]',r.es5Filename=s,r.eventnames=["ready","slidechanged","slidetransitionend","autoanimate","overviewhidden"],e.deck=t,e.dom=t.getRevealElement(),e.viewport=t.getViewportElement(),e.slides=t.getSlidesElement(),e.sections=e.slides.querySelectorAll("section"),e.fragments=e.slides.querySelectorAll(r.fragmentSelector),e.regularSections=Array.from(e.sections).filter((e=>!(({childNodes:e})=>{let t=!1;for(let a=0;a<e.length;a++)if("SECTION"==e[a].tagName){t=!0;break}return t})(e))),/receiver/i.test(window.location.search)&&e.viewport.classList.add("sv"),r.eventnames.forEach((s=>t.on(s,(t=>{((e,t,a,s)=>{s.deck.getConfig().view;let n=s.viewport.classList.contains("reveal-scroll"),r=e.type,i=(e=>{let t={};return t.from=e.fromSlide||e.previousSlide||null,t.to=e.toSlide||e.currentSlide||null,t})(e);if(i.to){"ready"==r&&(i.to.dataset.appearanceCanStart=!0);let s=((e,t)=>(e.dataset.appearevent&&"auto"===e.dataset.appearevent&&(e.dataset.appearevent="autoanimate"),"auto"==t.appearevent&&(t.appearevent="autoanimate"),e.dataset.appearevent?e.dataset.appearevent:t.appearevent))(i.to,t);(r==s||"slidetransitionend"==r&&"autoanimate"==s)&&(i.to.dataset.appearanceCanStart=!0),n&&"slidechanged"==r&&(c(i,t),d(i,t,a),setTimeout((()=>{i.to.dataset.appearanceCanStart=!0}),t.delay)),"slidetransitionend"==r&&(c(i,t),d(i,t,a)),"slidechanged"==r&&document.body.dataset.exitoverview?(c(i,t),i.to.dataset.appearanceCanStart=!0):"overviewhidden"==r&&(document.body.dataset.exitoverview=!0,setTimeout((()=>{document.body.removeAttribute("data-exitoverview")}),500),e.currentSlide&&(c(i,t),i.to.dataset.appearanceCanStart=!0))}})(t,a,r,e)})))),e.viewport.addEventListener("animationend",(e=>{e.target.classList.add("animationended")})),e.viewport.addEventListener("fragmenthidden",(e=>{e.fragment.classList.remove("animationended"),e.fragment.querySelectorAll(".animationended").forEach((e=>{e.classList.remove("animationended")}))})),new Promise((t=>{l(a,e,t),n(a,"---------- Done preloading ----------")}))};return{id:"appearance",init:e=>(s=t({baseclass:"animate__animated",hideagain:!0,delay:300,debug:!1,appearevent:"slidetransitionend",autoappear:!1,autoelements:!1,appearparents:!1,csspath:"",animatecsspath:{link:"https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css",compat:"https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.compat.css"},compatibility:!1,compatibilitybaseclass:"animated"},e.getConfig().appearance||{}),p(e,s,"appearance.js"))}};export{p as default};
|