Skip to content

Commit 7d982a3

Browse files
committed
Play with slider
1 parent 9fae7eb commit 7d982a3

File tree

4 files changed

+102
-1
lines changed

4 files changed

+102
-1
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
},
3434
"type": "module",
3535
"dependencies": {
36+
"@sveltestrap/sveltestrap": "^6.2.7",
3637
"elkjs": "^0.9.3",
3738
"rete-auto-arrange-plugin": "^2.0.2",
3839
"web-worker": "^1.3.0"

src/lib/Slider.svelte

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<script lang="ts">
2+
import { onMount } from "svelte";
3+
4+
$:value = 25;
5+
6+
let progressBar: HTMLDivElement;
7+
let mouseIsDown = false;
8+
let mouseIsInRange = false;
9+
10+
function increment() {
11+
if (value < 100) {
12+
setTimeout(() => {
13+
value += 1;
14+
}, 100);
15+
}
16+
}
17+
18+
function decrement() {
19+
if (value > 0) {
20+
setTimeout(() => {
21+
value -= 1;
22+
}, 100)
23+
}
24+
}
25+
26+
function handleMouseUp(event: any) {
27+
mouseIsDown = false;
28+
mouseIsInRange = false;
29+
}
30+
31+
function handleMouseDown(event: any) {
32+
mouseIsDown = true;
33+
let x = event.clientX;
34+
let y = event.clientY;
35+
let {top, right, bottom, left} = progressBar.getBoundingClientRect();
36+
console.log(`X: ${x}, Y: ${y}`);
37+
console.log(`normalize: ${x / window.innerWidth * 100}`);
38+
console.log(`Top: ${top}, Right: ${right}, Bottom: ${bottom}, Left: ${left}`);
39+
if (x < right && x > right - 30) {
40+
if (y < bottom && y > top) {
41+
mouseIsInRange = true;
42+
console.log("HIT");
43+
}
44+
}
45+
}
46+
47+
function handleMouseDrag(event: any) {
48+
if (mouseIsDown) {
49+
let { right } = progressBar.getBoundingClientRect();
50+
value = Math.round(event.clientX / window.innerWidth * 100);
51+
// value = event.clientX - progressBar.getBoundingClientRect().left;
52+
}
53+
}
54+
55+
onMount(() => {
56+
// progressBar.setAttribute("style", "width: {value}%");
57+
})
58+
</script>
59+
60+
<div id="myContainer">
61+
<button class="btn btn-primary btn-small" on:click={decrement}>-</button>
62+
<button class="btn btn-primary btn-small" on:click={increment}>+</button>
63+
<div class="progress" role="progressbar" aria-label="Example 20px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 20px">
64+
<div
65+
class="progress-bar bg-success"
66+
style="width: {value}%"
67+
on:mousedown={e => handleMouseDown(e)}
68+
on:mouseup={e => handleMouseUp(e)}
69+
on:drag={e => handleMouseDrag(e)}
70+
bind:this={progressBar}
71+
>{value}%</div>
72+
</div>
73+
</div>
74+
75+
76+
<style>
77+
</style>

src/routes/+page.svelte

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
<script>
22
import { onMount } from "svelte";
3+
import { Styles } from '@sveltestrap/sveltestrap';
4+
/**
5+
* @type {HTMLElement}
6+
*/
37
let el;
48
9+
import Slider from "$lib/Slider.svelte";
10+
511
onMount(async () => {
612
const { createEditor } = await import("../lib/editor");
713
createEditor(el);
814
});
915
</script>
1016

11-
<div class="rete" bind:this={el} />
17+
<main>
18+
<Styles />
19+
<Slider />
20+
<div class="rete" bind:this={el} />
21+
22+
</main>
1223

1324

1425
<style>

yarn.lock

+12
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@
200200
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz"
201201
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
202202

203+
"@popperjs/core@^2.11.8":
204+
version "2.11.8"
205+
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
206+
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
207+
203208
"@sveltejs/adapter-auto@^2.0.0":
204209
version "2.1.0"
205210
resolved "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz"
@@ -250,6 +255,13 @@
250255
svelte-hmr "^0.15.2"
251256
vitefu "^0.2.4"
252257

258+
"@sveltestrap/sveltestrap@^6.2.7":
259+
version "6.2.7"
260+
resolved "https://registry.yarnpkg.com/@sveltestrap/sveltestrap/-/sveltestrap-6.2.7.tgz#5b2736cbee2db973f02b09d2e9d5bf819418f1f9"
261+
integrity sha512-WwLLfAFUb42BGuRrf3Vbct30bQMzlEMMipN/MfxhjuLTmLQeW9muVJfPyvjtWS+mY+RjkSCoHvAp/ZobP1NLlQ==
262+
dependencies:
263+
"@popperjs/core" "^2.11.8"
264+
253265
"@tweenjs/tween.js@~18.6.4":
254266
version "18.6.4"
255267
resolved "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz"

0 commit comments

Comments
 (0)