Fixed highlight doctest.
This commit is contained in:
parent
c3477244b9
commit
9a399ecfe9
11
css/highlight.css
Normal file
11
css/highlight.css
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
circle
|
||||||
|
{
|
||||||
|
stroke: white;
|
||||||
|
fill: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
mask circle
|
||||||
|
{
|
||||||
|
stroke-width: 0;
|
||||||
|
fill: white;
|
||||||
|
}
|
41
dist/iwmlib.js
vendored
41
dist/iwmlib.js
vendored
@ -7828,7 +7828,7 @@
|
|||||||
static animateCircle(target, callback) {
|
static animateCircle(target, callback) {
|
||||||
console.log('ANIMATE CIRCLE', this);
|
console.log('ANIMATE CIRCLE', this);
|
||||||
// ** DEBUG OUTPUTS **
|
// ** DEBUG OUTPUTS **
|
||||||
|
|
||||||
let circle = target;
|
let circle = target;
|
||||||
// We need a unique id to ensure correspondence between circle, mask, and maskImage
|
// We need a unique id to ensure correspondence between circle, mask, and maskImage
|
||||||
if (!circle.hasAttribute('id')) {
|
if (!circle.hasAttribute('id')) {
|
||||||
@ -7898,28 +7898,22 @@
|
|||||||
scale = 2,
|
scale = 2,
|
||||||
onExpanded = null
|
onExpanded = null
|
||||||
} = {}) {
|
} = {}) {
|
||||||
|
|
||||||
console.log('Open Highlight!', target);
|
|
||||||
|
|
||||||
if (Highlight._isExpanded(target)) {
|
if (Highlight._isExpanded(target)) {
|
||||||
console.log('Target is already expanded!');
|
console.log('Target is already expanded!');
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
let targetId = target.getAttribute('id');
|
let targetId = target.getAttribute('id');
|
||||||
console.log(targetId, targetId && targetId.startsWith('@@'));
|
if (targetId && targetId.startsWith('@@')) {
|
||||||
if(targetId && targetId.startsWith('@@')){
|
|
||||||
let id = targetId.slice(2);
|
let id = targetId.slice(2);
|
||||||
const imageId = '#maskImage'+id;
|
const imageId = '#maskImage' + id;
|
||||||
const parent = target.parentNode;
|
const parent = target.parentNode;
|
||||||
if(parent != null){
|
if (parent != null) {
|
||||||
let image = parent.querySelector(imageId);
|
let image = parent.querySelector(imageId);
|
||||||
if(image){
|
if (image) {
|
||||||
this._bringToFront(image);
|
this._bringToFront(image);
|
||||||
}else console.error('Could not find corresponding image element.');
|
} else console.error('Could not find corresponding image element.');
|
||||||
}else console.log('Element was no parent:', target);
|
} else console.log('Element was no parent:', target);
|
||||||
}
|
}
|
||||||
console.log("_bringToFront");
|
|
||||||
this._bringToFront(target);
|
this._bringToFront(target);
|
||||||
|
|
||||||
let svgRoot = target.closest('svg');
|
let svgRoot = target.closest('svg');
|
||||||
@ -7927,8 +7921,6 @@
|
|||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
let [mask, maskImage] = Highlight._getSVGMask(target, { svgRoot, image });
|
let [mask, maskImage] = Highlight._getSVGMask(target, { svgRoot, image });
|
||||||
|
|
||||||
console.log({svgRoot, image, mask, maskImage});
|
|
||||||
let center = Highlight._calculateCenterRelativeTo(target, image);
|
let center = Highlight._calculateCenterRelativeTo(target, image);
|
||||||
|
|
||||||
TweenLite.set(maskImage, { transformOrigin: `${center.x}% ${center.y}%` });
|
TweenLite.set(maskImage, { transformOrigin: `${center.x}% ${center.y}%` });
|
||||||
@ -7940,19 +7932,24 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
target.classList.add('expanded');
|
target.classList.add('expanded');
|
||||||
console.log({target, maskImage, scale, animation});
|
|
||||||
console.log(maskImage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static _bringToFront(target){
|
static toggleHighlight(node) {
|
||||||
|
if (Highlight._isExpanded(node)) {
|
||||||
|
Highlight.closeHighlight(node);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Highlight.openHighlight(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static _bringToFront(target) {
|
||||||
const parent = target.parentNode;
|
const parent = target.parentNode;
|
||||||
if(target && parent){
|
if (target && parent) {
|
||||||
parent.removeChild(target);
|
parent.removeChild(target);
|
||||||
parent.appendChild(target);
|
parent.appendChild(target);
|
||||||
}else console.error('Could not bring to front. Either no target or no parent.', target, parent);
|
} else console.error('Could not bring to front. Either no target or no parent.', target, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _getSVGMask(circle, { svgRoot = null, image = null } = {}) {
|
static _getSVGMask(circle, { svgRoot = null, image = null } = {}) {
|
||||||
|
@ -123,7 +123,7 @@ export class Highlight extends Object {
|
|||||||
static animateCircle(target, callback) {
|
static animateCircle(target, callback) {
|
||||||
console.log('ANIMATE CIRCLE', this)
|
console.log('ANIMATE CIRCLE', this)
|
||||||
// ** DEBUG OUTPUTS **
|
// ** DEBUG OUTPUTS **
|
||||||
|
|
||||||
let circle = target
|
let circle = target
|
||||||
// We need a unique id to ensure correspondence between circle, mask, and maskImage
|
// We need a unique id to ensure correspondence between circle, mask, and maskImage
|
||||||
if (!circle.hasAttribute('id')) {
|
if (!circle.hasAttribute('id')) {
|
||||||
@ -193,28 +193,22 @@ export class Highlight extends Object {
|
|||||||
scale = 2,
|
scale = 2,
|
||||||
onExpanded = null
|
onExpanded = null
|
||||||
} = {}) {
|
} = {}) {
|
||||||
|
|
||||||
console.log('Open Highlight!', target)
|
|
||||||
|
|
||||||
if (Highlight._isExpanded(target)) {
|
if (Highlight._isExpanded(target)) {
|
||||||
console.log('Target is already expanded!')
|
console.log('Target is already expanded!')
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
let targetId = target.getAttribute('id')
|
let targetId = target.getAttribute('id')
|
||||||
console.log(targetId, targetId && targetId.startsWith('@@'))
|
if (targetId && targetId.startsWith('@@')) {
|
||||||
if(targetId && targetId.startsWith('@@')){
|
|
||||||
let id = targetId.slice(2)
|
let id = targetId.slice(2)
|
||||||
const imageId = '#maskImage'+id
|
const imageId = '#maskImage' + id
|
||||||
const parent = target.parentNode
|
const parent = target.parentNode
|
||||||
if(parent != null){
|
if (parent != null) {
|
||||||
let image = parent.querySelector(imageId)
|
let image = parent.querySelector(imageId)
|
||||||
if(image){
|
if (image) {
|
||||||
this._bringToFront(image)
|
this._bringToFront(image)
|
||||||
}else console.error('Could not find corresponding image element.')
|
} else console.error('Could not find corresponding image element.')
|
||||||
}else console.log('Element was no parent:', target)
|
} else console.log('Element was no parent:', target)
|
||||||
}
|
}
|
||||||
console.log("_bringToFront")
|
|
||||||
this._bringToFront(target)
|
this._bringToFront(target)
|
||||||
|
|
||||||
let svgRoot = target.closest('svg')
|
let svgRoot = target.closest('svg')
|
||||||
@ -222,8 +216,6 @@ export class Highlight extends Object {
|
|||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
let [mask, maskImage] = Highlight._getSVGMask(target, { svgRoot, image })
|
let [mask, maskImage] = Highlight._getSVGMask(target, { svgRoot, image })
|
||||||
|
|
||||||
console.log({svgRoot, image, mask, maskImage})
|
|
||||||
let center = Highlight._calculateCenterRelativeTo(target, image)
|
let center = Highlight._calculateCenterRelativeTo(target, image)
|
||||||
|
|
||||||
TweenLite.set(maskImage, { transformOrigin: `${center.x}% ${center.y}%` })
|
TweenLite.set(maskImage, { transformOrigin: `${center.x}% ${center.y}%` })
|
||||||
@ -235,19 +227,24 @@ export class Highlight extends Object {
|
|||||||
})
|
})
|
||||||
|
|
||||||
target.classList.add('expanded')
|
target.classList.add('expanded')
|
||||||
console.log({target, maskImage, scale, animation})
|
|
||||||
console.log(maskImage)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static _bringToFront(target){
|
static toggleHighlight(node) {
|
||||||
|
if (Highlight._isExpanded(node)) {
|
||||||
|
Highlight.closeHighlight(node)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Highlight.openHighlight(node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static _bringToFront(target) {
|
||||||
const parent = target.parentNode
|
const parent = target.parentNode
|
||||||
if(target && parent){
|
if (target && parent) {
|
||||||
parent.removeChild(target)
|
parent.removeChild(target)
|
||||||
parent.appendChild(target)
|
parent.appendChild(target)
|
||||||
}else console.error('Could not bring to front. Either no target or no parent.', target, parent)
|
} else console.error('Could not bring to front. Either no target or no parent.', target, parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
static _getSVGMask(circle, { svgRoot = null, image = null } = {}) {
|
static _getSVGMask(circle, { svgRoot = null, image = null } = {}) {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<title>Doctests Cards</title>
|
<title>Doctests Cards</title>
|
||||||
<link rel="stylesheet" href="../3rdparty/highlight/styles/default.css">
|
<link rel="stylesheet" href="../3rdparty/highlight/styles/default.css">
|
||||||
<link rel="stylesheet" href="../../css/doctest.css">
|
<link rel="stylesheet" href="../../css/doctest.css">
|
||||||
|
<link rel="stylesheet" href="../../css/highlight.css">
|
||||||
<script src="../3rdparty/highlight/highlight.pack.js"></script>
|
<script src="../3rdparty/highlight/highlight.pack.js"></script>
|
||||||
<script src="../../dist/iwmlib.js"></script>
|
<script src="../../dist/iwmlib.js"></script>
|
||||||
<script src="../../dist/iwmlib.3rdparty.js"></script>
|
<script src="../../dist/iwmlib.3rdparty.js"></script>
|
||||||
@ -63,13 +64,13 @@
|
|||||||
<!-- Grr... The viewBox must reflect the width & height, using 0, 0, 100,
|
<!-- Grr... The viewBox must reflect the width & height, using 0, 0, 100,
|
||||||
100 leads to blank spaces -->
|
100 leads to blank spaces -->
|
||||||
<svg class="overlayBase" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 268 188"
|
<svg class="overlayBase" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 268 188"
|
||||||
style="width: 180px; height: 100px;" preserveAspectRatio="xMidYMid meet">
|
style="width: 180px;" preserveAspectRatio="xMidYMid meet">
|
||||||
<defs>
|
<defs>
|
||||||
</defs>
|
</defs>
|
||||||
<image xlink:href="../examples/king.jpeg" x="0" y="0" height="188" width="268" />
|
<image xlink:href="../examples/king.jpeg" x="0" y="0" height="188" width="268" />
|
||||||
<g>
|
<g>
|
||||||
<circle cx="50%" cy="50%" r="25%" class="highlight" stroke="white" fill="transparent"
|
<circle cx="145" cy="60" r="50" class="highlight" stroke="white" fill="transparent"
|
||||||
stroke-width="1%" />
|
stroke-width="4" />
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
</svg>
|
</svg>
|
||||||
@ -92,17 +93,9 @@
|
|||||||
const wrapper2 = new CardWrapper(demoCardWithSelector)
|
const wrapper2 = new CardWrapper(demoCardWithSelector)
|
||||||
wrapper2.handleClicksAsTaps()
|
wrapper2.handleClicksAsTaps()
|
||||||
wrapper2.onTap('.highlight', event => {
|
wrapper2.onTap('.highlight', event => {
|
||||||
|
Highlight.toggleHighlight(event.target)
|
||||||
Highlight.openHighlight(event.target, {
|
|
||||||
|
|
||||||
onExpanded: () => {
|
|
||||||
console.log("onExpanded", event.target)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// Highlight.animate(event)
|
|
||||||
|
|
||||||
wrapper2.onTap('.link', event => {
|
wrapper2.onTap('.link', event => {
|
||||||
alert('.link clicked')
|
alert('.link clicked')
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user