Giter Club home page Giter Club logo

Comments (14)

statikowsky avatar statikowsky commented on May 11, 2024 6

I think this might be caused when dragger.js is being loaded as a commonjs module.

}( this, function factory( window ) {
expects this to be window, but for commonjs modules this will not be true.

If you are using webpack you can remedy this by using imports-loader.
The following webpack config worked for me:

 module: {
    rules: [
      {
        test: require.resolve('./node_modules/zdog/js/dragger.js'),
        use: 'imports-loader?this=>window'
      },
      ...
    ]
  }

Here are the webpack docs: https://webpack.js.org/guides/shimming/#granular-shimming
A similar configuration should be possible for other bundlers.

from zdog.

aarongoin avatar aarongoin commented on May 11, 2024 4

I'm seeing this client-side when using parcel to bundle my app. I haven't done the steps to ensure this isn't just a parcel issue yet though. Anyone with a webpack/rollup build seeing this as well?

from zdog.

partynikko avatar partynikko commented on May 11, 2024 3

I'm having the same issue using parcel.
Seems like an empty window object is being used hence why addEventListener is not available.

from zdog.

yofrancisco avatar yofrancisco commented on May 11, 2024 1

Hey i had the same issue, i solved it by making the listener the canvas instead of the window. I'm not 100% sure yet if this has any unintended side effects.

mango-chutney@ece47f1

from zdog.

vuchl avatar vuchl commented on May 11, 2024 1

I used the solution of @statikowsky with a vue ui set up project.

I needed to add a vue.config.js to the project root with this content

// vue.config.js
module.exports = {
  configureWebpack: {
    module: {
      rules: [
        {
          test: require.resolve('./node_modules/zdog/js/dragger.js'),
          use: 'imports-loader?this=>window'
        },
      ]
    }
  }
}

I also use this library via vue-zdog wrapper and needed to install some more packages (and for some reason zdog too) via npm install --save import-loader vue-runtime-helpers zdog it started to work.

from zdog.

desandro avatar desandro commented on May 11, 2024 1

In SHA: 3566dcb, I removed setting window to this and instead rely on global window value, plus added some internal checks in case window is undefined. This fix is released in v1.1.1.

Please update and let me know of any lingering issues. Thanks all for your insights here.

from zdog.

remimi avatar remimi commented on May 11, 2024

I have the same issue as @aarongoin using classic vue app. I'm currently trying to do a little wrapper to make Zdog work in Vue environnement (someone is already doing the react one 😌 )

It's just a try for now.

from zdog.

marcelinollano avatar marcelinollano commented on May 11, 2024

@aarongoin interesting, I am also using parcel and having the same issue.

from zdog.

desandro avatar desandro commented on May 11, 2024

i solved it by making the listener the canvas instead of the window. I'm not 100% sure yet if this has any unintended side effects.

Yes this change has side effects with dragging, preventing movement and drag end event triggering unless the pointer is within the rendering element.

from zdog.

kylios avatar kylios commented on May 11, 2024

I am having the same issue client-side, using webpack-dev-server. @statikowsky 's workaround seemed to fix the issue for me.

from zdog.

maxackerman avatar maxackerman commented on May 11, 2024

Similar issue happening for me, I'm using import and babel in my build process. Zdog is rendering but, I'm getting this error when trying to drag:

TypeError: window.addEventListener is not a function

from zdog.

talentlessguy avatar talentlessguy commented on May 11, 2024

Same issue with Parcel 😢

Code:

import { Illustration, Shape } from 'zdog'

let illo = new Illustration({
  element: '#app',
  dragRotate: true,
})

new Shape({
  addTo: illo,
  path: [
    { x: -60, y: -60 },   // start
    { bezier: [
      { x:  20, y: -60 }, // start control point
      { x:  20, y:  60 }, // end control point
      { x:  60, y:  60 }, // end point
    ]},
  ],
  closed: false,
  stroke: 20,
  color: '#636'
});

function animate() {
  illo.updateRenderGraph()
  requestAnimationFrame(animate)
}

animate()

from zdog.

vickylance avatar vickylance commented on May 11, 2024

Is this not still fixed? :( I am facing the same issue.
I am using parcel to bundle. Eventually I want to use it on my Gatsby website. If it doesn't work with parcel I doubt it will work with Gatsby.

from zdog.

luchoster avatar luchoster commented on May 11, 2024

Is this not still fixed? :( I am facing the same issue.
I am using parcel to bundle. Eventually I want to use it on my Gatsby website. If it doesn't work with parcel I doubt it will work with Gatsby.

This works fine with Gatsby. Just install imports-loader and then add this to your gatsby-node.js

exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
  if (stage === 'build-html') {
    actions.setWebpackConfig({
      module: {
        rules: [
          {
            test: require.resolve('./node_modules/zdog/js/dragger.js'),
            use: loaders.null(),
          },
        ],
      },
    })
  } else {
    actions.setWebpackConfig({
      module: {
        rules: [
          {
            test: require.resolve('./node_modules/zdog/js/dragger.js'),
            use: 'imports-loader?this=>window',
          },
        ],
      },
    })
  }
}
  • commenting for future reference and help with Gatsby.

from zdog.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.