@ctx-core/scroll 12.0.78 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @ctx-core/scroll
2
2
 
3
+ ## 14.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - extracted @ctx-core/scroll-ui-svelte
8
+
9
+ ## 13.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - \*\_b: ctx is a map: @ctx-core/object: 22.0.0
14
+
15
+ ### Patch Changes
16
+
17
+ - package.json: - module
18
+ - Updated dependencies
19
+ - Updated dependencies
20
+ - @ctx-core/object@22.0.0
21
+ - @ctx-core/store@27.0.46
22
+
23
+ ## 12.0.80
24
+
25
+ ### Patch Changes
26
+
27
+ - update dependencies
28
+
29
+ ## 12.0.79
30
+
31
+ ### Patch Changes
32
+
33
+ - package.json: - "main": explicitly not support cjs
34
+ - Updated dependencies
35
+ - @ctx-core/store@27.0.45
36
+
3
37
  ## 12.0.78
4
38
 
5
39
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1,10 +1,7 @@
1
- export * from './scroll_Ctx.js';
2
- export * from './scroll_ctx_I.generated.js';
3
1
  export * from './is_active_.js';
4
2
  export * from './is_visible_.js';
5
3
  export * from './out_is_active_.js';
6
4
  export * from './out_is_visible_.js';
7
5
  export * from './sticky_scroll_active$_b.js';
8
- export * from './ui/index.js';
9
6
 
