• Jump To … +
    ./demo/modules/canvas-minimap.js ./demo/modules/canvas-scene-editor.js ./demo/modules/dom-entity-editor.js ./demo/modules/entity-copy-paste.js ./demo/modules/entity-manipulation-gui.js ./demo/modules/entity-navigation.js ./demo/modules/entity-ring-builder.js ./demo/modules/london-crime-graphic.js ./demo/modules/london-crime-lines.js ./demo/modules/london-crime-stacked-bars.js ./demo/modules/lottie-loader.js ./demo/modules/simple-chart-frame-tests.js ./demo/modules/simple-chart-frame.js ./demo/modules/simple-graph-lines.js ./demo/modules/simple-graph-stacked-bars.js ./demo/modules/wikipedia-views-spiral-chart.js ./demo/snippets/animated-highlight-gradient-text-snippet.js ./demo/snippets/animated-hover-gradient-snippet.js ./demo/snippets/animated-word-gradient-snippet.js ./demo/snippets/before-after-slider-infographic.js ./demo/snippets/bubbles-text-snippet.js ./demo/snippets/green-box-snippet.js ./demo/snippets/jazzy-button-snippet.js ./demo/snippets/page-performance-snippet-test.js ./demo/snippets/page-performance-snippet.js ./demo/snippets/pan-image-snippet.js ./demo/snippets/placeholder-effect-snippet.js ./demo/snippets/ripple-effect-snippet.js ./demo/snippets/risograph-text-gradient-snippet.js ./demo/snippets/spotlight-text-snippet-test.js ./demo/snippets/spotlight-text-snippet.js ./demo/snippets/swirling-stripes-text-snippet.js ./demo/snippets/text-snippet-helper.js ./demo/snippets/word-highlighter-snippet.js ./demo/snippets/worley-text-gradient-snippet.js
  • spotlight-text-snippet-test.js

  • §
    import * as scrawl from '../../source/scrawl.js';
    
    
    export default function (el) {
    
        let snippet = scrawl.makeSnippet({
            domElement: el,
        });
    
        if (snippet) {
    
            let canvas = snippet.canvas,
                animation = snippet.animation,
                wrapper = snippet.element,
                name = wrapper.name;
    
            canvas.setAsCurrentCanvas();
    
            let spotlightGradient = scrawl.makeRadialGradient({
                name: `${name}-gradient`,
                startX: '50%',
                startY: '50%',
                endX: '50%',
                endY: '50%',
                endRadius: '20%',
            })
            .updateColor(0, 'white')
            .updateColor(999, 'lightgray');
    
            animation.commence = function () {
    
                let active = false;
    
                return function () {
    
                    if (canvas.here.active !== active) {
    
                        active = canvas.here.active;
                        block.set({
                            lockTo: (active) ? 'mouse' : 'start',
                            fillStyle: (active) ? spotlightGradient : 'lightgray',
                        });
                    }
                };
            }();
    
            let block = scrawl.makeBlock({
                name: `${name}-spotlight`,
                width: '200%',
                height: '200%',
    
                startX: "50%",
                startY: "50%",
                handleX: "50%",
                handleY: "50%",
    
                fillStyle: 'lightgray',
                lockFillStyleToEntity: true,
    
                method: 'fill', 
            });
    
            scrawl.makeBlock({
                name: `${name}-box`,
                width: '50%',
                height: '50%',
                startX: '25%',
                startY: '25%',
                globalAlpha: 0.3,
                strokeStyle: 'lightgreen',
                lineWidth: 40,
                method: 'draw',
            });
        }
        return snippet;
    };