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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user