{"id":37022005,"url":"https://github.com/michaschwab/easypz","last_synced_at":"2026-01-14T02:37:15.845Z","repository":{"id":56505248,"uuid":"108328988","full_name":"michaschwab/easypz","owner":"michaschwab","description":"Easy Pan and Zoom JS Library","archived":false,"fork":false,"pushed_at":"2025-09-13T17:21:59.000Z","size":94,"stargazers_count":131,"open_issues_count":9,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-28T20:46:06.442Z","etag":null,"topics":["d3","hci","interaction","javascript","pan","visualization","zoom"],"latest_commit_sha":null,"homepage":"https://easypz.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaschwab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-25T21:39:17.000Z","updated_at":"2025-09-13T17:22:02.000Z","dependencies_parsed_at":"2022-08-15T20:00:46.696Z","dependency_job_id":null,"html_url":"https://github.com/michaschwab/easypz","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michaschwab/easypz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaschwab%2Feasypz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaschwab%2Feasypz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaschwab%2Feasypz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaschwab%2Feasypz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaschwab","download_url":"https://codeload.github.com/michaschwab/easypz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaschwab%2Feasypz/sbom","scorecard":{"id":641908,"data":{"date":"2025-08-11","repo":{"name":"github.com/michaschwab/easypz","commit":"d7ceadbd5e3a23c130e51857df88031bd5ae23f0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 7 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T10:58:39.877Z","repository_id":56505248,"created_at":"2025-08-21T10:58:39.877Z","updated_at":"2025-08-21T10:58:39.877Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["d3","hci","interaction","javascript","pan","visualization","zoom"],"created_at":"2026-01-14T02:37:15.075Z","updated_at":"2026-01-14T02:37:15.835Z","avatar_url":"https://github.com/michaschwab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EasyPZ\n**Use this Javascript library to make your web visualization interactive \nvia pan and zoom, for mobile and desktop!**\n\n\nEasyPZ supports many interactions for panning and zooming, including wheel, \npinch, double click, hold, brush, rub, and dynamic zoom, panning methods\n including default, flick, and many variations.\n\nMany examples can be found at [easypz.org](https://easypz.org), including \nexamples using [d3](https://d3js.org/), and examples that use\ncanvas instead of SVG. \n\nInstructions on how to use EasyPZ, explanations for the many options, as \nwell as how to extend EasyPZ with your own pan or zoom method,\ncan be found in the [Wiki](https://github.com/michaschwab/easypz/wiki)! \n\n### Changelog\n\n#### 1.1.10\n* Improve detection of preexisting transformations and reduce error logs.\n\n#### 1.1.9\n* Add the removeHostListeners method to allow removing EasyPZ's event listeners.\n\n#### 1.1.8\n\n* Allow passing easypz settings via the new data-easypz attribute to be more W3C compliant.\n\n#### 1.1.7\n\n* Basic support for rotate, skewX and skewY, and two different scales for X and Y. \n* Add a new zoom method: shift drag zoom.\n\n#### 1.1.5\n\n* Allowed switching between mouse- and touch-based interactions on hybrid devices.\n\n#### 1.1.3\n\n* EasyPZ instances now check if new modes of pan and zoom are available when\n settings change.\n\n#### 1.1.2\n\n* Allowed disabling EasyPZ by setting the enabled modes to an empty list.\n\n#### 1.1.1\n\n* Added a .setSettings method to EasyPZ to allow changing settings.\n* Changes in the settings set via HTML are now detected and applied\n  to EasyPZ using the .setSettings method.\n* Increased the frequency of the settings observation from 2s to 0.5s.\n\n#### 1.1.0\n\n* Made the default functionality to be applyTransformTo: \"svg \u003e *\" for when\nthe easypz attribute is not set.\n\n### Known Issues\nCurrently none.\n\n\n### Licence\n\nISC License (ISC)\n\nCopyright 2019 Michail Schwab\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaschwab%2Feasypz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaschwab%2Feasypz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaschwab%2Feasypz/lists"}