Skip to content

Commit 474fe47

Browse files
committed
add data-rel-inherit
1 parent aba0578 commit 474fe47

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

js/impress.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4116,9 +4116,10 @@
41164116
};
41174117
}
41184118

4119+
var ref = prev;
41194120
if ( data.relTo ) {
41204121

4121-
var ref = document.getElementById( data.relTo );
4122+
ref = document.getElementById( data.relTo );
41224123
if ( ref ) {
41234124

41244125
// Test, if it is a previous step that already has some assigned position data
@@ -4155,6 +4156,7 @@
41554156
}
41564157
}
41574158

4159+
41584160
// While ``data-rel-reset="relative"`` or just ``data-rel-reset``,
41594161
// ``data-rel-x/y/z`` and ``data-rel-rotate-x/y/z`` will have default value of 0,
41604162
// instead of inherit from previous slide.
@@ -4176,6 +4178,25 @@
41764178
if ( data.relReset === "all" ) {
41774179
inheritRotation = false;
41784180
}
4181+
} else if ( el.hasAttribute( "data-rel-inherit" ) ) {
4182+
var inheritFrom = null;
4183+
if ( data.relInherit ) {
4184+
4185+
// If data-rel-inherit has value, it's the referenced node
4186+
inheritFrom = document.getElementById( data.relInherit );
4187+
}
4188+
4189+
if ( ! inheritFrom ) {
4190+
inheritFrom = ref;
4191+
}
4192+
4193+
prev.relative.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-x" ), 0 );
4194+
prev.relative.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-y" ), 0 );
4195+
prev.relative.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-z" ), 0 );
4196+
prev.relative.rotate.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-x" ), 0 );
4197+
prev.relative.rotate.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-y" ), 0 );
4198+
prev.relative.rotate.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-z" ), 0 );
4199+
prev.relative.rotate.order = inheritFrom.getAttribute( "data-rel-rotate-order" ) || "xyz";
41794200
}
41804201

41814202
var step = {
@@ -4285,6 +4306,12 @@
42854306
el.setAttribute( "data-rotate-z", step.rotate.z );
42864307
el.setAttribute( "data-rotate-order", step.rotate.order );
42874308
el.setAttribute( "data-rel-position", step.relative.position );
4309+
el.setAttribute( "data-rel-x", step.relative.x );
4310+
el.setAttribute( "data-rel-y", step.relative.y );
4311+
el.setAttribute( "data-rel-z", step.relative.z );
4312+
el.setAttribute( "data-rel-rotate-x", step.relative.rotate.x );
4313+
el.setAttribute( "data-rel-rotate-y", step.relative.rotate.y );
4314+
el.setAttribute( "data-rel-rotate-z", step.relative.rotate.z );
42884315
prev = step;
42894316
}
42904317
};

src/plugins/rel/rel.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,10 @@
9595
};
9696
}
9797

98+
var ref = prev;
9899
if ( data.relTo ) {
99100

100-
var ref = document.getElementById( data.relTo );
101+
ref = document.getElementById( data.relTo );
101102
if ( ref ) {
102103

103104
// Test, if it is a previous step that already has some assigned position data
@@ -155,6 +156,29 @@
155156
if ( data.relReset === "all" ) {
156157
inheritRotation = false;
157158
}
159+
} else if ( el.hasAttribute( "data-rel-inherit" ) ) {
160+
var inheritFrom = null;
161+
if ( data.relInherit ) {
162+
163+
// If data-rel-inherit has value, it's the referenced node
164+
inheritFrom = document.getElementById( data.relInherit );
165+
}
166+
167+
if ( !inheritFrom ) {
168+
inheritFrom = ref;
169+
}
170+
171+
prev.relative.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-x" ), 0 );
172+
prev.relative.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-y" ), 0 );
173+
prev.relative.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-z" ), 0 );
174+
prev.relative.rotate.x =
175+
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-x" ), 0 );
176+
prev.relative.rotate.y =
177+
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-y" ), 0 );
178+
prev.relative.rotate.z =
179+
toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-z" ), 0 );
180+
prev.relative.rotate.order =
181+
inheritFrom.getAttribute( "data-rel-rotate-order" ) || "xyz";
158182
}
159183

160184
var step = {
@@ -264,6 +288,12 @@
264288
el.setAttribute( "data-rotate-z", step.rotate.z );
265289
el.setAttribute( "data-rotate-order", step.rotate.order );
266290
el.setAttribute( "data-rel-position", step.relative.position );
291+
el.setAttribute( "data-rel-x", step.relative.x );
292+
el.setAttribute( "data-rel-y", step.relative.y );
293+
el.setAttribute( "data-rel-z", step.relative.z );
294+
el.setAttribute( "data-rel-rotate-x", step.relative.rotate.x );
295+
el.setAttribute( "data-rel-rotate-y", step.relative.rotate.y );
296+
el.setAttribute( "data-rel-rotate-z", step.relative.rotate.z );
267297
prev = step;
268298
}
269299
};

0 commit comments

Comments
 (0)