10
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './scroll_Ctx.js'\nexport * from './scroll_ctx_I.generated.js'\nexport * from './is_active_.js'\nexport * from './is_visible_.js'\nexport * from './out_is_active_.js'\nexport * from './out_is_visible_.js'\nexport * from './sticky_scroll_active$_b.js'\nexport * from './ui/index.js'\n"],"names":[],"mappings":"cAAc,CAAiB;cACjB,CAA6B;cAC7B,CAAiB;cACjB,CAAkB;cAClB,CAAqB;cACrB,CAAsB;cACtB,CAA8B;cAC9B,CAAe"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './is_active_.js'\nexport * from './is_visible_.js'\nexport * from './out_is_active_.js'\nexport * from './out_is_visible_.js'\nexport * from './sticky_scroll_active$_b.js'\n"],"names":[],"mappings":"cAAc,CAAiB;cACjB,CAAkB;cAClB,CAAqB;cACrB,CAAsB;cACtB,CAA8B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sticky_scroll_active$_b.ts"],"sourcesContent":["import { assign, b_, B } from '@ctx-core/object'\nimport { writable$, Writable$ } from '@ctx-core/store'\nimport type { scroll_Ctx } from './scroll_Ctx'\nconst key = 'sticky_scroll_active$'\nexport const sticky_scroll_active$_b:B<scroll_Ctx, typeof key> = b_(key, ()=>{\n\tconst sticky_scroll_active$ = writable$<sticky_scroll_active_T>({})\n\treturn assign(sticky_scroll_active$, {\n\t\tadd_sticky_scroll_active,\n\t\tremove_sticky_scroll_active,\n\t\tsticky_scroll_active_key_active_,\n\t\tsticky_scroll_active_key_match_,\n\t}) as sticky_scroll_active$_T\n\tfunction add_sticky_scroll_active(key:string) {\n\t\tsticky_scroll_active$.update(\n\t\t\tscroll_sticky_active=>{\n\t\t\t\tscroll_sticky_active[key] = true\n\t\t\t\treturn scroll_sticky_active\n\t\t\t})\n\t}\n\tfunction remove_sticky_scroll_active(key:string) {\n\t\tsticky_scroll_active$.update(\n\t\t\tscroll_sticky_active=>{\n\t\t\t\tscroll_sticky_active[key] = false\n\t\t\t\treturn scroll_sticky_active\n\t\t\t})\n\t}\n\tfunction sticky_scroll_active_key_active_(key:string) {\n\t\tconst sticky_scroll_active = sticky_scroll_active$.$\n\t\tconst active =\n\t\t\tsticky_scroll_active\n\t\t\t? sticky_scroll_active[key]\n\t\t\t: false\n\t\treturn active\n\t}\n\tfunction sticky_scroll_active_key_match_(key:string, active:boolean) {\n\t\treturn !!(active) == !!(sticky_scroll_active_key_active_(key))\n\t}\n})\nexport interface sticky_scroll_active_T extends Record<string, boolean> {}\nexport interface sticky_scroll_active$_T extends Writable$<sticky_scroll_active_T> {\n\tadd_sticky_scroll_active:(key:string)=>void\n\tremove_sticky_scroll_active:(key:string)=>void\n\tsticky_scroll_active_key_active_:(key:string)=>void\n\tsticky_scroll_active_key_match_:(key:string, active:any)=>void\n}\nexport {\n\tsticky_scroll_active$_b as b__active__Sticky__Scroll,\n}\n"],"names":["assign","b_","writable$","key","sticky_scroll_active$_b","sticky_scroll_active$","add_sticky_scroll_active","remove_sticky_scroll_active","sticky_scroll_active_key_active_","sticky_scroll_active_key_match_","update","scroll_sticky_active","sticky_scroll_active","$","active","b__active__Sticky__Scroll"],"mappings":"AAAA,MAAM,GAAGA,MAAM,EAAEC,EAAE,QAAW,CAAkB;AAChD,MAAM,GAAGC,SAAS,QAAmB,CAAiB;AAEtD,KAAK,CAACC,GAAG,GAAG,CAAuB;AACnC,MAAM,CAAC,KAAK,CAACC,uBAAuB,GAA6BH,EAAE,CAACE,GAAG,MAAM,CAAC;IAC7E,KAAK,CAACE,qBAAqB,GAAGH,SAAS,CAAyB,CAAC;IAAA,CAAC;IAClE,MAAM,CAACF,MAAM,CAACK,qBAAqB,EAAE,CAAC;QACrCC,wBAAwB;QACxBC,2BAA2B;QAC3BC,gCAAgC;QAChCC,+BAA+B;IAChC,CAAC;aACQH,wBAAwB,CAACH,GAAU,EAAE,CAAC;QAC9CE,qBAAqB,CAACK,MAAM,EAC3BC,oBAAoB,GAAE,CAAC;YACtBA,oBAAoB,CAACR,GAAG,IAAI,IAAI;YAChC,MAAM,CAACQ,oBAAoB;QAC5B,CAAC;IACH,CAAC;aACQJ,2BAA2B,CAACJ,GAAU,EAAE,CAAC;QACjDE,qBAAqB,CAACK,MAAM,EAC3BC,oBAAoB,GAAE,CAAC;YACtBA,oBAAoB,CAACR,GAAG,IAAI,KAAK;YACjC,MAAM,CAACQ,oBAAoB;QAC5B,CAAC;IACH,CAAC;aACQH,gCAAgC,CAACL,GAAU,EAAE,CAAC;QACtD,KAAK,CAACS,oBAAoB,GAAGP,qBAAqB,CAACQ,CAAC;QACpD,KAAK,CAACC,MAAM,GACXF,oBAAoB,GAClBA,oBAAoB,CAACT,GAAG,IACxB,KAAK;QACR,MAAM,CAACW,MAAM;IACd,CAAC;aACQL,+BAA+B,CAACN,IAAU,EAAEW,MAAc,EAAE,CAAC;QACrE,MAAM,GAAIA,MAAM,MAAQN,gCAAgC,CAACL,IAAG;IAC7D,CAAC;AACF,CAAC;AAQD,MAAM,GACLC,uBAAuB,IAAIW,yBAAyB"}
1
+ {"version":3,"sources":["../src/sticky_scroll_active$_b.ts"],"sourcesContent":["import { assign, b_, B } from '@ctx-core/object'\nimport { writable$, Writable$ } from '@ctx-core/store'\nconst key = 'sticky_scroll_active$'\nexport const sticky_scroll_active$_b:B<sticky_scroll_active$_T> = b_(key, ()=>{\n\tconst sticky_scroll_active$ = writable$<sticky_scroll_active_T>({})\n\treturn assign(sticky_scroll_active$, {\n\t\tadd_sticky_scroll_active,\n\t\tremove_sticky_scroll_active,\n\t\tsticky_scroll_active_key_active_,\n\t\tsticky_scroll_active_key_match_,\n\t}) as sticky_scroll_active$_T\n\tfunction add_sticky_scroll_active(key:string) {\n\t\tsticky_scroll_active$.update(\n\t\t\tscroll_sticky_active=>{\n\t\t\t\tscroll_sticky_active[key] = true\n\t\t\t\treturn scroll_sticky_active\n\t\t\t})\n\t}\n\tfunction remove_sticky_scroll_active(key:string) {\n\t\tsticky_scroll_active$.update(\n\t\t\tscroll_sticky_active=>{\n\t\t\t\tscroll_sticky_active[key] = false\n\t\t\t\treturn scroll_sticky_active\n\t\t\t})\n\t}\n\tfunction sticky_scroll_active_key_active_(key:string) {\n\t\tconst sticky_scroll_active = sticky_scroll_active$.$\n\t\tconst active =\n\t\t\tsticky_scroll_active\n\t\t\t? sticky_scroll_active[key]\n\t\t\t: false\n\t\treturn active\n\t}\n\tfunction sticky_scroll_active_key_match_(key:string, active:boolean) {\n\t\treturn !!(active) == !!(sticky_scroll_active_key_active_(key))\n\t}\n})\nexport interface sticky_scroll_active_T extends Record<string, boolean> {}\nexport interface sticky_scroll_active$_T extends Writable$<sticky_scroll_active_T> {\n\tadd_sticky_scroll_active:(key:string)=>void\n\tremove_sticky_scroll_active:(key:string)=>void\n\tsticky_scroll_active_key_active_:(key:string)=>void\n\tsticky_scroll_active_key_match_:(key:string, active:any)=>void\n}\nexport {\n\tsticky_scroll_active$_b as b__active__Sticky__Scroll,\n}\n"],"names":["assign","b_","writable$","key","sticky_scroll_active$_b","sticky_scroll_active$","add_sticky_scroll_active","remove_sticky_scroll_active","sticky_scroll_active_key_active_","sticky_scroll_active_key_match_","update","scroll_sticky_active","sticky_scroll_active","$","active","b__active__Sticky__Scroll"],"mappings":"AAAA,MAAM,GAAGA,MAAM,EAAEC,EAAE,QAAW,CAAkB;AAChD,MAAM,GAAGC,SAAS,QAAmB,CAAiB;AACtD,KAAK,CAACC,GAAG,GAAG,CAAuB;AACnC,MAAM,CAAC,KAAK,CAACC,uBAAuB,GAA8BH,EAAE,CAACE,GAAG,MAAM,CAAC;IAC9E,KAAK,CAACE,qBAAqB,GAAGH,SAAS,CAAyB,CAAC;IAAA,CAAC;IAClE,MAAM,CAACF,MAAM,CAACK,qBAAqB,EAAE,CAAC;QACrCC,wBAAwB;QACxBC,2BAA2B;QAC3BC,gCAAgC;QAChCC,+BAA+B;IAChC,CAAC;aACQH,wBAAwB,CAACH,GAAU,EAAE,CAAC;QAC9CE,qBAAqB,CAACK,MAAM,EAC3BC,oBAAoB,GAAE,CAAC;YACtBA,oBAAoB,CAACR,GAAG,IAAI,IAAI;YAChC,MAAM,CAACQ,oBAAoB;QAC5B,CAAC;IACH,CAAC;aACQJ,2BAA2B,CAACJ,GAAU,EAAE,CAAC;QACjDE,qBAAqB,CAACK,MAAM,EAC3BC,oBAAoB,GAAE,CAAC;YACtBA,oBAAoB,CAACR,GAAG,IAAI,KAAK;YACjC,MAAM,CAACQ,oBAAoB;QAC5B,CAAC;IACH,CAAC;aACQH,gCAAgC,CAACL,GAAU,EAAE,CAAC;QACtD,KAAK,CAACS,oBAAoB,GAAGP,qBAAqB,CAACQ,CAAC;QACpD,KAAK,CAACC,MAAM,GACXF,oBAAoB,GAClBA,oBAAoB,CAACT,GAAG,IACxB,KAAK;QACR,MAAM,CAACW,MAAM;IACd,CAAC;aACQL,+BAA+B,CAACN,IAAU,EAAEW,MAAc,EAAE,CAAC;QACrE,MAAM,GAAIA,MAAM,MAAQN,gCAAgC,CAACL,IAAG;IAC7D,CAAC;AACF,CAAC;AAQD,MAAM,GACLC,uBAAuB,IAAIW,yBAAyB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ctx-core/scroll",
3
- "version": "12.0.78",
3
+ "version": "14.0.0",
4
4
  "description": "ctx-core scroll",
5
5
  "keywords": [
6
6
  "ctx-core",
@@ -17,26 +17,21 @@
17
17
  "license": "Apache-2.0",
18
18
  "author": "Brian Takita",
19
19
  "type": "module",
20
- "main": "./dist/index.js",
21
- "module": "./dist/index.js",
22
- "types": "./src/index.ts",
23
20
  "exports": {
24
21
  ".": {
25
- "require": "./dist/index.cjs",
22
+ "types": "./src/index.ts",
26
23
  "import": "./dist/index.js"
27
24
  },
28
25
  "./package.json": "./package.json"
29
26
  },
30
27
  "dependencies": {
31
- "@ctx-core/object": "^21.0.30",
32
- "@ctx-core/store": "^27.0.44",
33
- "svelte": "3.44.2"
28
+ "@ctx-core/object": "^22.0.0",
29
+ "@ctx-core/store": "^27.0.46"
34
30
  },
35
31
  "devDependencies": {
36
- "@ctx-core/ctx-core-package-tools": "^8.0.83",
37
- "@ctx-core/dev-tools": "^7.2.7",
38
- "@swc/cli": "^0.1.52",
39
- "@swc/core": "^1.2.118",
32
+ "@ctx-core/ctx-core-package-tools": "^8.0.85",
33
+ "@swc/cli": "^0.1.55",
34
+ "@swc/core": "^1.2.120",
40
35
  "typescript": "next"
41
36
  },
42
37
  "publishConfig": {
@@ -44,10 +39,9 @@
44
39
  "cache": "~/.npm"
45
40
  },
46
41
  "scripts": {
47
- "build": "npm run generate_ctx_I_file && npm run compile",
42
+ "build": "npm run compile",
48
43
  "clean": "rm -rf dist",
49
44
  "compile": "swc src --out-dir dist --copy-files --source-maps --config-file .swcrc",
50
- "exec": "$@",
51
- "generate_ctx_I_file": "swc $(./node_modules/.bin/generate_ctx_I_file | tail -n1) --out-dir dist --source-maps --config-file .swcrc"
45
+ "exec": "$@"
52
46
  }
53
47
  }
package/src/index.ts CHANGED
@@ -1,8 +1,5 @@
1
- export * from './scroll_Ctx.js'
2
- export * from './scroll_ctx_I.generated.js'
3
1
  export * from './is_active_.js'
4
2
  export * from './is_visible_.js'
5
3
  export * from './out_is_active_.js'
6
4
  export * from './out_is_visible_.js'
7
5
  export * from './sticky_scroll_active$_b.js'
8
- export * from './ui/index.js'
@@ -1,8 +1,7 @@
1
1
  import { assign, b_, B } from '@ctx-core/object'
2
2
  import { writable$, Writable$ } from '@ctx-core/store'
3
- import type { scroll_Ctx } from './scroll_Ctx'
4
3
  const key = 'sticky_scroll_active$'
5
- export const sticky_scroll_active$_b:B<scroll_Ctx, typeof key> = b_(key, ()=>{
4
+ export const sticky_scroll_active$_b:B<sticky_scroll_active$_T> = b_(key, ()=>{
6
5
  const sticky_scroll_active$ = writable$<sticky_scroll_active_T>({})
7
6
  return assign(sticky_scroll_active$, {
8
7
  add_sticky_scroll_active,
package/COMMIT_EDITMSG DELETED
@@ -1,2 +0,0 @@
1
-
2
-
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=scroll_Ctx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/scroll_Ctx.ts"],"sourcesContent":["import type { scroll_ctx_I } from './scroll_ctx_I.generated.js'\nexport interface scroll_Ctx extends scroll_ctx_I {\n}\n"],"names":[],"mappings":"AAAA,MAAM"}
@@ -1,5 +0,0 @@
1
- /*
2
- * This file was generated by `npm run generate_ctx_I_file` in @ctx-core/dev-tools
3
- */ export { };
4
-
5
- //# sourceMappingURL=scroll_ctx_I.generated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/scroll_ctx_I.generated.ts"],"sourcesContent":["/*\n * This file was generated by `npm run generate_ctx_I_file` in @ctx-core/dev-tools\n*/\nimport type { sticky_scroll_active$_T } from './sticky_scroll_active$_b.js'\nexport interface scroll_ctx_I {\n\tsticky_scroll_active$?:sticky_scroll_active$_T\n}"],"names":[],"mappings":"AAAA,EAEE,AAFF;;AAEE,AAFF,EAEE,CACF,MAAM"}
@@ -1,91 +0,0 @@
1
- <script lang="ts">
2
- import { onMount, onDestroy, createEventDispatcher } from 'svelte'
3
- import { out_is_active_ } from '../out_is_active_.js'
4
- import { out_is_visible_ } from '../out_is_visible_.js'
5
- const dispatch = createEventDispatcher()
6
- export let terminal:HTMLElement|null = null
7
- let getBoundingClientRect = default_getBoundingClientRect, root:HTMLDivElement|null = null,
8
- active:boolean, visible:boolean
9
- onMount(()=>{
10
- reset()
11
- if (terminal) {
12
- terminal.addEventListener('scroll', reset)
13
- }
14
- })
15
- onDestroy(()=>{
16
- if (terminal) {
17
- terminal.removeEventListener('scroll', reset)
18
- }
19
- if (contains_visible()) {
20
- remove_visible()
21
- }
22
- if (contains_active()) {
23
- remove_active()
24
- }
25
- })
26
- function reset() {
27
- const { top, bottom } = getBoundingClientRect()
28
- const { innerHeight } = window
29
- const out_is_active = out_is_active_(top, bottom)
30
- const out_is_visible = out_is_visible_(top, bottom, innerHeight)
31
- if (out_is_visible) {
32
- if (!visible) {
33
- add_visible()
34
- }
35
- } else {
36
- if (visible) {
37
- remove_visible()
38
- }
39
- }
40
- if (out_is_active) {
41
- if (!active) {
42
- add_active()
43
- }
44
- } else {
45
- if (active) {
46
- remove_active()
47
- }
48
- }
49
- }
50
- function add_active() {
51
- active = true
52
- dispatch('add_active', event_())
53
- }
54
- function remove_active() {
55
- active = false
56
- dispatch('remove_active', event_())
57
- }
58
- function add_visible() {
59
- visible = true
60
- dispatch('add_visible', event_())
61
- }
62
- function remove_visible() {
63
- visible = false
64
- dispatch('remove_visible', event_())
65
- }
66
- function default_getBoundingClientRect():DOMRect {
67
- return root!.getBoundingClientRect()
68
- }
69
- function contains_visible() {
70
- return root!.classList.contains('visible')
71
- }
72
- function contains_active() {
73
- return root!.classList.contains('active')
74
- }
75
- function event_() {
76
- return {
77
- root,
78
- target: root,
79
- currentTarget: root,
80
- }
81
- }
82
- </script>
83
-
84
- <svelte:window
85
- on:scroll={reset}
86
- on:resize={reset}
87
- />
88
-
89
- <div bind:this={root} class="Sticky_Scroll {$$props.class||''}" class:active>
90
- <slot></slot>
91
- </div>
package/dist/ui/index.js DELETED
@@ -1,5 +0,0 @@
1
- import 'svelte';
2
- import * as _Sticky_Scroll from './Sticky_Scroll.svelte';
3
- export { _Sticky_Scroll as Sticky_Scroll };
4
-
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/index.ts"],"sourcesContent":["import 'svelte'\nexport * as Sticky_Scroll from './Sticky_Scroll.svelte'\n"],"names":["Sticky_Scroll"],"mappings":"AAAA,MAAM,CAAC,CAAQ;YACHA,cAAa,MAAM,CAAwB;SAA3CA,cAAa,IAAbA,aAAa"}
package/src/scroll_Ctx.ts DELETED
@@ -1,3 +0,0 @@
1
- import type { scroll_ctx_I } from './scroll_ctx_I.generated.js'
2
- export interface scroll_Ctx extends scroll_ctx_I {
3
- }
@@ -1,7 +0,0 @@
1
- /*
2
- * This file was generated by `npm run generate_ctx_I_file` in @ctx-core/dev-tools
3
- */
4
- import type { sticky_scroll_active$_T } from './sticky_scroll_active$_b.js'
5
- export interface scroll_ctx_I {
6
- sticky_scroll_active$?:sticky_scroll_active$_T
7
- }
@@ -1,91 +0,0 @@
1
- <script lang="ts">
2
- import { onMount, onDestroy, createEventDispatcher } from 'svelte'
3
- import { out_is_active_ } from '../out_is_active_.js'
4
- import { out_is_visible_ } from '../out_is_visible_.js'
5
- const dispatch = createEventDispatcher()
6
- export let terminal:HTMLElement|null = null
7
- let getBoundingClientRect = default_getBoundingClientRect, root:HTMLDivElement|null = null,
8
- active:boolean, visible:boolean
9
- onMount(()=>{
10
- reset()
11
- if (terminal) {
12
- terminal.addEventListener('scroll', reset)
13
- }
14
- })
15
- onDestroy(()=>{
16
- if (terminal) {
17
- terminal.removeEventListener('scroll', reset)
18
- }
19
- if (contains_visible()) {
20
- remove_visible()
21
- }
22
- if (contains_active()) {
23
- remove_active()
24
- }
25
- })
26
- function reset() {
27
- const { top, bottom } = getBoundingClientRect()
28
- const { innerHeight } = window
29
- const out_is_active = out_is_active_(top, bottom)
30
- const out_is_visible = out_is_visible_(top, bottom, innerHeight)
31
- if (out_is_visible) {
32
- if (!visible) {
33
- add_visible()
34
- }
35
- } else {
36
- if (visible) {
37
- remove_visible()
38
- }
39
- }
40
- if (out_is_active) {
41
- if (!active) {
42
- add_active()
43
- }
44
- } else {
45
- if (active) {
46
- remove_active()
47
- }
48
- }
49
- }
50
- function add_active() {
51
- active = true
52
- dispatch('add_active', event_())
53
- }
54
- function remove_active() {
55
- active = false
56
- dispatch('remove_active', event_())
57
- }
58
- function add_visible() {
59
- visible = true
60
- dispatch('add_visible', event_())
61
- }
62
- function remove_visible() {
63
- visible = false
64
- dispatch('remove_visible', event_())
65
- }
66
- function default_getBoundingClientRect():DOMRect {
67
- return root!.getBoundingClientRect()
68
- }
69
- function contains_visible() {
70
- return root!.classList.contains('visible')
71
- }
72
- function contains_active() {
73
- return root!.classList.contains('active')
74
- }
75
- function event_() {
76
- return {
77
- root,
78
- target: root,
79
- currentTarget: root,
80
- }
81
- }
82
- </script>
83
-
84
- <svelte:window
85
- on:scroll={reset}
86
- on:resize={reset}
87
- />
88
-
89
- <div bind:this={root} class="Sticky_Scroll {$$props.class||''}" class:active>
90
- <slot></slot>
91
- </div>
package/src/ui/index.ts DELETED
@@ -1,2 +0,0 @@
1
- import 'svelte'
2
- export * as Sticky_Scroll from './Sticky_Scroll.svelte'