├── packages ├── docs │ └── site │ │ ├── README.md │ │ ├── src │ │ ├── routes │ │ │ ├── compounds │ │ │ │ ├── mapbox │ │ │ │ │ ├── index.svelte │ │ │ │ │ └── empty.svelte │ │ │ │ ├── viewports │ │ │ │ │ └── index.svelte │ │ │ │ ├── time_region_value │ │ │ │ │ ├── index.svelte │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── index.svelte │ │ │ │ │ │ └── [year].svelte │ │ │ │ │ ├── _data │ │ │ │ │ │ └── stores.js │ │ │ │ │ └── _layout.svelte │ │ │ │ └── index.svelte │ │ │ ├── components │ │ │ │ ├── _examples │ │ │ │ │ ├── binsFill_3.json │ │ │ │ │ ├── binsFill.js │ │ │ │ │ ├── binsFill_2.js │ │ │ │ │ ├── trends │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── bins_value_non_uniform.js │ │ │ │ ├── _utils.js │ │ │ │ ├── index.json.js │ │ │ │ └── _components.js │ │ │ ├── index.svelte │ │ │ └── _error.svelte │ │ ├── client.js │ │ ├── lib │ │ │ └── components │ │ │ │ └── Elements.svelte │ │ ├── server.js │ │ └── template.html │ │ ├── .eslintignore │ │ ├── .gitignore │ │ ├── static │ │ ├── favicon.png │ │ ├── logo-192.png │ │ ├── logo-512.png │ │ ├── font │ │ │ ├── OpenSans-Bold.ttf │ │ │ ├── OpenSans-Light.ttf │ │ │ ├── OpenSans-Regular.ttf │ │ │ ├── AvenirNext │ │ │ │ └── Variable.ttf │ │ │ ├── OpenDyslexic │ │ │ │ ├── Bold.otf │ │ │ │ ├── Italic.otf │ │ │ │ ├── Regular.otf │ │ │ │ └── BoldItalic.otf │ │ │ ├── OpenSans-SemiBold.ttf │ │ │ ├── NobotoFlex │ │ │ │ └── Variable.woff2 │ │ │ └── Archivo │ │ │ │ ├── VariableFont_wdth,wght.ttf │ │ │ │ └── Italic-VariableFont_wdth,wght.ttf │ │ └── manifest.json │ │ └── .eslintrc.yml ├── tools │ ├── file │ │ ├── test_assets │ │ │ ├── a1.json │ │ │ ├── b2.json │ │ │ ├── aDir │ │ │ │ ├── .foo │ │ │ │ └── a.txt │ │ │ ├── multi.json │ │ │ ├── rows.csv │ │ │ ├── rows.tsv │ │ │ ├── rows.txt │ │ │ ├── a1.js │ │ │ ├── ab.csv │ │ │ ├── ab.tsv │ │ │ ├── ab.txt │ │ │ ├── a.txt │ │ │ ├── multi.js │ │ │ └── a.yaml │ │ ├── .eslintrc.yml │ │ ├── src │ │ │ └── index.js │ │ └── README.md │ ├── utils │ │ └── src │ │ │ └── modules │ │ │ ├── any-string.md │ │ │ ├── any-[any-any].md │ │ │ ├── any-any.md │ │ │ ├── array-[any-any].md │ │ │ ├── iterable-array.md │ │ │ ├── array-[any-array].md │ │ │ ├── array-[args-any].md │ │ │ ├── array-object.md │ │ │ ├── [any-any]-[array-any].md │ │ │ ├── any-[iterable-array].md │ │ │ ├── iterable-any.md │ │ │ ├── number-[args-any].md │ │ │ ├── number-[array-array].md │ │ │ ├── number-[iterable-any].md │ │ │ ├── object-[object-object].md │ │ │ ├── string-[any-boolean].md │ │ │ ├── string-[iterable-array].md │ │ │ ├── string-[object-any].md │ │ │ ├── [any-boolean]-[any-boolean].md │ │ │ ├── any-[iterable-boolean].md │ │ │ ├── array-[object-array].md │ │ │ ├── iterable-[function-any].md │ │ │ ├── regexp-[string-boolean].md │ │ │ ├── string-[iterable-string].md │ │ │ ├── array-[any-boolean].md │ │ │ ├── array-[object-object].md │ │ │ ├── constructor-[any-boolean].md │ │ │ ├── number-[iterable-array].md │ │ │ ├── [object-object]-[object-object].md │ │ │ ├── itercb[any-any]-[iterable-number].md │ │ │ ├── itercb[any-any]-[object-object].md │ │ │ ├── any-boolean.md │ │ │ ├── array-[iterable-array].md │ │ │ ├── string-[object-boolean].md │ │ │ ├── itercb[any-any]-[iterable-object].md │ │ │ ├── itercb[any-boolean]-[iterable-boolean].md │ │ │ ├── itercb[any-boolean]-[object-object].md │ │ │ ├── itercb[any-boolean]-[iterable-any].md │ │ │ ├── itercb[any-any]-[iterable-array].md │ │ │ ├── number-[number-number].md │ │ │ ├── [any-any]-[any-any].md │ │ │ ├── itercb[any-boolean]-[iterable-number].md │ │ │ ├── any-[any-boolean].md │ │ │ ├── object-array.md │ │ │ ├── numerical-[numerical-boolean].md │ │ │ ├── array-array.md │ │ │ ├── itercb[any-boolean]-[iterable-array].md │ │ │ ├── any-undefined.js │ │ │ ├── array_proto-string.spec.js │ │ │ ├── any-string.js │ │ │ ├── string_proto-array.spec.js │ │ │ ├── regexp-boolean.js │ │ │ ├── string-any.js │ │ │ ├── string-number.js │ │ │ ├── array_proto-boolean.spec.js │ │ │ ├── number-[number-number].spec.js │ │ │ ├── object-[string-boolean].spec.js │ │ │ ├── array-[number-number].spec.js │ │ │ ├── any-string.spec.js │ │ │ ├── any-undefined.spec.js │ │ │ ├── buffer-any.spec.js │ │ │ ├── iterable-number.js │ │ │ ├── number-[number-number].js │ │ │ ├── string-regexp.spec.js │ │ │ ├── object-[string-boolean].js │ │ │ ├── any-[array-object].spec.js │ │ │ ├── array_proto-string.js │ │ │ ├── any-[array-object].js │ │ │ ├── [any-boolean]-[array-array].spec.js │ │ │ ├── [string-boolean]-[object-boolean].spec.js │ │ │ ├── [string-string]-[object-object].spec.js │ │ │ ├── string-number.spec.js │ │ │ ├── array-[number-boolean].js │ │ │ ├── string-[array-array].js │ │ │ ├── array-[number-boolean].spec.js │ │ │ ├── [string-boolean]-[object-boolean].js │ │ │ ├── array-[string-boolean].spec.js │ │ │ ├── array_proto-boolean.js │ │ │ └── array-[string-boolean].js │ ├── atlas │ │ ├── src │ │ │ ├── index.js │ │ │ ├── lib │ │ │ │ ├── urls.js │ │ │ │ └── nutsUtils.js │ │ │ ├── bin │ │ │ │ ├── dist │ │ │ │ │ └── setup.sh │ │ │ │ ├── base │ │ │ │ │ ├── world │ │ │ │ │ │ └── run.sh │ │ │ │ │ ├── runAll.sh │ │ │ │ │ └── NUTS │ │ │ │ │ │ └── run.sh │ │ │ │ └── checkVersion.js │ │ │ └── specs.js │ │ ├── .gitignore │ │ ├── data │ │ │ └── base │ │ │ │ └── NUTS │ │ │ │ └── 0 │ │ │ │ └── history │ │ │ │ ├── source │ │ │ │ ├── 1995-1999.xls │ │ │ │ ├── 1999-2003.xls │ │ │ │ ├── 2003-2006.xls │ │ │ │ ├── 2006-2010.xls │ │ │ │ ├── NUTS2021.xlsx │ │ │ │ ├── NUTS2013-NUTS2016.xlsx │ │ │ │ └── NUTS 2010 - NUTS 2013.xls │ │ │ │ ├── README.md │ │ │ │ └── recoded │ │ │ │ └── 2016_2021.tsv │ │ └── README.md │ ├── dom │ │ ├── src │ │ │ └── index.js │ │ ├── test_assets │ │ │ ├── 01_input.html │ │ │ ├── 02_input.html │ │ │ ├── 01_expected.html │ │ │ └── 02_expected.html │ │ └── README.md │ ├── request │ │ ├── src │ │ │ ├── index.js │ │ │ ├── fetchManager │ │ │ │ └── rxUtils.js │ │ │ ├── json.spec.js │ │ │ └── json.js │ │ └── README.md │ ├── geo │ │ ├── src │ │ │ └── index.js │ │ └── README.md │ ├── geometry │ │ ├── src │ │ │ ├── index.js │ │ │ ├── 3DPoint.spec.js │ │ │ └── 3DPoint.js │ │ └── README.md │ └── dev │ │ ├── README.md │ │ └── src │ │ ├── index.js │ │ └── log │ │ └── iterable-array.js └── components │ ├── ui │ ├── src │ │ ├── utils │ │ │ ├── shared.js │ │ │ ├── url.js │ │ │ ├── env.js │ │ │ └── rx.js │ │ ├── icons │ │ │ ├── svizzle │ │ │ │ ├── index.js │ │ │ │ ├── FormatClear.svelte │ │ │ │ └── A11yPerson.svelte │ │ │ ├── feather │ │ │ │ ├── Circle.svelte │ │ │ │ ├── Check.svelte │ │ │ │ ├── Minus.svelte │ │ │ │ ├── Play.svelte │ │ │ │ ├── ChevronDown.svelte │ │ │ │ ├── ChevronLeft.svelte │ │ │ │ ├── ChevronRight.svelte │ │ │ │ ├── ChevronUp.svelte │ │ │ │ ├── Droplet.svelte │ │ │ │ ├── Framer.svelte │ │ │ │ ├── Navigation.svelte │ │ │ │ ├── Navigation2.svelte │ │ │ │ ├── Shield.svelte │ │ │ │ ├── Twitch.svelte │ │ │ │ ├── Activity.svelte │ │ │ │ ├── Cloud.svelte │ │ │ │ ├── Moon.svelte │ │ │ │ ├── Square.svelte │ │ │ │ ├── Volume.svelte │ │ │ │ ├── Zap.svelte │ │ │ │ ├── Bookmark.svelte │ │ │ │ ├── Edit2.svelte │ │ │ │ ├── Filter.svelte │ │ │ │ ├── Umbrella.svelte │ │ │ │ ├── Bluetooth.svelte │ │ │ │ ├── Disc.svelte │ │ │ │ ├── Thermometer.svelte │ │ │ │ ├── X.svelte │ │ │ │ ├── Clock.svelte │ │ │ │ ├── Facebook.svelte │ │ │ │ ├── MessageSquare.svelte │ │ │ │ ├── Plus.svelte │ │ │ │ ├── ArrowUp.svelte │ │ │ │ ├── Code.svelte │ │ │ │ ├── MinusCircle.svelte │ │ │ │ ├── Power.svelte │ │ │ │ ├── Search.svelte │ │ │ │ ├── StopCircle.svelte │ │ │ │ ├── ArrowDown.svelte │ │ │ │ ├── ArrowDownLeft.svelte │ │ │ │ ├── ArrowLeft.svelte │ │ │ │ ├── ArrowRight.svelte │ │ │ │ ├── ArrowUpLeft.svelte │ │ │ │ ├── ArrowUpRight.svelte │ │ │ │ ├── CornerDownLeft.svelte │ │ │ │ ├── CornerLeftUp.svelte │ │ │ │ ├── CornerRightUp.svelte │ │ │ │ ├── CornerUpLeft.svelte │ │ │ │ ├── CornerUpRight.svelte │ │ │ │ ├── Crop.svelte │ │ │ │ ├── Folder.svelte │ │ │ │ ├── MousePointer.svelte │ │ │ │ ├── Pause.svelte │ │ │ │ ├── PieChart.svelte │ │ │ │ ├── PlayCircle.svelte │ │ │ │ ├── Send.svelte │ │ │ │ ├── SkipBack.svelte │ │ │ │ ├── SkipForward.svelte │ │ │ │ ├── Slash.svelte │ │ │ │ ├── Terminal.svelte │ │ │ │ ├── User.svelte │ │ │ │ ├── ArrowDownRight.svelte │ │ │ │ ├── ChevronsDown.svelte │ │ │ │ ├── ChevronsLeft.svelte │ │ │ │ ├── ChevronsRight.svelte │ │ │ │ ├── ChevronsUp.svelte │ │ │ │ ├── CornerDownRight.svelte │ │ │ │ ├── CornerLeftDown.svelte │ │ │ │ ├── CornerRightDown.svelte │ │ │ │ ├── Edit3.svelte │ │ │ │ ├── Eye.svelte │ │ │ │ ├── Octagon.svelte │ │ │ │ ├── Rewind.svelte │ │ │ │ ├── RotateCcw.svelte │ │ │ │ ├── Underline.svelte │ │ │ │ ├── AtSign.svelte │ │ │ │ ├── Bell.svelte │ │ │ │ ├── FastForward.svelte │ │ │ │ ├── Lock.svelte │ │ │ │ ├── MapPin.svelte │ │ │ │ ├── RotateCw.svelte │ │ │ │ ├── Sidebar.svelte │ │ │ │ ├── ToggleLeft.svelte │ │ │ │ ├── ToggleRight.svelte │ │ │ │ ├── Tv.svelte │ │ │ │ ├── Unlock.svelte │ │ │ │ ├── Award.svelte │ │ │ │ ├── Battery.svelte │ │ │ │ ├── Bold.svelte │ │ │ │ ├── CheckCircle.svelte │ │ │ │ ├── Columns.svelte │ │ │ │ ├── CreditCard.svelte │ │ │ │ ├── MinusSquare.svelte │ │ │ │ ├── Music.svelte │ │ │ │ ├── Tablet.svelte │ │ │ │ ├── TrendingUp.svelte │ │ │ │ ├── Triangle.svelte │ │ │ │ ├── Video.svelte │ │ │ │ ├── Volume1.svelte │ │ │ │ ├── Wind.svelte │ │ │ │ ├── DollarSign.svelte │ │ │ │ ├── Flag.svelte │ │ │ │ ├── Home.svelte │ │ │ │ ├── Maximize.svelte │ │ │ │ ├── Minimize.svelte │ │ │ │ ├── Rss.svelte │ │ │ │ ├── Smartphone.svelte │ │ │ │ ├── TrendingDown.svelte │ │ │ │ ├── BookOpen.svelte │ │ │ │ ├── Divide.svelte │ │ │ │ ├── File.svelte │ │ │ │ ├── GitMerge.svelte │ │ │ │ ├── Star.svelte │ │ │ │ ├── Target.svelte │ │ │ │ ├── Briefcase.svelte │ │ │ │ ├── CheckSquare.svelte │ │ │ │ ├── CloudLightning.svelte │ │ │ │ ├── Compass.svelte │ │ │ │ ├── MoreHorizontal.svelte │ │ │ │ ├── MoreVertical.svelte │ │ │ │ ├── Table.svelte │ │ │ │ ├── Anchor.svelte │ │ │ │ ├── Book.svelte │ │ │ │ ├── Info.svelte │ │ │ │ ├── Italic.svelte │ │ │ │ ├── Menu.svelte │ │ │ │ ├── XCircle.svelte │ │ │ │ ├── BarChart.svelte │ │ │ │ ├── BarChart2.svelte │ │ │ │ ├── Copy.svelte │ │ │ │ ├── Key.svelte │ │ │ │ ├── Link2.svelte │ │ │ │ ├── Mail.svelte │ │ │ │ ├── Paperclip.svelte │ │ │ │ ├── PauseCircle.svelte │ │ │ │ ├── Percent.svelte │ │ │ │ ├── PlusCircle.svelte │ │ │ │ ├── ThumbsUp.svelte │ │ │ │ ├── Type.svelte │ │ │ │ ├── ZoomOut.svelte │ │ │ │ ├── AlertCircle.svelte │ │ │ │ ├── ArrowDownCircle.svelte │ │ │ │ ├── ArrowLeftCircle.svelte │ │ │ │ ├── ArrowRightCircle.svelte │ │ │ │ ├── ArrowUpCircle.svelte │ │ │ │ ├── Camera.svelte │ │ │ │ ├── GitCommit.svelte │ │ │ │ ├── Hexagon.svelte │ │ │ │ ├── Pocket.svelte │ │ │ │ ├── Tag.svelte │ │ │ │ ├── Trash.svelte │ │ │ │ ├── Voicemail.svelte │ │ │ │ ├── Volume2.svelte │ │ │ │ ├── Airplay.svelte │ │ │ │ ├── Archive.svelte │ │ │ │ ├── FolderMinus.svelte │ │ │ │ ├── HelpCircle.svelte │ │ │ │ ├── Layout.svelte │ │ │ │ ├── Share.svelte │ │ │ │ ├── UserMinus.svelte │ │ │ │ ├── Edit.svelte │ │ │ │ ├── Image.svelte │ │ │ │ ├── Layers.svelte │ │ │ │ ├── LogIn.svelte │ │ │ │ ├── LogOut.svelte │ │ │ │ ├── Speaker.svelte │ │ │ │ ├── Upload.svelte │ │ │ │ ├── UserCheck.svelte │ │ │ │ ├── VolumeX.svelte │ │ │ │ ├── XSquare.svelte │ │ │ │ ├── Clipboard.svelte │ │ │ │ ├── CloudOff.svelte │ │ │ │ ├── Database.svelte │ │ │ │ ├── Delete.svelte │ │ │ │ ├── Download.svelte │ │ │ │ ├── Feather.svelte │ │ │ │ ├── Heart.svelte │ │ │ │ ├── Link.svelte │ │ │ │ ├── Map.svelte │ │ │ │ ├── Monitor.svelte │ │ │ │ ├── PlusSquare.svelte │ │ │ │ ├── ShoppingBag.svelte │ │ │ │ ├── ThumbsDown.svelte │ │ │ │ ├── Trello.svelte │ │ │ │ ├── GitBranch.svelte │ │ │ │ ├── VideoOff.svelte │ │ │ │ ├── CameraOff.svelte │ │ │ │ ├── ShoppingCart.svelte │ │ │ │ ├── Cast.svelte │ │ │ │ ├── DownloadCloud.svelte │ │ │ │ ├── ExternalLink.svelte │ │ │ │ ├── FileMinus.svelte │ │ │ │ ├── GitPullRequest.svelte │ │ │ │ ├── Hash.svelte │ │ │ │ ├── Meh.svelte │ │ │ │ ├── Radio.svelte │ │ │ │ ├── Smile.svelte │ │ │ │ ├── Tool.svelte │ │ │ │ ├── Frown.svelte │ │ │ │ ├── PenTool.svelte │ │ │ │ ├── Repeat.svelte │ │ │ │ ├── Save.svelte │ │ │ │ ├── AlignCenter.svelte │ │ │ │ ├── AlignJustify.svelte │ │ │ │ ├── AlignLeft.svelte │ │ │ │ ├── AlignRight.svelte │ │ │ │ ├── DivideCircle.svelte │ │ │ │ ├── Headphones.svelte │ │ │ │ ├── Maximize2.svelte │ │ │ │ ├── RefreshCcw.svelte │ │ │ │ ├── RefreshCw.svelte │ │ │ │ ├── ZoomIn.svelte │ │ │ │ ├── FolderPlus.svelte │ │ │ │ ├── Grid.svelte │ │ │ │ ├── Instagram.svelte │ │ │ │ ├── Linkedin.svelte │ │ │ │ ├── Minimize2.svelte │ │ │ │ ├── ShieldOff.svelte │ │ │ │ ├── UserX.svelte │ │ │ │ ├── Users.svelte │ │ │ │ ├── Wifi.svelte │ │ │ │ ├── Globe.svelte │ │ │ │ ├── Inbox.svelte │ │ │ │ ├── Printer.svelte │ │ │ │ ├── Twitter.svelte │ │ │ │ ├── UserPlus.svelte │ │ │ │ ├── XOctagon.svelte │ │ │ │ ├── Calendar.svelte │ │ │ │ ├── AlertOctagon.svelte │ │ │ │ ├── DivideSquare.svelte │ │ │ │ ├── Mic.svelte │ │ │ │ ├── Truck.svelte │ │ │ │ ├── AlertTriangle.svelte │ │ │ │ ├── CloudRain.svelte │ │ │ │ ├── Command.svelte │ │ │ │ ├── Dribbble.svelte │ │ │ │ ├── BatteryCharging.svelte │ │ │ │ ├── MessageCircle.svelte │ │ │ │ ├── FilePlus.svelte │ │ │ │ ├── Server.svelte │ │ │ │ ├── UploadCloud.svelte │ │ │ │ ├── ZapOff.svelte │ │ │ │ ├── Crosshair.svelte │ │ │ │ ├── Scissors.svelte │ │ │ │ ├── Share2.svelte │ │ │ │ ├── Shuffle.svelte │ │ │ │ ├── Chrome.svelte │ │ │ │ ├── Coffee.svelte │ │ │ │ ├── Trash2.svelte │ │ │ │ ├── BellOff.svelte │ │ │ │ ├── EyeOff.svelte │ │ │ │ ├── Box.svelte │ │ │ │ ├── Watch.svelte │ │ │ │ ├── FileText.svelte │ │ │ │ ├── Gift.svelte │ │ │ │ ├── HardDrive.svelte │ │ │ │ ├── List.svelte │ │ │ │ ├── Codepen.svelte │ │ │ │ ├── Move.svelte │ │ │ │ ├── Gitlab.svelte │ │ │ │ ├── MicOff.svelte │ │ │ │ ├── Package.svelte │ │ │ │ ├── Phone.svelte │ │ │ │ ├── Github.svelte │ │ │ │ ├── Figma.svelte │ │ │ │ ├── CloudDrizzle.svelte │ │ │ │ ├── Aperture.svelte │ │ │ │ ├── WifiOff.svelte │ │ │ │ ├── Youtube.svelte │ │ │ │ ├── CloudSnow.svelte │ │ │ │ ├── LifeBuoy.svelte │ │ │ │ ├── PhoneCall.svelte │ │ │ │ ├── Film.svelte │ │ │ │ ├── Sunrise.svelte │ │ │ │ ├── Sunset.svelte │ │ │ │ ├── PhoneOff.svelte │ │ │ │ ├── Loader.svelte │ │ │ │ ├── PhoneMissed.svelte │ │ │ │ ├── Sliders.svelte │ │ │ │ ├── PhoneForwarded.svelte │ │ │ │ ├── PhoneIncoming.svelte │ │ │ │ ├── PhoneOutgoing.svelte │ │ │ │ ├── Codesandbox.svelte │ │ │ │ ├── Sun.svelte │ │ │ │ └── Cpu.svelte │ │ │ └── index.js │ │ ├── drivers │ │ │ ├── fonts │ │ │ │ ├── index.js │ │ │ │ ├── FontsLoader.svelte │ │ │ │ └── utils.js │ │ │ └── style │ │ │ │ ├── StyleDriver.svelte │ │ │ │ └── README.md │ │ ├── sensors │ │ │ ├── index.js │ │ │ ├── screen │ │ │ │ └── WindowBinder.svelte │ │ │ └── style │ │ │ │ ├── StyleSensor.svelte │ │ │ │ └── README.md │ │ ├── a11y │ │ │ └── index.js │ │ ├── viewports │ │ │ ├── View.svelte │ │ │ └── ViewsXor.svelte │ │ ├── ResponsiveFlex.svelte │ │ ├── actions │ │ │ ├── resizeObserver.js │ │ │ └── resizeHandler.js │ │ ├── MessageView.svelte │ │ └── NoScript.svelte │ └── doc │ │ └── breakpoints.png │ ├── hierarchy │ ├── src │ │ └── index.js │ └── CHANGELOG.md │ ├── barchart │ ├── src │ │ └── index.js │ └── README.md │ ├── legend │ ├── doc │ │ ├── make_graph.sh │ │ ├── brushing.png │ │ └── brushing.dot │ ├── src │ │ └── index.js │ └── README.md │ ├── histogram │ ├── doc │ │ ├── make_graph.sh │ │ ├── brushing.png │ │ └── brushing.dot │ ├── src │ │ └── index.js │ └── README.md │ ├── time_region_value │ ├── src │ │ ├── lib │ │ │ ├── stores │ │ │ │ ├── POIs.js │ │ │ │ ├── selectedYear.js │ │ │ │ ├── regionSettings.js │ │ │ │ ├── trends.js │ │ │ │ ├── index.js │ │ │ │ └── modals.js │ │ │ ├── config.js │ │ │ └── utils │ │ │ │ ├── index.js │ │ │ │ ├── d3.js │ │ │ │ ├── style.js │ │ │ │ └── url.js │ │ └── index.js │ └── README.md │ ├── trends │ ├── CHANGELOG.md │ └── src │ │ └── index.js │ ├── choropleth │ └── src │ │ ├── shared.js │ │ ├── index.js │ │ └── projections.js │ ├── mapbox │ └── src │ │ ├── index.js │ │ ├── CustomControl.svelte │ │ ├── util.js │ │ ├── MapboxglUnsupported.svelte │ │ └── SvgLayer.svelte │ ├── .eslintrc.yml │ └── README.md ├── .gitmodules ├── bin ├── rename_doc.sh └── fix_doc.sh ├── .gitignore └── lerna.json /packages/docs/site/README.md: -------------------------------------------------------------------------------- 1 | # Svizzle docs 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/a1.json: -------------------------------------------------------------------------------- 1 | {"a": 1} 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/b2.json: -------------------------------------------------------------------------------- 1 | {"b": 2} 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/aDir/.foo: -------------------------------------------------------------------------------- 1 | hidden foo 2 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/mapbox/index.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/viewports/index.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/multi.json: -------------------------------------------------------------------------------- 1 | {"a": 1, "b": 2} 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/rows.csv: -------------------------------------------------------------------------------- 1 | foo,1 2 | bar,2 3 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/rows.tsv: -------------------------------------------------------------------------------- 1 | foo 1 2 | bar 2 3 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/rows.txt: -------------------------------------------------------------------------------- 1 | foo;1 2 | bar;2 3 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/a1.js: -------------------------------------------------------------------------------- 1 | export default {"a": 1}; 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/ab.csv: -------------------------------------------------------------------------------- 1 | a,b 2 | foo,1 3 | bar,2 4 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/ab.tsv: -------------------------------------------------------------------------------- 1 | a b 2 | foo 1 3 | bar 2 4 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/ab.txt: -------------------------------------------------------------------------------- 1 | a;b 2 | foo;1 3 | bar;2 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-string.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - type 4 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/a.txt: -------------------------------------------------------------------------------- 1 | I'm a text file 2 | for you to read 3 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/multi.js: -------------------------------------------------------------------------------- 1 | export default {"a": 1, "b": 2}; 2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[any-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - always 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-any.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - identity 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[any-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - pipe 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/iterable-array.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - init 4 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/aDir/a.txt: -------------------------------------------------------------------------------- 1 | I'm a text file 2 | for you to read 3 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[any-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - collect 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[args-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - adapter 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-object.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - fromPairs 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/utils/shared.js: -------------------------------------------------------------------------------- 1 | export const defaultRel = 'noopener'; 2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[any-any]-[array-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - apply 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - append 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/iterable-any.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - head 4 | - last 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[args-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - getArgAt 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[array-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - rotateBy 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[iterable-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - getAt 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/object-[object-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - rename 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[any-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - isType 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - pluck 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[object-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - getKey 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[any-boolean]-[any-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - not 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[iterable-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - contains 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[object-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - validateWith 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/iterable-[function-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - applyTo 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/regexp-[string-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - testWith 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[iterable-string].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - joinWith 4 | -------------------------------------------------------------------------------- /packages/tools/file/.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | browser: false 3 | rules: 4 | no-sync: 'off' 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[any-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - allOf 4 | - anyOf 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[object-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - pick 4 | - skip 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/constructor-[any-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - isInstanceOf 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - drop 4 | - take 5 | -------------------------------------------------------------------------------- /packages/components/hierarchy/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as Treemap} from './Treemap.svelte'; 2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[object-object]-[object-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - renameWith 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-any]-[iterable-number].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - countBy 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-any]-[object-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - mapValuesWith 4 | -------------------------------------------------------------------------------- /packages/components/barchart/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as BarchartVDiv} from './BarchartVDiv.svelte'; 2 | -------------------------------------------------------------------------------- /packages/docs/site/.eslintignore: -------------------------------------------------------------------------------- 1 | !src/node_modules/app 2 | __sapper__/ 3 | src/node_modules/@sapper/ 4 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-boolean.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - isNil 4 | - isNull 5 | - isUndefined 6 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - pullFrom 4 | - sortWith 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[object-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - hasKey 4 | - hasOwnKey 5 | -------------------------------------------------------------------------------- /packages/components/hierarchy/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/hierarchy` v0.1.0 2 | 3 | - added `Treemap.svelte` 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/svizzle/index.js: -------------------------------------------------------------------------------- 1 | export {default as A11yPerson} from './A11yPerson.svelte'; 2 | -------------------------------------------------------------------------------- /packages/tools/file/test_assets/a.yaml: -------------------------------------------------------------------------------- 1 | foo: 2 | - a: 1 3 | - b: 2 4 | bar: 5 | - 1 6 | - 2 7 | - 3 8 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-any]-[iterable-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - groupBy 4 | - indexBy 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-boolean]-[iterable-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - every 4 | - some 5 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-boolean]-[object-object].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - pickIf 4 | - skipIf 5 | -------------------------------------------------------------------------------- /packages/components/legend/doc/make_graph.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | dot -Tpng ./brushing.dot > ./brushing.png; 4 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as regionSpecs} from './specs.js'; 2 | export * from './utils.js'; 3 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-boolean]-[iterable-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - findLastWhere 4 | - findWhere 5 | -------------------------------------------------------------------------------- /packages/components/histogram/doc/make_graph.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | dot -Tpng ./brushing.dot > ./brushing.png; 4 | -------------------------------------------------------------------------------- /packages/tools/dom/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './attrs.js'; 2 | export * from './html.js'; 3 | export * from './nodes.js'; 4 | -------------------------------------------------------------------------------- /packages/tools/file/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './path.js'; 2 | export * from './read.js'; 3 | export * from './write.js'; 4 | -------------------------------------------------------------------------------- /packages/docs/site/.gitignore: -------------------------------------------------------------------------------- 1 | /__sapper__/ 2 | /node_modules/ 3 | /src/node_modules/@sapper/ 4 | /static/atlas/ 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /packages/tools/dom/test_assets/01_input.html: -------------------------------------------------------------------------------- 1 |
foo
2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-any]-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - flatMapWith 4 | - mapWith 5 | - uniquesBy 6 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[number-number].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - add 4 | - deduct 5 | - divideBy 6 | - multiplyBy 7 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Circle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/favicon.png -------------------------------------------------------------------------------- /packages/docs/site/static/logo-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/logo-192.png -------------------------------------------------------------------------------- /packages/docs/site/static/logo-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/logo-512.png -------------------------------------------------------------------------------- /packages/tools/atlas/src/lib/urls.js: -------------------------------------------------------------------------------- 1 | export const NUTS_HOME_URL = 'https://ec.europa.eu/eurostat/cache/GISCO/distribution/v2/nuts'; 2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[any-any]-[any-any].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - asPartial 4 | - binary 5 | - flip 6 | - generic 7 | - unary 8 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-boolean]-[iterable-number].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - findIndexWhere 4 | - findLastIndexWhere 5 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Check.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Minus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Play.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/dom/test_assets/02_input.html: -------------------------------------------------------------------------------- 1 |
[Object object]
2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[any-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - is 4 | - isSVZ 5 | - isFinite 6 | - isInteger 7 | - isSafeInteger 8 | -------------------------------------------------------------------------------- /packages/components/legend/doc/brushing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/components/legend/doc/brushing.png -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/POIs.js: -------------------------------------------------------------------------------- 1 | import {writable} from 'svelte/store'; 2 | 3 | export const _POIs = writable([]); 4 | -------------------------------------------------------------------------------- /packages/components/ui/doc/breakpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/components/ui/doc/breakpoints.png -------------------------------------------------------------------------------- /packages/components/ui/src/drivers/fonts/index.js: -------------------------------------------------------------------------------- 1 | export {default as FontsLoader} from './FontsLoader.svelte'; 2 | export * from './utils.js'; 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/barchart/README.md: -------------------------------------------------------------------------------- 1 | # barchart 2 | 3 | A package containing a vertical barchart component for Svelte (`BarchartVDiv.svelte`). 4 | -------------------------------------------------------------------------------- /packages/components/histogram/doc/brushing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/components/histogram/doc/brushing.png -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/config.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | noDataMessage: 'No data', 4 | noLegendMessage: 'No legend' 5 | } 6 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Droplet.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/client.js: -------------------------------------------------------------------------------- 1 | import * as sapper from '@sapper/app'; 2 | 3 | sapper.start({ 4 | target: document.querySelector('#app') 5 | }); 6 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Framer.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Navigation.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Navigation2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Shield.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Twitch.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenSans-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenSans-Light.ttf -------------------------------------------------------------------------------- /packages/tools/atlas/.gitignore: -------------------------------------------------------------------------------- 1 | data/base/NUTS/1 2 | data/base/NUTS/2 3 | data/base/NUTS/3 4 | data/base/NUTS/4 5 | data/base/world/1 6 | !src/bin/dist 7 | -------------------------------------------------------------------------------- /packages/tools/request/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './fetchManager/fetchManager.js'; 2 | export * from './json.js'; 3 | export * from './webstreams.js'; 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "packages/tools/atlas/distro"] 2 | path = packages/tools/atlas/data/dist 3 | url = git@github.com:nestauk/svizzle_atlas_distro.git 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Activity.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Cloud.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Moon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Square.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Volume.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Zap.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /packages/tools/dom/test_assets/01_expected.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | foo 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Bookmark.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/AvenirNext/Variable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/AvenirNext/Variable.ttf -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenDyslexic/Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenDyslexic/Bold.otf -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenDyslexic/Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenDyslexic/Italic.otf -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenSans-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenSans-SemiBold.ttf -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/object-array.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - enumerables 4 | - keys 5 | - ownPairs 6 | - pairs 7 | - tear 8 | - tearOwn 9 | - values 10 | -------------------------------------------------------------------------------- /packages/components/legend/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as ColorBinsG} from './ColorBinsG.svelte'; 2 | export {default as ColorBinsDiv} from './ColorBinsDiv.svelte'; 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Edit2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Filter.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Umbrella.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/index.js: -------------------------------------------------------------------------------- 1 | export {default as Icon} from './Icon.svelte'; 2 | export * from './feather/index.js'; 3 | export * from './svizzle/index.js'; 4 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/binsFill_3.json: -------------------------------------------------------------------------------- 1 | ["magenta","beige","seashell","darkolivegreen","slategray","peru","navajowhite","ivory","lavenderblush"] -------------------------------------------------------------------------------- /packages/docs/site/static/font/NobotoFlex/Variable.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/NobotoFlex/Variable.woff2 -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenDyslexic/Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenDyslexic/Regular.otf -------------------------------------------------------------------------------- /packages/components/time_region_value/README.md: -------------------------------------------------------------------------------- 1 | # `time_region_value` 2 | 3 | Svelte components to be used as SvelteKit/Sapper routes for the `{time, region, value}` domain. 4 | -------------------------------------------------------------------------------- /packages/components/trends/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/trends` v0.1.0 2 | 3 | - added `PercentilesTrends.svelte` 4 | - added `StreamGraph.svelte` 5 | - added `Trends.svelte` 6 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Bluetooth.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Disc.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Thermometer.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/X.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/OpenDyslexic/BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/OpenDyslexic/BoldItalic.otf -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Clock.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Facebook.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MessageSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Plus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/binsFill.js: -------------------------------------------------------------------------------- 1 | export default ["indigo","lightcyan","darkcyan","honeydew","skyblue","plum","burlywood","limegreen","darkorange"]; 2 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/numerical-[numerical-boolean].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | numerical: Number | String | Date | Boolean 4 | 5 | - isGT 6 | - isGTE 7 | - isLT 8 | - isLTE 9 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Code.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MinusCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Power.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Search.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/StopCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowDownLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowUpLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowUpRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerDownLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerLeftUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerRightUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerUpLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerUpRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Crop.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Folder.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MousePointer.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Pause.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PieChart.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PlayCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Send.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/SkipBack.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/SkipForward.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Slash.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Terminal.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/User.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/Archivo/VariableFont_wdth,wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/Archivo/VariableFont_wdth,wght.ttf -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/1995-1999.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/1995-1999.xls -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/1999-2003.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/1999-2003.xls -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/2003-2006.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/2003-2006.xls -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/2006-2010.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/2006-2010.xls -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/NUTS2021.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/NUTS2021.xlsx -------------------------------------------------------------------------------- /packages/tools/dom/test_assets/02_expected.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | [Object object] 6 | 7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /packages/tools/geo/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './modules/geojson.js'; 2 | export {default as pruneTopology} from './modules/pruneTopology.js'; 3 | export * from './modules/topojson.js'; 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowDownRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronsDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronsLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronsRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ChevronsUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerDownRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerLeftDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CornerRightDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Edit3.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Eye.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Octagon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Rewind.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/RotateCcw.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Underline.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/sensors/index.js: -------------------------------------------------------------------------------- 1 | export {_screen, default as ScreenSensor} from './screen/ScreenSensor.svelte'; 2 | export {default as StyleSensor} from './style/StyleSensor.svelte'; 3 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-array.md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - flatten 4 | - init 5 | - reverse 6 | - shallowFlatten 7 | - tail 8 | - transpose 9 | - uniques 10 | - zipWithIndex 11 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/itercb[any-boolean]-[iterable-array].md: -------------------------------------------------------------------------------- 1 | # lamb 2 | 3 | - dropLastWhile 4 | - dropWhile 5 | - filterWith 6 | - partitionWith 7 | - takeLastWhile 8 | - takeWhile 9 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AtSign.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Bell.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FastForward.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Lock.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MapPin.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/RotateCw.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Sidebar.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ToggleLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ToggleRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Tv.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Unlock.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/bin/dist/setup.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | DISTRO=data/dist 4 | 5 | rm -rf $DISTRO && \ 6 | git clone --depth 1 git@github.com:nestauk/svizzle_atlas_distro.git $DISTRO 7 | -------------------------------------------------------------------------------- /packages/components/choropleth/src/shared.js: -------------------------------------------------------------------------------- 1 | export const defaultGeometry = { 2 | bottom: 10, 3 | left: 10, 4 | right: 10, 5 | top: 10, 6 | }; 7 | 8 | export * as projections from './projections.js'; 9 | -------------------------------------------------------------------------------- /packages/components/histogram/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as HistogramG} from './HistogramG.svelte'; 2 | export {default as HistogramDiv} from './HistogramDiv.svelte'; 3 | export * from './utils.js'; 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Award.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Battery.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Bold.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CheckCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Columns.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CreditCard.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MinusSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Music.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Tablet.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/TrendingUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Triangle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Video.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Volume1.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Wind.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/font/Archivo/Italic-VariableFont_wdth,wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/docs/site/static/font/Archivo/Italic-VariableFont_wdth,wght.ttf -------------------------------------------------------------------------------- /packages/tools/geometry/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './2DNetwork.js'; 2 | export * from './2DPoint.js'; 3 | export * from './2DVector.js'; 4 | export * from './3DPoint.js'; 5 | export * from './angle.js'; 6 | -------------------------------------------------------------------------------- /bin/rename_doc.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # %5B -> [ 4 | # %5D -> ] 5 | for f in packages/docs/site/static/jsDocBuild/*.html; 6 | do mv "$f" $(echo "$f" | sed 's/%5B/\[/g' | sed 's/%5D/\]/g'); 7 | done 8 | -------------------------------------------------------------------------------- /packages/components/choropleth/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as ChoroplethG} from './ChoroplethG.svelte'; 2 | export {default as ChoroplethDiv} from './ChoroplethDiv.svelte'; 3 | export * from './shared.js'; 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/DollarSign.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Flag.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Home.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Maximize.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Minimize.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Rss.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Smartphone.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/TrendingDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/NUTS2013-NUTS2016.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/NUTS2013-NUTS2016.xlsx -------------------------------------------------------------------------------- /packages/tools/atlas/src/bin/base/world/run.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | echo ' 4 | ==== world ==== 5 | ' && 6 | 7 | node src/bin/base/world/01_world_110m_iso_a2_topojson.js && 8 | 9 | echo 10 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/utils/index.js: -------------------------------------------------------------------------------- 1 | export * from './d3.js'; 2 | export * from './domain.js'; 3 | export * from './format.js'; 4 | export * from './style.js'; 5 | export * from './url.js'; 6 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/BookOpen.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Divide.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/File.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/GitMerge.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Star.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Target.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/source/NUTS 2010 - NUTS 2013.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mindrones/nestauk-svizzle/dev/packages/tools/atlas/data/base/NUTS/0/history/source/NUTS 2010 - NUTS 2013.xls -------------------------------------------------------------------------------- /packages/components/mapbox/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as CustomControl} from './CustomControl.svelte'; 2 | export {default as Mapbox} from './Mapbox.svelte'; 3 | export {default as SvgLayer} from './SvgLayer.svelte'; 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Briefcase.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CheckSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CloudLightning.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Compass.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MoreHorizontal.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MoreVertical.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Table.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/bin/base/runAll.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # path are relative to the root of the package, where we run `runAll` from 4 | 5 | src/bin/base/NUTS/run.sh && 6 | src/bin/base/world/run.sh 7 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Anchor.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Book.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Info.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Italic.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Menu.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/XCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/BarChart.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/BarChart2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Copy.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Key.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Link2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Mail.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Paperclip.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PauseCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Percent.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PlusCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ThumbsUp.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Type.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ZoomOut.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/utils/url.js: -------------------------------------------------------------------------------- 1 | const absoluteURLRegex = /^(?:[a-z+]+:)?\/\//iu; 2 | 3 | export const getURL = href => new URL( 4 | href, 5 | absoluteURLRegex.test(href) 6 | ? undefined 7 | : location.origin 8 | ); 9 | -------------------------------------------------------------------------------- /packages/tools/dev/README.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/dev` 2 | 3 | Svizzle Dev contains development helpers. 4 | 5 | https://nestauk.github.io/svizzle 6 | 7 | ### Installation 8 | 9 | *npm* 10 | 11 | `npm i -S @svizzle/dev` 12 | -------------------------------------------------------------------------------- /packages/tools/dev/src/index.js: -------------------------------------------------------------------------------- 1 | export * from './log/array-[any-any].js'; 2 | export * from './log/iterable-array.js'; 3 | export * from './log/string-[any-any].js'; 4 | export * from './common.js'; 5 | export * from './test.js'; 6 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/utils/d3.js: -------------------------------------------------------------------------------- 1 | import {isNotNil} from '@svizzle/utils'; 2 | 3 | // extent([]) -> [undefined, undefined] 4 | export const isValidExtent = ([a, b]) => isNotNil(a) && isNotNil(b) && a !== b; 5 | -------------------------------------------------------------------------------- /packages/components/trends/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as PercentilesTrends} from './PercentilesTrends.svelte'; 2 | export {default as StreamGraph} from './StreamGraph.svelte'; 3 | export {default as Trends} from './Trends.svelte'; 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlertCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowDownCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowLeftCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowRightCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ArrowUpCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Camera.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/GitCommit.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Hexagon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Pocket.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Tag.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Trash.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Voicemail.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Volume2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Airplay.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Archive.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FolderMinus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/HelpCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Layout.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Share.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/UserMinus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Edit.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Image.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Layers.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/LogIn.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/LogOut.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Speaker.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Upload.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/UserCheck.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/VolumeX.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/XSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/file/README.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/file` 2 | 3 | Svizzle File contains file related helpers for node. 4 | 5 | https://nestauk.github.io/svizzle 6 | 7 | ### Installation 8 | 9 | *npm* 10 | 11 | `npm i -S @svizzle/file` 12 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Clipboard.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CloudOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Database.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Delete.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Download.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Feather.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Heart.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Link.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Map.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Monitor.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PlusSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ShoppingBag.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ThumbsDown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Trello.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/GitBranch.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/VideoOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/utils/style.js: -------------------------------------------------------------------------------- 1 | import {getTruthyValuesKeys, joinWithBlank} from '@svizzle/utils'; 2 | import * as _ from 'lamb'; 3 | 4 | export const makeClasses = _.pipe([getTruthyValuesKeys, joinWithBlank]); // TBD to /dom? 5 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CameraOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ShoppingCart.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Cast.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/DownloadCloud.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ExternalLink.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FileMinus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/GitPullRequest.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Hash.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Meh.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Radio.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Smile.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Tool.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Frown.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PenTool.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Repeat.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Save.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlignCenter.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlignJustify.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlignLeft.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlignRight.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/DivideCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Headphones.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Maximize2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/RefreshCcw.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/RefreshCw.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ZoomIn.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FolderPlus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Grid.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Instagram.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Linkedin.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Minimize2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ShieldOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/UserX.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Users.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Wifi.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | .DS_Store 3 | /node_modules 4 | packages/docs/site/static/jsDocBuild 5 | packages/**/package-lock.json 6 | packages/components/**/node_modules 7 | packages/docs/**/node_modules 8 | packages/tools/**/node_modules 9 | packages/tools/utils/_/ 10 | *.todo.js 11 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Globe.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Inbox.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Printer.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Twitter.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/UserPlus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/XOctagon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/lib/components/Elements.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {#each elements as {tag, content}} 6 | {#if tag === 'p'} 7 |

{content}

8 | {:else if tag === 'pre'} 9 |
{content}
10 | {/if} 11 | {/each} 12 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Calendar.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/a11y/index.js: -------------------------------------------------------------------------------- 1 | export {default as A11yMenu} from './menu/A11yMenu.svelte'; 2 | export {default as A11yMenuDriver} from './menu/A11yMenuDriver.svelte'; 3 | export {default as ColorCorrection} from './menu/ColorCorrection.svelte'; 4 | export * from './menu/settings.js'; 5 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlertOctagon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/DivideSquare.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Mic.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Truck.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/binsFill_2.js: -------------------------------------------------------------------------------- 1 | export default ["palegreen","darkgreen","lime","mediumturquoise","grey","aquamarine","papayawhip","peachpuff","hotpink","purple","red","mediumvioletred","lightsalmon","silver","darkblue","mediumorchid","brown","darkslateblue"]; 2 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/selectedYear.js: -------------------------------------------------------------------------------- 1 | import {writable} from 'svelte/store'; 2 | 3 | export const _selectedYear = writable(); 4 | export const setSelectedYear = year => _selectedYear.set(Number(year)); 5 | export const resetSelectedYear = () => _selectedYear.set(); 6 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/AlertTriangle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CloudRain.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Command.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Dribbble.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/BatteryCharging.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/MessageCircle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/request/src/fetchManager/rxUtils.js: -------------------------------------------------------------------------------- 1 | import {combineLatestWith, debounceTime, map, share} from 'rxjs/operators'; 2 | 3 | export const derive = ([first, ...rest], fn) => 4 | first.pipe( 5 | combineLatestWith(...rest), 6 | debounceTime(0), 7 | map(fn), 8 | share() 9 | ); 10 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FilePlus.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Server.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/UploadCloud.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/ZapOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 2 | Svizzle Tools 3 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Crosshair.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Scissors.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Share2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Shuffle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/svizzle/FormatClear.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Chrome.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Coffee.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Trash2.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/sensors/screen/WindowBinder.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /packages/tools/dom/README.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/dom` 2 | 3 | Svizzle DOM contains DOM related helpers. 4 | 5 | https://nestauk.github.io/svizzle 6 | 7 | ### Installation 8 | 9 | *npm* 10 | 11 | `npm i -S @svizzle/dom` 12 | 13 | *browser* 14 | 15 | ``` 16 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/FileText.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/request/README.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/request` 2 | 3 | Svizzle Request contains helpers for fetching data. 4 | 5 | https://nestauk.github.io/svizzle 6 | 7 | ### Installation 8 | 9 | *npm* 10 | 11 | `npm i -S @svizzle/request` 12 | 13 | *browser* 14 | 15 | ``` 16 | 16 | 17 | {#if doRender || id === $_viewId} 18 | 19 | {/if} 20 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/regionSettings.js: -------------------------------------------------------------------------------- 1 | import * as _ from 'lamb'; 2 | import {derived, writable} from 'svelte/store'; 3 | 4 | export const _regionSettings = writable({}); 5 | 6 | /* levels */ 7 | 8 | export const _availableLevels = derived(_regionSettings, _.getKey('levels')); 9 | export const _firstAvailableLevel = derived(_availableLevels, _.getAt(0)); 10 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Github.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/bin/base/NUTS/run.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | echo ' 4 | ==== NUTS ==== 5 | ' && 6 | 7 | node src/bin/base/NUTS/0-1_getBaseShapes.js && 8 | node src/bin/base/NUTS/0-1_getMetadata.js && 9 | node src/bin/base/NUTS/01-2_reconcileIds.js && 10 | node src/bin/base/NUTS/12-3_augmentShapes.js && 11 | node src/bin/base/NUTS/13-4_getCountriesTopojson.js && 12 | 13 | echo 14 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "command": { 3 | "version": { 4 | "allowBranch": "dev" 5 | }, 6 | "publish": { 7 | "ignoreChanges": [ 8 | "packages/docs/site/**", 9 | "*.md" 10 | ] 11 | } 12 | }, 13 | "ignoreChanges": [ 14 | "packages/docs/**", 15 | "*.md" 16 | ], 17 | "packages": [ 18 | "packages/**" 19 | ], 20 | "version": "independent" 21 | } 22 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/utils/url.js: -------------------------------------------------------------------------------- 1 | import {isClientSide} from '@svizzle/ui'; 2 | 3 | export const makeURL = (base, id, year) => { 4 | let url = year 5 | ? `${base}/${id}/${year}` 6 | : `${base}/${id}`; 7 | 8 | if (isClientSide) { 9 | const {protocol, host} = location; 10 | 11 | url = new URL(url, `${protocol}//${host}`).toString(); 12 | } 13 | 14 | return url; 15 | } 16 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Figma.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CloudDrizzle.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/trends/index.js: -------------------------------------------------------------------------------- 1 | import {config as percentilesTrends} from './PercentilesTrends.js'; 2 | import {config as streamGraph} from './StreamGraph.js'; 3 | import {config as trends} from './Trends.js'; 4 | 5 | import {examplesFormatter4} from '../utils.js'; 6 | 7 | export default examplesFormatter4([ 8 | ...percentilesTrends, 9 | ...streamGraph, 10 | ...trends, 11 | ]); 12 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-undefined.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/any-undefined 3 | */ 4 | 5 | /** 6 | * A function that does nothing 7 | * 8 | * @function 9 | * @arg {*} any 10 | * @return {undefined} - Any -> Undefined 11 | * 12 | * @example 13 | > noop() 14 | undefined 15 | * 16 | * @since v0.14.0 17 | */ 18 | // eslint-disable-next-line no-empty-function 19 | export const noop = () => {}; 20 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Aperture.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/WifiOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Youtube.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/index.js: -------------------------------------------------------------------------------- 1 | export {default as barchart} from './barchart.js'; 2 | export {default as choropleth} from './choropleth.js'; 3 | export {default as hierarchy} from './hierarchy.js'; 4 | export {default as histogram} from './histogram.js'; 5 | export {default as legend} from './legend.js'; 6 | export {default as trends} from './trends/index.js'; 7 | export {default as ui} from './ui/index.js'; 8 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/index.js: -------------------------------------------------------------------------------- 1 | export {default as IdIndex} from './routes/[id]/index.svelte'; 2 | export {default as IdYear} from './routes/[id]/[year].svelte'; 3 | export {default as Layout} from './routes/_layout.svelte'; 4 | export {default as Index} from './routes/index.svelte'; 5 | export {default as types} from './lib/data/types.js'; 6 | export * from './lib/stores/index.js'; 7 | export * from './lib/utils/index.js'; 8 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/CloudSnow.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/LifeBuoy.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/geometry/src/3DPoint.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {makePosition3D} from './3DPoint.js'; 4 | 5 | describe('3DPoint', function () { 6 | describe('makePosition3D', function () { 7 | it('should create a point object from an array', function () { 8 | assert.deepStrictEqual( 9 | makePosition3D([1, 2, 3]), 10 | {x: 1, y: 2, z: 3} 11 | ); 12 | }); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneCall.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/svizzle/A11yPerson.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/lib/nutsUtils.js: -------------------------------------------------------------------------------- 1 | import {makeFilterTopoBy} from '@svizzle/geo'; 2 | import * as _ from 'lamb'; 3 | 4 | export const getNutsName = _.adapter([ 5 | _.casus(_.hasKey('NAME_LATN'), _.getKey('NAME_LATN')), 6 | _.casus(_.hasKey('NUTS_NAME'), _.getKey('NUTS_NAME')), 7 | _.always('Unknown'), 8 | ]); 9 | 10 | export const makeFilterTopojsonByNutsId = makeFilterTopoBy({ 11 | objKey: 'NUTS', 12 | propKey: 'NUTS_ID', 13 | }); 14 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Film.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Sunrise.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Sunset.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array_proto-string.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {join} from './array_proto-string.js'; 4 | 5 | const arr = [0, 1, 2]; 6 | 7 | describe('(prototype) Array -> String', function () { 8 | describe('join', function () { 9 | it('should join an array with commas (default behaviour)', function () { 10 | assert.deepStrictEqual(join(arr), '0,1,2'); 11 | }); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneOff.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background_color": "#ffffff", 3 | "theme_color": "#333333", 4 | "name": "Svizzle", 5 | "short_name": "Svizzle", 6 | "display": "minimal-ui", 7 | "start_url": "/", 8 | "icons": [ 9 | { 10 | "src": "logo-192.png", 11 | "sizes": "192x192", 12 | "type": "image/png" 13 | }, 14 | { 15 | "src": "logo-512.png", 16 | "sizes": "512x512", 17 | "type": "image/png" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /packages/components/ui/src/utils/env.js: -------------------------------------------------------------------------------- 1 | import Bowser from 'bowser'; 2 | 3 | export const isServerSide = typeof window === 'undefined'; 4 | 5 | export const isClientSide = !isServerSide; 6 | 7 | export const PLATFORM = isClientSide 8 | ? {...Bowser.parse(window.navigator.userAgent)} 9 | : null; 10 | 11 | export const isPlatformIn = (oses, browsers) => isClientSide 12 | && oses.includes(PLATFORM?.os.name) 13 | && browsers.includes(PLATFORM?.browser.name); 14 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Loader.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneMissed.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Sliders.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneForwarded.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneIncoming.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/PhoneOutgoing.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/.eslintrc.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - plugin:svelte/recommended 3 | overrides: 4 | - 5 | files: 6 | - '**/*.svelte' 7 | parser: svelte-eslint-parser 8 | - 9 | files: 10 | - '**/*.spec.js' 11 | rules: 12 | no-invalid-this: 'off' 13 | no-new: 'off' 14 | rules: 15 | brace-style: 'off' 16 | no-invalid-this: 'off' 17 | no-process-env: 'off' 18 | no-tabs: 'off' 19 | unused-export-let: 'off' # `export let prop` in components 20 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-string.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/any-string 3 | */ 4 | 5 | /** 6 | * Return a string representation of the input with indentation = 2. 7 | * 8 | * @function 9 | * @arg {*} any 10 | * @return {string} 11 | * @example 12 | > stringify([{a: 1}, {a: 2}]) 13 | [ 14 | { 15 | "a": 1 16 | }, 17 | { 18 | "a": 2 19 | } 20 | ] 21 | * 22 | * 23 | * @since 0.1.0 24 | */ 25 | export const stringify = x => JSON.stringify(x, null, 2); 26 | -------------------------------------------------------------------------------- /packages/components/README.md: -------------------------------------------------------------------------------- 1 | # Guidelines 2 | 3 | ## Font related CSS properties for accessibility 4 | 5 | In Svizzle components we don't define font families nor absolute font sizes 6 | because we prefer to let `A11yMenuDriver` to manage those. 7 | 8 | Font sizes in CSS should be defined in `em` units because we're adopting the 9 | convention of setting the main font size in the root element (`html`) and 10 | adjusting the font size in the `body` element for purposes of accessibility. 11 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string_proto-array.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {split} from './string_proto-array.js'; 4 | 5 | describe('(prototype) String -> Array', function () { 6 | describe('split', function () { 7 | it('should return a function that splits the input string with the separator string', function () { 8 | const array = split('a-b-c', '-'); 9 | assert.deepStrictEqual(array, ['a', 'b', 'c']); 10 | }); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/regexp-boolean.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns true if the provided RegExp is empty 3 | * @arg {RegExp} regexp 4 | * @return {boolean} - true if RegExp is empty 5 | */ 6 | export const isRegexpEmpty = regexp => regexp.source === '(?:)'; 7 | 8 | /** 9 | * Returns true if the provided RegExp is not empty 10 | * @arg {RegExp} regexp 11 | * @return {boolean} - true if RegExp is not empty 12 | */ 13 | export const isRegexpNotEmpty = regexp => regexp.source !== '(?:)'; 14 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Codesandbox.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/docs/site/src/server.js: -------------------------------------------------------------------------------- 1 | import compression from 'compression'; 2 | import polka from 'polka'; 3 | import sirv from 'sirv'; 4 | 5 | import * as sapper from '@sapper/server'; 6 | 7 | const {PORT, NODE_ENV} = process.env; 8 | const dev = NODE_ENV === 'development'; 9 | 10 | polka() 11 | .use( 12 | 'svizzle', 13 | compression({threshold: 0}), 14 | sirv('static', {dev}), 15 | sapper.middleware() 16 | ) 17 | .listen(PORT, err => { 18 | if (err) { 19 | console.log('error', err) 20 | } 21 | }); 22 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-any.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/string-any 3 | */ 4 | 5 | // TODO test, document 6 | export const exportedJsObjToAny = jsStr => { 7 | let jsonStr = jsStr; 8 | 9 | if (jsonStr.startsWith('export default ')) { 10 | jsonStr = jsStr.slice(15); 11 | } 12 | if (jsonStr.endsWith('\n')) { 13 | jsonStr = jsonStr.slice(0, -1); 14 | } 15 | if (jsonStr.endsWith(';')) { 16 | jsonStr = jsonStr.slice(0, -1); 17 | } 18 | 19 | return JSON.parse(jsonStr); 20 | } 21 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Sun.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/ui/src/ResponsiveFlex.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | 9 | 24 | -------------------------------------------------------------------------------- /packages/components/ui/src/icons/feather/Cpu.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /packages/components/histogram/README.md: -------------------------------------------------------------------------------- 1 | # Histogram 2 | 3 | Histogram components and utilities. 4 | 5 | The `HistogramG` component can be used within an SVG element (its main element being a `g`). 6 | 7 | The `HistogramDiv` component can be used within an HTML element (its main element being a `div`) and has the same props of `HistogramG` excluding `width` and `height` and with the addition of `headerHeight`, `padding` and `title`. 8 | 9 | [Utilities](packages/components/histogram/src/utils.js) can be useful when binning data. 10 | -------------------------------------------------------------------------------- /packages/components/ui/src/actions/resizeObserver.js: -------------------------------------------------------------------------------- 1 | import {writable} from 'svelte/store'; 2 | 3 | export const setupResizeObserver = () => { 4 | const _writable = writable({blockSize: 0, inlineSize: 0}); 5 | 6 | function resizeObserver (node, type = 'borderBoxSize') { 7 | const callback = entries => _writable.set(entries[0][type][0]); 8 | const observer = new ResizeObserver(callback); 9 | observer.observe(node); 10 | 11 | return () => observer.disconnect(); 12 | } 13 | 14 | return {_writable, resizeObserver} 15 | } 16 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_utils.js: -------------------------------------------------------------------------------- 1 | import { 2 | indexValuesWith, 3 | pluckKeys, 4 | objectToKeyValueArray 5 | } from '@svizzle/utils'; 6 | import * as _ from 'lamb'; 7 | 8 | import * as examples from './_examples/index.js'; 9 | 10 | const makeLookup = indexValuesWith(_.getKey('slug')); 11 | export const lookup = makeLookup(examples); 12 | 13 | const makeSidebar = _.pipe([ 14 | _.mapValuesWith(pluckKeys(['slug', 'title'])), 15 | objectToKeyValueArray, 16 | ]); 17 | export const sidebar = makeSidebar(examples); 18 | -------------------------------------------------------------------------------- /packages/tools/geometry/src/3DPoint.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/geometry/3D 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Creates a position object from an array of 3 numbers 9 | * 10 | * @function 11 | * @arg {array} pointArray - An array of 3 numbers 12 | * @return {object} - An object with {x, y, z} coordinates. 13 | * 14 | * @example 15 | > makePosition3D([1, 2, 3]) 16 | {x: 1, y: 2, z: 3} 17 | * 18 | * @since 0.1.0 19 | */ 20 | export const makePosition3D = _.partial(_.make, [['x', 'y', 'z'], _.__]); 21 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-number.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/string-number 3 | */ 4 | 5 | /** 6 | * Return the length of the end of line, if any. 7 | * 8 | * @function 9 | * @arg {string} 10 | * @return {number} 11 | * 12 | * @example 13 | > getEndOfLineLength('hello') 14 | 0 15 | > getEndOfLineLength('hello\n') 16 | 1 17 | > getEndOfLineLength('hello\r\n') 18 | 2 19 | * 20 | * @since 0.9.0 21 | */ 22 | export const getEndOfLineLength = s => 23 | (/\r\n$/u).test(s) ? 2 : (/\n$/u).test(s) ? 1 : 0; 24 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/index.json.js: -------------------------------------------------------------------------------- 1 | export function get (req, res) { 2 | res.writeHead(200, { 3 | 'Content-Type': 'application/json' 4 | }); 5 | 6 | res.end(JSON.stringify([ 7 | {name: 'barchart', slug: 'BarchartVDiv'}, 8 | {name: 'choropleth', slug: 'ChoroplethG'}, 9 | {name: 'hierarchy', slug: 'Hierarchy'}, 10 | {name: 'histogram', slug: 'HistogramG'}, 11 | {name: 'legend', slug: 'ColorBinsG'}, 12 | {name: 'trends', slug: 'Trends'}, 13 | {name: 'ui', slug: 'ui-AlphabetPicker'}, 14 | ])); 15 | } 16 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/index.svelte: -------------------------------------------------------------------------------- 1 | 2 | Svizzle Compounds 3 | 4 | 5 |

Compounds

6 | 7 | 18 | 19 | 20 | 26 | -------------------------------------------------------------------------------- /packages/components/mapbox/src/CustomControl.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 | 24 |
25 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array_proto-boolean.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {includes} from './array_proto-boolean.js'; 4 | 5 | describe('(prototype) Array -> (Any -> Boolean)', function () { 6 | describe('includes', function () { 7 | it('return an function expecting a value and returning true if it is included in the provided array', function () { 8 | assert.deepStrictEqual(includes([0, 1, 2], 2), true); 9 | assert.deepStrictEqual(includes([0, 1, 2], 3), false); 10 | }); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_components.js: -------------------------------------------------------------------------------- 1 | import * as barchart from '@svizzle/barchart'; 2 | import * as choropleth from '@svizzle/choropleth'; 3 | import * as hierarchy from '@svizzle/hierarchy'; 4 | import * as histogram from '@svizzle/histogram'; 5 | import * as legend from '@svizzle/legend'; 6 | import * as trends from '@svizzle/trends'; 7 | import * as ui from '@svizzle/ui'; 8 | 9 | export default { 10 | ...barchart, 11 | ...choropleth, 12 | ...hierarchy, 13 | ...histogram, 14 | ...legend, 15 | ...trends, 16 | ...ui, 17 | }; 18 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/trends.js: -------------------------------------------------------------------------------- 1 | import {objectToKeyValueArray} from '@svizzle/utils'; 2 | import * as _ from 'lamb'; 3 | import {derived} from 'svelte/store'; 4 | 5 | // lib/utils 6 | import {sortAscByYear} from '../utils/domain.js'; 7 | 8 | // lib/stores 9 | import {_selectionData} from './indicator.js'; 10 | 11 | const makeTrends = _.pipe([ 12 | _.groupBy(_.getPath('region.id')), 13 | _.mapValuesWith(sortAscByYear), 14 | objectToKeyValueArray 15 | ]); 16 | 17 | export const _trends = derived(_selectionData, makeTrends); 18 | -------------------------------------------------------------------------------- /packages/docs/site/src/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sapper.base% 8 | 9 | 10 | 11 | %sapper.styles% 12 | %sapper.head% 13 | 14 | 15 |
%sapper.html%
16 | %sapper.scripts% 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[number-number].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {roundTo} from './number-[number-number].js'; 4 | 5 | describe('Number -> (Number -> Number)', function () { 6 | describe('roundTo', function () { 7 | it('should return a function that rounds the input number to the provided number of digits', function () { 8 | const roundTo2 = roundTo(2) 9 | assert.deepStrictEqual(roundTo2(2.41285), 2.41); 10 | assert.deepStrictEqual(roundTo2(2.41785), 2.42); 11 | }); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/time_region_value/[id]/index.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 18 | 19 | 24 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/object-[string-boolean].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {isKeyOf} from './object-[string-boolean].js'; 4 | 5 | describe('Object -> (String -> Boolean)', function () { 6 | describe('isKeyOf', function () { 7 | it('should return a function that checks if the expected string is a key of the provided object', function () { 8 | const isKeyOfObj = isKeyOf({a: 1, b: 2}); 9 | assert.strictEqual(isKeyOfObj('a'), true); 10 | assert.strictEqual(isKeyOfObj('c'), false); 11 | }); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/components/mapbox/src/util.js: -------------------------------------------------------------------------------- 1 | export class CustomControl { 2 | constructor (node) { 3 | this.elementNode = node; 4 | } 5 | 6 | onAdd (map) { 7 | this._map = map; 8 | this._container = document.createElement('div'); 9 | this._container.className = 'mapboxgl-ctrl mapboxgl-ctrl-group'; 10 | this._container.appendChild(this.elementNode); 11 | 12 | return this._container; 13 | } 14 | 15 | onRemove () { 16 | this._container.remove(); 17 | this.map = undefined; 18 | } 19 | } 20 | 21 | export const ws_en_to_wsen = ([[w, s], [e, n]]) => [w, s, e, n]; 22 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/time_region_value/_data/stores.js: -------------------------------------------------------------------------------- 1 | import {getYearExtent, makeIndicatorsLookup} from '@svizzle/time_region_value'; 2 | import {inclusiveRange} from '@svizzle/utils'; 3 | import {derived, readable} from 'svelte/store'; 4 | 5 | import {default as groups} from './indicatorsGroups.js'; 6 | 7 | export const lookup = makeIndicatorsLookup(groups); 8 | 9 | /* data */ 10 | 11 | export const _groups = readable(groups); 12 | export const _yearExtent = derived(_groups, getYearExtent); 13 | export const _yearRange = derived(_yearExtent, inclusiveRange); 14 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[number-number].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {makePolynomial} from './array-[number-number].js'; 4 | 5 | describe('Array -> (Number -> Number)', function () { 6 | describe('makePolynomial', function () { 7 | it('should return a function that computes the polynomial of the input number using the provided cofficients', function () { 8 | const poly = makePolynomial([0,2,0,4]); 9 | 10 | assert.deepStrictEqual(poly(2), 36); 11 | assert.deepStrictEqual(poly(5), 510); 12 | }); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-string.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {stringify} from './any-string.js'; 4 | 5 | describe('Any -> String', function () { 6 | describe('stringify', function () { 7 | it('should return a string representation of the input with indentation = 2', function () { 8 | assert.deepStrictEqual(stringify([]), '[]'); 9 | assert.deepStrictEqual(stringify([1]), '[\n 1\n]'); 10 | assert.deepStrictEqual(stringify({a: 1}), '{\n "a": 1\n}'); 11 | }); 12 | }); 13 | // TODO very minimal testing, improve 14 | }); 15 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/mapbox/empty.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 15 |
16 | 17 | 23 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-undefined.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {noop} from './any-undefined.js'; 4 | 5 | describe('Any -> Undefined', function () { 6 | describe('noop', function () { 7 | it('should do nothing and return `undefined`', function () { 8 | assert.deepStrictEqual(noop(), undefined); 9 | assert.deepStrictEqual(noop(1), undefined); 10 | assert.deepStrictEqual(noop('d'), undefined); 11 | assert.deepStrictEqual(noop([1, 2]), undefined); 12 | assert.deepStrictEqual(noop({a: 1}), undefined); 13 | }); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /packages/components/ui/src/viewports/ViewsXor.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |
22 | 23 |
24 | 25 | 31 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/buffer-any.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {jsonBufferToAny} from './buffer-any.js'; 4 | 5 | describe('Stream-Any', function () { 6 | describe('jsonBufferToAny', function () { 7 | it('should convert a buffer representing a json object into a javascript object', function () { 8 | const encoder = new TextEncoder(); 9 | const buffer = encoder.encode('{"a": 1}'); 10 | const actual = jsonBufferToAny(buffer); 11 | const expected = {a: 1}; 12 | 13 | assert.deepStrictEqual(actual, expected); 14 | }); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/components/ui/src/MessageView.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 22 | {text} 23 | 24 | -------------------------------------------------------------------------------- /packages/components/histogram/doc/brushing.dot: -------------------------------------------------------------------------------- 1 | digraph G { 2 | /* 3 | compound=true; 4 | */ 5 | nodesep=0.9; 6 | overlap=false; 7 | rankdir=LR; 8 | splines=true; 9 | 10 | Off -> Pressed [label="mousedown \n store origin"]; 11 | Pressed -> Off [label="mouseup \n reset brush"]; 12 | Pressed -> Pressed [label="mousemove \n update delta"]; 13 | Pressed -> Brushing [label="mousemove 'enough' \n start = current bin \n event: 'brushstart'"]; 14 | Brushing -> Off [label="mouseup \n reset brush \n event: 'brushend'"]; 15 | Brushing -> Brushing [label="mouseenter \n end = entered bin \n event: 'brushed'"]; 16 | } 17 | -------------------------------------------------------------------------------- /packages/components/legend/doc/brushing.dot: -------------------------------------------------------------------------------- 1 | digraph G { 2 | /* 3 | compound=true; 4 | */ 5 | nodesep=0.9; 6 | overlap=false; 7 | rankdir=LR; 8 | splines=true; 9 | 10 | Off -> Pressed [label="mousedown \n store origin"]; 11 | Pressed -> Off [label="mouseup \n reset brush"]; 12 | Pressed -> Pressed [label="mousemove \n update delta"]; 13 | Pressed -> Brushing [label="mousemove 'enough' \n start = current bin \n event: 'brushstart'"]; 14 | Brushing -> Off [label="mouseup \n reset brush \n event: 'brushend'"]; 15 | Brushing -> Brushing [label="mouseenter \n end = entered bin \n event: 'brushed'"]; 16 | } 17 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/time_region_value/[id]/[year].svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | 20 | 26 | -------------------------------------------------------------------------------- /packages/components/mapbox/src/MapboxglUnsupported.svelte: -------------------------------------------------------------------------------- 1 |
2 |

Your browser does not support Mapbox GL and therefore will not display correctly.

3 |

Please use latest Firefox or Chrome, Safari 9+ or Edge 13+.

4 |
5 | 6 | 22 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/compounds/time_region_value/_layout.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | @svizzle/time_region_value 14 | 15 | 16 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /packages/components/ui/src/drivers/fonts/FontsLoader.svelte: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/iterable-number.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/iterable-number 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Get the length of the iterable 9 | * 10 | * @function 11 | * @arg {iterable} iterable 12 | * @return {number} 13 | * 14 | * @example 15 | > getLength('a') 16 | 1 17 | > getLength('two') 18 | 3 19 | > getLength([10]) 20 | 1 21 | > getLength([3, 7]) 22 | 2 23 | > function func () { 24 | return getLength(arguments); 25 | } 26 | > func() 27 | 0 28 | > func() 29 | 0 30 | > func('a', 'b') 31 | 2 32 | * 33 | * @since 0.1.0 34 | */ 35 | export const getLength = _.getKey('length'); 36 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/number-[number-number].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/number-[number-number] 3 | */ 4 | 5 | /** 6 | * Return a function that rounds the input number to the provided number of digits. 7 | * @see https://github.com/d3/d3-path/issues/10#issuecomment-262577521 8 | * 9 | * @function 10 | * @arg {number} precision - Must be an integer 11 | * @return {function} - Number -> Number 12 | * 13 | * @example 14 | > roundTo2 = roundTo(2) 15 | > roundTo2(2.41285) 16 | 2.41 17 | > roundTo2(2.41785) 18 | 2.42 19 | * @since 0.6.0 20 | */ 21 | export const roundTo = precision => x => Number(x.toFixed(precision)); 22 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/index.js: -------------------------------------------------------------------------------- 1 | export {toggleColorScheme} from './colors.js'; 2 | export { 3 | getYearExtent, 4 | makeIndicatorsLookup, 5 | setGroups, 6 | } from './dataset.js'; 7 | export { 8 | hideGeoModal, 9 | hideInfoModal, 10 | toggleGeoModal, 11 | toggleInfoModal, 12 | } from './modals.js'; 13 | export {showView} from './navigation.js'; 14 | export { 15 | deselectAllRoots, 16 | focusRoot, 17 | selectAllRoots, 18 | setCurrentLevel, 19 | toggleRoot, 20 | } from './selectedRegions.js'; 21 | export {setSelectedYear, resetSelectedYear} from './selectedYear.js'; 22 | export {customizeTheme} from './theme.js'; 23 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-regexp.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {regexOf, safeRegexOf} from './string-regexp.js'; 4 | 5 | describe('String -> RegExp', function () { 6 | describe('regexOf', function () { 7 | it('should return a regular expression based on the given string', function () { 8 | assert.deepStrictEqual(regexOf('foo'), /foo/giu); 9 | }); 10 | }); 11 | describe('safeRegexOf', function () { 12 | it('should return a safe regular expression based on the given string', function () { 13 | assert.deepStrictEqual(safeRegexOf('foo+bar'), /foo\+bar/giu); 14 | }); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/components/ui/src/sensors/style/StyleSensor.svelte: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/object-[string-boolean].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/object-[string-boolean] 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return a function that checks if the expected string is a key of the provided object 9 | * 10 | * @function 11 | * @arg {object} object 12 | * @return {function} - String -> Boolean 13 | * 14 | * @example 15 | > isKeyOfObj = isKeyOf({a: 1, b: 2}) 16 | > isKeyOfObj('a') 17 | true 18 | > isKeyOfObj('c') 19 | false 20 | * 21 | * @since 0.7.0 22 | * @see https://ascartabelli.github.io/lamb/module-lamb.html#hasKey 23 | */ 24 | export const isKeyOf = obj => key => _.has(obj, key); 25 | -------------------------------------------------------------------------------- /packages/components/ui/src/drivers/fonts/utils.js: -------------------------------------------------------------------------------- 1 | import {isKeyValue} from '@svizzle/utils'; 2 | import * as _ from 'lamb'; 3 | 4 | export const getFamily = _.getKey('family'); 5 | export const getFamilies = _.mapWith(getFamily); 6 | 7 | export const isFamilyEqualTo = family => isKeyValue(['family', family]); 8 | 9 | export const createFontFaces = ({family, faces}) => faces && faces.map( 10 | ({src, descriptors}) => new FontFace(family, src, descriptors) 11 | ); 12 | 13 | export const loadFontFaces = faces => faces && Promise.all( 14 | faces.map(async face => { 15 | const fontFace = await face.load(); 16 | document.fonts.add(fontFace); 17 | }) 18 | ); 19 | -------------------------------------------------------------------------------- /packages/components/ui/src/drivers/style/StyleDriver.svelte: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/README.md: -------------------------------------------------------------------------------- 1 | # History of NUTS 2 | 3 | Source: https://ec.europa.eu/eurostat/web/nuts/history 4 | 5 | - https://ec.europa.eu/eurostat/documents/345175/629341/1995-1999.xls 6 | - https://ec.europa.eu/eurostat/documents/345175/629341/1999-2003.xls 7 | - https://ec.europa.eu/eurostat/documents/345175/629341/2003-2006.xls 8 | - https://ec.europa.eu/eurostat/documents/345175/629341/2006-2010.xls 9 | - https://ec.europa.eu/eurostat/documents/345175/629341/NUTS+2010+-+NUTS+2013.xls 10 | - https://ec.europa.eu/eurostat/documents/345175/629341/NUTS2013-NUTS2016.xlsx 11 | - https://ec.europa.eu/eurostat/documents/345175/629341/NUTS2021.xlsx 12 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/specs.js: -------------------------------------------------------------------------------- 1 | export default { 2 | world: { 3 | // epsgId: undefined, // TODO 4 | // years: undefined, // TODO 5 | levels: [0], 6 | objectIds: ['countries', 'land'], 7 | properties: ['iso_a2'], 8 | resolutions: ['110m'], 9 | type: 'world', 10 | }, 11 | NUTS: { 12 | epsgId: 4326, 13 | levels: [0, 1, 2, 3], 14 | objectIds: ['NUTS'], 15 | properties: [ 16 | 'NUTS_ID', 17 | 'LEVL_CODE', 18 | 'CNTR_CODE', 19 | 'NUTS_NAME', 20 | 'FID', 21 | ], 22 | resolutions: ['03M', '10M'], 23 | type: 'NUTS', 24 | years: [ 25 | 2003, 26 | 2006, 27 | 2010, 28 | 2013, 29 | 2016, 30 | 2021, 31 | ], 32 | }, 33 | } 34 | -------------------------------------------------------------------------------- /packages/components/ui/src/NoScript.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 35 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/_error.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 29 | 30 | 31 | {status} 32 | 33 | 34 |

{status}

35 | 36 |

{error.message}

37 | 38 | {#if dev && error.stack} 39 |
{error.stack}
40 | {/if} 41 | -------------------------------------------------------------------------------- /packages/tools/request/src/json.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import nock from 'nock'; 4 | import fetch from 'node-fetch'; 5 | 6 | import {requestNdjson} from './json.js'; 7 | 8 | global.fetch = fetch; 9 | 10 | describe('requestNdjson', function() { 11 | const ndjson = '{"a":1}\n{"b":2}\n\n'; 12 | const array = [{a: 1}, {b: 2}]; 13 | 14 | it('should return a request to a ndjson file as a promise', 15 | async function () { 16 | nock('http://this.test') 17 | .get('/ndjson') 18 | .reply(200, ndjson); 19 | 20 | const response = await requestNdjson('http://this.test/ndjson'); 21 | 22 | assert.deepStrictEqual(response, array); 23 | } 24 | ); 25 | }); 26 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[array-object].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {makeKeyed} from './any-[array-object].js'; 4 | 5 | describe('Any -> (Any -> Array)', function () { 6 | describe('toFloatOrIdentity', function () { 7 | it('should return a function expecting an array of keys and returning an object with the provided value as value of those keys', function () { 8 | const makeKeyedEmptyArray = makeKeyed([]); 9 | 10 | assert.deepStrictEqual( 11 | makeKeyedEmptyArray([1, 2]), 12 | {1: [], 2: []} 13 | ); 14 | assert.deepStrictEqual( 15 | makeKeyedEmptyArray(['a', 'b']), 16 | {a: [], b: []} 17 | ); 18 | }); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/utils.js: -------------------------------------------------------------------------------- 1 | import {makeRegexOf, transformValues} from '@svizzle/utils'; 2 | import * as _ from 'lamb'; 3 | 4 | const makeIndentSvelteMarkup = indent => str => 5 | str.trim() 6 | .replace(makeRegexOf('gum')(`^\t{${indent}}`), '') 7 | .replace(/\t/gum, ' '); 8 | 9 | const makeExamplesFormatter = indent => 10 | _.mapWith(transformValues({ 11 | doc: _.mapWith(transformValues({ 12 | content: s => s.trim(), 13 | })), 14 | data: _.mapWith(transformValues({ 15 | usage: makeIndentSvelteMarkup(indent) 16 | })) 17 | })); 18 | 19 | export const examplesFormatter3 = makeExamplesFormatter(3); 20 | export const examplesFormatter4 = makeExamplesFormatter(4); 21 | -------------------------------------------------------------------------------- /packages/tools/request/src/json.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/request/json 3 | */ 4 | 5 | import {ndjsonToArray} from '@svizzle/utils'; 6 | import {text} from 'd3-fetch'; 7 | 8 | /* ndjson */ 9 | 10 | /** 11 | * Return a request to a ndjson file as a promise. 12 | * 13 | * @function 14 | * @arg {string} url - The URL for the request (GET). 15 | * @return {promise} 16 | * 17 | * @example 18 | requestNdjson('ndjson/url') 19 | .then(x => console.log(x)) 20 | .catch(err => console.error(err)); 21 | 22 | async function foo() { 23 | const x = await requestNdjson('ndjson/url'); 24 | // ...; 25 | } 26 | * 27 | * @since 0.1.0 28 | */ 29 | export const requestNdjson = url => text(url).then(ndjsonToArray); 30 | -------------------------------------------------------------------------------- /packages/tools/atlas/data/base/NUTS/0/history/recoded/2016_2021.tsv: -------------------------------------------------------------------------------- 1 | oldId newId 2 | HR041 HR050 3 | HR046 HR061 4 | HR044 HR062 5 | HR045 HR063 6 | HR043 HR064 7 | HR042 HR065 8 | HR047 HR021 9 | HR048 HR022 10 | HR049 HR023 11 | HR04A HR024 12 | HR04B HR025 13 | HR04C HR026 14 | HR04D HR027 15 | HR04E HR028 16 | UKN10 UKN0A 17 | UKN11 UKN0B 18 | UKN12 UKN0C 19 | UKN13 UKN0D 20 | UKN14 UKN0E 21 | UKN15 UKN0F 22 | UKN16 UKN0G 23 | NO011 NO081 24 | NO043 NO0A1 25 | NO053 NO0A3 26 | BE221 BE224 27 | BE222 BE225 28 | BE321 BE32A 29 | BE322 BE32B 30 | BE325 BE32C 31 | BE326 BE32D 32 | EE006 EE009 33 | EE007 EE00A 34 | ITG25 ITG2D 35 | ITG26 ITG2E 36 | ITG27 ITG2F 37 | ITG28 ITG2G 38 | NO05 NO0A 39 | UKK21 UKK24 40 | UKK22 UKK25 41 | -------------------------------------------------------------------------------- /packages/components/time_region_value/src/lib/stores/modals.js: -------------------------------------------------------------------------------- 1 | import {negate, transformValues} from '@svizzle/utils'; 2 | import {writable} from 'svelte/store'; 3 | 4 | // modal utils 5 | 6 | const hidden = {isVisible: false}; 7 | const toggleIsVisible = transformValues({isVisible: negate}); 8 | 9 | /* geo modal */ 10 | 11 | export const _geoModal = writable(hidden); 12 | export const hideGeoModal = () => _geoModal.set(hidden); 13 | export const toggleGeoModal = () => _geoModal.update(toggleIsVisible); 14 | 15 | /* info modal */ 16 | 17 | export const _infoModal = writable(hidden); 18 | export const hideInfoModal = () => _infoModal.set(hidden); 19 | export const toggleInfoModal = () => _infoModal.update(toggleIsVisible); 20 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array_proto-string.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/array_proto-string 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return an string by joining the provided array with the provided separator 9 | * @see 10 | {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join|Array.prototype.join}, 11 | {@link https://ascartabelli.github.io/lamb/module-lamb.html#joinWith|joinWith} 12 | * 13 | * @function 14 | * @arg {array} array 15 | * @arg {string} separator 16 | * @return {string} 17 | * 18 | * @example 19 | > join([0, 1, 2], '-') 20 | '0-1-2' 21 | * 22 | * @since 0.1.0 23 | */ 24 | export const join = _.generic(Array.prototype.join); 25 | -------------------------------------------------------------------------------- /packages/components/ui/src/utils/rx.js: -------------------------------------------------------------------------------- 1 | import {get, readable, writable} from 'svelte/store'; 2 | 3 | export const rxStreamToSvReadable = rxStream => readable( 4 | rxStream.getValue?.(), 5 | set => { 6 | const subscription = rxStream.subscribe(value => set(value)); 7 | 8 | return () => subscription.unsubscribe(); 9 | } 10 | ); 11 | 12 | export const rxStreamToSvWritable = rxStream => { 13 | const store = writable( 14 | rxStream.getValue?.(), 15 | set => { 16 | const subscription = rxStream.subscribe( 17 | value => value !== get(store) && set(value) 18 | ); 19 | 20 | return () => subscription.unsubscribe(); 21 | } 22 | ); 23 | store.subscribe(value => rxStream.next(value)); 24 | 25 | return store; 26 | }; 27 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/any-[array-object].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/any-[array-object] 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return a function expecting an array of keys and returning an object with 9 | * the provided value as value of those keys. 10 | * 11 | * @function 12 | * @arg {*} value 13 | * @return {function} function - Array -> Object 14 | * 15 | * @example 16 | > makeKeyedEmptyArray = makeKeyed([]) 17 | > makeKeyedEmptyArray([1, 2]) 18 | {1: [], 2: []} 19 | > makeKeyedEmptyArray(['a', 'b']) 20 | {a: [], b: []} 21 | * 22 | * @since 0.3.0 23 | */ 24 | export const makeKeyed = value => _.pipe([ 25 | _.collect([_.identity, _.mapWith(_.always(value))]), 26 | _.apply(_.make) 27 | ]); 28 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[any-boolean]-[array-array].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {raiseWith} from './[any-boolean]-[array-array].js'; 4 | 5 | describe('(Any -> Boolean) -> (Array -> Array)', function () { 6 | describe('raiseWith', function () { 7 | it('should return a function expecting an array and returning a new array with all items satisfying the provided predicate in the tail, in the same relative order they were in the input array', function () { 8 | const raiseOdds = raiseWith(x => x % 2 === 1); 9 | let actual = raiseOdds([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 10 | let expected = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]; 11 | 12 | assert.deepStrictEqual(actual, expected); 13 | }); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[string-boolean]-[object-boolean].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import * as _ from 'lamb'; 4 | 5 | import {hasKeyWith} from './[string-boolean]-[object-boolean].js'; 6 | 7 | describe('(String -> Boolean) -> (Object -> Boolean)', function () { 8 | describe('hasKeyWith', function () { 9 | it('should return a function expecting an object and returning `true` if the input object has a key satisfying the provided predicate', function () { 10 | const hasA = hasKeyWith(_.is('a')); 11 | 12 | assert.deepStrictEqual( 13 | hasA({a: 2, b: 4, c: 3}), 14 | true 15 | ); 16 | assert.deepStrictEqual( 17 | hasA({b: 4, c: 3}), 18 | false 19 | ); 20 | }); 21 | }); 22 | }) 23 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[string-string]-[object-object].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {makePrefixed} from './string-[string-string].js'; 4 | import {renameKeysWith} from './[string-string]-[object-object].js'; 5 | 6 | describe('(String -> String) -> (Object -> Object)', function () { 7 | describe('renameKeysWith', function () { 8 | it('should return a function expecting an object and returning a new object with keys renamed with the provided function', function () { 9 | const rename = renameKeysWith(makePrefixed('--')); 10 | 11 | assert.deepStrictEqual( 12 | rename({foo: 1, bar: 2, 'another-var': 3}), 13 | {'--foo': 1, '--bar': 2, '--another-var': 3} 14 | ); 15 | }); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-number.spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {getEndOfLineLength} from './string-number.js'; 4 | 5 | describe('String -> Number', function () { 6 | describe('getEndOfLineLength', function () { 7 | it('should return 0 if the input string has no end of line', function () { 8 | assert.deepStrictEqual(getEndOfLineLength('hello'), 0); 9 | }); 10 | it('should return 1 if the input string has the Unix end of line', function () { 11 | assert.deepStrictEqual(getEndOfLineLength('hello\n'), 1); 12 | }); 13 | it('should return 1 if the input string has the Windows end of line', function () { 14 | assert.deepStrictEqual(getEndOfLineLength('hello\r\n'), 2); 15 | }); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/docs/site/src/routes/components/_examples/bins_value_non_uniform.js: -------------------------------------------------------------------------------- 1 | export default [{ 2 | "range": [0, 10], 3 | "value": 20 4 | }, { 5 | "range": [10, 12], 6 | "value": 2 7 | }, { 8 | "range": [12, 18], 9 | "value": 24 10 | }, { 11 | "range": [18, 20], 12 | "value": 12 13 | }, { 14 | "range": [20, 22], 15 | "value": 2 16 | }, { 17 | "range": [22, 24], 18 | "value": 15 19 | }, { 20 | "range": [24, 56], 21 | "value": 89 22 | }, { 23 | "range": [56, 70], 24 | "value": 24 25 | }, { 26 | "range": [70, 92], 27 | "value": 125 28 | }, { 29 | "range": [92, 99], 30 | "value": 1 31 | }, { 32 | "range": [99, 129], 33 | "value": 23 34 | }, { 35 | "range": [129, 152], 36 | "value": 67 37 | }, { 38 | "range": [152, 160], 39 | "value": 18 40 | }]; 41 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[number-boolean].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/array-[number-boolean] 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return a function expecting a number and returning true if the number is within the provided range. 9 | * Note that the range is inclusive. 10 | * 11 | * @function 12 | * @arg {array} range - Array of two numbers 13 | * @return {function} predicate - Number -> Boolean 14 | * 15 | * @example 16 | > isWithinRange = makeIsWithinRange([0, 5]) 17 | > isWithinRange(2) 18 | true 19 | > isWithinRange(5) 20 | true 21 | > isWithinRange(8) 22 | false 23 | * 24 | * @since 0.1.0 25 | */ 26 | export const makeIsWithinRange = range => _.allOf([ 27 | _.isGTE(range[0]), 28 | _.isLTE(range[1]) 29 | ]); 30 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/string-[array-array].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/string-[array-array] 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return a function expecting an array of objects and plucking the provided array 9 | * with the input path 10 | * 11 | * @see https://ascartabelli.github.io/lamb/module-lamb.html#pluck 12 | * 13 | * @function 14 | * @arg {string} path 15 | * @return {function} - String -> (Array -> Array) 16 | * 17 | * @example 18 | > getABs = pluckPath('a.b') 19 | > getABs([{a: {b: -1, label: 'foo'}}, {a: {b: 4, label: 'bar'}}]) 20 | [-1, 4] 21 | > getABs([{a: {label: 'foo'}}, {a: {b: 2}}]) 22 | [undefined, 2] 23 | * 24 | * @since 0.16.0 25 | */ 26 | export const pluckPath = path => _.mapWith(_.getPath(path)); 27 | -------------------------------------------------------------------------------- /packages/components/ui/src/sensors/style/README.md: -------------------------------------------------------------------------------- 1 | # StyleSensor 2 | 3 | This Svelte component provides a way to dynamically read a specific CSS rule in a specific stylesheet. 4 | 5 | It's useful to get a CSS style as a JS object in your application. 6 | 7 | ## Props 8 | 9 | | Prop | Type | Description | 10 | | --- | --- | --- | 11 | | `href` | `string` | The URL of the stylesheet to be read | 12 | | `selectorRegex` | `regexp` | A RegExp to identify the desired selector | 13 | | `styleRules` | `object` | An object where to store the properties for the provided selector. Typically you'd bind it to a store. | 14 | 15 | ## Usage 16 | 17 | ```html 18 | 23 | ``` 24 | -------------------------------------------------------------------------------- /packages/tools/atlas/src/bin/checkVersion.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import {fileURLToPath} from 'node:url'; 4 | 5 | import {readJson} from '@svizzle/file'; 6 | 7 | import {version as utilsVersion} from '../utils.js'; 8 | 9 | const packagePath = 10 | fileURLToPath(new URL('../../package.json', import.meta.url)); 11 | 12 | readJson(packagePath) 13 | .then(({version: packageVersion}) => { 14 | if (utilsVersion !== packageVersion) { 15 | console.log(`\n======================\n✋`); 16 | console.log(`/atlas: version mismatch! src/utils.js: ${utilsVersion}, package.json: ${packageVersion}`); 17 | console.log(`======================\n`); 18 | 19 | // eslint-disable-next-line no-process-exit 20 | process.exit(1); 21 | } 22 | }) 23 | .catch(err => console.error(err)); 24 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[number-boolean].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {makeIsWithinRange} from './array-[number-boolean].js'; 4 | 5 | describe('Array -> (Number -> Boolean)', function () { 6 | describe('makeIsWithinRange', function () { 7 | it('should return a function expecting a number returning true if the number is within the provided range', function () { 8 | const isWithinRange = makeIsWithinRange([0, 5]); 9 | 10 | assert.deepStrictEqual(isWithinRange(-1), false); 11 | assert.deepStrictEqual(isWithinRange(0), true); 12 | assert.deepStrictEqual(isWithinRange(2), true); 13 | assert.deepStrictEqual(isWithinRange(5), true); 14 | assert.deepStrictEqual(isWithinRange(8), false); 15 | }); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/[string-boolean]-[object-boolean].js: -------------------------------------------------------------------------------- 1 | import * as _ from 'lamb'; 2 | 3 | import {isNotNil} from './any-boolean.js'; 4 | 5 | /** 6 | * @module @svizzle/utils/[string-boolean]-[object-boolean] 7 | */ 8 | 9 | /** 10 | * Return a function expecting an object and returning `true` if the input 11 | * object has a key satisfying the provided predicate 12 | * 13 | * @function 14 | * @arg {predicate} 15 | * @return {function} - Object -> Boolean 16 | * 17 | * @example 18 | > hasA = hasKeyWith(_.is('a')) 19 | > hasA({a: 2, b: 4, c: 3}) 20 | true 21 | > hasA({b: 4, c: 3}) 22 | false 23 | * 24 | * @since 0.20.0 25 | */ 26 | export const hasKeyWith = predicate => _.pipe([ 27 | _.pairs, 28 | _.findWhere(_.pipe([_.head, predicate])), 29 | isNotNil 30 | ]); 31 | -------------------------------------------------------------------------------- /packages/components/ui/src/actions/resizeHandler.js: -------------------------------------------------------------------------------- 1 | import * as _ from 'lamb'; 2 | 3 | export const resizeHandler = ( 4 | node, 5 | { 6 | onResize, 7 | onResizeEnd, 8 | onResizeStart, 9 | timeout = 500 10 | } = {} 11 | ) => { 12 | let resizing = false; 13 | 14 | const started = size => { 15 | resizing = true; 16 | onResizeStart?.(size); 17 | } 18 | const scheduleEnded = _.debounce(size => { 19 | resizing = false; 20 | onResizeEnd?.(size); 21 | }, timeout); 22 | 23 | const observer = new ResizeObserver(entries => { 24 | const [size] = entries[0].borderBoxSize; 25 | !resizing && started(size); 26 | 27 | onResize?.(size); 28 | 29 | scheduleEnded(size); 30 | }); 31 | observer.observe(node); 32 | 33 | return () => { 34 | observer.disconnect(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /packages/tools/dev/src/log/iterable-array.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/dev/log/iterable-array 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | import {tapValue} from './string-[any-any].js'; 8 | 9 | /** 10 | * Print the provided array and element and return the result of appending the element to the array 11 | * 12 | * @function 13 | * @arg {iterable} iterable 14 | * @arg {*} any 15 | * @return {array} - @sideEffects: console.log 16 | * 17 | * @example 18 | > tapAppendTo([1, 2, 3], 4) 19 | [1, 2, 3] // logged 20 | 4 // logged 21 | [1, 2, 3, 4] 22 | 23 | > tapAppendTo('abc', {a: 1}) 24 | 'abc' // logged 25 | {a: 1} // logged 26 | ['a', 'b', 'c', {a: 1}] 27 | * 28 | * @since 0.3.0 29 | */ 30 | export const tapAppendTo = _.tapArgs( 31 | _.appendTo, 32 | [tapValue(), tapValue()] 33 | ); 34 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[string-boolean].spec.js: -------------------------------------------------------------------------------- 1 | import {strict as assert} from 'node:assert'; 2 | 3 | import {containsOneOf} from './array-[string-boolean].js'; 4 | 5 | describe('Array -> (String -> Boolean)', function () { 6 | describe('containsOneOf', function () { 7 | it('should return a function that checks if a string contains one of the provided strings', function () { 8 | const isWeight = containsOneOf(['(g)', '(mg)', '(mcg)']); 9 | const weightLabels = [ 10 | 'id', 11 | 'Energy (kcal)', 12 | 'Protein (g)', 13 | 'Cholesterol (mg)', 14 | 'Selenium (mcg)' 15 | ].filter(isWeight); 16 | const expected = ['Protein (g)', 'Cholesterol (mg)', 'Selenium (mcg)']; 17 | 18 | assert.deepStrictEqual(weightLabels, expected); 19 | }); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array_proto-boolean.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/array_proto-boolean 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return an function expecting a value and returning true if it is included in the provided array 9 | * @see 10 | {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes|Array.prototype.includes}, 11 | {@link module:@svizzle/utils/array-[any-boolean].makeIsIncluded|makeIsIncluded} 12 | * 13 | * @function 14 | * @arg {array} array 15 | * @arg {*} any 16 | * @return {boolean} 17 | * 18 | * @example 19 | > includes([0, 1, 2], 2) 20 | true 21 | > includes([0, 1, 2], 3) 22 | false 23 | * 24 | * @since 0.3.0 25 | */ 26 | export const includes = _.generic(Array.prototype.includes); 27 | -------------------------------------------------------------------------------- /packages/tools/utils/src/modules/array-[string-boolean].js: -------------------------------------------------------------------------------- 1 | /** 2 | * @module @svizzle/utils/array-[string-boolean] 3 | */ 4 | 5 | import * as _ from 'lamb'; 6 | 7 | /** 8 | * Return a function that checks if a string contains one of the provided strings. 9 | * 10 | * @function 11 | * @arg {array} strings - strings to check against 12 | * @return {function} - String -> Boolean 13 | * 14 | * @example 15 | > isWeight = containsOneOf(['(g)', '(mg)', '(mcg)']) 16 | > weightLabels = [ 17 | 'id', 18 | 'Energy (kcal)', 19 | 'Protein (g)', 20 | 'Cholesterol (mg)', 21 | 'Selenium (mcg)' 22 | ].filter(isWeight); 23 | ['Protein (g)', 'Cholesterol (mg)', 'Selenium (mcg)'] 24 | * 25 | * @since 0.4.0 26 | */ 27 | export const containsOneOf = array => 28 | string => _.someIn(array, x => string.includes(x)); 29 | -------------------------------------------------------------------------------- /packages/components/ui/src/drivers/style/README.md: -------------------------------------------------------------------------------- 1 | # StyleDriver 2 | 3 | This Svelte component provides a way to dynamically set a stylesheet and its rules. It's useful for when you need to apply styles to your application dynamically. 4 | 5 | ## Props 6 | 7 | | Prop | Type | Description | 8 | | --- | --- | --- | 9 | | `href` | `string` | The URL of the stylesheet to be loaded | 10 | | `styleRules` | `object` | An object containing the rules that should be set on the stylesheet | 11 | 12 | ## Usage 13 | 14 | ```html 15 | 31 | ``` 32 | -------------------------------------------------------------------------------- /packages/tools/atlas/README.md: -------------------------------------------------------------------------------- 1 | ## `@svizzle/atlas` 2 | 3 | Svizzle Atlas contains geographic boundaries data for mapping. 4 | 5 | https://nestauk.github.io/svizzle 6 | 7 | ### Installation 8 | 9 | *npm* 10 | 11 | `npm i -S @svizzle/atlas` 12 | 13 | 14 | ### Distribution files 15 | 16 | Files fetched or processed via `@svizzle/atlas` are distributed in [this repo](git@github.com:nestauk/svizzle_atlas_distro.git), which is a registered as a git [submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules), so the first time you clone `svizzle` please use: 17 | 18 | ``` 19 | git clone --recurse-submodules git@github.com:nestauk/svizzle.git 20 | ``` 21 | 22 | to make sure to fetch it. 23 | 24 | If you already cloned it and forgot `--recurse-submodules`, you can run: 25 | 26 | ``` 27 | git submodule update --init 28 | ``` 29 | -------------------------------------------------------------------------------- /packages/components/mapbox/src/SvgLayer.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 28 | 29 | 30 | 31 | 41 | --------------------------------------------------------------------------------