{"id":45381588,"url":"https://github.com/jane/react-whirligig","last_synced_at":"2026-02-21T16:46:28.920Z","repository":{"id":57347691,"uuid":"74045752","full_name":"jane/react-whirligig","owner":"jane","description":"A react carousel/slider like component for sequentially displaying slides or sets of slides","archived":false,"fork":false,"pushed_at":"2020-12-21T21:29:21.000Z","size":16229,"stargazers_count":24,"open_issues_count":2,"forks_count":7,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-04-13T16:11:47.080Z","etag":null,"topics":["carousel","keyboard-events","react","slide","slider","track","transition","visible-slides"],"latest_commit_sha":null,"homepage":"https://jane.github.io/react-whirligig","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-17T16:29:02.000Z","updated_at":"2022-08-03T05:13:23.000Z","dependencies_parsed_at":"2022-08-28T03:01:41.169Z","dependency_job_id":null,"html_url":"https://github.com/jane/react-whirligig","commit_stats":null,"previous_names":[],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/jane/react-whirligig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jane%2Freact-whirligig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jane%2Freact-whirligig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jane%2Freact-whirligig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jane%2Freact-whirligig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jane","download_url":"https://codeload.github.com/jane/react-whirligig/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jane%2Freact-whirligig/sbom","scorecard":{"id":504968,"data":{"date":"2025-08-11","repo":{"name":"github.com/jane/react-whirligig","commit":"7bc23c0707dcb5e7b47fac3b6fdd6a48d2df0d87"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Info: no jobLevel write permissions found"],"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":"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":"Code-Review","score":0,"reason":"Found 1/30 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":"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":"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/jane/react-whirligig/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/jane/react-whirligig/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/jane/react-whirligig/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/jane/react-whirligig/codeql-analysis.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned"],"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 1 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"}},{"name":"Vulnerabilities","score":0,"reason":"90 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-3wcq-x3mq-6r9p","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-6h5x-7c5m-7cr7","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-4r62-v4vq-hr96","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5","Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp","Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq","Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr","Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765","Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-9m6j-fcg5-2442","Warn: Project is vulnerable to: GHSA-hh27-ffr2-f2jc","Warn: Project is vulnerable to: GHSA-rqff-837h-mm52","Warn: Project is vulnerable to: GHSA-8v38-pw62-9cw2","Warn: Project is vulnerable to: GHSA-hgjh-723h-mx2j","Warn: Project is vulnerable to: GHSA-jf5r-8hm2-f872","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T23:04:46.328Z","repository_id":57347691,"created_at":"2025-08-19T23:04:46.328Z","updated_at":"2025-08-19T23:04:46.328Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29686870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T15:51:39.154Z","status":"ssl_error","status_checked_at":"2026-02-21T15:49:03.425Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["carousel","keyboard-events","react","slide","slider","track","transition","visible-slides"],"created_at":"2026-02-21T16:46:28.841Z","updated_at":"2026-02-21T16:46:28.915Z","avatar_url":"https://github.com/jane.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-whirligig\n\n* [demo](https://jane.github.io/react-whirligig)\n* [repo](https://github.com/jane/react-whirligig)\n\nA carousel/slider-like component for sequentially displaying slides or sets of\nslides.\n\n[![npm version](https://img.shields.io/npm/v/react-whirligig.svg)](https://npm.im/react-whirligig) [![CircleCI](https://circleci.com/gh/jane/react-whirligig.svg?style=svg)](https://circleci.com/gh/jane/react-whirligig) [![Known Vulnerabilities](https://snyk.io/test/github/jane/react-whirligig/badge.svg)](https://snyk.io/test/github/jane/react-whirligig) [![Coverage Status](https://coveralls.io/repos/github/jane/react-whirligig/badge.svg?branch=master)](https://coveralls.io/github/jane/react-whirligig?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/502a8183577f6a941707/maintainability)](https://codeclimate.com/github/jane/react-whirligig/maintainability)\n\n----\n\n## Basic Usage\n\n```jsx\nconst Slider = ({ slideIndex }) =\u003e (\n  \u003cdiv\u003e\n    \u003cWhirligig visibleSlides={3} gutter=\"1em\" slideTo={slideIndex}\u003e\n      \u003cimg src=\"http://www.fillmurray.com/400/300\" /\u003e\n      \u003cimg src=\"http://www.fillmurray.com/300/400\" /\u003e\n      \u003cimg src=\"http://www.fillmurray.com/400/200\" /\u003e\n      \u003cimg src=\"http://www.fillmurray.com/200/400\" /\u003e\n      \u003cimg src=\"http://www.fillmurray.com/500/300\" /\u003e\n    \u003c/Whirligig\u003e\n  \u003c/div\u003e\n)\n```\n\n`react-whirligig` exposes next and prev functions for moving the whirligig forward and\nbackward the number of visible slides. These functions can be accessed using the\n`ref` prop callback to get a reference to the `Whirligig` instance.\n\n```jsx\nimport * as React from 'react'\nimport Whirligig from 'react-whirligig'\n\nconst Slider = () =\u003e {\n  let whirligig\n  const next = () =\u003e whirligig.next()\n  const prev = () =\u003e whirligig.prev()\n\n  return (\n    \u003cdiv\u003e\n      \u003cbutton onClick={prev}\u003ePrev\u003c/button\u003e\n      \u003cWhirligig\n        visibleSlides={3}\n        gutter=\"1em\"\n        ref={(_whirligigInstance) =\u003e { whirligig = _whirligigInstance}}\n      \u003e\n        \u003cimg src=\"http://www.fillmurray.com/400/300\" /\u003e\n        \u003cimg src=\"http://www.fillmurray.com/300/400\" /\u003e\n        \u003cimg src=\"http://www.fillmurray.com/400/200\" /\u003e\n        \u003cimg src=\"http://www.fillmurray.com/200/400\" /\u003e\n        \u003cimg src=\"http://www.fillmurray.com/500/300\" /\u003e\n      \u003c/Whirligig\u003e\n      \u003cbutton onClick={next}\u003eNext\u003c/button\u003e\n    \u003c/div\u003e\n  )\n}\n```\n\nSee the [demo code](https://github.com/jane/react-whirligig/blob/master/dev.js)\nfor advanced usage.\n\n## Whirligig\n\nThe Whirligig component is a horizontally oriented container of Slides.\n\n## Props\n\nEach of these is written in the form `propName: type = default`. So,\n`foo: (string) =\u003e bool = noop` is a prop called `foo` which is expected to be a\nfunction that takes a string and returns a boolean, and it defaults to a noop.\n\n### `afterSlide: (number) =\u003e void = noop`\n\nA function to be called after the whirligig transitions to a new \"active\" slide. The\nfunction is passed the new \"active\" slide index.\n\n### `animationDuration: number = 500`\n\nThe number of milliseconds the slide animation should take.\n\n### `beforeSlide: (number) =\u003e void = noop`\n\nA function to be called before the whirligig transitions to a new \"active\" slide.\nThe function is passed what the new \"active\" slide index will be.\n\n### `className: string = ''`\n\nA className applied to the Whirligig.\n\n### `easing: (number) =\u003e number = easeOutQuint`\n\nA function which takes a `float` representing the percentage of time that has\npassed for a given animation and returns a `float` representing the relative\nprogress of the element being animated. See\n\u003chttps://gist.github.com/gre/1650294\u003e for examples.\n\n### `infinte: bool = false`\n\nA boolean flag that determines whether the whirligig should wrap to the\nbeginning/end when sliding beyond the slide index bounds.\n\n### `gutter: string = '1em'`\n\nA css [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length) string\nthat represents the space between each Slide in the Whirligig\n\n### `nextKeys: string[] = [ 'ArrowRight' ]`\n\nAn array of valid \"Key\" values from a\n[KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)\nindicating what \"Key\" values, when pressed, should move the whirligig forward.\n\n### `onSlideClick: (SyntheticMouseEvent\u003c*\u003e) =\u003e void = noop`\n\nFunction that takes a `SyntheticMouseEvent`.\n\n### `prevKeys: string[] = [ 'ArrowLeft' ]`\n\nAn array of valid \"Key\" values from a\n[KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)\nindicating what \"Key\" values, when pressed, should move the whirligig backward\n\n### `preventScroll: bool = false`\n\nA boolean flag that turns off/on the ability to natively scroll through the\nWhirligig\n\n### `preventSwipe: bool = false`\n\nA boolean flag that turns off/on the ability to swipe through the Whirligig\n\n### `slideBy: number = visibleSlides || 1`\n\nThe number of slides that should advance on a `next`, `prev`, or `swipe` action.\nIf not specified, will reflect the visibleSlides prop value or `1`.\n\n### `slideClass: string = ''`\n\nA className to apply to the Slide container.\n\n### `slideTo: number = 0`\n\nThe index to which the whirligig should transition if it is not already there. This\nis distinct from `startAt` in that `startAt` is only effective when the\ncomponent mounts and does not transition, but moves immediately to the given\nslide. The `slideTo` prop is meant to be used as a mechanism for the consuming\ncomponent to directly control when and where the whirligig transitions to.\n\n### `snapToSlide: bool = false`\n\nA boolean flag that turns on/off the snap-to-slide feature. If set, the\nWhirligig will animate the final bit of scrolling to stop at a slide.\n\n### `snapPositionOffset: number = 0`\n\nA number that assigns offset to slides on next() and prev() or snap. As an example, this allows a full-width\nSlider to select a starting/ending slide position inside of the container, rather than to the edge.\n\n### `startAt: number = 0`\n\nThe Slide index that will be the \"active\" slide when the Whirligig mounts. The value\nwill be normalized to be within the range of the length of the Whirligig's children.\n\n### `visibleSlides: number = 1`\n\nThe number of slides that should be visible at a time for the Whirligig\n\n## Instance methods\n\n### `next: () =\u003e Promise\u003c*\u003e`\n\nAdvances the whirligig to the next set of visible slides. If there are not enough\nremaining slides to transition the full number of visible slides, it will\ntransition to the end of the whirligig If already at the end of the whirligig, calling\n`next` will transition the whirligig to index 0.\n\n### `prev: () =\u003e Promise\u003c*\u003e`\n\nRecedes the whirligig to the previous set of visible slides. If there are not enough\nremaining slides to transition the full number of visible slides, it will\ntransition to the beginning of the whirligig If already at the beginning of the\nwhirligig, calling `prev` will transition the whirligig to last full set of visible\nslides in the whirligig.\n\n## Contributors\n\n* Authored by [@uniqname](https://github.com/uniqname).\n* Thanks to [@RachelTheRiveter](https://github.com/RachelTheRiveter) for the name!\n* Maintained by the [@jane](https://github.com/jane) front-end team.\n\n## License\n\n[MIT](https://github.com/jane/react-whirligig/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjane%2Freact-whirligig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjane%2Freact-whirligig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjane%2Freact-whirligig/lists"}