UNPKG

@fxi/d3-geo-zoom

Version:

Zoom and Pan D3 Geo projections (Ported from vasturiano/d3-geo-zoom)

139 lines (98 loc) 3.7 kB
# d3-geo-zoom Zoom and Pan D3 Geo projections (Ported from vasturiano/d3-geo-zoom) This library provides smooth zooming and panning functionality for D3 geographic projections using quaternion interpolation for rotation transitions. [Live Demo & Documentation](https://fxi.github.io/d3-geo-zoom) ## Installation ```bash npm install @fxi/d3-geo-zoom ``` ## Quick Start ```javascript import { geoZoom } from 'd3-geo-zoom'; import { select } from 'd3-selection'; import { geoOrthographic, geoPath } from 'd3-geo'; // Create SVG element const svg = select('body') .append('svg') .attr('width', 800) .attr('height', 600); // Setup projection const projection = geoOrthographic() .scale(250) .center([0, 0]); // Create path generator const path = geoPath() .projection(projection); // Initialize zoom behavior const zoom = geoZoom() .projection(projection) .onMove(() => { // Update map on zoom/pan g.selectAll('path').attr('d', path); }); // Apply zoom behavior to SVG svg.call(zoom); ``` For more examples and detailed API documentation, visit our [documentation site](https://fxi.github.io/d3-geo-zoom). ## Development ### Setup 1. Clone the repository 2. Install dependencies: ```bash npm install ``` ### Available Scripts #### Development - `npm run dev`: Start development server for demo - `npm run dev:docs`: Start development server for documentation site - `npm run build`: Build library for production - `npm run build:docs`: Build documentation site - `npm run preview`: Preview production build #### Testing - `npm test`: Run tests in watch mode (for development) - `npm run test:ci`: Run tests once (used in CI and git hooks) - `npm run test:ui`: Open test UI - `npm run coverage`: Generate test coverage report ### Documentation Development The documentation site is built using Vite and hosted on GitHub Pages. To work on the documentation: 1. Run `npm run dev:docs` to start the documentation development server 2. Edit files in the `docs/src` directory: - `index.html`: Main documentation page - `style.css`: Documentation styles - `main.js`: Interactive examples and demos The documentation site is automatically deployed to GitHub Pages when changes are pushed to the main branch. ### Contributing #### Creating Commits This project uses [Commitizen](https://github.com/commitizen/cz-cli) for standardized commit messages. Instead of using `git commit`, use: ```bash npm run commit ``` This will: 1. Run tests in non-watch mode (via pre-commit hook) 2. Start an interactive prompt to create a properly formatted commit message 3. Validate the commit message format The prompt will help you create a commit message with: 1. Type of change (feat, fix, docs, etc.) 2. Scope (optional) 3. Description 4. Breaking changes (if any) 5. Issues being closed (if any) ### Continuous Integration and Deployment This project uses GitHub Actions for: #### Testing and Publishing - Runs on every push and pull request - Tests against Node.js 18.x and 20.x - Automatically publishes to npm on release #### Documentation - Automatically builds and deploys documentation to GitHub Pages - Triggered on push to main branch - Available at https://fxi.github.io/d3-geo-zoom ### Version Control This project uses semantic-release for automated versioning: - `fix:` commits trigger a patch release (1.0.0 -> 1.0.1) - `feat:` commits trigger a minor release (1.0.0 -> 1.1.0) - `BREAKING CHANGE:` in commit body triggers a major release (1.0.0 -> 2.0.0) ## Original Repository This is a port of the original [d3-geo-zoom](https://github.com/vasturiano/d3-geo-zoom) by Vasco Asturiano. ## License See the LICENSE file for details.