diff --git a/js/impress.js b/js/impress.js
index d1d935f..c3b4df0 100644
--- a/js/impress.js
+++ b/js/impress.js
@@ -2081,6 +2081,20 @@
'useAMPM': false
};
break;
+ case 'zh-CN':
+ case 'zh-cn':
+ lang = {
+ 'noNotes': '
当前帧没有备注
',
+ 'restart': '重新开始',
+ 'clickToOpen': '点击以打开演讲者控制界面',
+ 'prev': '上一帧',
+ 'next': '下一帧',
+ 'loading': '加载中',
+ 'ready': '就绪',
+ 'moving': '移动中',
+ 'useAMPM': false
+ };
+ break;
case 'en': // jshint ignore:line
default : // jshint ignore:line
lang = {
@@ -4009,12 +4023,28 @@
var showSubstepIfAny = function( step ) {
var substeps = step.querySelectorAll( ".substep" );
- var visible = step.querySelectorAll( ".substep-visible" );
if ( substeps.length > 0 ) {
- return showSubstep( substeps, visible );
+ var sorted = sortSubsteps( substeps );
+ var visible = step.querySelectorAll( ".substep-visible" );
+ return showSubstep( sorted, visible );
}
};
+ var sortSubsteps = function( substepNodeList ) {
+ var substeps = Array.from( substepNodeList );
+ var sorted = substeps
+ .filter( el => el.dataset.substepOrder )
+ .sort( ( a, b ) => {
+ var orderA = a.dataset.substepOrder;
+ var orderB = b.dataset.substepOrder;
+ return parseInt( orderA ) - parseInt( orderB );
+ } )
+ .concat( substeps.filter( el => {
+ return el.dataset.substepOrder === undefined;
+ } ) );
+ return sorted;
+ };
+
var showSubstep = function( substeps, visible ) {
if ( visible.length < substeps.length ) {
for ( var i = 0; i < substeps.length; i++ ) {
@@ -4030,8 +4060,9 @@
var hideSubstepIfAny = function( step ) {
var substeps = step.querySelectorAll( ".substep" );
var visible = step.querySelectorAll( ".substep-visible" );
+ var sorted = sortSubsteps( visible );
if ( substeps.length > 0 ) {
- return hideSubstep( visible );
+ return hideSubstep( sorted );
}
};
diff --git a/package-lock.json b/package-lock.json
index 522c7c4..9a2668b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "impress.js",
- "version": "1.0.0",
+ "version": "1.1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/src/plugins/substep/README.md b/src/plugins/substep/README.md
index d15326b..0dec55c 100644
--- a/src/plugins/substep/README.md
+++ b/src/plugins/substep/README.md
@@ -9,6 +9,12 @@ alternatively hide one (for `prev()`). Only once all substeps are shown, will a
actually move to the next step, and only when all are hidden will a call to `prev()` move to the
previous one.
+By default, this plugin reveals substeps in the order in which they appear in the HTML. If you
+would like to reveal them in a different order, you can supply an integer to `data-substep-order`.
+If you do so, this plugin will reveal the substeps in ascending order; any substeps without a
+specified `data-substep-order` will be revealed after all substeps with a specified order have
+been revealed.
+
Calls to `goto()` will be ignored by this plugin, i.e. `goto()` will transition to whichever step is
the target.
diff --git a/src/plugins/substep/substep.js b/src/plugins/substep/substep.js
index 01d5fd5..2f08250 100644
--- a/src/plugins/substep/substep.js
+++ b/src/plugins/substep/substep.js
@@ -61,12 +61,28 @@
var showSubstepIfAny = function( step ) {
var substeps = step.querySelectorAll( ".substep" );
- var visible = step.querySelectorAll( ".substep-visible" );
if ( substeps.length > 0 ) {
- return showSubstep( substeps, visible );
+ var sorted = sortSubsteps( substeps );
+ var visible = step.querySelectorAll( ".substep-visible" );
+ return showSubstep( sorted, visible );
}
};
+ var sortSubsteps = function( substepNodeList ) {
+ var substeps = Array.from( substepNodeList );
+ var sorted = substeps
+ .filter( el => el.dataset.substepOrder )
+ .sort( ( a, b ) => {
+ var orderA = a.dataset.substepOrder;
+ var orderB = b.dataset.substepOrder;
+ return parseInt( orderA ) - parseInt( orderB );
+ } )
+ .concat( substeps.filter( el => {
+ return el.dataset.substepOrder === undefined;
+ } ) );
+ return sorted;
+ };
+
var showSubstep = function( substeps, visible ) {
if ( visible.length < substeps.length ) {
for ( var i = 0; i < substeps.length; i++ ) {
@@ -82,8 +98,9 @@
var hideSubstepIfAny = function( step ) {
var substeps = step.querySelectorAll( ".substep" );
var visible = step.querySelectorAll( ".substep-visible" );
+ var sorted = sortSubsteps( visible );
if ( substeps.length > 0 ) {
- return hideSubstep( visible );
+ return hideSubstep( sorted );
}
};