├── dist ├── range-slider-pips.css └── svelte │ ├── types.js │ ├── utils.test.d.ts │ ├── index.js │ ├── index.d.ts │ ├── types.d.ts │ ├── utils.test.js │ ├── components │ ├── RangePips.svelte.d.ts │ └── RangeSlider.svelte.d.ts │ └── utils.d.ts ├── tests ├── svelte5 │ ├── .npmrc │ ├── src │ │ ├── lib │ │ │ └── index.ts │ │ ├── routes │ │ │ ├── +page.svelte │ │ │ ├── regular │ │ │ │ └── +page.svelte │ │ │ └── runes │ │ │ │ ├── +page.svelte │ │ │ │ └── test │ │ │ │ └── +page.svelte │ │ ├── app.d.ts │ │ └── app.html │ ├── .prettierignore │ ├── static │ │ └── favicon.png │ ├── vite.config.ts │ ├── .gitignore │ ├── .prettierrc │ ├── tsconfig.json │ ├── svelte.config.js │ └── package.json ├── reactjs │ ├── public │ │ └── index.html │ ├── src │ │ ├── index.js │ │ └── App.js │ └── package.json ├── vuejs │ ├── env.d.ts │ ├── .vscode │ │ └── extensions.json │ ├── public │ │ └── favicon.ico │ ├── src │ │ ├── main.ts │ │ ├── assets │ │ │ ├── logo.svg │ │ │ ├── main.css │ │ │ └── base.css │ │ ├── components │ │ │ └── HelloWorld.vue │ │ └── App.vue │ ├── tsconfig.json │ ├── vite.config.ts │ ├── index.html │ ├── tsconfig.app.json │ ├── tsconfig.node.json │ ├── .gitignore │ └── package.json ├── svelte4 │ ├── .vscode │ │ └── extensions.json │ ├── src │ │ ├── vite-env.d.ts │ │ ├── main.js │ │ ├── lib │ │ │ └── Counter.svelte │ │ ├── App.svelte │ │ ├── app.css │ │ └── assets │ │ │ └── svelte.svg │ ├── vite.config.js │ ├── svelte.config.js │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── jsconfig.json │ └── public │ │ └── vite.svg ├── setupTest.js ├── playwright │ ├── helpers │ │ ├── utils.ts │ │ └── tools.ts │ ├── RangeSlider._.spec.ts │ ├── RangeSlider.keyboard.spec.ts │ ├── RangeSlider.interaction.spec.ts │ ├── RangePips.pips.spec.ts │ ├── RangePips._.spec.ts │ ├── RangeSlider.darkmode.spec.ts │ ├── RangeSlider.keyboard.movement.spec.ts │ └── RangeSlider.values.spec.ts ├── jquery │ ├── package.json │ ├── index.jquery.js │ └── index.html └── vanilla │ ├── package.json │ ├── index.html │ ├── umd.html │ └── esm.html ├── .npmrc ├── static └── favicon.png ├── public ├── icons │ ├── js-svgrepo-com.png │ ├── css-3-svgrepo-com.png │ ├── html-5-svgrepo-com.png │ ├── jquery-svgrepo-com.png │ ├── react-svgrepo-com.png │ ├── svelte-svgrepo-com.png │ └── vuejs-svgrepo-com.png ├── svelte-range-slider-logo.png ├── svelte-range-slider-features.png ├── svelte-range-slider-screenshot.png └── svelte-range-slider-logo.svg ├── src ├── lib │ ├── index.ts │ ├── types.ts │ └── utils.test.ts ├── routes │ ├── test │ │ ├── range-slider │ │ │ ├── +page.svelte │ │ │ ├── base │ │ │ │ └── +page.svelte │ │ │ ├── pips │ │ │ │ ├── +page.svelte │ │ │ │ ├── pipsteps-large │ │ │ │ │ └── +page.svelte │ │ │ │ ├── pips │ │ │ │ │ └── +page.svelte │ │ │ │ ├── labels │ │ │ │ │ └── +page.svelte │ │ │ │ ├── limits │ │ │ │ │ └── +page.svelte │ │ │ │ ├── steps │ │ │ │ │ └── +page.svelte │ │ │ │ └── pipsteps │ │ │ │ │ └── +page.svelte │ │ │ ├── values │ │ │ │ ├── single-value │ │ │ │ │ └── +page.svelte │ │ │ │ ├── multiple-values │ │ │ │ │ └── +page.svelte │ │ │ │ ├── seven-values │ │ │ │ │ └── +page.svelte │ │ │ │ ├── explicit-value │ │ │ │ │ └── +page.svelte │ │ │ │ ├── constrained-values │ │ │ │ │ └── +page.svelte │ │ │ │ ├── value-values │ │ │ │ │ └── +page.svelte │ │ │ │ └── binding │ │ │ │ │ ├── single │ │ │ │ │ └── +page.svelte │ │ │ │ │ ├── multiple │ │ │ │ │ └── +page.svelte │ │ │ │ │ └── minmax │ │ │ │ │ └── +page.svelte │ │ │ ├── minmax │ │ │ │ ├── custom-min-max │ │ │ │ │ └── +page.svelte │ │ │ │ ├── decimal-min-max │ │ │ │ │ └── +page.svelte │ │ │ │ ├── negative-min-max │ │ │ │ │ └── +page.svelte │ │ │ │ ├── explicit-value │ │ │ │ │ └── +page.svelte │ │ │ │ ├── invalid-min-max │ │ │ │ │ └── +page.svelte │ │ │ │ └── +page.svelte │ │ │ ├── states │ │ │ │ ├── reversed │ │ │ │ │ └── +page.svelte │ │ │ │ ├── disabled │ │ │ │ │ └── +page.svelte │ │ │ │ └── hoverable │ │ │ │ │ └── +page.svelte │ │ │ ├── range │ │ │ │ ├── false │ │ │ │ │ └── +page.svelte │ │ │ │ ├── max │ │ │ │ │ └── +page.svelte │ │ │ │ ├── min │ │ │ │ │ └── +page.svelte │ │ │ │ ├── draggy │ │ │ │ │ └── +page.svelte │ │ │ │ ├── pushy │ │ │ │ │ └── +page.svelte │ │ │ │ ├── +page.svelte │ │ │ │ └── gaps │ │ │ │ │ └── +page.svelte │ │ │ ├── styles │ │ │ │ └── darkmode │ │ │ │ │ └── +page.svelte │ │ │ ├── +layout.svelte │ │ │ ├── spring │ │ │ │ ├── configurations │ │ │ │ │ └── +page.svelte │ │ │ │ └── dynamic │ │ │ │ │ └── +page.svelte │ │ │ ├── keyboard │ │ │ │ └── +page.svelte │ │ │ ├── limits │ │ │ │ └── +page.svelte │ │ │ ├── events │ │ │ │ └── +page.svelte │ │ │ └── floats │ │ │ │ └── +page.svelte │ │ └── nav │ │ │ ├── feather.types.d.ts │ │ │ ├── clickOutside.ts │ │ │ ├── NavItem.svelte │ │ │ ├── gen-nav.js │ │ │ ├── Navigation.svelte │ │ │ └── test-nav.json │ ├── app.css │ └── +layout.svelte ├── app.d.ts └── app.html ├── .prettierrc ├── .prettierignore ├── tsconfig.json ├── .gitignore ├── vite.config.ts ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── FUNDING.yml └── workflows │ └── tests.yml ├── svelte.config.js ├── docs └── contributing.md ├── rollup.config.mjs ├── playwright.config.ts └── package.json /dist/range-slider-pips.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /dist/svelte/types.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /dist/svelte/utils.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /tests/svelte5/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | tag-version-prefix="" -------------------------------------------------------------------------------- /tests/reactjs/public/index.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /tests/vuejs/env.d.ts: -------------------------------------------------------------------------------- 1 | ///-7,7
14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/routes/test/range-slider/values/binding/multiple/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 21 | -------------------------------------------------------------------------------- /tests/svelte5/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /src/routes/test/range-slider/values/binding/minmax/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /tests/vuejs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-range-slider-vue-test", 3 | "version": "0.0.0", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "run-p type-check \"build-only {@}\" --", 9 | "preview": "vite preview", 10 | "build-only": "vite build", 11 | "type-check": "vue-tsc --build --force" 12 | }, 13 | "dependencies": { 14 | "vue": "^3.4.15" 15 | }, 16 | "devDependencies": { 17 | "@tsconfig/node20": "^20.1.2", 18 | "@types/node": "^20.11.10", 19 | "@vitejs/plugin-vue": "^5.0.3", 20 | "@vue/tsconfig": "^0.5.1", 21 | "npm-run-all2": "^6.1.1", 22 | "typescript": "~5.3.0", 23 | "vite": "^5.0.11", 24 | "vue-tsc": "^1.8.27", 25 | "svelte-range-slider-pips": "file:../.." 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /tests/svelte5/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte5", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev --host", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 11 | "lint": "prettier --check .", 12 | "format": "prettier --write ." 13 | }, 14 | "devDependencies": { 15 | "@sveltejs/adapter-auto": "^3.0.0", 16 | "@sveltejs/kit": "^2.0.0", 17 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 18 | "prettier": "^3.1.1", 19 | "prettier-plugin-svelte": "^3.1.2", 20 | "svelte": "^5.34.7", 21 | "svelte-check": "^3.6.0", 22 | "svelte-range-slider-pips": "file:../..", 23 | "tslib": "^2.4.1", 24 | "typescript": "^5.0.0", 25 | "vite": "^5.0.3" 26 | }, 27 | "type": "module" 28 | } 29 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: simeydotme 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: ['https://www.paypal.me/simey/5'] 16 | -------------------------------------------------------------------------------- /tests/reactjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-range-slider-react-test", 3 | "version": "0.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "react": "^18.1.0", 7 | "react-dom": "^18.1.0", 8 | "svelte-range-slider-pips": "file:../.." 9 | }, 10 | "type": "module", 11 | "scripts": { 12 | "dev": "react-scripts start", 13 | "start": "react-scripts start", 14 | "build": "react-scripts build", 15 | "test": "react-scripts test --env=jsdom", 16 | "eject": "react-scripts eject" 17 | }, 18 | "devDependencies": { 19 | "@types/react": "^18.3.4", 20 | "react-scripts": "latest" 21 | }, 22 | "browserslist": { 23 | "production": [ 24 | ">0.2%", 25 | "not dead", 26 | "not op_mini all" 27 | ], 28 | "development": [ 29 | "last 1 chrome version", 30 | "last 1 firefox version", 31 | "last 1 safari version" 32 | ] 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /tests/vuejs/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |{formatEventDetail(lastEvent.detail)}
78 | No events yet
81 | {/if} 82 | 83 |{formatEventDetail(event.detail)}
90 | No events recorded
95 | {/if} 96 |{formatEventDetail(lastEvent.detail)}
141 | No events yet
144 | {/if} 145 | 146 |{formatEventDetail(event.detail)}
153 | No events recorded
158 | {/if} 159 |