Skip to content

Commit 3bf75ad

Browse files
committed
add data-rel-inherit
1 parent aba0578 commit 3bf75ad

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-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: 28 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
@@ -134,6 +135,7 @@
134135
}
135136
}
136137

138+
137139
// While ``data-rel-reset="relative"`` or just ``data-rel-reset``,
138140
// ``data-rel-x/y/z`` and ``data-rel-rotate-x/y/z`` will have default value of 0,
139141
// instead of inherit from previous slide.
@@ -155,6 +157,25 @@
155157
if ( data.relReset === "all" ) {
156158
inheritRotation = false;
157159
}
160+
} else if ( el.hasAttribute( "data-rel-inherit" ) ) {
161+
var inheritFrom = null;
162+
if ( data.relInherit ) {
163+
164+
// If data-rel-inherit has value, it's the referenced node
165+
inheritFrom = document.getElementById( data.relInherit );
166+
}
167+
168+
if ( ! inheritFrom ) {
169+
inheritFrom = ref;
170+
}
171+
172+
prev.relative.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-x" ), 0 );
173+
prev.relative.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-y" ), 0 );
174+
prev.relative.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-z" ), 0 );
175+
prev.relative.rotate.x = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-x" ), 0 );
176+
prev.relative.rotate.y = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-y" ), 0 );
177+
prev.relative.rotate.z = toNumberAdvanced( inheritFrom.getAttribute( "data-rel-rotate-z" ), 0 );
178+
prev.relative.rotate.order = inheritFrom.getAttribute( "data-rel-rotate-order" ) || "xyz";
158179
}
159180

160181
var step = {
@@ -264,6 +285,12 @@
264285
el.setAttribute( "data-rotate-z", step.rotate.z );
265286
el.setAttribute( "data-rotate-order", step.rotate.order );
266287
el.setAttribute( "data-rel-position", step.relative.position );
288+
el.setAttribute( "data-rel-x", step.relative.x );
289+
el.setAttribute( "data-rel-y", step.relative.y );
290+
el.setAttribute( "data-rel-z", step.relative.z );
291+
el.setAttribute( "data-rel-rotate-x", step.relative.rotate.x );
292+
el.setAttribute( "data-rel-rotate-y", step.relative.rotate.y );
293+
el.setAttribute( "data-rel-rotate-z", step.relative.rotate.z );
267294
prev = step;
268295
}
269296
};

0 commit comments

Comments
 (0)