{"id":17771311,"url":"https://github.com/lue-bird/elm-scroll","last_synced_at":"2025-07-29T02:34:33.548Z","repository":{"id":64880713,"uuid":"579097748","full_name":"lue-bird/elm-scroll","owner":"lue-bird","description":"items rolled up on both sides of a focus","archived":false,"fork":false,"pushed_at":"2023-11-03T10:34:22.000Z","size":166,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-27T01:22:13.809Z","etag":null,"topics":["elm","focus-list","select-list","zipper"],"latest_commit_sha":null,"homepage":"https://dark.elm.dmy.fr/packages/lue-bird/elm-scroll/latest/","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lue-bird.png","metadata":{"files":{"readme":"README.md","changelog":"change.md","contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-16T16:48:35.000Z","updated_at":"2023-10-20T17:42:00.000Z","dependencies_parsed_at":"2023-01-30T03:31:07.717Z","dependency_job_id":"f7911bd1-c6ae-4c02-8079-c3e46175800a","html_url":"https://github.com/lue-bird/elm-scroll","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/lue-bird/elm-scroll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lue-bird%2Felm-scroll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lue-bird%2Felm-scroll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lue-bird%2Felm-scroll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lue-bird%2Felm-scroll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lue-bird","download_url":"https://codeload.github.com/lue-bird/elm-scroll/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lue-bird%2Felm-scroll/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267619471,"owners_count":24116565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["elm","focus-list","select-list","zipper"],"created_at":"2024-10-26T21:31:30.418Z","updated_at":"2025-07-29T02:34:33.521Z","avatar_url":"https://github.com/lue-bird.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e items rolled up on both sides of a focus\n\n## 📜 [`Scroll`](https://package.elm-lang.org/packages/lue-bird/elm-scroll/latest/)\n\n\n→ good fit for dynamic choice selection: tabs, playlist, ...\n[↑ examples](https://github.com/lue-bird/elm-scroll/tree/master/example)\n\n`Scroll` can even focus a gap\n[`Down` or `Up`](https://dark.elm.dmy.fr/packages/lue-bird/elm-linear-direction/latest/)\nfrom every item\n\n\n```elm\nimport Linear exposing (Direction(..))\nimport Emptiable exposing (filled)\nimport Stack exposing (topBelow)\nimport Scroll exposing (Scroll, FocusGap)\n\nScroll.empty\n    --: Scroll item_ FocusGap Possibly\n    |\u003e Scroll.focusAlter (\\_ -\u003e -1 |\u003e filled)\n    --: Scroll number_ FocusGap never_\n    |\u003e Scroll.sideAlter Up\n        (\\_ -\u003e topBelow 1 [ 2, 3 ])\n    --: Scroll number_ FocusGap never_\n    |\u003e Scroll.toGap Up\n    --: Scroll number_ FocusGap Possibly\n    |\u003e Scroll.focusAlter (\\_ -\u003e 0 |\u003e filled)\n    --: Scroll number_ FocusGap never_\n    |\u003e Scroll.toStack\n--\u003e topBelow -1 [ 0, 1, 2, 3 ]\n```\n\n## suggestions?\n\n→ See [contributing.md](https://github.com/lue-bird/elm-scroll/blob/master/contributing.md)\n\n## alternatives\n\n  - [zwilias/elm-holey-zipper](https://package.elm-lang.org/packages/zwilias/elm-holey-zipper/latest).\n    unsafe; a bit cluttered; no `map (Location -\u003e ...)`, `dragFocus`, `toNonEmptyList`, `sideAlter` (so no squeezing in multiple items, ...)\n  - [turboMaCk/non-empty-list-alias: `List.NonEmpty.Zipper`](https://dark.elm.dmy.fr/packages/turboMaCk/non-empty-list-alias/latest/List-NonEmpty-Zipper)\n    complete; cluttered (for example `update` \u0026 `map`); some unintuitive names\n  - [miyamoen/select-list](https://dark.elm.dmy.fr/packages/miyamoen/select-list/latest/SelectList)\n    complete; a bit cluttered; no `focusWhere`\n  - [yotamDvir/elm-pivot](https://dark.elm.dmy.fr/packages/yotamDvir/elm-pivot/latest/)\n    complete; cluttered; no `map (Location -\u003e ...)`\n  - [staeter/ziplist](https://dark.elm.dmy.fr/packages/staeter/ziplist/latest/)\n    navigation works; a bit cluttered; no `map (Location -\u003e ...)`, `sideAlter` (so no squeezing in multiple items, ...)\n  - [wernerdegroot/listzipper](https://dark.elm.dmy.fr/packages/wernerdegroot/listzipper/latest/List-Zipper)\n    navigation works; no `dragFocus`, `map (Location -\u003e ...)`, `toNonEmptyList`\n  - [stoeffel/list-focus](https://package.elm-lang.org/packages/stoeffel/list-focus/1.0.0/)\n    no clutter included but also no access of before and after, no `length`, `toList`, `map (Location -\u003e ...)`, `toNonEmptyList`\n  - [alexanderkiel/list-selection](https://dark.elm.dmy.fr/packages/alexanderkiel/list-selection/latest/List-Selection)\n    \u0026 [NoRedInk/list-selection](https://dark.elm.dmy.fr/packages/NoRedInk/list-selection/latest/List-Selection)\n    very incomplete, impossible to extract focused item safely; no navigation, insertion, `side`, ...\n  - [jjant/elm-comonad-zipper](https://dark.elm.dmy.fr/packages/jjant/elm-comonad-zipper/latest/)\n    incomplete; no `dragFocus`, `toNonEmptyList`, `sideAlter` (so no squeezing in multiple items, ...)\n  - [guid75/ziplist](https://dark.elm.dmy.fr/packages/guid75/ziplist/latest/)\n    extremely incomplete\n  - [arowM/elm-reference: `Reference.List`](https://dark.elm.dmy.fr/packages/arowM/elm-reference/latest/Reference-List)\n    only `overList`, sides impossible to access \u0026 alter\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flue-bird%2Felm-scroll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flue-bird%2Felm-scroll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flue-bird%2Felm-scroll/lists"}