Skip to content

Commit

Permalink
add data-rel-inherit
Browse files Browse the repository at this point in the history
  • Loading branch information
thawk committed Mar 19, 2022
1 parent 3bbda65 commit e66f1d7
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
29 changes: 28 additions & 1 deletion js/impress.js
Original file line number Diff line number Diff line change
Expand Up @@ -4125,9 +4125,10 @@
};
}

var ref = prev;
if ( data.relTo ) {

var ref = document.getElementById( data.relTo );
ref = document.getElementById( data.relTo );
if ( ref ) {

// Test, if it is a previous step that already has some assigned position data
Expand Down Expand Up @@ -4164,6 +4165,7 @@
}
}


// While ``data-rel-reset="relative"`` or just ``data-rel-reset``,
// ``data-rel-x/y/z`` and ``data-rel-rotate-x/y/z`` will have default value of 0,
// instead of inherit from previous slide.
Expand All @@ -4185,6 +4187,25 @@
if ( data.relReset === "all" ) {
inheritRotation = false;
}
} else if ( el.hasAttribute( "data-rel-inherit" ) ) {
var inheritFrom = null;
if ( data.relInherit ) {

// If data-rel-inherit has value, it's the referenced node
inheritFrom = document.getElementById( data.relInherit );
}

if ( ! inheritFrom ) {
inheritFrom = ref;
}

prev.relative.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-x" ), 0 );
prev.relative.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-y" ), 0 );
prev.relative.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-z" ), 0 );
prev.relative.rotate.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-x" ), 0 );
prev.relative.rotate.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-y" ), 0 );
prev.relative.rotate.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-z" ), 0 );
prev.relative.rotate.order = inheritFrom.getAttribute( "data-rel-rotate-order" ) || "xyz";
}

var step = {
Expand Down Expand Up @@ -4296,6 +4317,12 @@
el.setAttribute( "data-rotate-z", step.rotate.z );
el.setAttribute( "data-rotate-order", step.rotate.order );
el.setAttribute( "data-rel-position", step.relative.position );
el.setAttribute( "data-rel-x", step.relative.x );
el.setAttribute( "data-rel-y", step.relative.y );
el.setAttribute( "data-rel-z", step.relative.z );
el.setAttribute( "data-rel-rotate-x", step.relative.rotate.x );
el.setAttribute( "data-rel-rotate-y", step.relative.rotate.y );
el.setAttribute( "data-rel-rotate-z", step.relative.rotate.z );
prev = step;
}
};
Expand Down
32 changes: 31 additions & 1 deletion src/plugins/rel/rel.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,10 @@
};
}

var ref = prev;
if ( data.relTo ) {

var ref = document.getElementById( data.relTo );
ref = document.getElementById( data.relTo );
if ( ref ) {

// Test, if it is a previous step that already has some assigned position data
Expand Down Expand Up @@ -132,6 +133,29 @@
if ( data.relReset === "all" ) {
inheritRotation = false;
}
} else if ( el.hasAttribute( "data-rel-inherit" ) ) {
var inheritFrom = null;
if ( data.relInherit ) {

// If data-rel-inherit has value, it's the referenced node
inheritFrom = document.getElementById( data.relInherit );
}

if ( !inheritFrom ) {
inheritFrom = ref;
}

prev.relative.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-x" ), 0 );
prev.relative.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-y" ), 0 );
prev.relative.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-z" ), 0 );
prev.relative.rotate.x =
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-x" ), 0 );
prev.relative.rotate.y =
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-y" ), 0 );
prev.relative.rotate.z =
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-z" ), 0 );
prev.relative.rotate.order =
inheritFrom.getAttribute( "data-rel-rotate-order" ) || "xyz";
}

var step = {
Expand Down Expand Up @@ -243,6 +267,12 @@
el.setAttribute( "data-rotate-z", step.rotate.z );
el.setAttribute( "data-rotate-order", step.rotate.order );
el.setAttribute( "data-rel-position", step.relative.position );
el.setAttribute( "data-rel-x", step.relative.x );
el.setAttribute( "data-rel-y", step.relative.y );
el.setAttribute( "data-rel-z", step.relative.z );
el.setAttribute( "data-rel-rotate-x", step.relative.rotate.x );
el.setAttribute( "data-rel-rotate-y", step.relative.rotate.y );
el.setAttribute( "data-rel-rotate-z", step.relative.rotate.z );
prev = step;
}
};
Expand Down

0 comments on commit e66f1d7

Please sign in to comment.