From 9d0cb8b869d16d08f98a0f7425e9f55d9f3bcfe5 Mon Sep 17 00:00:00 2001 From: "web@ppanel" Date: Thu, 26 Dec 2024 02:53:28 +0700 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(core):=20Restruct?= =?UTF-8?q?ure=20project=20for=20better=20module=20separation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .commitlintrc.js | 3 - .github/workflows/publish-release-assets.yml | 89 + .github/workflows/release-docker.yml | 66 - .github/workflows/release.yml | 35 +- .gitignore | 15 + .npmrc | 10 - .prettierignore | 57 - .prettierrc.js | 1 - .vscode/settings.json | 2 +- README.md | 2 +- README.zh-CN.md | 2 +- apps/admin/.gitignore | 40 - apps/admin/.i18nrc.json | 39 - apps/admin/README.md | 4 +- apps/admin/README.zh-CN.md | 4 +- apps/admin/app/(auth)/page.tsx | 13 +- apps/admin/app/(auth)/turnstile.tsx | 3 +- apps/admin/app/(auth)/user-auth-form.tsx | 2 +- apps/admin/app/(auth)/user-check-form.tsx | 11 +- apps/admin/app/(auth)/user-login-form.tsx | 11 +- apps/admin/app/(auth)/user-register-form.tsx | 13 +- apps/admin/app/(auth)/user-reset-form.tsx | 11 +- .../dashboard/announcement/notice-form.tsx | 24 +- .../admin/app/dashboard/announcement/page.tsx | 13 +- .../app/dashboard/coupon/coupon-form.tsx | 32 +- apps/admin/app/dashboard/coupon/page.tsx | 12 +- .../app/dashboard/document/document-form.tsx | 26 +- apps/admin/app/dashboard/document/page.tsx | 10 +- apps/admin/app/dashboard/layout.tsx | 2 +- apps/admin/app/dashboard/order/page.tsx | 14 +- .../admin/app/dashboard/payment/alipayf2f.tsx | 18 +- apps/admin/app/dashboard/payment/epay.tsx | 16 +- apps/admin/app/dashboard/payment/page.tsx | 2 +- .../app/dashboard/payment/stripe-alipay.tsx | 16 +- .../dashboard/payment/stripe-wechat-pay.tsx | 16 +- .../admin/app/dashboard/server/form-schema.ts | 2 +- .../admin/app/dashboard/server/group-form.tsx | 22 +- .../app/dashboard/server/group-table.tsx | 8 +- apps/admin/app/dashboard/server/node-form.tsx | 43 +- .../app/dashboard/server/node-status.tsx | 15 +- .../admin/app/dashboard/server/node-table.tsx | 19 +- apps/admin/app/dashboard/server/page.tsx | 2 +- .../app/dashboard/subscribe/group-form.tsx | 22 +- .../app/dashboard/subscribe/group-table.tsx | 8 +- apps/admin/app/dashboard/subscribe/page.tsx | 2 +- .../dashboard/subscribe/subscribe-form.tsx | 36 +- .../dashboard/subscribe/subscribe-table.tsx | 10 +- apps/admin/app/dashboard/system/currency.tsx | 8 +- apps/admin/app/dashboard/system/email.tsx | 14 +- apps/admin/app/dashboard/system/invite.tsx | 10 +- apps/admin/app/dashboard/system/node.tsx | 8 +- apps/admin/app/dashboard/system/page.tsx | 2 +- apps/admin/app/dashboard/system/register.tsx | 12 +- apps/admin/app/dashboard/system/site.tsx | 10 +- .../app/dashboard/system/subscription.tsx | 28 +- apps/admin/app/dashboard/system/telegram.tsx | 10 +- apps/admin/app/dashboard/system/tos.tsx | 4 +- apps/admin/app/dashboard/system/verify.tsx | 10 +- apps/admin/app/dashboard/ticket/page.tsx | 20 +- apps/admin/app/dashboard/tool/page.tsx | 29 +- apps/admin/app/dashboard/user/page.tsx | 12 +- apps/admin/app/dashboard/user/user-detail.tsx | 6 +- apps/admin/app/dashboard/user/user-form.tsx | 27 +- apps/admin/app/layout.tsx | 34 +- apps/admin/components.json | 20 + apps/admin/components/billing.tsx | 7 +- .../dashboard/revenue-statistics-card.tsx | 22 +- .../admin/components/dashboard/statistics.tsx | 22 +- .../dashboard/user-statistics-card.tsx | 35 +- apps/admin/components/display.tsx | 2 +- apps/admin/components/empty.tsx | 2 +- apps/admin/components/header.tsx | 6 +- apps/admin/components/language-switch.tsx | 12 +- apps/admin/components/pro-table.tsx | 4 +- apps/admin/components/sidebar-left.tsx | 2 +- apps/admin/components/theme-switch.tsx | 13 +- apps/admin/components/user-nav.tsx | 6 +- apps/admin/config/constants.ts | 7 +- apps/admin/config/fonts/GeistMonoVF.woff | Bin 67864 -> 0 bytes apps/admin/config/fonts/GeistVF.woff | Bin 66268 -> 0 bytes apps/admin/config/fonts/index.ts | 12 - apps/admin/eslint.config.js | 2 +- apps/admin/next.config.ts | 2 +- apps/admin/package.json | 63 +- apps/admin/postcss.config.mjs | 10 +- apps/admin/services/admin/index.ts | 2 +- apps/admin/tailwind.config.ts | 15 +- apps/admin/tsconfig.json | 16 +- apps/admin/utils/common.ts | 2 +- apps/admin/utils/request.ts | 4 +- apps/user/.gitignore | 40 - apps/user/.i18nrc.json | 39 - apps/user/README.md | 4 +- apps/user/README.zh-CN.md | 4 +- .../user/app/(main)/(user)/affiliate/page.tsx | 14 +- .../app/(main)/(user)/announcement/page.tsx | 4 +- .../app/(main)/(user)/dashboard/content.tsx | 25 +- .../(user)/document/document-button.tsx | 12 +- apps/user/app/(main)/(user)/document/page.tsx | 2 +- .../(user)/document/tutorial-button.tsx | 10 +- apps/user/app/(main)/(user)/layout.tsx | 2 +- apps/user/app/(main)/(user)/order/page.tsx | 12 +- .../user/app/(main)/(user)/order/purchase.tsx | 16 +- .../user/app/(main)/(user)/order/recharge.tsx | 14 +- apps/user/app/(main)/(user)/order/renewal.tsx | 22 +- .../app/(main)/(user)/order/reset-traffic.tsx | 10 +- apps/user/app/(main)/(user)/payment/page.tsx | 18 +- .../(main)/(user)/profile/change-password.tsx | 15 +- .../(main)/(user)/profile/notify-event.tsx | 20 +- .../(main)/(user)/profile/notify-settings.tsx | 28 +- apps/user/app/(main)/(user)/sidebar-left.tsx | 2 +- apps/user/app/(main)/(user)/sidebar-right.tsx | 17 +- .../app/(main)/(user)/subscribe/billing.tsx | 2 +- .../user/app/(main)/(user)/subscribe/page.tsx | 10 +- apps/user/app/(main)/(user)/ticket/page.tsx | 32 +- apps/user/app/(main)/(user)/wallet/page.tsx | 4 +- apps/user/app/(main)/tos/page.tsx | 2 +- apps/user/app/auth/page.tsx | 18 +- apps/user/app/auth/user-auth-form.tsx | 2 +- apps/user/app/auth/user-check-form.tsx | 11 +- apps/user/app/auth/user-login-form.tsx | 11 +- apps/user/app/auth/user-register-form.tsx | 13 +- apps/user/app/auth/user-reset-form.tsx | 11 +- apps/user/app/layout.tsx | 26 +- apps/user/components.json | 20 + apps/user/components/announcement/index.tsx | 6 +- apps/user/components/display.tsx | 2 +- apps/user/components/empty.tsx | 2 +- apps/user/components/footer.tsx | 2 +- apps/user/components/header.tsx | 2 +- apps/user/components/language-switch.tsx | 12 +- apps/user/components/main/global-map.tsx | 5 +- apps/user/components/main/hero.tsx | 9 +- .../user/components/main/product-showcase.tsx | 57 +- apps/user/components/main/stats.tsx | 19 +- apps/user/components/pro-list.tsx | 7 +- apps/user/components/theme-switch.tsx | 13 +- apps/user/components/user-nav.tsx | 6 +- apps/user/config/constants.ts | 5 +- apps/user/config/fonts/GeistMonoVF.woff | Bin 67864 -> 0 bytes apps/user/config/fonts/GeistVF.woff | Bin 66268 -> 0 bytes apps/user/config/fonts/index.ts | 12 - apps/user/config/use-global.tsx | 2 +- apps/user/eslint.config.js | 2 +- apps/user/next.config.ts | 2 +- apps/user/package.json | 71 +- apps/user/postcss.config.mjs | 10 +- apps/user/tailwind.config.ts | 15 +- apps/user/tsconfig.json | 15 +- apps/user/utils/common.ts | 2 +- apps/user/utils/request.ts | 4 +- bun.lockb | Bin 0 -> 605288 bytes docker/ppanel-admin-web/Dockerfile | 51 +- docker/ppanel-user-web/Dockerfile | 51 +- eslint.config.js | 2 +- package.json | 45 +- .../commitlint-config/{index.js => base.js} | 5 + packages/commitlint-config/package.json | 9 +- packages/eslint-config/README.md | 3 + packages/eslint-config/next.js | 2 + packages/eslint-config/package.json | 17 +- packages/eslint-config/react-internal.js | 2 + .../prettier-config/{index.js => base.js} | 0 packages/prettier-config/package.json | 5 +- packages/shadcn/eslint.config.js | 23 - packages/shadcn/package.json | 96 - packages/shadcn/postcss.config.mjs | 9 - packages/shadcn/src/components/ui/3d-card.tsx | 141 - packages/shadcn/src/components/ui/3d-pin.tsx | 156 - .../src/components/ui/animated-modal.tsx | 212 - .../components/ui/animated-testimonials.tsx | 163 - .../src/components/ui/animated-tooltip.tsx | 78 - .../components/ui/apple-cards-carousel.tsx | 275 - .../src/components/ui/aurora-background.tsx | 41 - .../ui/background-beams-with-collision.tsx | 254 - .../src/components/ui/background-beams.tsx | 140 - .../src/components/ui/background-boxes.tsx | 70 - .../ui/background-gradient-animation.tsx | 172 - .../src/components/ui/background-gradient.tsx | 73 - .../src/components/ui/background-lines.tsx | 143 - .../shadcn/src/components/ui/bento-grid.tsx | 55 - .../components/ui/canvas-reveal-effect.tsx | 278 - .../src/components/ui/card-hover-effect.tsx | 100 - .../src/components/ui/card-spotlight.tsx | 71 - .../shadcn/src/components/ui/card-stack.tsx | 70 - packages/shadcn/src/components/ui/compare.tsx | 237 - .../ui/container-scroll-animation.tsx | 95 - packages/shadcn/src/components/ui/cover.tsx | 219 - .../components/ui/direction-aware-hover.tsx | 157 - .../src/components/ui/evervault-card.tsx | 96 - .../shadcn/src/components/ui/file-upload.tsx | 185 - .../shadcn/src/components/ui/flip-words.tsx | 99 - .../src/components/ui/floating-dock.tsx | 197 - .../src/components/ui/floating-navbar.tsx | 78 - .../shadcn/src/components/ui/focus-cards.tsx | 65 - .../src/components/ui/following-pointer.tsx | 135 - .../shadcn/src/components/ui/glare-card.tsx | 132 - packages/shadcn/src/components/ui/globe.tsx | 296 - .../src/components/ui/glowing-stars.tsx | 144 - .../components/ui/google-gemini-effect.tsx | 161 - packages/shadcn/src/components/ui/grid.tsx | 13 - .../src/components/ui/hero-highlight.tsx | 93 - .../src/components/ui/hero-parallax.tsx | 122 - .../src/components/ui/images-slider.tsx | 146 - .../components/ui/infinite-moving-cards.tsx | 115 - packages/shadcn/src/components/ui/lamp.tsx | 105 - .../shadcn/src/components/ui/layout-grid.tsx | 113 - packages/shadcn/src/components/ui/lens.tsx | 124 - .../shadcn/src/components/ui/link-preview.tsx | 150 - .../src/components/ui/macbook-scroll.tsx | 626 - packages/shadcn/src/components/ui/meteors.tsx | 26 - .../src/components/ui/moving-border.tsx | 123 - .../shadcn/src/components/ui/moving-line.tsx | 90 - .../src/components/ui/multi-step-loader.tsx | 144 - .../shadcn/src/components/ui/navbar-menu.tsx | 116 - .../src/components/ui/parallax-scroll-2.tsx | 97 - .../src/components/ui/parallax-scroll.tsx | 76 - .../ui/placeholders-and-vanish-input.tsx | 268 - .../src/components/ui/shooting-stars.tsx | 137 - .../shadcn/src/components/ui/sparkles.tsx | 426 - .../shadcn/src/components/ui/spotlight.tsx | 56 - .../src/components/ui/stars-background.tsx | 122 - .../components/ui/sticky-scroll-reveal.tsx | 103 - .../src/components/ui/svg-mask-effect.tsx | 73 - .../src/components/ui/tailwindcss-buttons.tsx | 29 - .../src/components/ui/text-hover-effect.tsx | 121 - .../src/components/ui/text-reveal-card.tsx | 181 - .../shadcn/src/components/ui/tracing-beam.tsx | 109 - .../src/components/ui/typewriter-effect.tsx | 182 - packages/shadcn/src/components/ui/vortex.tsx | 244 - .../src/components/ui/wavy-background.tsx | 116 - .../shadcn/src/components/ui/wobble-card.tsx | 79 - packages/shadcn/src/data/globe.json | 12335 ---- .../src/lib/class-variance-authority.ts | 1 - packages/shadcn/src/lib/date-fns.ts | 1 - packages/shadcn/src/lib/react-hook-form.ts | 1 - packages/shadcn/src/lib/recharts.ts | 1 - packages/shadcn/src/lib/sonner.ts | 1 - packages/shadcn/src/lib/types.ts | 1 - packages/shadcn/src/lib/zod.ts | 2 - packages/shadcn/tailwind.config.ts | 121 - packages/shadcn/tsconfig.json | 12 - packages/typescript-config/README.md | 3 + packages/typescript-config/base.json | 3 +- packages/typescript-config/nextjs.json | 4 +- packages/typescript-config/package.json | 12 +- packages/typescript-config/react-library.json | 1 + packages/{shadcn => ui}/components.json | 14 +- packages/ui/eslint.config.js | 23 +- packages/ui/package.json | 91 +- packages/ui/src/components/.gitkeep | 0 .../ui => ui/src/components}/accordion.tsx | 8 +- .../ui => ui/src/components}/alert-dialog.tsx | 5 +- .../ui => ui/src/components}/alert.tsx | 3 +- .../ui => ui/src/components}/aspect-ratio.tsx | 0 .../ui => ui/src/components}/avatar.tsx | 3 +- .../ui => ui/src/components}/badge.tsx | 3 +- .../ui => ui/src/components}/breadcrumb.tsx | 10 +- .../ui => ui/src/components}/button.tsx | 3 +- .../ui => ui/src/components}/calendar.tsx | 15 +- .../ui => ui/src/components}/card.tsx | 3 +- .../ui => ui/src/components}/carousel.tsx | 12 +- .../ui => ui/src/components}/chart.tsx | 7 +- .../ui => ui/src/components}/checkbox.tsx | 8 +- .../ui => ui/src/components}/collapsible.tsx | 0 .../ui => ui/src/components}/command.tsx | 11 +- .../ui => ui/src/components}/context-menu.tsx | 12 +- .../ui => ui/src/components}/dialog.tsx | 8 +- .../ui => ui/src/components}/drawer.tsx | 3 +- .../src/components}/dropdown-menu.tsx | 12 +- .../ui => ui/src/components}/form.tsx | 5 +- .../src/components}/hover-border-gradient.tsx | 7 +- .../ui => ui/src/components}/hover-card.tsx | 3 +- .../ui => ui/src/components}/input-otp.tsx | 8 +- .../ui => ui/src/components}/input.tsx | 3 +- .../ui => ui/src/components}/label.tsx | 3 +- .../ui => ui/src/components}/menubar.tsx | 12 +- .../src/components}/navigation-menu.tsx | 8 +- .../ui => ui/src/components}/pagination.tsx | 14 +- .../ui => ui/src/components}/popover.tsx | 3 +- .../ui => ui/src/components}/progress.tsx | 3 +- .../ui => ui/src/components}/radio-group.tsx | 8 +- .../ui => ui/src/components}/resizable.tsx | 8 +- .../ui => ui/src/components}/scroll-area.tsx | 3 +- .../ui => ui/src/components}/select.tsx | 14 +- .../ui => ui/src/components}/separator.tsx | 3 +- .../ui => ui/src/components}/sheet.tsx | 8 +- .../ui => ui/src/components}/sidebar.tsx | 27 +- .../ui => ui/src/components}/skeleton.tsx | 3 +- .../ui => ui/src/components}/slider.tsx | 3 +- .../ui => ui/src/components}/sonner.tsx | 0 .../ui => ui/src/components}/switch.tsx | 3 +- .../ui => ui/src/components}/table.tsx | 3 +- .../ui => ui/src/components}/tabs.tsx | 3 +- .../src/components}/text-generate-effect.tsx | 6 +- .../ui => ui/src/components}/textarea.tsx | 3 +- .../ui => ui/src/components}/timeline.tsx | 0 .../ui => ui/src/components}/toast.tsx | 8 +- .../ui => ui/src/components}/toaster.tsx | 5 +- .../ui => ui/src/components}/toggle-group.tsx | 5 +- .../ui => ui/src/components}/toggle.tsx | 3 +- .../ui => ui/src/components}/tooltip.tsx | 3 +- .../src/{ => custom-components}/combobox.tsx | 8 +- .../confirm-button.tsx | 2 +- .../{ => custom-components}/date-picker.tsx | 12 +- .../dynamic-Inputs.tsx | 9 +- .../{ => custom-components}/editor/html.tsx | 5 +- .../ui/src/custom-components/editor/index.tsx | 3 + .../{ => custom-components}/editor/json.tsx | 5 +- .../editor/markdown.tsx | 7 +- .../editor/monaco-editor.tsx | 14 +- .../ui/src/{ => custom-components}/empty.tsx | 0 .../enhanced-input.tsx | 5 +- .../src/{ => custom-components}/markdown.tsx | 22 +- .../pro-list}/column-filter.tsx | 6 +- .../src/custom-components/pro-list/index.tsx | 5 + .../pro-list}/pagination.tsx | 22 +- .../pro-list/pro-list.tsx | 15 +- .../pro-table}/column-filter.tsx | 6 +- .../pro-table/column-header.tsx | 14 +- .../pro-table/column-toggle.tsx | 10 +- .../src/custom-components/pro-table/index.tsx | 5 + .../pro-table}/pagination.tsx | 41 +- .../pro-table/pro-table.tsx | 47 +- .../pro-table/sortable-row.tsx | 2 +- .../pro-table/wrapper.tsx | 2 +- .../src/{ => custom-components}/tag-input.tsx | 4 +- packages/ui/src/editor/index.tsx | 3 - packages/ui/src/hooks/.gitkeep | 0 packages/ui/src/hooks/use-lang-dir.ts | 5 + .../{shadcn => ui}/src/hooks/use-mobile.tsx | 0 .../src/hooks/use-outside-click.ts | 9 +- .../{shadcn => ui}/src/hooks/use-toast.ts | 4 +- packages/{shadcn => ui}/src/lib/utils.ts | 0 packages/ui/src/loading.tsx | 13 - packages/ui/src/lotties/gift.json | 5417 +- packages/ui/src/lotties/global-map.json | 29179 +++++++- packages/ui/src/lotties/index.tsx | 60 - packages/ui/src/lotties/loading.json | 5212 +- packages/ui/src/lotties/locations.json | 57508 +++++++++++++++- packages/ui/src/lotties/login.json | 18282 ++++- packages/ui/src/lotties/moon.json | 1407 +- packages/ui/src/lotties/network-security.json | 8490 ++- packages/ui/src/lotties/rocket.json | 9136 ++- packages/ui/src/lotties/servers.json | 13694 +++- packages/ui/src/lotties/sun.json | 1096 +- packages/ui/src/lotties/users.json | 1278 +- packages/ui/src/pro-list/index.tsx | 1 - packages/ui/src/pro-table/index.tsx | 1 - .../{shadcn => ui}/src/styles/globals.css | 0 packages/ui/src/utils/formatting.ts | 2 +- packages/ui/src/utils/index.ts | 8 +- packages/ui/tailwind.config.ts | 106 +- packages/ui/tsconfig.json | 13 +- packages/ui/tsconfig.lint.json | 8 + packages/ui/turbo/generators/config.ts | 30 - .../turbo/generators/templates/component.hbs | 8 - pnpm-lock.yaml | 23486 ------- pnpm-workspace.yaml | 3 - scripts/clean.sh | 12 + scripts/lobehub-setup.sh | 27 - scripts/prepare.sh | 78 +- scripts/publish.sh | 94 + scripts/setup-components.mjs | 167 - scripts/update-deps.sh | 14 + scripts/update-shadcn-ui.sh | 8 + tsconfig.json | 2 +- turbo.json | 10 +- 368 files changed, 152606 insertions(+), 47239 deletions(-) delete mode 100644 .commitlintrc.js create mode 100644 .github/workflows/publish-release-assets.yml delete mode 100644 .github/workflows/release-docker.yml delete mode 100644 .npmrc delete mode 100644 .prettierignore delete mode 100644 .prettierrc.js delete mode 100644 apps/admin/.gitignore delete mode 100644 apps/admin/.i18nrc.json create mode 100644 apps/admin/components.json delete mode 100644 apps/admin/config/fonts/GeistMonoVF.woff delete mode 100644 apps/admin/config/fonts/GeistVF.woff delete mode 100644 apps/admin/config/fonts/index.ts delete mode 100644 apps/user/.gitignore delete mode 100644 apps/user/.i18nrc.json create mode 100644 apps/user/components.json delete mode 100644 apps/user/config/fonts/GeistMonoVF.woff delete mode 100644 apps/user/config/fonts/GeistVF.woff delete mode 100644 apps/user/config/fonts/index.ts create mode 100755 bun.lockb rename packages/commitlint-config/{index.js => base.js} (64%) create mode 100644 packages/eslint-config/README.md rename packages/prettier-config/{index.js => base.js} (100%) delete mode 100644 packages/shadcn/eslint.config.js delete mode 100644 packages/shadcn/package.json delete mode 100644 packages/shadcn/postcss.config.mjs delete mode 100644 packages/shadcn/src/components/ui/3d-card.tsx delete mode 100644 packages/shadcn/src/components/ui/3d-pin.tsx delete mode 100644 packages/shadcn/src/components/ui/animated-modal.tsx delete mode 100644 packages/shadcn/src/components/ui/animated-testimonials.tsx delete mode 100644 packages/shadcn/src/components/ui/animated-tooltip.tsx delete mode 100644 packages/shadcn/src/components/ui/apple-cards-carousel.tsx delete mode 100644 packages/shadcn/src/components/ui/aurora-background.tsx delete mode 100644 packages/shadcn/src/components/ui/background-beams-with-collision.tsx delete mode 100644 packages/shadcn/src/components/ui/background-beams.tsx delete mode 100644 packages/shadcn/src/components/ui/background-boxes.tsx delete mode 100644 packages/shadcn/src/components/ui/background-gradient-animation.tsx delete mode 100644 packages/shadcn/src/components/ui/background-gradient.tsx delete mode 100644 packages/shadcn/src/components/ui/background-lines.tsx delete mode 100644 packages/shadcn/src/components/ui/bento-grid.tsx delete mode 100644 packages/shadcn/src/components/ui/canvas-reveal-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/card-hover-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/card-spotlight.tsx delete mode 100644 packages/shadcn/src/components/ui/card-stack.tsx delete mode 100644 packages/shadcn/src/components/ui/compare.tsx delete mode 100644 packages/shadcn/src/components/ui/container-scroll-animation.tsx delete mode 100644 packages/shadcn/src/components/ui/cover.tsx delete mode 100644 packages/shadcn/src/components/ui/direction-aware-hover.tsx delete mode 100644 packages/shadcn/src/components/ui/evervault-card.tsx delete mode 100644 packages/shadcn/src/components/ui/file-upload.tsx delete mode 100644 packages/shadcn/src/components/ui/flip-words.tsx delete mode 100644 packages/shadcn/src/components/ui/floating-dock.tsx delete mode 100644 packages/shadcn/src/components/ui/floating-navbar.tsx delete mode 100644 packages/shadcn/src/components/ui/focus-cards.tsx delete mode 100644 packages/shadcn/src/components/ui/following-pointer.tsx delete mode 100644 packages/shadcn/src/components/ui/glare-card.tsx delete mode 100644 packages/shadcn/src/components/ui/globe.tsx delete mode 100644 packages/shadcn/src/components/ui/glowing-stars.tsx delete mode 100644 packages/shadcn/src/components/ui/google-gemini-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/grid.tsx delete mode 100644 packages/shadcn/src/components/ui/hero-highlight.tsx delete mode 100644 packages/shadcn/src/components/ui/hero-parallax.tsx delete mode 100644 packages/shadcn/src/components/ui/images-slider.tsx delete mode 100644 packages/shadcn/src/components/ui/infinite-moving-cards.tsx delete mode 100644 packages/shadcn/src/components/ui/lamp.tsx delete mode 100644 packages/shadcn/src/components/ui/layout-grid.tsx delete mode 100644 packages/shadcn/src/components/ui/lens.tsx delete mode 100644 packages/shadcn/src/components/ui/link-preview.tsx delete mode 100644 packages/shadcn/src/components/ui/macbook-scroll.tsx delete mode 100644 packages/shadcn/src/components/ui/meteors.tsx delete mode 100644 packages/shadcn/src/components/ui/moving-border.tsx delete mode 100644 packages/shadcn/src/components/ui/moving-line.tsx delete mode 100644 packages/shadcn/src/components/ui/multi-step-loader.tsx delete mode 100644 packages/shadcn/src/components/ui/navbar-menu.tsx delete mode 100644 packages/shadcn/src/components/ui/parallax-scroll-2.tsx delete mode 100644 packages/shadcn/src/components/ui/parallax-scroll.tsx delete mode 100644 packages/shadcn/src/components/ui/placeholders-and-vanish-input.tsx delete mode 100644 packages/shadcn/src/components/ui/shooting-stars.tsx delete mode 100644 packages/shadcn/src/components/ui/sparkles.tsx delete mode 100644 packages/shadcn/src/components/ui/spotlight.tsx delete mode 100644 packages/shadcn/src/components/ui/stars-background.tsx delete mode 100644 packages/shadcn/src/components/ui/sticky-scroll-reveal.tsx delete mode 100644 packages/shadcn/src/components/ui/svg-mask-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/tailwindcss-buttons.tsx delete mode 100644 packages/shadcn/src/components/ui/text-hover-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/text-reveal-card.tsx delete mode 100644 packages/shadcn/src/components/ui/tracing-beam.tsx delete mode 100644 packages/shadcn/src/components/ui/typewriter-effect.tsx delete mode 100644 packages/shadcn/src/components/ui/vortex.tsx delete mode 100644 packages/shadcn/src/components/ui/wavy-background.tsx delete mode 100644 packages/shadcn/src/components/ui/wobble-card.tsx delete mode 100644 packages/shadcn/src/data/globe.json delete mode 100644 packages/shadcn/src/lib/class-variance-authority.ts delete mode 100644 packages/shadcn/src/lib/date-fns.ts delete mode 100644 packages/shadcn/src/lib/react-hook-form.ts delete mode 100644 packages/shadcn/src/lib/recharts.ts delete mode 100644 packages/shadcn/src/lib/sonner.ts delete mode 100644 packages/shadcn/src/lib/types.ts delete mode 100644 packages/shadcn/src/lib/zod.ts delete mode 100644 packages/shadcn/tailwind.config.ts delete mode 100644 packages/shadcn/tsconfig.json create mode 100644 packages/typescript-config/README.md rename packages/{shadcn => ui}/components.json (50%) create mode 100644 packages/ui/src/components/.gitkeep rename packages/{shadcn/src/components/ui => ui/src/components}/accordion.tsx (89%) rename packages/{shadcn/src/components/ui => ui/src/components}/alert-dialog.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/alert.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/aspect-ratio.tsx (100%) rename packages/{shadcn/src/components/ui => ui/src/components}/avatar.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/badge.tsx (95%) rename packages/{shadcn/src/components/ui => ui/src/components}/breadcrumb.tsx (92%) rename packages/{shadcn/src/components/ui => ui/src/components}/button.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/calendar.tsx (85%) rename packages/{shadcn/src/components/ui => ui/src/components}/card.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/carousel.tsx (95%) rename packages/{shadcn/src/components/ui => ui/src/components}/chart.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/checkbox.tsx (86%) rename packages/{shadcn/src/components/ui => ui/src/components}/collapsible.tsx (100%) rename packages/{shadcn/src/components/ui => ui/src/components}/command.tsx (94%) rename packages/{shadcn/src/components/ui => ui/src/components}/context-menu.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/dialog.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/drawer.tsx (98%) rename packages/{shadcn/src/components/ui => ui/src/components}/dropdown-menu.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/form.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/hover-border-gradient.tsx (93%) rename packages/{shadcn/src/components/ui => ui/src/components}/hover-card.tsx (95%) rename packages/{shadcn/src/components/ui => ui/src/components}/input-otp.tsx (94%) rename packages/{shadcn/src/components/ui => ui/src/components}/input.tsx (93%) rename packages/{shadcn/src/components/ui => ui/src/components}/label.tsx (92%) rename packages/{shadcn/src/components/ui => ui/src/components}/menubar.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/navigation-menu.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/pagination.tsx (87%) rename packages/{shadcn/src/components/ui => ui/src/components}/popover.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/progress.tsx (93%) rename packages/{shadcn/src/components/ui => ui/src/components}/radio-group.tsx (88%) rename packages/{shadcn/src/components/ui => ui/src/components}/resizable.tsx (90%) rename packages/{shadcn/src/components/ui => ui/src/components}/scroll-area.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/select.tsx (94%) rename packages/{shadcn/src/components/ui => ui/src/components}/separator.tsx (92%) rename packages/{shadcn/src/components/ui => ui/src/components}/sheet.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/sidebar.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/skeleton.tsx (79%) rename packages/{shadcn/src/components/ui => ui/src/components}/slider.tsx (94%) rename packages/{shadcn/src/components/ui => ui/src/components}/sonner.tsx (100%) rename packages/{shadcn/src/components/ui => ui/src/components}/switch.tsx (95%) rename packages/{shadcn/src/components/ui => ui/src/components}/table.tsx (98%) rename packages/{shadcn/src/components/ui => ui/src/components}/tabs.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/text-generate-effect.tsx (90%) rename packages/{shadcn/src/components/ui => ui/src/components}/textarea.tsx (92%) rename packages/{shadcn/src/components/ui => ui/src/components}/timeline.tsx (100%) rename packages/{shadcn/src/components/ui => ui/src/components}/toast.tsx (97%) rename packages/{shadcn/src/components/ui => ui/src/components}/toaster.tsx (87%) rename packages/{shadcn/src/components/ui => ui/src/components}/toggle-group.tsx (93%) rename packages/{shadcn/src/components/ui => ui/src/components}/toggle.tsx (96%) rename packages/{shadcn/src/components/ui => ui/src/components}/tooltip.tsx (95%) rename packages/ui/src/{ => custom-components}/combobox.tsx (93%) rename packages/ui/src/{ => custom-components}/confirm-button.tsx (96%) rename packages/ui/src/{ => custom-components}/date-picker.tsx (74%) rename packages/ui/src/{ => custom-components}/dynamic-Inputs.tsx (91%) rename packages/ui/src/{ => custom-components}/editor/html.tsx (87%) create mode 100644 packages/ui/src/custom-components/editor/index.tsx rename packages/ui/src/{ => custom-components}/editor/json.tsx (96%) rename packages/ui/src/{ => custom-components}/editor/markdown.tsx (63%) rename packages/ui/src/{ => custom-components}/editor/monaco-editor.tsx (94%) rename packages/ui/src/{ => custom-components}/empty.tsx (100%) rename packages/ui/src/{ => custom-components}/enhanced-input.tsx (94%) rename packages/ui/src/{ => custom-components}/markdown.tsx (83%) rename packages/ui/src/{pro-table => custom-components/pro-list}/column-filter.tsx (85%) create mode 100644 packages/ui/src/custom-components/pro-list/index.tsx rename packages/ui/src/{pro-table => custom-components/pro-list}/pagination.tsx (90%) rename packages/ui/src/{ => custom-components}/pro-list/pro-list.tsx (91%) rename packages/ui/src/{pro-list => custom-components/pro-table}/column-filter.tsx (85%) rename packages/ui/src/{ => custom-components}/pro-table/column-header.tsx (84%) rename packages/ui/src/{ => custom-components}/pro-table/column-toggle.tsx (88%) create mode 100644 packages/ui/src/custom-components/pro-table/index.tsx rename packages/ui/src/{pro-list => custom-components/pro-table}/pagination.tsx (80%) rename packages/ui/src/{ => custom-components}/pro-table/pro-table.tsx (90%) rename packages/ui/src/{ => custom-components}/pro-table/sortable-row.tsx (93%) rename packages/ui/src/{ => custom-components}/pro-table/wrapper.tsx (94%) rename packages/ui/src/{ => custom-components}/tag-input.tsx (94%) delete mode 100644 packages/ui/src/editor/index.tsx create mode 100644 packages/ui/src/hooks/.gitkeep create mode 100644 packages/ui/src/hooks/use-lang-dir.ts rename packages/{shadcn => ui}/src/hooks/use-mobile.tsx (100%) rename packages/{shadcn => ui}/src/hooks/use-outside-click.ts (60%) rename packages/{shadcn => ui}/src/hooks/use-toast.ts (96%) rename packages/{shadcn => ui}/src/lib/utils.ts (100%) delete mode 100644 packages/ui/src/loading.tsx delete mode 100644 packages/ui/src/lotties/index.tsx delete mode 100644 packages/ui/src/pro-list/index.tsx delete mode 100644 packages/ui/src/pro-table/index.tsx rename packages/{shadcn => ui}/src/styles/globals.css (100%) create mode 100644 packages/ui/tsconfig.lint.json delete mode 100644 packages/ui/turbo/generators/config.ts delete mode 100644 packages/ui/turbo/generators/templates/component.hbs delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml create mode 100755 scripts/clean.sh delete mode 100755 scripts/lobehub-setup.sh create mode 100755 scripts/publish.sh delete mode 100644 scripts/setup-components.mjs create mode 100755 scripts/update-deps.sh create mode 100755 scripts/update-shadcn-ui.sh diff --git a/.commitlintrc.js b/.commitlintrc.js deleted file mode 100644 index ea6f53a..0000000 --- a/.commitlintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: ['@repo/commitlint-config'], -}; diff --git a/.github/workflows/publish-release-assets.yml b/.github/workflows/publish-release-assets.yml new file mode 100644 index 0000000..25ac536 --- /dev/null +++ b/.github/workflows/publish-release-assets.yml @@ -0,0 +1,89 @@ +name: Publish Release Assets + +on: + release: + types: [published] + +permissions: + contents: write + +jobs: + publish: + name: Publish Release Assets + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: 'latest' + + - name: Cache Bun dependencies + uses: actions/cache@v3 + with: + path: | + ~/.bun + key: ${{ runner.os }}-bun-cache-${{ hashFiles('**/bun.lockb') }} + restore-keys: | + ${{ runner.os }}-bun-cache- + + - name: Install deps + run: bun install --cache + + - name: Build + run: bun run build + + - name: Run publish script + run: | + chmod +x scripts/publish.sh + ./scripts/publish.sh + + - name: Upload tar.gz file to release + uses: softprops/action-gh-release@v2 + with: + files: | + out/ppanel-admin-web.tar.gz + out/ppanel-user-web.tar.gz + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Install jq + run: sudo apt-get install -y jq + + - name: Extract version from package.json + id: version + run: echo "PPANEL_VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV + + - name: Build and push Docker image for ppanel-user-web + uses: docker/build-push-action@v6 + with: + context: . + file: ./docker/ppanel-admin-web/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ secrets.DOCKER_USERNAME }}/ppanel-admin-web:latest + ${{ secrets.DOCKER_USERNAME }}/ppanel-admin-web:${{ env.PPANEL_VERSION }} + + - name: Build and push Docker image for ppanel-user-web + uses: docker/build-push-action@v6 + with: + context: . + file: ./docker/ppanel-user-web/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ secrets.DOCKER_USERNAME }}/ppanel-user-web:latest + ${{ secrets.DOCKER_USERNAME }}/ppanel-user-web:${{ env.PPANEL_VERSION }} diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml deleted file mode 100644 index c5c39af..0000000 --- a/.github/workflows/release-docker.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Build and Publish Docker Image - -on: - workflow_dispatch: - release: - types: [published] - push: - branches: - - develop - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - IMAGE_NAME: - - ppanel-user-web - - ppanel-admin-web - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Extract version from package.json - id: version - run: echo "VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV - - - name: Get short SHA - id: sha - run: echo "GIT_SHA=${GITHUB_SHA::8}" >> $GITHUB_ENV - - - name: Build and push Docker image for main release - if: github.event_name == 'release' - uses: docker/build-push-action@v6 - with: - context: . - file: ./docker/${{ matrix.IMAGE_NAME }}/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: | - ${{ secrets.DOCKER_USERNAME }}/${{ matrix.IMAGE_NAME }}:latest - ${{ secrets.DOCKER_USERNAME }}/${{ matrix.IMAGE_NAME }}:${{ env.VERSION }} - - - name: Build and push Docker image for develop - if: github.ref == 'refs/heads/develop' - uses: docker/build-push-action@v6 - with: - context: . - file: ./docker/${{ matrix.IMAGE_NAME }}/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: | - ${{ secrets.DOCKER_USERNAME }}/${{ matrix.IMAGE_NAME }}:beta - ${{ secrets.DOCKER_USERNAME }}/${{ matrix.IMAGE_NAME }}:${{ env.VERSION }}-${{ env.GIT_SHA }}-beta diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e9c7b78..2dab160 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,8 +2,10 @@ name: Build and Release on: push: - branches: - - main + branches: [main, next, beta] + +permissions: + contents: write jobs: release: @@ -12,34 +14,29 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Setup Node.js environment - uses: actions/setup-node@v4 + - name: Setup Bun + uses: oven-sh/setup-bun@v1 with: - node-version: '20' - cache: 'pnpm' + bun-version: 'latest' - - name: Cache pnpm store + - name: Cache Bun dependencies uses: actions/cache@v3 with: - path: ~/.pnpm-store - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ~/.bun + node_modules + key: ${{ runner.os }}-bun-cache-${{ hashFiles('**/bun.lockb') }} restore-keys: | - ${{ runner.os }}-pnpm-store- + ${{ runner.os }}-bun-cache- - name: Install deps - run: pnpm install - - - name: Lint - run: pnpm lint + run: bun install - name: Build - run: pnpm build + run: bun run build - name: Release id: release - run: pnpm release + run: bun run release env: GH_TOKEN: ${{ secrets.GH_TOKEN }} diff --git a/.gitignore b/.gitignore index 1a1ffe0..207a6e4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,18 @@ yarn-error.log* # Misc .DS_Store *.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files (can opt-in for committing if needed) +.env + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 16c4845..0000000 --- a/.npmrc +++ /dev/null @@ -1,10 +0,0 @@ -public-hoist-pattern[]=*typescript* -public-hoist-pattern[]=*tailwindcss* -public-hoist-pattern[]=*autoprefixer* -public-hoist-pattern[]=*postcss* -public-hoist-pattern[]=*eslint* -public-hoist-pattern[]=*prettier* -public-hoist-pattern[]=*commitlint* -public-hoist-pattern[]=*semantic-release* -public-hoist-pattern[]=*@umijs/openapi* - diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 778aa87..0000000 --- a/.prettierignore +++ /dev/null @@ -1,57 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# Dependencies -node_modules -.pnp -.pnp.js - -# Local env files -.env* - -# Testing -coverage - -# Turbo -.turbo - -# Vercel -.vercel - -# Build Outputs -.next/ -out/ -build -dist - -# Debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Misc -.DS_Store -*.pem - -# Fonts -*.woff - -# Images -*.svg -*.ico - -# Husky -.husky - -# Docker -Dockerfile - -# LICENSE -LICENSE - -# Ignores -.npmrc -.gitignore -.prettierignore -public - -packages/ui/src/lotties/*.json \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 95967ee..0000000 --- a/.prettierrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@repo/prettier-config'); diff --git a/.vscode/settings.json b/.vscode/settings.json index ab25516..353034a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,6 @@ "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", "*.jsx": "${capture}.js", "*.tsx": "${capture}.ts", - "package.json": "*" + "README.md": "*.md, LICENSE" } } diff --git a/README.md b/README.md index 43d7b63..95ee24c 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ git clone https://github.com/perfect-panel/ppanel-web.git cd ppanel-web # Install dependencies -pnpm install +bun install ``` ## 🤝 Contributing diff --git a/README.zh-CN.md b/README.zh-CN.md index 94cc625..daaab0b 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -58,7 +58,7 @@ git clone https://github.com/perfect-panel/ppanel-web.git cd ppanel-web # 安装依赖 -pnpm install +bun install ``` ## 🤝 贡献 diff --git a/apps/admin/.gitignore b/apps/admin/.gitignore deleted file mode 100644 index 14e8ef7..0000000 --- a/apps/admin/.gitignore +++ /dev/null @@ -1,40 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# env files (can opt-in for committing if needed) -.env - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/apps/admin/.i18nrc.json b/apps/admin/.i18nrc.json deleted file mode 100644 index e0059f0..0000000 --- a/apps/admin/.i18nrc.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "entry": "./locales/en-US", - "entryLocale": "en-US", - "experimental": { - "jsonMode": true - }, - "markdown": { - "entry": ["./README.md"], - "entryLocale": "en-US", - "outputLocales": ["zh-CN"] - }, - "modelName": "gpt-4o", - "output": "./locales", - "outputLocales": [ - "en-US", - "cs-CZ", - "de-DE", - "es-ES", - "es-MX", - "fa-IR", - "fi-FI", - "fr-FR", - "hi-IN", - "hu-HU", - "ja-JP", - "ko-KR", - "no-NO", - "pl-PL", - "pt-BR", - "ro-RO", - "ru-RU", - "th-TH", - "tr-TR", - "uk-UA", - "vi-VN", - "zh-CN", - "zh-HK" - ] -} diff --git a/apps/admin/README.md b/apps/admin/README.md index b463a21..37dc8b5 100644 --- a/apps/admin/README.md +++ b/apps/admin/README.md @@ -65,11 +65,11 @@ git clone https://github.com/perfect-panel/ppanel-web.git cd ppanel-web # Install dependencies -pnpm install +bun install # Run the development server cd apps/admin -pnpm dev +bun dev ``` Open with your browser to see the result. diff --git a/apps/admin/README.zh-CN.md b/apps/admin/README.zh-CN.md index c8f8433..f7aab82 100644 --- a/apps/admin/README.zh-CN.md +++ b/apps/admin/README.zh-CN.md @@ -65,11 +65,11 @@ git clone https://github.com/perfect-panel/ppanel-web.git cd ppanel-web # 安装依赖 -pnpm install +bun install # 运行开发服务器 cd apps/admin -pnpm dev +bun dev ``` 在浏览器中打开 查看结果。 diff --git a/apps/admin/app/(auth)/page.tsx b/apps/admin/app/(auth)/page.tsx index 2917549..a2098e5 100644 --- a/apps/admin/app/(auth)/page.tsx +++ b/apps/admin/app/(auth)/page.tsx @@ -1,13 +1,13 @@ 'use client'; import LanguageSwitch from '@/components/language-switch'; +import ThemeSwitch from '@/components/theme-switch'; import useGlobalStore from '@/config/use-global'; -import { LoginIcon } from '@repo/ui/lotties'; +import { DotLottieReact } from '@lottiefiles/dotlottie-react'; +import LoginLottie from '@workspace/ui/lotties/login.json'; import { useTranslations } from 'next-intl'; import Image from 'next/legacy/image'; import Link from 'next/link'; - -import ThemeSwitch from '@/components/theme-switch'; import UserAuthForm from './user-auth-form'; export default function Page() { @@ -30,7 +30,12 @@ export default function Page() { /> {site.site_name} - +

{site.site_desc}

diff --git a/apps/admin/app/(auth)/turnstile.tsx b/apps/admin/app/(auth)/turnstile.tsx index eea4a18..d4a8d47 100644 --- a/apps/admin/app/(auth)/turnstile.tsx +++ b/apps/admin/app/(auth)/turnstile.tsx @@ -1,12 +1,11 @@ 'use client'; +import useGlobalStore from '@/config/use-global'; import { useLocale } from 'next-intl'; import { useTheme } from 'next-themes'; import { useEffect } from 'react'; import Turnstile, { useTurnstile } from 'react-turnstile'; -import useGlobalStore from '@/config/use-global'; - export default function CloudFlareTurnstile({ id, value, diff --git a/apps/admin/app/(auth)/user-auth-form.tsx b/apps/admin/app/(auth)/user-auth-form.tsx index d02b384..08ee430 100644 --- a/apps/admin/app/(auth)/user-auth-form.tsx +++ b/apps/admin/app/(auth)/user-auth-form.tsx @@ -7,10 +7,10 @@ import { import useGlobalStore from '@/config/use-global'; import { checkUser, resetPassword, userLogin, userRegister } from '@/services/common/auth'; import { getRedirectUrl, setAuthorization } from '@/utils/common'; -import { toast } from '@shadcn/ui/lib/sonner'; import { useTranslations } from 'next-intl'; import { useRouter } from 'next/navigation'; import { ReactNode, useState, useTransition } from 'react'; +import { toast } from 'sonner'; import UserCheckForm from './user-check-form'; import UserLoginForm from './user-login-form'; import UserRegisterForm from './user-register-form'; diff --git a/apps/admin/app/(auth)/user-check-form.tsx b/apps/admin/app/(auth)/user-check-form.tsx index fdaa0bf..24652a0 100644 --- a/apps/admin/app/(auth)/user-check-form.tsx +++ b/apps/admin/app/(auth)/user-check-form.tsx @@ -1,11 +1,12 @@ +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; +import { Button } from '@workspace/ui/components/button'; +import { Form, FormControl, FormField, FormItem, FormMessage } from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; import { useTranslations } from 'next-intl'; import { useEffect, useRef, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; export default function UserCheckForm({ loading, diff --git a/apps/admin/app/(auth)/user-login-form.tsx b/apps/admin/app/(auth)/user-login-form.tsx index b59f89a..e2e6641 100644 --- a/apps/admin/app/(auth)/user-login-form.tsx +++ b/apps/admin/app/(auth)/user-login-form.tsx @@ -1,12 +1,13 @@ import useGlobalStore from '@/config/use-global'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; +import { Button } from '@workspace/ui/components/button'; +import { Form, FormControl, FormField, FormItem, FormMessage } from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; import { useTranslations } from 'next-intl'; import { Dispatch, SetStateAction } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; import CloudFlareTurnstile from './turnstile'; export default function UserLoginForm({ diff --git a/apps/admin/app/(auth)/user-register-form.tsx b/apps/admin/app/(auth)/user-register-form.tsx index da297fe..190f948 100644 --- a/apps/admin/app/(auth)/user-register-form.tsx +++ b/apps/admin/app/(auth)/user-register-form.tsx @@ -1,15 +1,16 @@ import useGlobalStore from '@/config/use-global'; import { sendEmailCode } from '@/services/common/common'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Markdown } from '@repo/ui/markdown'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; +import { Button } from '@workspace/ui/components/button'; +import { Form, FormControl, FormField, FormItem, FormMessage } from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; +import { Markdown } from '@workspace/ui/custom-components/markdown'; import { useCountDown } from 'ahooks'; import { useTranslations } from 'next-intl'; import { Dispatch, SetStateAction, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; import CloudFlareTurnstile from './turnstile'; export default function UserRegisterForm({ diff --git a/apps/admin/app/(auth)/user-reset-form.tsx b/apps/admin/app/(auth)/user-reset-form.tsx index 0fc1260..c53bc9f 100644 --- a/apps/admin/app/(auth)/user-reset-form.tsx +++ b/apps/admin/app/(auth)/user-reset-form.tsx @@ -1,14 +1,15 @@ import useGlobalStore from '@/config/use-global'; import { sendEmailCode } from '@/services/common/common'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; +import { Button } from '@workspace/ui/components/button'; +import { Form, FormControl, FormField, FormItem, FormMessage } from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; import { useCountDown } from 'ahooks'; import { useTranslations } from 'next-intl'; import { Dispatch, SetStateAction, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; import CloudFlareTurnstile from './turnstile'; export default function UserResetForm({ diff --git a/apps/admin/app/dashboard/announcement/notice-form.tsx b/apps/admin/app/dashboard/announcement/notice-form.tsx index 9bdb7c7..8d3c152 100644 --- a/apps/admin/app/dashboard/announcement/notice-form.tsx +++ b/apps/admin/app/dashboard/announcement/notice-form.tsx @@ -1,11 +1,16 @@ +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { MarkdownEditor } from '@repo/ui/editor'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -13,9 +18,12 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; +} from '@workspace/ui/components/sheet'; +import { MarkdownEditor } from '@workspace/ui/custom-components/editor'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; const formSchema = z.object({ title: z.string(), diff --git a/apps/admin/app/dashboard/announcement/page.tsx b/apps/admin/app/dashboard/announcement/page.tsx index ded74d8..c53bf7e 100644 --- a/apps/admin/app/dashboard/announcement/page.tsx +++ b/apps/admin/app/dashboard/announcement/page.tsx @@ -1,20 +1,19 @@ 'use client'; +import { ProTable, ProTableActions } from '@/components/pro-table'; import { createAnnouncement, deleteAnnouncement, getAnnouncementList, updateAnnouncement, } from '@/services/admin/announcement'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { format } from '@shadcn/ui/lib/date-fns'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { format } from 'date-fns'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; - -import { ProTable, ProTableActions } from '@/components/pro-table'; -import { Button } from '@shadcn/ui/button'; +import { toast } from 'sonner'; import NoticeForm from './notice-form'; export default function Page() { diff --git a/apps/admin/app/dashboard/coupon/coupon-form.tsx b/apps/admin/app/dashboard/coupon/coupon-form.tsx index 57c3399..1969a42 100644 --- a/apps/admin/app/dashboard/coupon/coupon-form.tsx +++ b/apps/admin/app/dashboard/coupon/coupon-form.tsx @@ -1,17 +1,20 @@ 'use client'; import { getSubscribeList } from '@/services/admin/subscribe'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Combobox } from '@repo/ui/combobox'; -import { DatePicker } from '@repo/ui/date-picker'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { RadioGroup, RadioGroupItem } from '@shadcn/ui/radio-group'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { useQuery } from '@tanstack/react-query'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { RadioGroup, RadioGroupItem } from '@workspace/ui/components/radio-group'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -19,10 +22,15 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/sheet'; +import { Combobox } from '@workspace/ui/custom-components/combobox'; +import { DatePicker } from '@workspace/ui/custom-components/date-picker'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; const formSchema = z.object({ name: z.string(), diff --git a/apps/admin/app/dashboard/coupon/page.tsx b/apps/admin/app/dashboard/coupon/page.tsx index eb54214..0ee0c87 100644 --- a/apps/admin/app/dashboard/coupon/page.tsx +++ b/apps/admin/app/dashboard/coupon/page.tsx @@ -10,15 +10,15 @@ import { updateCoupon, } from '@/services/admin/coupon'; import { getSubscribeList } from '@/services/admin/subscribe'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate } from '@repo/ui/utils'; -import { Badge } from '@shadcn/ui/badge'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; import { useQuery } from '@tanstack/react-query'; +import { Badge } from '@workspace/ui/components/badge'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import CouponForm from './coupon-form'; export default function Page() { diff --git a/apps/admin/app/dashboard/document/document-form.tsx b/apps/admin/app/dashboard/document/document-form.tsx index dd563c5..5cfdf3a 100644 --- a/apps/admin/app/dashboard/document/document-form.tsx +++ b/apps/admin/app/dashboard/document/document-form.tsx @@ -1,12 +1,16 @@ +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { MarkdownEditor } from '@repo/ui/editor'; -import { TagInput } from '@repo/ui/tag-input'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { Input } from '@shadcn/ui/input'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { Input } from '@workspace/ui/components/input'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -14,9 +18,13 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; +} from '@workspace/ui/components/sheet'; +import { MarkdownEditor } from '@workspace/ui/custom-components/editor'; +import { TagInput } from '@workspace/ui/custom-components/tag-input'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; const formSchema = z.object({ title: z.string(), diff --git a/apps/admin/app/dashboard/document/page.tsx b/apps/admin/app/dashboard/document/page.tsx index 16ef972..a45f68f 100644 --- a/apps/admin/app/dashboard/document/page.tsx +++ b/apps/admin/app/dashboard/document/page.tsx @@ -8,13 +8,13 @@ import { getDocumentList, updateDocument, } from '@/services/admin/document'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import DocumentForm from './document-form'; export default function Page() { diff --git a/apps/admin/app/dashboard/layout.tsx b/apps/admin/app/dashboard/layout.tsx index e6e8736..e3543ee 100644 --- a/apps/admin/app/dashboard/layout.tsx +++ b/apps/admin/app/dashboard/layout.tsx @@ -1,6 +1,6 @@ import { Header } from '@/components/header'; import { SidebarLeft } from '@/components/sidebar-left'; -import { SidebarInset, SidebarProvider } from '@shadcn/ui/sidebar'; +import { SidebarInset, SidebarProvider } from '@workspace/ui/components/sidebar'; import { cookies } from 'next/headers'; export default async function DashboardLayout({ children }: { children: React.ReactNode }) { diff --git a/apps/admin/app/dashboard/order/page.tsx b/apps/admin/app/dashboard/order/page.tsx index 572c574..8b2b24d 100644 --- a/apps/admin/app/dashboard/order/page.tsx +++ b/apps/admin/app/dashboard/order/page.tsx @@ -8,13 +8,13 @@ import { Display } from '@/components/display'; import { ProTable, ProTableActions } from '@/components/pro-table'; import { getOrderList, updateOrderStatus } from '@/services/admin/order'; import { getSubscribeList } from '@/services/admin/subscribe'; -import { Combobox } from '@repo/ui/combobox'; -import { formatDate } from '@repo/ui/utils'; -import { Badge } from '@shadcn/ui/badge'; -import { Button } from '@shadcn/ui/button'; -import { HoverCard, HoverCardContent, HoverCardTrigger } from '@shadcn/ui/hover-card'; -import { cn } from '@shadcn/ui/lib/utils'; -import { Separator } from '@shadcn/ui/separator'; +import { Badge } from '@workspace/ui/components/badge'; +import { Button } from '@workspace/ui/components/button'; +import { HoverCard, HoverCardContent, HoverCardTrigger } from '@workspace/ui/components/hover-card'; +import { Separator } from '@workspace/ui/components/separator'; +import { Combobox } from '@workspace/ui/custom-components/combobox'; +import { cn } from '@workspace/ui/lib/utils'; +import { formatDate } from '@workspace/ui/utils'; import { UserDetail } from '../user/user-detail'; export default function Page() { diff --git a/apps/admin/app/dashboard/payment/alipayf2f.tsx b/apps/admin/app/dashboard/payment/alipayf2f.tsx index fd01735..51c5849 100644 --- a/apps/admin/app/dashboard/payment/alipayf2f.tsx +++ b/apps/admin/app/dashboard/payment/alipayf2f.tsx @@ -1,10 +1,8 @@ 'use client'; import { getAlipayF2FPaymentConfig, updateAlipayF2FPaymentConfig } from '@/services/admin/payment'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, @@ -12,12 +10,14 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@shadcn/ui/select'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { Textarea } from '@shadcn/ui/textarea'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/select'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { Textarea } from '@workspace/ui/components/textarea'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function AlipayF2F() { const t = useTranslations('payment'); diff --git a/apps/admin/app/dashboard/payment/epay.tsx b/apps/admin/app/dashboard/payment/epay.tsx index 2dd98c1..bcd1528 100644 --- a/apps/admin/app/dashboard/payment/epay.tsx +++ b/apps/admin/app/dashboard/payment/epay.tsx @@ -1,10 +1,8 @@ 'use client'; import { getEpayPaymentConfig, updateEpayPaymentConfig } from '@/services/admin/payment'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, @@ -12,11 +10,13 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@shadcn/ui/select'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/select'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Epay() { const t = useTranslations('payment'); diff --git a/apps/admin/app/dashboard/payment/page.tsx b/apps/admin/app/dashboard/payment/page.tsx index 4ba3a51..9e5b5cc 100644 --- a/apps/admin/app/dashboard/payment/page.tsx +++ b/apps/admin/app/dashboard/payment/page.tsx @@ -1,5 +1,5 @@ import Billing from '@/components/billing'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import AlipayF2F from './alipayf2f'; import Epay from './epay'; import StripeAlipay from './stripe-alipay'; diff --git a/apps/admin/app/dashboard/payment/stripe-alipay.tsx b/apps/admin/app/dashboard/payment/stripe-alipay.tsx index cb6fba2..45de674 100644 --- a/apps/admin/app/dashboard/payment/stripe-alipay.tsx +++ b/apps/admin/app/dashboard/payment/stripe-alipay.tsx @@ -4,10 +4,8 @@ import { getStripeAlipayPaymentConfig, updateStripeAlipayPaymentConfig, } from '@/services/admin/payment'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, @@ -15,11 +13,13 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@shadcn/ui/select'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/select'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Stripe() { const t = useTranslations('payment'); diff --git a/apps/admin/app/dashboard/payment/stripe-wechat-pay.tsx b/apps/admin/app/dashboard/payment/stripe-wechat-pay.tsx index 64a8d28..ce7c088 100644 --- a/apps/admin/app/dashboard/payment/stripe-wechat-pay.tsx +++ b/apps/admin/app/dashboard/payment/stripe-wechat-pay.tsx @@ -4,10 +4,8 @@ import { getStripeWeChatPayPaymentConfig, updateStripeWeChatPayPaymentConfig, } from '@/services/admin/payment'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, @@ -15,11 +13,13 @@ import { SelectItem, SelectTrigger, SelectValue, -} from '@shadcn/ui/select'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/select'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function StripeWeChatPay() { const t = useTranslations('payment'); diff --git a/apps/admin/app/dashboard/server/form-schema.ts b/apps/admin/app/dashboard/server/form-schema.ts index 18cfc28..d19232d 100644 --- a/apps/admin/app/dashboard/server/form-schema.ts +++ b/apps/admin/app/dashboard/server/form-schema.ts @@ -1,4 +1,4 @@ -import { z } from '@shadcn/ui/lib/zod'; +import { z } from 'zod'; export const protocols = ['shadowsocks', 'vmess', 'vless', 'trojan', 'hysteria2', 'tuic']; diff --git a/apps/admin/app/dashboard/server/group-form.tsx b/apps/admin/app/dashboard/server/group-form.tsx index 82cfa7a..c2579ac 100644 --- a/apps/admin/app/dashboard/server/group-form.tsx +++ b/apps/admin/app/dashboard/server/group-form.tsx @@ -1,12 +1,17 @@ 'use client'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -14,9 +19,12 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; +} from '@workspace/ui/components/sheet'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; const formSchema = z.object({ name: z.string(), diff --git a/apps/admin/app/dashboard/server/group-table.tsx b/apps/admin/app/dashboard/server/group-table.tsx index d6745fe..0e72913 100644 --- a/apps/admin/app/dashboard/server/group-table.tsx +++ b/apps/admin/app/dashboard/server/group-table.tsx @@ -8,12 +8,12 @@ import { getNodeGroupList, updateNodeGroup, } from '@/services/admin/server'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { Button } from '@workspace/ui/components/button'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import GroupForm from './group-form'; export default function GroupTable() { diff --git a/apps/admin/app/dashboard/server/node-form.tsx b/apps/admin/app/dashboard/server/node-form.tsx index 3375e56..ab60bd6 100644 --- a/apps/admin/app/dashboard/server/node-form.tsx +++ b/apps/admin/app/dashboard/server/node-form.tsx @@ -1,18 +1,27 @@ 'use client'; import { getNodeGroupList } from '@/services/admin/server'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Combobox } from '@repo/ui/combobox'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { Card, CardContent, CardHeader, CardTitle } from '@shadcn/ui/card'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { cn } from '@shadcn/ui/lib/utils'; -import { zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@shadcn/ui/select'; +import { useQuery } from '@tanstack/react-query'; +import { Button } from '@workspace/ui/components/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@workspace/ui/components/select'; import { Sheet, SheetContent, @@ -20,12 +29,16 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; -import { Switch } from '@shadcn/ui/switch'; -import { Tabs, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/sheet'; +import { Switch } from '@workspace/ui/components/switch'; +import { Tabs, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; +import { Combobox } from '@workspace/ui/custom-components/combobox'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { cn } from '@workspace/ui/lib/utils'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; import { formSchema, protocols } from './form-schema'; interface NodeFormProps { diff --git a/apps/admin/app/dashboard/server/node-status.tsx b/apps/admin/app/dashboard/server/node-status.tsx index 728ee5a..379af22 100644 --- a/apps/admin/app/dashboard/server/node-status.tsx +++ b/apps/admin/app/dashboard/server/node-status.tsx @@ -1,10 +1,15 @@ 'use client'; -import { formatDate } from '@repo/ui/utils'; -import { Badge } from '@shadcn/ui/badge'; -import { Progress } from '@shadcn/ui/progress'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@shadcn/ui/tooltip'; +import { Badge } from '@workspace/ui/components/badge'; +import { Progress } from '@workspace/ui/components/progress'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from '@workspace/ui/components/tooltip'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; export function formatPercentage(value: number): string { diff --git a/apps/admin/app/dashboard/server/node-table.tsx b/apps/admin/app/dashboard/server/node-table.tsx index cd5db2d..b1f8c3b 100644 --- a/apps/admin/app/dashboard/server/node-table.tsx +++ b/apps/admin/app/dashboard/server/node-table.tsx @@ -11,16 +11,21 @@ import { nodeSort, updateNode, } from '@/services/admin/server'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { Badge } from '@shadcn/ui/badge'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { cn } from '@shadcn/ui/lib/utils'; -import { Switch } from '@shadcn/ui/switch'; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@shadcn/ui/tooltip'; import { useQuery } from '@tanstack/react-query'; +import { Badge } from '@workspace/ui/components/badge'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from '@workspace/ui/components/tooltip'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { cn } from '@workspace/ui/lib/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import NodeForm from './node-form'; import { NodeStatusCell } from './node-status'; diff --git a/apps/admin/app/dashboard/server/page.tsx b/apps/admin/app/dashboard/server/page.tsx index 27b4415..def09ab 100644 --- a/apps/admin/app/dashboard/server/page.tsx +++ b/apps/admin/app/dashboard/server/page.tsx @@ -1,4 +1,4 @@ -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { getTranslations } from 'next-intl/server'; import GroupTable from './group-table'; diff --git a/apps/admin/app/dashboard/subscribe/group-form.tsx b/apps/admin/app/dashboard/subscribe/group-form.tsx index 8a1feb5..132476e 100644 --- a/apps/admin/app/dashboard/subscribe/group-form.tsx +++ b/apps/admin/app/dashboard/subscribe/group-form.tsx @@ -1,10 +1,15 @@ +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -12,9 +17,12 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; +} from '@workspace/ui/components/sheet'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; const formSchema = z.object({ name: z.string(), diff --git a/apps/admin/app/dashboard/subscribe/group-table.tsx b/apps/admin/app/dashboard/subscribe/group-table.tsx index b19dbbd..2f55047 100644 --- a/apps/admin/app/dashboard/subscribe/group-table.tsx +++ b/apps/admin/app/dashboard/subscribe/group-table.tsx @@ -8,12 +8,12 @@ import { getSubscribeGroupList, updateSubscribeGroup, } from '@/services/admin/subscribe'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { Button } from '@workspace/ui/components/button'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import GroupForm from './group-form'; const GroupTable = () => { diff --git a/apps/admin/app/dashboard/subscribe/page.tsx b/apps/admin/app/dashboard/subscribe/page.tsx index 0f7e2e6..989125d 100644 --- a/apps/admin/app/dashboard/subscribe/page.tsx +++ b/apps/admin/app/dashboard/subscribe/page.tsx @@ -1,6 +1,6 @@ import { getTranslations } from 'next-intl/server'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import GroupTable from './group-table'; import SubscribeTable from './subscribe-table'; diff --git a/apps/admin/app/dashboard/subscribe/subscribe-form.tsx b/apps/admin/app/dashboard/subscribe/subscribe-form.tsx index 3837645..f06b2d1 100644 --- a/apps/admin/app/dashboard/subscribe/subscribe-form.tsx +++ b/apps/admin/app/dashboard/subscribe/subscribe-form.tsx @@ -1,14 +1,16 @@ import { getNodeGroupList, getNodeList } from '@/services/admin/server'; import { getSubscribeGroupList } from '@/services/admin/subscribe'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { Combobox } from '@repo/ui/combobox'; -import { ArrayInput } from '@repo/ui/dynamic-Inputs'; -import { JSONEditor } from '@repo/ui/editor'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { evaluateWithPrecision, unitConversion } from '@repo/ui/utils'; -import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@shadcn/ui/accordion'; -import { Button } from '@shadcn/ui/button'; -import { Checkbox } from '@shadcn/ui/checkbox'; +import { useQuery } from '@tanstack/react-query'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from '@workspace/ui/components/accordion'; +import { Button } from '@workspace/ui/components/button'; +import { Checkbox } from '@workspace/ui/components/checkbox'; import { Form, FormControl, @@ -17,11 +19,9 @@ import { FormItem, FormLabel, FormMessage, -} from '@shadcn/ui/form'; -import { Label } from '@shadcn/ui/label'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +} from '@workspace/ui/components/form'; +import { Label } from '@workspace/ui/components/label'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -29,11 +29,17 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/sheet'; +import { Combobox } from '@workspace/ui/custom-components/combobox'; +import { ArrayInput } from '@workspace/ui/custom-components/dynamic-Inputs'; +import { JSONEditor } from '@workspace/ui/custom-components/editor'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { evaluateWithPrecision, unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { assign, shake } from 'radash'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; interface SubscribeFormProps { onSubmit: (data: T) => Promise | boolean; diff --git a/apps/admin/app/dashboard/subscribe/subscribe-table.tsx b/apps/admin/app/dashboard/subscribe/subscribe-table.tsx index c0ef8fe..496f45d 100644 --- a/apps/admin/app/dashboard/subscribe/subscribe-table.tsx +++ b/apps/admin/app/dashboard/subscribe/subscribe-table.tsx @@ -11,14 +11,14 @@ import { subscribeSort, updateSubscribe, } from '@/services/admin/subscribe'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { Badge } from '@shadcn/ui/badge'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; import { useQuery } from '@tanstack/react-query'; +import { Badge } from '@workspace/ui/components/badge'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import SubscribeForm from './subscribe-form'; export default function SubscribeTable() { diff --git a/apps/admin/app/dashboard/system/currency.tsx b/apps/admin/app/dashboard/system/currency.tsx index 5fd2276..e5689cf 100644 --- a/apps/admin/app/dashboard/system/currency.tsx +++ b/apps/admin/app/dashboard/system/currency.tsx @@ -1,12 +1,12 @@ 'use client'; import { getCurrencyConfig, updateCurrencyConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Site() { const t = useTranslations('system.currency'); diff --git a/apps/admin/app/dashboard/system/email.tsx b/apps/admin/app/dashboard/system/email.tsx index 2a8b2dd..dd3dae6 100644 --- a/apps/admin/app/dashboard/system/email.tsx +++ b/apps/admin/app/dashboard/system/email.tsx @@ -1,16 +1,16 @@ 'use client'; import { getEmailSmtpConfig, testEmailSmtp, updateEmailSmtpConfig } from '@/services/admin/system'; -import { HTMLEditor } from '@repo/ui/editor'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Button } from '@shadcn/ui/button'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Button } from '@workspace/ui/components/button'; +import { Label } from '@workspace/ui/components/label'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { HTMLEditor } from '@workspace/ui/custom-components/editor'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; +import { toast } from 'sonner'; export default function Email() { const t = useTranslations('system.email'); diff --git a/apps/admin/app/dashboard/system/invite.tsx b/apps/admin/app/dashboard/system/invite.tsx index f3b1739..66ea027 100644 --- a/apps/admin/app/dashboard/system/invite.tsx +++ b/apps/admin/app/dashboard/system/invite.tsx @@ -1,13 +1,13 @@ 'use client'; import { getInviteConfig, updateInviteConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Invite() { const t = useTranslations('system.invite'); diff --git a/apps/admin/app/dashboard/system/node.tsx b/apps/admin/app/dashboard/system/node.tsx index 239b503..486826e 100644 --- a/apps/admin/app/dashboard/system/node.tsx +++ b/apps/admin/app/dashboard/system/node.tsx @@ -2,13 +2,13 @@ import { getNodeConfig, updateNodeConfig } from '@/services/admin/system'; import { Icon } from '@iconify/react'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { nanoid } from 'nanoid'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Node() { const t = useTranslations('system.node'); diff --git a/apps/admin/app/dashboard/system/page.tsx b/apps/admin/app/dashboard/system/page.tsx index fc41d38..1c38d82 100644 --- a/apps/admin/app/dashboard/system/page.tsx +++ b/apps/admin/app/dashboard/system/page.tsx @@ -1,4 +1,4 @@ -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { getTranslations } from 'next-intl/server'; import Currency from './currency'; diff --git a/apps/admin/app/dashboard/system/register.tsx b/apps/admin/app/dashboard/system/register.tsx index ab12df3..89748bc 100644 --- a/apps/admin/app/dashboard/system/register.tsx +++ b/apps/admin/app/dashboard/system/register.tsx @@ -1,14 +1,14 @@ 'use client'; import { getRegisterConfig, updateRegisterConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { Textarea } from '@shadcn/ui/textarea'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { Textarea } from '@workspace/ui/components/textarea'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Register() { const t = useTranslations('system.register'); diff --git a/apps/admin/app/dashboard/system/site.tsx b/apps/admin/app/dashboard/system/site.tsx index baacca3..e9b1881 100644 --- a/apps/admin/app/dashboard/system/site.tsx +++ b/apps/admin/app/dashboard/system/site.tsx @@ -1,13 +1,13 @@ 'use client'; import { getSiteConfig, updateSiteConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { Textarea } from '@shadcn/ui/textarea'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { Textarea } from '@workspace/ui/components/textarea'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Site() { const t = useTranslations('system.site'); diff --git a/apps/admin/app/dashboard/system/subscription.tsx b/apps/admin/app/dashboard/system/subscription.tsx index b24c12c..20793bc 100644 --- a/apps/admin/app/dashboard/system/subscription.tsx +++ b/apps/admin/app/dashboard/system/subscription.tsx @@ -1,9 +1,9 @@ 'use client'; -import { toast } from '@shadcn/ui/lib/sonner'; import { useQuery } from '@tanstack/react-query'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { toast } from 'sonner'; import { createApplication, @@ -14,14 +14,20 @@ import { updateApplication, updateSubscribeConfig, } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Button } from '@shadcn/ui/button'; -import { Label } from '@shadcn/ui/label'; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@shadcn/ui/select'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@shadcn/ui/tabs'; -import { Textarea } from '@shadcn/ui/textarea'; +import { Button } from '@workspace/ui/components/button'; +import { Label } from '@workspace/ui/components/label'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@workspace/ui/components/select'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; +import { Textarea } from '@workspace/ui/components/textarea'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; function compareData( originalData: API.ApplicationResponse, @@ -124,7 +130,7 @@ export default function Subscription() { }, }); const [app, setApp] = useState(); - const appTypes = Object.keys(apps || {}); + const appTypes = Object.keys(apps || {}) as (keyof API.ApplicationResponse)[]; useEffect(() => { if (!app) setApp(apps); @@ -246,7 +252,7 @@ export default function Subscription() { })} {appTypes.map((type) => { - const list = (app?.[type] as API.Application[]) || []; + const list = (app?.[type] || []) as API.Application[]; const updatedList = (key: string, value: string, index: number) => { const newList = list.map((item, i) => (i === index ? { ...item, [key]: value } : item)); diff --git a/apps/admin/app/dashboard/system/telegram.tsx b/apps/admin/app/dashboard/system/telegram.tsx index 82c2ba2..11ceb1d 100644 --- a/apps/admin/app/dashboard/system/telegram.tsx +++ b/apps/admin/app/dashboard/system/telegram.tsx @@ -1,13 +1,13 @@ 'use client'; import { getTelegramConfig, updateTelegramConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Telegram() { const t = useTranslations('system.telegram'); diff --git a/apps/admin/app/dashboard/system/tos.tsx b/apps/admin/app/dashboard/system/tos.tsx index a15b90b..8e33b76 100644 --- a/apps/admin/app/dashboard/system/tos.tsx +++ b/apps/admin/app/dashboard/system/tos.tsx @@ -1,10 +1,10 @@ 'use client'; import { getTosConfig, updateTosConfig } from '@/services/admin/system'; -import { MarkdownEditor } from '@repo/ui/editor'; -import { toast } from '@shadcn/ui/lib/sonner'; import { useQuery } from '@tanstack/react-query'; +import { MarkdownEditor } from '@workspace/ui/custom-components/editor'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Tos() { const t = useTranslations('system.tos'); diff --git a/apps/admin/app/dashboard/system/verify.tsx b/apps/admin/app/dashboard/system/verify.tsx index 58e88c1..2285c55 100644 --- a/apps/admin/app/dashboard/system/verify.tsx +++ b/apps/admin/app/dashboard/system/verify.tsx @@ -1,13 +1,13 @@ 'use client'; import { getVerifyConfig, updateVerifyConfig } from '@/services/admin/system'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; -import { Table, TableBody, TableCell, TableRow } from '@shadcn/ui/table'; import { useQuery } from '@tanstack/react-query'; +import { Label } from '@workspace/ui/components/label'; +import { Switch } from '@workspace/ui/components/switch'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; export default function Verify() { const t = useTranslations('system.verify'); diff --git a/apps/admin/app/dashboard/ticket/page.tsx b/apps/admin/app/dashboard/ticket/page.tsx index d643f11..0de47f9 100644 --- a/apps/admin/app/dashboard/ticket/page.tsx +++ b/apps/admin/app/dashboard/ticket/page.tsx @@ -8,9 +8,8 @@ import { updateTicketStatus, } from '@/services/admin/ticket'; import { Icon } from '@iconify/react'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; +import { useQuery } from '@tanstack/react-query'; +import { Button } from '@workspace/ui/components/button'; import { Drawer, DrawerContent, @@ -18,16 +17,17 @@ import { DrawerFooter, DrawerHeader, DrawerTitle, -} from '@shadcn/ui/drawer'; -import { Input } from '@shadcn/ui/input'; -import { Label } from '@shadcn/ui/label'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { cn } from '@shadcn/ui/lib/utils'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/drawer'; +import { Input } from '@workspace/ui/components/input'; +import { Label } from '@workspace/ui/components/label'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { cn } from '@workspace/ui/lib/utils'; +import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import NextImage from 'next/legacy/image'; import { useEffect, useRef, useState } from 'react'; +import { toast } from 'sonner'; import { UserDetail } from '../user/user-detail'; export default function Page() { diff --git a/apps/admin/app/dashboard/tool/page.tsx b/apps/admin/app/dashboard/tool/page.tsx index 044dc48..3b0c5a3 100644 --- a/apps/admin/app/dashboard/tool/page.tsx +++ b/apps/admin/app/dashboard/tool/page.tsx @@ -2,7 +2,13 @@ import { getSystemLog, restartSystem } from '@/services/admin/tool'; import { Icon } from '@iconify/react'; -import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@shadcn/ui/accordion'; +import { useQuery } from '@tanstack/react-query'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from '@workspace/ui/components/accordion'; import { AlertDialog, AlertDialogAction, @@ -13,12 +19,17 @@ import { AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, -} from '@shadcn/ui/alert-dialog'; -import { Badge } from '@shadcn/ui/badge'; -import { Button } from '@shadcn/ui/button'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@shadcn/ui/card'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; -import { useQuery } from '@tanstack/react-query'; +} from '@workspace/ui/components/alert-dialog'; +import { Badge } from '@workspace/ui/components/badge'; +import { Button } from '@workspace/ui/components/button'; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from '@workspace/ui/components/card'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; @@ -31,7 +42,7 @@ const getLogLevelColor = (level: string) => { return colorMap[level] || 'bg-gray-100 text-gray-800 hover:bg-gray-200'; }; -export default function page() { +export default function Page() { const t = useTranslations('tool'); const { data: logs, @@ -131,7 +142,7 @@ export default function page() { ) : ( - {logs?.map((log, index) => ( + {logs?.map((log: any, index: number) => (
diff --git a/apps/admin/app/dashboard/user/page.tsx b/apps/admin/app/dashboard/user/page.tsx index fc9054e..26d135e 100644 --- a/apps/admin/app/dashboard/user/page.tsx +++ b/apps/admin/app/dashboard/user/page.tsx @@ -2,13 +2,13 @@ import { ProTable, ProTableActions } from '@/components/pro-table'; import { createUser, deleteUser, getUserList, updateUser } from '@/services/admin/user'; -import { ConfirmButton } from '@repo/ui/confirm-button'; -import { formatDate, unitConversion } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { toast } from '@shadcn/ui/lib/sonner'; -import { Switch } from '@shadcn/ui/switch'; +import { Button } from '@workspace/ui/components/button'; +import { Switch } from '@workspace/ui/components/switch'; +import { ConfirmButton } from '@workspace/ui/custom-components/confirm-button'; +import { formatDate, unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useRef, useState } from 'react'; +import { toast } from 'sonner'; import { UserDetail } from './user-detail'; import UserForm from './user-form'; @@ -18,7 +18,7 @@ export default function Page() { const ref = useRef(null); return ( - + > action={ref} header={{ title: t('userList'), diff --git a/apps/admin/app/dashboard/user/user-detail.tsx b/apps/admin/app/dashboard/user/user-detail.tsx index 652dbfb..bfd3c56 100644 --- a/apps/admin/app/dashboard/user/user-detail.tsx +++ b/apps/admin/app/dashboard/user/user-detail.tsx @@ -1,10 +1,10 @@ 'use client'; import { getUserDetail } from '@/services/admin/user'; -import { formatDate, unitConversion } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { HoverCard, HoverCardContent, HoverCardTrigger } from '@shadcn/ui/hover-card'; import { useQuery } from '@tanstack/react-query'; +import { Button } from '@workspace/ui/components/button'; +import { HoverCard, HoverCardContent, HoverCardTrigger } from '@workspace/ui/components/hover-card'; +import { formatDate, unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; diff --git a/apps/admin/app/dashboard/user/user-form.tsx b/apps/admin/app/dashboard/user/user-form.tsx index ab3a242..3e96c87 100644 --- a/apps/admin/app/dashboard/user/user-form.tsx +++ b/apps/admin/app/dashboard/user/user-form.tsx @@ -1,13 +1,17 @@ 'use client'; +import { zodResolver } from '@hookform/resolvers/zod'; import { Icon } from '@iconify/react'; -import { EnhancedInput } from '@repo/ui/enhanced-input'; -import { unitConversion } from '@repo/ui/utils'; -import { Button } from '@shadcn/ui/button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@shadcn/ui/form'; -import { useForm } from '@shadcn/ui/lib/react-hook-form'; -import { z, zodResolver } from '@shadcn/ui/lib/zod'; -import { ScrollArea } from '@shadcn/ui/scroll-area'; +import { Button } from '@workspace/ui/components/button'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@workspace/ui/components/form'; +import { ScrollArea } from '@workspace/ui/components/scroll-area'; import { Sheet, SheetContent, @@ -15,10 +19,14 @@ import { SheetHeader, SheetTitle, SheetTrigger, -} from '@shadcn/ui/sheet'; -import { Switch } from '@shadcn/ui/switch'; +} from '@workspace/ui/components/sheet'; +import { Switch } from '@workspace/ui/components/switch'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { unitConversion } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; interface UserFormProps { onSubmit: (data: T) => Promise | boolean; @@ -68,7 +76,6 @@ export default function UserForm>({ diff --git a/apps/user/components/user-nav.tsx b/apps/user/components/user-nav.tsx index 352f529..6237557 100644 --- a/apps/user/components/user-nav.tsx +++ b/apps/user/components/user-nav.tsx @@ -4,8 +4,8 @@ import { navs } from '@/config/navs'; import useGlobalStore from '@/config/use-global'; import { Logout } from '@/utils/common'; import { Icon } from '@iconify/react'; -import { Avatar, AvatarFallback, AvatarImage } from '@shadcn/ui/avatar'; -import { Button } from '@shadcn/ui/button'; +import { Avatar, AvatarFallback, AvatarImage } from '@workspace/ui/components/avatar'; +import { Button } from '@workspace/ui/components/button'; import { DropdownMenu, DropdownMenuContent, @@ -14,7 +14,7 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from '@shadcn/ui/dropdown-menu'; +} from '@workspace/ui/components/dropdown-menu'; import { useTranslations } from 'next-intl'; import { useRouter } from 'next/navigation'; diff --git a/apps/user/config/constants.ts b/apps/user/config/constants.ts index 64e1932..5f1c39c 100644 --- a/apps/user/config/constants.ts +++ b/apps/user/config/constants.ts @@ -1,7 +1,8 @@ import { env } from 'next-runtime-env'; -import i18nConfig from '../.i18nrc.json'; +import packageJSON from '../package.json'; -export const locales = i18nConfig.outputLocales; +export const locales = packageJSON.i18n.outputLocales; +export const defaultLocale = packageJSON.i18n.entry; export const NEXT_PUBLIC_DEFAULT_LANGUAGE = env('NEXT_PUBLIC_DEFAULT_LANGUAGE') || locales[0]; diff --git a/apps/user/config/fonts/GeistMonoVF.woff b/apps/user/config/fonts/GeistMonoVF.woff deleted file mode 100644 index f2ae185cbfd16946a534d819e9eb03924abbcc49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67864 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ϣ%UY8`RWp~V-U_7 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 CLkb=M diff --git a/apps/user/config/fonts/GeistVF.woff b/apps/user/config/fonts/GeistVF.woff deleted file mode 100644 index 1b62daacff96dad6584e71cd962051b82957c313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66268 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 >-Aun5A4Gp>4U0IQJ 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 G)cz05(PHWV diff --git a/apps/user/config/fonts/index.ts b/apps/user/config/fonts/index.ts deleted file mode 100644 index bb4e724..0000000 --- a/apps/user/config/fonts/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import localFont from 'next/font/local'; - -export const geistSans = localFont({ - src: './GeistVF.woff', - variable: '--font-geist-sans', - weight: '100 900', -}); -export const geistMono = localFont({ - src: './GeistMonoVF.woff', - variable: '--font-geist-mono', - weight: '100 900', -}); diff --git a/apps/user/config/use-global.tsx b/apps/user/config/use-global.tsx index d3861b2..09fadf7 100644 --- a/apps/user/config/use-global.tsx +++ b/apps/user/config/use-global.tsx @@ -1,6 +1,6 @@ import { NEXT_PUBLIC_API_URL, NEXT_PUBLIC_SITE_URL } from '@/config/constants'; import { queryUserInfo } from '@/services/user/user'; -import { extractDomain } from '@repo/ui/utils'; +import { extractDomain } from '@workspace/ui/utils'; import { create } from 'zustand'; export interface GlobalStore { diff --git a/apps/user/eslint.config.js b/apps/user/eslint.config.js index 5de6854..2040d52 100644 --- a/apps/user/eslint.config.js +++ b/apps/user/eslint.config.js @@ -1,4 +1,4 @@ -import { nextJsConfig } from '@repo/eslint-config/next-js'; +import { nextJsConfig } from '@workspace/eslint-config/next-js'; /** @type {import("eslint").Linter.Config} */ export default [ diff --git a/apps/user/next.config.ts b/apps/user/next.config.ts index 5918282..9ecfd4c 100644 --- a/apps/user/next.config.ts +++ b/apps/user/next.config.ts @@ -4,7 +4,7 @@ import createNextIntlPlugin from 'next-intl/plugin'; const withNextIntl = createNextIntlPlugin('./locales/request.ts'); const nextConfig: NextConfig = { - transpilePackages: ['@shadcn/ui', '@repo/ui'], + transpilePackages: ['@workspace/ui'], output: 'standalone', images: { remotePatterns: [ diff --git a/apps/user/package.json b/apps/user/package.json index 986f7fe..4376623 100644 --- a/apps/user/package.json +++ b/apps/user/package.json @@ -4,27 +4,24 @@ "scripts": { "build": "next build", "dev": "next dev --turbopack -p 3001", - "lint": "next lint --max-warnings 0 && tsc --noEmit", + "lint": "next lint && tsc --noEmit", "locale": "lobe-i18n --with-md", "openapi": "openapi2ts", "start": "next start" }, "dependencies": { "@iconify/react": "^5.1.0", - "@repo/ui": "workspace:*", - "@shadcn/ui": "workspace:*", - "@stripe/react-stripe-js": "^3.1.0", - "@stripe/stripe-js": "^5.3.0", - "@tanstack/react-query": "^5.62.7", - "@tanstack/react-query-next-experimental": "^5.62.7", + "@stripe/react-stripe-js": "^3.1.1", + "@stripe/stripe-js": "^5.4.0", + "@tanstack/react-query": "^5.62.10", + "@tanstack/react-query-next-experimental": "^5.62.10", + "@workspace/ui": "workspace:*", "ahooks": "^3.8.4", "axios": "^1.7.9", - "crypto-js": "^4.2.0", - "framer-motion": "^11.14.4", - "lucide-react": "^0.468.0", - "mathjs": "^14.0.1", - "next": "^15.1.0", - "next-intl": "^3.26.1", + "framer-motion": "^11.15.0", + "lucide-react": "^0.469.0", + "next": "^15.1.2", + "next-intl": "^3.26.3", "next-runtime-env": "^3.2.2", "next-themes": "^0.4.4", "nextjs-toploader": "^3.7.15", @@ -39,13 +36,55 @@ "zustand": "^5.0.2" }, "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/typescript-config": "workspace:*", "@types/node": "^22.10.2", - "@types/react": "^19.0.1", + "@types/react": "^19.0.2", "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-dom": "^19.0.2", "@types/rtl-detect": "^1.0.3", + "@workspace/eslint-config": "workspace:*", + "@workspace/typescript-config": "workspace:*", "typescript": "^5.7.2" + }, + "i18n": { + "entry": "./locales/en-US", + "entryLocale": "en-US", + "output": "./locales", + "outputLocales": [ + "cs-CZ", + "de-DE", + "en-US", + "es-ES", + "es-MX", + "fa-IR", + "fi-FI", + "fr-FR", + "hi-IN", + "hu-HU", + "ja-JP", + "ko-KR", + "no-NO", + "pl-PL", + "pt-BR", + "ro-RO", + "ru-RU", + "th-TH", + "tr-TR", + "uk-UA", + "vi-VN", + "zh-CN", + "zh-HK" + ], + "modelName": "gpt-4o", + "experimental": { + "jsonMode": true + }, + "markdown": { + "entry": [ + "./README.md" + ], + "outputLocales": [ + "zh-CN" + ] + } } } diff --git a/apps/user/postcss.config.mjs b/apps/user/postcss.config.mjs index 2ef30fc..00b6e2f 100644 --- a/apps/user/postcss.config.mjs +++ b/apps/user/postcss.config.mjs @@ -1,9 +1 @@ -/** @type {import('postcss-load-config').Config} */ -const config = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; - -export default config; +export { default } from '@workspace/ui/postcss.config'; diff --git a/apps/user/tailwind.config.ts b/apps/user/tailwind.config.ts index bc1de27..4e1acc9 100644 --- a/apps/user/tailwind.config.ts +++ b/apps/user/tailwind.config.ts @@ -1,14 +1 @@ -import sharedConfig from '@shadcn/ui/tailwind.config'; -import type { Config } from 'tailwindcss'; - -const config: Config = { - ...sharedConfig, - content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - '../../packages/shadcn/src/components/**/*.{ts,tsx}', - '../../packages/ui/src/**/*.{ts,tsx}', - ], -}; -export default config; +export * from '@workspace/ui/tailwind.config'; diff --git a/apps/user/tsconfig.json b/apps/user/tsconfig.json index 0ab7d1a..d55015f 100644 --- a/apps/user/tsconfig.json +++ b/apps/user/tsconfig.json @@ -1,18 +1,23 @@ { "compilerOptions": { - "plugins": [{ "name": "next" }], "baseUrl": ".", "paths": { - "@/*": ["./*"] - } + "@/*": ["./*"], + "@workspace/ui/*": ["../../packages/ui/src/*"] + }, + "plugins": [ + { + "name": "next" + } + ] }, "exclude": ["node_modules"], - "extends": "@repo/typescript-config/nextjs.json", + "extends": "@workspace/typescript-config/nextjs.json", "include": [ "next-env.d.ts", + "next.config.mjs", "**/*.ts", "**/*.tsx", - "**/*.mjs", ".next/types/**/*.ts", "services/**/typings.d.ts" ] diff --git a/apps/user/utils/common.ts b/apps/user/utils/common.ts index b628919..80e268b 100644 --- a/apps/user/utils/common.ts +++ b/apps/user/utils/common.ts @@ -1,5 +1,5 @@ import { locales, NEXT_PUBLIC_DEFAULT_LANGUAGE } from '@/config/constants'; -import { isBrowser } from '@repo/ui/utils'; +import { isBrowser } from '@workspace/ui/utils'; import Cookies from 'universal-cookie'; const cookies = new Cookies(null, { diff --git a/apps/user/utils/request.ts b/apps/user/utils/request.ts index 77f7b5f..835ab4f 100644 --- a/apps/user/utils/request.ts +++ b/apps/user/utils/request.ts @@ -1,8 +1,8 @@ import { NEXT_PUBLIC_API_URL, NEXT_PUBLIC_SITE_URL } from '@/config/constants'; import { getTranslations } from '@/locales/utils'; -import { isBrowser } from '@repo/ui/utils'; -import { toast } from '@shadcn/ui/lib/sonner'; +import { isBrowser } from '@workspace/ui/utils'; import requset, { InternalAxiosRequestConfig } from 'axios'; +import { toast } from 'sonner'; import { getAuthorization, Logout } from './common'; async function handleError(response: any) { diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..37b8f9d332079cf749b68e75090bc96e8b1e1490 GIT binary patch literal 605288 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

KCxeUBcw^FFbcRF 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 literal 0 HcmV?d00001 diff --git a/docker/ppanel-admin-web/Dockerfile b/docker/ppanel-admin-web/Dockerfile index c29bab5..38cd185 100644 --- a/docker/ppanel-admin-web/Dockerfile +++ b/docker/ppanel-admin-web/Dockerfile @@ -1,46 +1,23 @@ -FROM node:20-alpine AS base - -# Step 1. Rebuild the source code only when needed -FROM base AS builder +# Use the official lightweight Bun image +FROM oven/bun:latest AS base +# Set working directory WORKDIR /app -COPY . . +# Create a non-root user for running the production application +RUN addgroup --system --gid 1001 nodejs \ + && adduser --system --uid 1001 nextjs -# Install dependencies based on the preferred package manager -# Omit --production flag for TypeScript devDependencies -RUN \ - if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ - elif [ -f package-lock.json ]; then npm ci; \ - elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --ignore-scripts; \ - # Allow install without lockfile, so example works even without Node.js installed locally - else echo "Warning: Lockfile not found. It is recommended to commit lockfiles to version control." && yarn install; \ - fi - -RUN npx turbo telemetry disable -RUN npx turbo build --filter=ppanel-admin-web - -# Note: It is not necessary to add an intermediate step that does a full copy of `node_modules` here - -# Step 2. Production image, copy all the files and run next -FROM base AS runner - -WORKDIR /app - -# Don't run production as root -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs +# Change to non-root user USER nextjs -# Automatically leverage output traces to reduce image size -# https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=builder --chown=nextjs:nodejs /app/apps/admin/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/apps/admin/.next/static ./apps/admin/.next/static -COPY --from=builder --chown=nextjs:nodejs /app/apps/admin/public ./apps/admin/public +# Copy necessary files for production +COPY ./apps/admin/.next/standalone ./ +COPY ./apps/admin/.next/static ./apps/admin/.next/static +COPY ./apps/admin/public ./apps/admin/public -# Environment variables must be redefined at run time -# Uncomment the following line to disable telemetry at run time +# Disable Next.js telemetry at runtime ENV NEXT_TELEMETRY_DISABLED=1 -# Note: Don't expose ports here, Compose will handle that for us -CMD ["node", "apps/admin/server.js"] \ No newline at end of file +# Set default command +CMD ["bun", "apps/admin/server.js"] diff --git a/docker/ppanel-user-web/Dockerfile b/docker/ppanel-user-web/Dockerfile index b0f00d4..99cadfd 100644 --- a/docker/ppanel-user-web/Dockerfile +++ b/docker/ppanel-user-web/Dockerfile @@ -1,46 +1,25 @@ -FROM node:20-alpine AS base - -# Step 1. Rebuild the source code only when needed -FROM base AS builder +# Use the official lightweight Bun image +FROM oven/bun:latest AS base +# Set working directory WORKDIR /app -COPY . . +# Create non-root user and set permissions +RUN addgroup --system --gid 1001 nodejs \ + && adduser --system --uid 1001 nextjs -# Install dependencies based on the preferred package manager -# Omit --production flag for TypeScript devDependencies -RUN \ - if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ - elif [ -f package-lock.json ]; then npm ci; \ - elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --ignore-scripts; \ - # Allow install without lockfile, so example works even without Node.js installed locally - else echo "Warning: Lockfile not found. It is recommended to commit lockfiles to version control." && yarn install; \ - fi +# Copy build output and static files +COPY ./apps/user/.next/standalone ./ +COPY ./apps/user/.next/static ./apps/user/.next/static +COPY ./apps/user/public ./apps/user/public -RUN npx turbo telemetry disable -RUN npx turbo build --filter=ppanel-user-web +# Change ownership to non-root user +RUN chown -R nextjs:nodejs /app -# Note: It is not necessary to add an intermediate step that does a full copy of `node_modules` here - -# Step 2. Production image, copy all the files and run next -FROM base AS runner - -WORKDIR /app - -# Don't run production as root -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs USER nextjs -# Automatically leverage output traces to reduce image size -# https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=builder --chown=nextjs:nodejs /app/apps/user/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/apps/user/.next/static ./apps/user/.next/static -COPY --from=builder --chown=nextjs:nodejs /app/apps/user/public ./apps/user/public - -# Environment variables must be redefined at run time -# Uncomment the following line to disable telemetry at run time +# Disable Next.js telemetry ENV NEXT_TELEMETRY_DISABLED=1 -# Note: Don't expose ports here, Compose will handle that for us -CMD ["node", "apps/user/server.js"] \ No newline at end of file +# Default command to start the server +CMD ["bun", "apps/user/server.js"] diff --git a/eslint.config.js b/eslint.config.js index dc943dc..c1296e1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,4 +1,4 @@ -import { config } from '@repo/eslint-config/base'; +import { config } from '@workspace/eslint-config/base'; /** @type {import("eslint").Linter.Config} */ export default config; diff --git a/package.json b/package.json index b329818..b789abe 100644 --- a/package.json +++ b/package.json @@ -2,27 +2,35 @@ "name": "ppanel-web", "version": "0.0.0", "private": true, - "homepage": "https://github.com/web-ppanel/ppanel-web", + "homepage": "https://github.com/perfect-panel/ppanel-web", "bugs": { - "url": "https://github.com/web-ppanel/ppanel-web/issues/new" + "url": "https://github.com/perfect-panel/ppanel-web/issues/new" }, "repository": { "type": "git", - "url": "https://github.com/web-ppanel/ppanel-web.git" + "url": "https://github.com/perfect-panel/ppanel-web.git" }, "license": "GUN", + "workspaces": [ + "apps/*", + "packages/*" + ], "scripts": { "build": "turbo build", - "clean": "turbo run clean", + "clean": "./scripts/clean.sh", "dev": "turbo dev", "lint": "turbo lint", - "locale": "turbo locale", - "openapi": "turbo openapi", + "locale": "turbo locale && bun prettier", "prepare": "./scripts/prepare.sh", - "prettier": "prettier -c --write \"**/**\"", + "prettier": "prettier --write \"**/*.{ts,tsx,js,jsx,cjs,mjs,md,json}\"", "release": "semantic-release", - "setup:components": "node ./scripts/setup-components.mjs", - "setup:lobehub": "./scripts/lobehub-setup.sh" + "update:deps": "./scripts/update-deps.sh", + "update:shadcn": "./scripts/update-shadcn-ui.sh && bun prettier" + }, + "commitlint": { + "extends": [ + "@workspace/commitlint-config" + ] }, "lint-staged": { "*.{json,md}": [ @@ -37,25 +45,22 @@ "eslint --fix" ] }, + "prettier": "@workspace/prettier-config", "devDependencies": { - "@repo/commitlint-config": "workspace:*", - "@repo/prettier-config": "workspace:*", - "@repo/typescript-config": "workspace:*", "@umijs/openapi": "^1.13.0", + "@workspace/commitlint-config": "workspace:*", + "@workspace/eslint-config": "workspace:*", + "@workspace/prettier-config": "workspace:*", + "@workspace/typescript-config": "workspace:*", "husky": "^9.1.7", "lint-staged": "^15.2.11", - "semantic-release": "^24.2.0", + "semantic-release": "21.1.2", "semantic-release-config-gitmoji": "^1.5.3", "turbo": "^2.3.3", "typescript": "^5.7.2" }, - "packageManager": "pnpm@9.12.3", + "packageManager": "bun@1.1.42", "engines": { - "node": ">=18" - }, - "pnpm": { - "overrides": { - "react-is": "19.0.0" - } + "node": ">=20" } } diff --git a/packages/commitlint-config/index.js b/packages/commitlint-config/base.js similarity index 64% rename from packages/commitlint-config/index.js rename to packages/commitlint-config/base.js index ef124c1..2141515 100644 --- a/packages/commitlint-config/index.js +++ b/packages/commitlint-config/base.js @@ -1,3 +1,8 @@ +/** + * A shared CommitLint configuration for the repository. + * + * @type {import("commitlint").Config} + * */ module.exports = { $schema: 'https://json.schemastore.org/commitlintrc', extends: ['gitmoji'], diff --git a/packages/commitlint-config/package.json b/packages/commitlint-config/package.json index 6818a27..12a67ff 100644 --- a/packages/commitlint-config/package.json +++ b/packages/commitlint-config/package.json @@ -1,10 +1,11 @@ { - "name": "@repo/commitlint-config", + "name": "@workspace/commitlint-config", + "version": "0.0.0", "private": true, - "main": "index.js", + "main": "base.js", "devDependencies": { - "@commitlint/cli": "^19.6.0", - "commitlint": "^19.6.0", + "@commitlint/cli": "^19.6.1", + "commitlint": "^19.6.1", "commitlint-config-gitmoji": "^2.3.1" } } diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md new file mode 100644 index 0000000..4a414ab --- /dev/null +++ b/packages/eslint-config/README.md @@ -0,0 +1,3 @@ +# `@workspace/eslint-config` + +Shared eslint configuration for the workspace. diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js index 0f93103..d70645c 100644 --- a/packages/eslint-config/next.js +++ b/packages/eslint-config/next.js @@ -5,6 +5,7 @@ import pluginReact from 'eslint-plugin-react'; import pluginReactHooks from 'eslint-plugin-react-hooks'; import globals from 'globals'; import tseslint from 'typescript-eslint'; + import { config as baseConfig } from './base.js'; /** @@ -44,6 +45,7 @@ export const nextJsConfig = [ ...pluginReactHooks.configs.recommended.rules, // React scope no longer necessary with new JSX transform. 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', }, }, ]; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 3539fa4..2cd06f2 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,5 +1,6 @@ { - "name": "@repo/eslint-config", + "name": "@workspace/eslint-config", + "version": "0.0.0", "private": true, "type": "module", "exports": { @@ -8,17 +9,17 @@ "./react-internal": "./react-internal.js" }, "devDependencies": { - "@next/eslint-plugin-next": "^15.1.0", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "@typescript-eslint/parser": "^8.18.0", - "eslint": "^9.16.0", + "@next/eslint-plugin-next": "^15.1.2", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-only-warn": "^1.1.0", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-turbo": "^2.3.3", - "globals": "^15.13.0", + "globals": "^15.14.0", "typescript": "^5.7.2", - "typescript-eslint": "^8.18.0" + "typescript-eslint": "^8.18.2" } } diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js index 3c88bae..6541688 100644 --- a/packages/eslint-config/react-internal.js +++ b/packages/eslint-config/react-internal.js @@ -4,6 +4,7 @@ import pluginReact from 'eslint-plugin-react'; import pluginReactHooks from 'eslint-plugin-react-hooks'; import globals from 'globals'; import tseslint from 'typescript-eslint'; + import { config as baseConfig } from './base.js'; /** @@ -34,6 +35,7 @@ export const config = [ ...pluginReactHooks.configs.recommended.rules, // React scope no longer necessary with new JSX transform. 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', }, }, ]; diff --git a/packages/prettier-config/index.js b/packages/prettier-config/base.js similarity index 100% rename from packages/prettier-config/index.js rename to packages/prettier-config/base.js diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index d5b288b..117fc87 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -1,7 +1,8 @@ { - "name": "@repo/prettier-config", + "name": "@workspace/prettier-config", + "version": "0.0.0", "private": true, - "main": "index.js", + "main": "base.js", "devDependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.4.0", "prettier": "^3.4.2", diff --git a/packages/shadcn/eslint.config.js b/packages/shadcn/eslint.config.js deleted file mode 100644 index 4f4e6bc..0000000 --- a/packages/shadcn/eslint.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { config } from '@repo/eslint-config/react-internal'; - -/** @type {import("eslint").Linter.Config} */ -export default [ - ...config, - { - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-unsafe-function-type': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/no-explicit-any': 'off', - 'react/prop-types': 'off', - 'react/no-unknown-property': 'off', - 'react-hooks/exhaustive-deps': 'off', - 'react/jsx-no-target-blank': 'off', - 'prefer-const': 'off', - 'no-var': 'off', - 'no-dupe-keys': 'off', - }, - }, -]; diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json deleted file mode 100644 index a55ff91..0000000 --- a/packages/shadcn/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "@shadcn/ui", - "private": true, - "exports": { - "./globals.css": "./src/styles/globals.css", - "./tailwind.config": "./tailwind.config.ts", - "./lib/*": "./src/lib/*.ts", - "./hooks/*": [ - "./src/hooks/*.ts", - "./src/hooks/*.tsx" - ], - "./*": "./src/components/ui/*.tsx" - }, - "scripts": { - "lint": "eslint . --max-warnings 0" - }, - "dependencies": { - "@hookform/resolvers": "^3.9.1", - "@radix-ui/react-accordion": "^1.2.2", - "@radix-ui/react-alert-dialog": "^1.1.3", - "@radix-ui/react-aspect-ratio": "^1.1.1", - "@radix-ui/react-avatar": "^1.1.2", - "@radix-ui/react-checkbox": "^1.1.3", - "@radix-ui/react-collapsible": "^1.1.2", - "@radix-ui/react-context-menu": "^2.2.3", - "@radix-ui/react-dialog": "^1.1.3", - "@radix-ui/react-dropdown-menu": "^2.1.3", - "@radix-ui/react-hover-card": "^1.1.3", - "@radix-ui/react-icons": "^1.3.2", - "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-menubar": "^1.1.3", - "@radix-ui/react-navigation-menu": "^1.2.2", - "@radix-ui/react-popover": "^1.1.3", - "@radix-ui/react-progress": "^1.1.1", - "@radix-ui/react-radio-group": "^1.2.2", - "@radix-ui/react-scroll-area": "^1.2.2", - "@radix-ui/react-select": "^2.1.3", - "@radix-ui/react-separator": "^1.1.1", - "@radix-ui/react-slider": "^1.2.2", - "@radix-ui/react-slot": "^1.1.1", - "@radix-ui/react-switch": "^1.1.2", - "@radix-ui/react-tabs": "^1.1.2", - "@radix-ui/react-toast": "^1.2.3", - "@radix-ui/react-toggle": "^1.1.1", - "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.5", - "@react-three/drei": "^9.120.4", - "@react-three/fiber": "^8.17.10", - "@tabler/icons-react": "^3.24.0", - "@tsparticles/engine": "^3.7.1", - "@tsparticles/react": "^3.0.0", - "@tsparticles/slim": "^3.7.1", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "1.0.0", - "cobe": "^0.6.3", - "date-fns": "^4.1.0", - "dotted-map": "^2.2.3", - "embla-carousel-react": "^8.5.1", - "framer-motion": "^11.14.4", - "input-otp": "^1.4.1", - "lucide-react": "^0.468.0", - "mini-svg-data-uri": "^1.4.4", - "motion": "^11.14.4", - "next-themes": "^0.4.4", - "qss": "^3.0.0", - "react-day-picker": "8.10.1", - "react-dropzone": "^14.3.5", - "react-hook-form": "^7.54.1", - "react-icons": "^5.4.0", - "react-resizable-panels": "^2.1.7", - "recharts": "^2.15.0", - "simplex-noise": "^4.0.3", - "sonner": "^1.7.1", - "tailwind-merge": "^2.5.5", - "tailwindcss-animate": "^1.0.7", - "three": "^0.171.0", - "three-globe": "^2.35.11", - "vaul": "^1.1.1", - "zod": "^3.24.1" - }, - "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/node": "^22.10.2", - "@types/react": "^19.0.1", - "@types/react-dom": "^19.0.2", - "@types/three": "^0.170.0", - "autoprefixer": "^10.4.20", - "next": "^15.1.0", - "postcss": "^8.4.49", - "react": "^19.0.0", - "tailwindcss": "^3.4.16", - "typescript": "^5.7.2" - } -} diff --git a/packages/shadcn/postcss.config.mjs b/packages/shadcn/postcss.config.mjs deleted file mode 100644 index 2ef30fc..0000000 --- a/packages/shadcn/postcss.config.mjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -const config = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; - -export default config; diff --git a/packages/shadcn/src/components/ui/3d-card.tsx b/packages/shadcn/src/components/ui/3d-card.tsx deleted file mode 100644 index 802668c..0000000 --- a/packages/shadcn/src/components/ui/3d-card.tsx +++ /dev/null @@ -1,141 +0,0 @@ -// @ts-nocheck -'use client'; - -import React, { createContext, useContext, useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -const MouseEnterContext = createContext< - [boolean, React.Dispatch>] | undefined ->(undefined); - -export const CardContainer = ({ - children, - className, - containerClassName, -}: { - children?: React.ReactNode; - className?: string; - containerClassName?: string; -}) => { - const containerRef = useRef(null); - const [isMouseEntered, setIsMouseEntered] = useState(false); - - const handleMouseMove = (e: React.MouseEvent) => { - if (!containerRef.current) return; - const { left, top, width, height } = containerRef.current.getBoundingClientRect(); - const x = (e.clientX - left - width / 2) / 25; - const y = (e.clientY - top - height / 2) / 25; - containerRef.current.style.transform = `rotateY(${x}deg) rotateX(${y}deg)`; - }; - - const handleMouseEnter = (e: React.MouseEvent) => { - setIsMouseEntered(true); - if (!containerRef.current) return; - }; - - const handleMouseLeave = (e: React.MouseEvent) => { - if (!containerRef.current) return; - setIsMouseEntered(false); - containerRef.current.style.transform = `rotateY(0deg) rotateX(0deg)`; - }; - return ( - -

-
- {children} -
-
- - ); -}; - -export const CardBody = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return ( -
*]:[transform-style:preserve-3d]', - className, - )} - > - {children} -
- ); -}; - -export const CardItem = ({ - as: Tag = 'div', - children, - className, - translateX = 0, - translateY = 0, - translateZ = 0, - rotateX = 0, - rotateY = 0, - rotateZ = 0, - ...rest -}: { - as?: React.ElementType; - children: React.ReactNode; - className?: string; - translateX?: number | string; - translateY?: number | string; - translateZ?: number | string; - rotateX?: number | string; - rotateY?: number | string; - rotateZ?: number | string; - [key: string]: any; -}) => { - const ref = useRef(null); - const [isMouseEntered] = useMouseEnter(); - - useEffect(() => { - handleAnimations(); - }, [isMouseEntered]); - - const handleAnimations = () => { - if (!ref.current) return; - if (isMouseEntered) { - ref.current.style.transform = `translateX(${translateX}px) translateY(${translateY}px) translateZ(${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotateZ(${rotateZ}deg)`; - } else { - ref.current.style.transform = `translateX(0px) translateY(0px) translateZ(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg)`; - } - }; - - return ( - - {children} - - ); -}; - -// Create a hook to use the context -export const useMouseEnter = () => { - const context = useContext(MouseEnterContext); - if (context === undefined) { - throw new Error('useMouseEnter must be used within a MouseEnterProvider'); - } - return context; -}; diff --git a/packages/shadcn/src/components/ui/3d-pin.tsx b/packages/shadcn/src/components/ui/3d-pin.tsx deleted file mode 100644 index 3f9aa02..0000000 --- a/packages/shadcn/src/components/ui/3d-pin.tsx +++ /dev/null @@ -1,156 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import Link from 'next/link'; -import React, { useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const PinContainer = ({ - children, - title, - href, - className, - containerClassName, -}: { - children: React.ReactNode; - title?: string; - href?: string; - className?: string; - containerClassName?: string; -}) => { - const [transform, setTransform] = useState('translate(-50%,-50%) rotateX(0deg)'); - - const onMouseEnter = () => { - setTransform('translate(-50%,-50%) rotateX(40deg) scale(0.8)'); - }; - const onMouseLeave = () => { - setTransform('translate(-50%,-50%) rotateX(0deg) scale(1)'); - }; - - return ( - -
-
-
{children}
-
-
- - - ); -}; - -export const PinPerspective = ({ title, href }: { title?: string; href?: string }) => { - return ( - -
- - ); -}; diff --git a/packages/shadcn/src/components/ui/animated-modal.tsx b/packages/shadcn/src/components/ui/animated-modal.tsx deleted file mode 100644 index 52c9a28..0000000 --- a/packages/shadcn/src/components/ui/animated-modal.tsx +++ /dev/null @@ -1,212 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import React, { ReactNode, createContext, useContext, useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -interface ModalContextType { - open: boolean; - setOpen: (open: boolean) => void; -} - -const ModalContext = createContext(undefined); - -export const ModalProvider = ({ children }: { children: ReactNode }) => { - const [open, setOpen] = useState(false); - - return {children}; -}; - -export const useModal = () => { - const context = useContext(ModalContext); - if (!context) { - throw new Error('useModal must be used within a ModalProvider'); - } - return context; -}; - -export function Modal({ children }: { children: ReactNode }) { - return {children}; -} - -export const ModalTrigger = ({ - children, - className, -}: { - children: ReactNode; - className?: string; -}) => { - const { setOpen } = useModal(); - return ( - - ); -}; - -export const ModalBody = ({ children, className }: { children: ReactNode; className?: string }) => { - const { open } = useModal(); - - useEffect(() => { - if (open) { - document.body.style.overflow = 'hidden'; - } else { - document.body.style.overflow = 'auto'; - } - }, [open]); - - const modalRef = useRef(null); - const { setOpen } = useModal(); - useOutsideClick(modalRef, () => setOpen(false)); - - return ( - - {open && ( - - - - - - {children} - - - )} - - ); -}; - -export const ModalContent = ({ - children, - className, -}: { - children: ReactNode; - className?: string; -}) => { - return
{children}
; -}; - -export const ModalFooter = ({ - children, - className, -}: { - children: ReactNode; - className?: string; -}) => { - return ( -
- {children} -
- ); -}; - -const Overlay = ({ className }: { className?: string }) => { - return ( - - ); -}; - -const CloseIcon = () => { - const { setOpen } = useModal(); - return ( - - ); -}; - -// Hook to detect clicks outside of a component. -// Add it in a separate file, I've added here for simplicity -export const useOutsideClick = (ref: React.RefObject, callback: Function) => { - useEffect(() => { - const listener = (event: any) => { - // DO NOTHING if the element being clicked is the target element or their children - if (!ref.current || ref.current.contains(event.target)) { - return; - } - callback(event); - }; - - document.addEventListener('mousedown', listener); - document.addEventListener('touchstart', listener); - - return () => { - document.removeEventListener('mousedown', listener); - document.removeEventListener('touchstart', listener); - }; - }, [ref, callback]); -}; diff --git a/packages/shadcn/src/components/ui/animated-testimonials.tsx b/packages/shadcn/src/components/ui/animated-testimonials.tsx deleted file mode 100644 index 9bc9621..0000000 --- a/packages/shadcn/src/components/ui/animated-testimonials.tsx +++ /dev/null @@ -1,163 +0,0 @@ -'use client'; - -import { IconArrowLeft, IconArrowRight } from '@tabler/icons-react'; -import { AnimatePresence, motion } from 'framer-motion'; -import Image from 'next/image'; -import { useEffect, useState } from 'react'; - -type Testimonial = { - quote: string; - name: string; - designation: string; - src: string; -}; -export const AnimatedTestimonials = ({ - testimonials, - autoplay = false, -}: { - testimonials: Testimonial[]; - autoplay?: boolean; -}) => { - const [active, setActive] = useState(0); - - const handleNext = () => { - setActive((prev) => (prev + 1) % testimonials.length); - }; - - const handlePrev = () => { - setActive((prev) => (prev - 1 + testimonials.length) % testimonials.length); - }; - - const isActive = (index: number) => { - return index === active; - }; - - useEffect(() => { - if (autoplay) { - const interval = setInterval(handleNext, 5000); - return () => clearInterval(interval); - } - }, [autoplay]); - - const randomRotateY = () => { - return Math.floor(Math.random() * 21) - 10; - }; - return ( -
-
-
-
- - {testimonials.map((testimonial, index) => ( - - {testimonial.name} - - ))} - -
-
-
- -

- {testimonials[active].name} -

-

- {testimonials[active].designation} -

- - {testimonials[active].quote.split(' ').map((word, index) => ( - - {word}  - - ))} - -
-
- - -
-
-
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/animated-tooltip.tsx b/packages/shadcn/src/components/ui/animated-tooltip.tsx deleted file mode 100644 index b4d78bd..0000000 --- a/packages/shadcn/src/components/ui/animated-tooltip.tsx +++ /dev/null @@ -1,78 +0,0 @@ -'use client'; -import { AnimatePresence, motion, useMotionValue, useSpring, useTransform } from 'framer-motion'; -import Image from 'next/image'; -import { useState } from 'react'; - -export const AnimatedTooltip = ({ - items, -}: { - items: { - id: number; - name: string; - designation: string; - image: string; - }[]; -}) => { - const [hoveredIndex, setHoveredIndex] = useState(null); - const springConfig = { stiffness: 100, damping: 5 }; - const x = useMotionValue(0); // going to set this value on mouse move - // rotate the tooltip - const rotate = useSpring(useTransform(x, [-100, 100], [-45, 45]), springConfig); - // translate the tooltip - const translateX = useSpring(useTransform(x, [-100, 100], [-50, 50]), springConfig); - const handleMouseMove = (event: any) => { - const halfWidth = event.target.offsetWidth / 2; - x.set(event.nativeEvent.offsetX - halfWidth); // set the x value, which is then used in transform and rotate - }; - - return ( - <> - {items.map((item, idx) => ( -
setHoveredIndex(item.id)} - onMouseLeave={() => setHoveredIndex(null)} - > - - {hoveredIndex === item.id && ( - -
-
-
{item.name}
-
{item.designation}
- - )} - - {item.name} -
- ))} - - ); -}; diff --git a/packages/shadcn/src/components/ui/apple-cards-carousel.tsx b/packages/shadcn/src/components/ui/apple-cards-carousel.tsx deleted file mode 100644 index fe5371e..0000000 --- a/packages/shadcn/src/components/ui/apple-cards-carousel.tsx +++ /dev/null @@ -1,275 +0,0 @@ -// @ts-nocheck -'use client'; -import { IconArrowNarrowLeft, IconArrowNarrowRight, IconX } from '@tabler/icons-react'; -import { AnimatePresence, motion } from 'framer-motion'; -import Image, { ImageProps } from 'next/image'; -import React, { createContext, useContext, useEffect, useRef, useState } from 'react'; -import { useOutsideClick } from '../../hooks/use-outside-click'; -import { cn } from '../../lib/utils'; - -interface CarouselProps { - items: JSX.Element[]; - initialScroll?: number; -} - -type Card = { - src: string; - title: string; - category: string; - content: React.ReactNode; -}; - -export const CarouselContext = createContext<{ - onCardClose: (index: number) => void; - currentIndex: number; -}>({ - onCardClose: () => {}, - currentIndex: 0, -}); - -export const Carousel = ({ items, initialScroll = 0 }: CarouselProps) => { - const carouselRef = React.useRef(null); - const [canScrollLeft, setCanScrollLeft] = React.useState(false); - const [canScrollRight, setCanScrollRight] = React.useState(true); - const [currentIndex, setCurrentIndex] = useState(0); - - useEffect(() => { - if (carouselRef.current) { - carouselRef.current.scrollLeft = initialScroll; - checkScrollability(); - } - }, [initialScroll]); - - const checkScrollability = () => { - if (carouselRef.current) { - const { scrollLeft, scrollWidth, clientWidth } = carouselRef.current; - setCanScrollLeft(scrollLeft > 0); - setCanScrollRight(scrollLeft < scrollWidth - clientWidth); - } - }; - - const scrollLeft = () => { - if (carouselRef.current) { - carouselRef.current.scrollBy({ left: -300, behavior: 'smooth' }); - } - }; - - const scrollRight = () => { - if (carouselRef.current) { - carouselRef.current.scrollBy({ left: 300, behavior: 'smooth' }); - } - }; - - const handleCardClose = (index: number) => { - if (carouselRef.current) { - const cardWidth = isMobile() ? 230 : 384; // (md:w-96) - const gap = isMobile() ? 4 : 8; - const scrollPosition = (cardWidth + gap) * (index + 1); - carouselRef.current.scrollTo({ - left: scrollPosition, - behavior: 'smooth', - }); - setCurrentIndex(index); - } - }; - - const isMobile = () => { - return window && window.innerWidth < 768; - }; - - return ( - -
-
-
- -
- {items.map((item, index) => ( - - {item} - - ))} -
-
-
- - -
-
-
- ); -}; - -export const Card = ({ - card, - index, - layout = false, -}: { - card: Card; - index: number; - layout?: boolean; -}) => { - const [open, setOpen] = useState(false); - const containerRef = useRef(null); - const { onCardClose, currentIndex } = useContext(CarouselContext); - - useEffect(() => { - function onKeyDown(event: KeyboardEvent) { - if (event.key === 'Escape') { - handleClose(); - } - } - - if (open) { - document.body.style.overflow = 'hidden'; - } else { - document.body.style.overflow = 'auto'; - } - - window.addEventListener('keydown', onKeyDown); - return () => window.removeEventListener('keydown', onKeyDown); - }, [open]); - - useOutsideClick(containerRef, () => handleClose()); - - const handleOpen = () => { - setOpen(true); - }; - - const handleClose = () => { - setOpen(false); - onCardClose(index); - }; - - return ( - <> - - {open && ( -
- - - - - {card.category} - - - {card.title} - -
{card.content}
-
-
- )} -
- -
-
- - {card.category} - - - {card.title} - -
- - - - ); -}; - -export const BlurImage = ({ height, width, src, className, alt, ...rest }: ImageProps) => { - const [isLoading, setLoading] = useState(true); - return ( - setLoading(false)} - src={src} - width={width} - height={height} - loading='lazy' - decoding='async' - blurDataURL={typeof src === 'string' ? src : undefined} - alt={alt ? alt : 'Background of a beautiful view'} - {...rest} - /> - ); -}; diff --git a/packages/shadcn/src/components/ui/aurora-background.tsx b/packages/shadcn/src/components/ui/aurora-background.tsx deleted file mode 100644 index 39e5f65..0000000 --- a/packages/shadcn/src/components/ui/aurora-background.tsx +++ /dev/null @@ -1,41 +0,0 @@ -// @ts-nocheck -'use client'; -import React, { ReactNode } from 'react'; -import { cn } from '../../lib/utils'; - -interface AuroraBackgroundProps extends React.HTMLProps { - children: ReactNode; - showRadialGradient?: boolean; -} - -export const AuroraBackground = ({ - className, - children, - showRadialGradient = true, - ...props -}: AuroraBackgroundProps) => { - return ( -
-
-
-
-
- {children} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/background-beams-with-collision.tsx b/packages/shadcn/src/components/ui/background-beams-with-collision.tsx deleted file mode 100644 index 5482eeb..0000000 --- a/packages/shadcn/src/components/ui/background-beams-with-collision.tsx +++ /dev/null @@ -1,254 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const BackgroundBeamsWithCollision = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - const containerRef = useRef(null); - const parentRef = useRef(null); - - const beams = [ - { - initialX: 10, - translateX: 10, - duration: 7, - repeatDelay: 3, - delay: 2, - }, - { - initialX: 600, - translateX: 600, - duration: 3, - repeatDelay: 3, - delay: 4, - }, - { - initialX: 100, - translateX: 100, - duration: 7, - repeatDelay: 7, - className: 'h-6', - }, - { - initialX: 400, - translateX: 400, - duration: 5, - repeatDelay: 14, - delay: 4, - }, - { - initialX: 800, - translateX: 800, - duration: 11, - repeatDelay: 2, - className: 'h-20', - }, - { - initialX: 1000, - translateX: 1000, - duration: 4, - repeatDelay: 2, - className: 'h-12', - }, - { - initialX: 1200, - translateX: 1200, - duration: 6, - repeatDelay: 4, - delay: 2, - className: 'h-6', - }, - ]; - - return ( -
- {beams.map((beam) => ( - - ))} - - {children} -
-
- ); -}; - -const CollisionMechanism = React.forwardRef< - HTMLDivElement, - { - containerRef: React.RefObject; - parentRef: React.RefObject; - beamOptions?: { - initialX?: number; - translateX?: number; - initialY?: number; - translateY?: number; - rotate?: number; - className?: string; - duration?: number; - delay?: number; - repeatDelay?: number; - }; - } ->(({ parentRef, containerRef, beamOptions = {} }, ref) => { - const beamRef = useRef(null); - const [collision, setCollision] = useState<{ - detected: boolean; - coordinates: { x: number; y: number } | null; - }>({ - detected: false, - coordinates: null, - }); - const [beamKey, setBeamKey] = useState(0); - const [cycleCollisionDetected, setCycleCollisionDetected] = useState(false); - - useEffect(() => { - const checkCollision = () => { - if (beamRef.current && containerRef.current && parentRef.current && !cycleCollisionDetected) { - const beamRect = beamRef.current.getBoundingClientRect(); - const containerRect = containerRef.current.getBoundingClientRect(); - const parentRect = parentRef.current.getBoundingClientRect(); - - if (beamRect.bottom >= containerRect.top) { - const relativeX = beamRect.left - parentRect.left + beamRect.width / 2; - const relativeY = beamRect.bottom - parentRect.top; - - setCollision({ - detected: true, - coordinates: { - x: relativeX, - y: relativeY, - }, - }); - setCycleCollisionDetected(true); - } - } - }; - - const animationInterval = setInterval(checkCollision, 50); - - return () => clearInterval(animationInterval); - }, [cycleCollisionDetected, containerRef]); - - useEffect(() => { - if (collision.detected && collision.coordinates) { - setTimeout(() => { - setCollision({ detected: false, coordinates: null }); - setCycleCollisionDetected(false); - }, 2000); - - setTimeout(() => { - setBeamKey((prevKey) => prevKey + 1); - }, 2000); - } - }, [collision]); - - return ( - <> - - - {collision.detected && collision.coordinates && ( - - )} - - - ); -}); - -CollisionMechanism.displayName = 'CollisionMechanism'; - -const Explosion = ({ ...props }: React.HTMLProps) => { - const spans = Array.from({ length: 20 }, (_, index) => ({ - id: index, - initialX: 0, - initialY: 0, - directionX: Math.floor(Math.random() * 80 - 40), - directionY: Math.floor(Math.random() * -50 - 10), - })); - - return ( -
- - {spans.map((span) => ( - - ))} -
- ); -}; diff --git a/packages/shadcn/src/components/ui/background-beams.tsx b/packages/shadcn/src/components/ui/background-beams.tsx deleted file mode 100644 index 8b2c68c..0000000 --- a/packages/shadcn/src/components/ui/background-beams.tsx +++ /dev/null @@ -1,140 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const BackgroundBeams = React.memo(({ className }: { className?: string }) => { - const paths = [ - 'M-380 -189C-380 -189 -312 216 152 343C616 470 684 875 684 875', - 'M-373 -197C-373 -197 -305 208 159 335C623 462 691 867 691 867', - 'M-366 -205C-366 -205 -298 200 166 327C630 454 698 859 698 859', - 'M-359 -213C-359 -213 -291 192 173 319C637 446 705 851 705 851', - 'M-352 -221C-352 -221 -284 184 180 311C644 438 712 843 712 843', - 'M-345 -229C-345 -229 -277 176 187 303C651 430 719 835 719 835', - 'M-338 -237C-338 -237 -270 168 194 295C658 422 726 827 726 827', - 'M-331 -245C-331 -245 -263 160 201 287C665 414 733 819 733 819', - 'M-324 -253C-324 -253 -256 152 208 279C672 406 740 811 740 811', - 'M-317 -261C-317 -261 -249 144 215 271C679 398 747 803 747 803', - 'M-310 -269C-310 -269 -242 136 222 263C686 390 754 795 754 795', - 'M-303 -277C-303 -277 -235 128 229 255C693 382 761 787 761 787', - 'M-296 -285C-296 -285 -228 120 236 247C700 374 768 779 768 779', - 'M-289 -293C-289 -293 -221 112 243 239C707 366 775 771 775 771', - 'M-282 -301C-282 -301 -214 104 250 231C714 358 782 763 782 763', - 'M-275 -309C-275 -309 -207 96 257 223C721 350 789 755 789 755', - 'M-268 -317C-268 -317 -200 88 264 215C728 342 796 747 796 747', - 'M-261 -325C-261 -325 -193 80 271 207C735 334 803 739 803 739', - 'M-254 -333C-254 -333 -186 72 278 199C742 326 810 731 810 731', - 'M-247 -341C-247 -341 -179 64 285 191C749 318 817 723 817 723', - 'M-240 -349C-240 -349 -172 56 292 183C756 310 824 715 824 715', - 'M-233 -357C-233 -357 -165 48 299 175C763 302 831 707 831 707', - 'M-226 -365C-226 -365 -158 40 306 167C770 294 838 699 838 699', - 'M-219 -373C-219 -373 -151 32 313 159C777 286 845 691 845 691', - 'M-212 -381C-212 -381 -144 24 320 151C784 278 852 683 852 683', - 'M-205 -389C-205 -389 -137 16 327 143C791 270 859 675 859 675', - 'M-198 -397C-198 -397 -130 8 334 135C798 262 866 667 866 667', - 'M-191 -405C-191 -405 -123 0 341 127C805 254 873 659 873 659', - 'M-184 -413C-184 -413 -116 -8 348 119C812 246 880 651 880 651', - 'M-177 -421C-177 -421 -109 -16 355 111C819 238 887 643 887 643', - 'M-170 -429C-170 -429 -102 -24 362 103C826 230 894 635 894 635', - 'M-163 -437C-163 -437 -95 -32 369 95C833 222 901 627 901 627', - 'M-156 -445C-156 -445 -88 -40 376 87C840 214 908 619 908 619', - 'M-149 -453C-149 -453 -81 -48 383 79C847 206 915 611 915 611', - 'M-142 -461C-142 -461 -74 -56 390 71C854 198 922 603 922 603', - 'M-135 -469C-135 -469 -67 -64 397 63C861 190 929 595 929 595', - 'M-128 -477C-128 -477 -60 -72 404 55C868 182 936 587 936 587', - 'M-121 -485C-121 -485 -53 -80 411 47C875 174 943 579 943 579', - 'M-114 -493C-114 -493 -46 -88 418 39C882 166 950 571 950 571', - 'M-107 -501C-107 -501 -39 -96 425 31C889 158 957 563 957 563', - 'M-100 -509C-100 -509 -32 -104 432 23C896 150 964 555 964 555', - 'M-93 -517C-93 -517 -25 -112 439 15C903 142 971 547 971 547', - 'M-86 -525C-86 -525 -18 -120 446 7C910 134 978 539 978 539', - 'M-79 -533C-79 -533 -11 -128 453 -1C917 126 985 531 985 531', - 'M-72 -541C-72 -541 -4 -136 460 -9C924 118 992 523 992 523', - 'M-65 -549C-65 -549 3 -144 467 -17C931 110 999 515 999 515', - 'M-58 -557C-58 -557 10 -152 474 -25C938 102 1006 507 1006 507', - 'M-51 -565C-51 -565 17 -160 481 -33C945 94 1013 499 1013 499', - 'M-44 -573C-44 -573 24 -168 488 -41C952 86 1020 491 1020 491', - 'M-37 -581C-37 -581 31 -176 495 -49C959 78 1027 483 1027 483', - ]; - return ( -
- - - - {paths.map((path, index) => ( - - ))} - - {paths.map((path, index) => ( - - - - - - - ))} - - - - - - - - -
- ); -}); - -BackgroundBeams.displayName = 'BackgroundBeams'; diff --git a/packages/shadcn/src/components/ui/background-boxes.tsx b/packages/shadcn/src/components/ui/background-boxes.tsx deleted file mode 100644 index 2fc14bb..0000000 --- a/packages/shadcn/src/components/ui/background-boxes.tsx +++ /dev/null @@ -1,70 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const BoxesCore = ({ className, ...rest }: { className?: string }) => { - const rows = new Array(150).fill(1); - const cols = new Array(100).fill(1); - let colors = [ - '--sky-300', - '--pink-300', - '--green-300', - '--yellow-300', - '--red-300', - '--purple-300', - '--blue-300', - '--indigo-300', - '--violet-300', - ]; - const getRandomColor = () => { - return colors[Math.floor(Math.random() * colors.length)]; - }; - - return ( -
- {rows.map((_, i) => ( - - {cols.map((_, j) => ( - - {j % 2 === 0 && i % 2 === 0 ? ( - - - - ) : null} - - ))} - - ))} -
- ); -}; - -export const Boxes = React.memo(BoxesCore); diff --git a/packages/shadcn/src/components/ui/background-gradient-animation.tsx b/packages/shadcn/src/components/ui/background-gradient-animation.tsx deleted file mode 100644 index ad9cf35..0000000 --- a/packages/shadcn/src/components/ui/background-gradient-animation.tsx +++ /dev/null @@ -1,172 +0,0 @@ -// @ts-nocheck -'use client'; -import { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const BackgroundGradientAnimation = ({ - gradientBackgroundStart = 'rgb(108, 0, 162)', - gradientBackgroundEnd = 'rgb(0, 17, 82)', - firstColor = '18, 113, 255', - secondColor = '221, 74, 255', - thirdColor = '100, 220, 255', - fourthColor = '200, 50, 50', - fifthColor = '180, 180, 50', - pointerColor = '140, 100, 255', - size = '80%', - blendingValue = 'hard-light', - children, - className, - interactive = true, - containerClassName, -}: { - gradientBackgroundStart?: string; - gradientBackgroundEnd?: string; - firstColor?: string; - secondColor?: string; - thirdColor?: string; - fourthColor?: string; - fifthColor?: string; - pointerColor?: string; - size?: string; - blendingValue?: string; - children?: React.ReactNode; - className?: string; - interactive?: boolean; - containerClassName?: string; -}) => { - const interactiveRef = useRef(null); - - const [curX, setCurX] = useState(0); - const [curY, setCurY] = useState(0); - const [tgX, setTgX] = useState(0); - const [tgY, setTgY] = useState(0); - useEffect(() => { - document.body.style.setProperty('--gradient-background-start', gradientBackgroundStart); - document.body.style.setProperty('--gradient-background-end', gradientBackgroundEnd); - document.body.style.setProperty('--first-color', firstColor); - document.body.style.setProperty('--second-color', secondColor); - document.body.style.setProperty('--third-color', thirdColor); - document.body.style.setProperty('--fourth-color', fourthColor); - document.body.style.setProperty('--fifth-color', fifthColor); - document.body.style.setProperty('--pointer-color', pointerColor); - document.body.style.setProperty('--size', size); - document.body.style.setProperty('--blending-value', blendingValue); - }, []); - - useEffect(() => { - function move() { - if (!interactiveRef.current) { - return; - } - setCurX(curX + (tgX - curX) / 20); - setCurY(curY + (tgY - curY) / 20); - interactiveRef.current.style.transform = `translate(${Math.round( - curX, - )}px, ${Math.round(curY)}px)`; - } - - move(); - }, [tgX, tgY]); - - const handleMouseMove = (event: React.MouseEvent) => { - if (interactiveRef.current) { - const rect = interactiveRef.current.getBoundingClientRect(); - setTgX(event.clientX - rect.left); - setTgY(event.clientY - rect.top); - } - }; - - const [isSafari, setIsSafari] = useState(false); - useEffect(() => { - setIsSafari(/^((?!chrome|android).)*safari/i.test(navigator.userAgent)); - }, []); - - return ( -
- - - - - - - - - -
{children}
-
-
-
-
-
-
- - {interactive && ( -
- )} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/background-gradient.tsx b/packages/shadcn/src/components/ui/background-gradient.tsx deleted file mode 100644 index 11e4c04..0000000 --- a/packages/shadcn/src/components/ui/background-gradient.tsx +++ /dev/null @@ -1,73 +0,0 @@ -// @ts-nocheck -import { motion } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const BackgroundGradient = ({ - children, - className, - containerClassName, - animate = true, -}: { - children?: React.ReactNode; - className?: string; - containerClassName?: string; - animate?: boolean; -}) => { - const variants = { - initial: { - backgroundPosition: '0 50%', - }, - animate: { - backgroundPosition: ['0, 50%', '100% 50%', '0 50%'], - }, - }; - return ( -
- - - -
{children}
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/background-lines.tsx b/packages/shadcn/src/components/ui/background-lines.tsx deleted file mode 100644 index a1e66c7..0000000 --- a/packages/shadcn/src/components/ui/background-lines.tsx +++ /dev/null @@ -1,143 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const BackgroundLines = ({ - children, - className, - svgOptions, -}: { - children: React.ReactNode; - className?: string; - svgOptions?: { - duration?: number; - }; -}) => { - return ( -
- - {children} -
- ); -}; - -const pathVariants = { - initial: { strokeDashoffset: 800, strokeDasharray: '50 800' }, - animate: { - strokeDashoffset: 0, - strokeDasharray: '20 800', - opacity: [0, 1, 1, 0], - }, -}; - -const SVG = ({ - svgOptions, -}: { - svgOptions?: { - duration?: number; - }; -}) => { - const paths = [ - 'M720 450C720 450 742.459 440.315 755.249 425.626C768.039 410.937 778.88 418.741 789.478 401.499C800.076 384.258 817.06 389.269 826.741 380.436C836.423 371.603 851.957 364.826 863.182 356.242C874.408 347.657 877.993 342.678 898.867 333.214C919.741 323.75 923.618 319.88 934.875 310.177C946.133 300.474 960.784 300.837 970.584 287.701C980.384 274.564 993.538 273.334 1004.85 263.087C1016.15 252.84 1026.42 250.801 1038.22 242.1C1050.02 233.399 1065.19 230.418 1074.63 215.721C1084.07 201.024 1085.49 209.128 1112.65 194.884C1139.8 180.64 1132.49 178.205 1146.43 170.636C1160.37 163.066 1168.97 158.613 1181.46 147.982C1193.95 137.35 1191.16 131.382 1217.55 125.645C1243.93 119.907 1234.19 118.899 1254.53 100.846C1274.86 82.7922 1275.12 92.8914 1290.37 76.09C1305.62 59.2886 1313.91 62.1868 1323.19 56.7536C1332.48 51.3204 1347.93 42.8082 1361.95 32.1468C1375.96 21.4855 1374.06 25.168 1397.08 10.1863C1420.09 -4.79534 1421.41 -3.16992 1431.52 -15.0078', - 'M720 450C720 450 741.044 435.759 753.062 410.636C765.079 385.514 770.541 386.148 782.73 370.489C794.918 354.83 799.378 353.188 811.338 332.597C823.298 312.005 825.578 306.419 843.707 295.493C861.837 284.568 856.194 273.248 877.376 256.48C898.558 239.713 887.536 227.843 909.648 214.958C931.759 202.073 925.133 188.092 941.063 177.621C956.994 167.151 952.171 154.663 971.197 135.041C990.222 115.418 990.785 109.375 999.488 96.1291C1008.19 82.8827 1011.4 82.2181 1032.65 61.8861C1053.9 41.5541 1045.74 48.0281 1064.01 19.5798C1082.29 -8.86844 1077.21 -3.89415 1093.7 -19.66C1110.18 -35.4258 1105.91 -46.1146 1127.68 -60.2834C1149.46 -74.4523 1144.37 -72.1024 1154.18 -97.6802C1163.99 -123.258 1165.6 -111.332 1186.21 -135.809C1206.81 -160.285 1203.29 -160.861 1220.31 -177.633C1237.33 -194.406 1236.97 -204.408 1250.42 -214.196', - 'M720 450C720 450 712.336 437.768 690.248 407.156C668.161 376.544 672.543 394.253 665.951 365.784C659.358 337.316 647.903 347.461 636.929 323.197C625.956 298.933 626.831 303.639 609.939 281.01C593.048 258.381 598.7 255.282 582.342 242.504C565.985 229.726 566.053 217.66 559.169 197.116C552.284 176.572 549.348 171.846 529.347 156.529C509.345 141.211 522.053 134.054 505.192 115.653C488.33 97.2527 482.671 82.5627 473.599 70.7833C464.527 59.0039 464.784 50.2169 447 32.0721C429.215 13.9272 436.29 0.858563 423.534 -12.6868C410.777 -26.2322 407.424 -44.0808 394.364 -56.4916C381.303 -68.9024 373.709 -72.6804 365.591 -96.1992C357.473 -119.718 358.364 -111.509 338.222 -136.495C318.08 -161.481 322.797 -149.499 315.32 -181.761C307.843 -214.023 294.563 -202.561 285.795 -223.25C277.026 -243.94 275.199 -244.055 258.602 -263.871', - 'M720 450C720 450 738.983 448.651 790.209 446.852C841.436 445.052 816.31 441.421 861.866 437.296C907.422 433.172 886.273 437.037 930.656 436.651C975.04 436.264 951.399 432.343 1001.57 425.74C1051.73 419.138 1020.72 425.208 1072.85 424.127C1124.97 423.047 1114.39 420.097 1140.02 414.426C1165.65 408.754 1173.1 412.143 1214.55 411.063C1256.01 409.983 1242.78 406.182 1285.56 401.536C1328.35 396.889 1304.66 400.796 1354.41 399.573C1404.16 398.35 1381.34 394.315 1428.34 389.376C1475.35 384.438 1445.96 386.509 1497.93 385.313C1549.9 384.117 1534.63 382.499 1567.23 381.48', - 'M720 450C720 450 696.366 458.841 682.407 472.967C668.448 487.093 673.23 487.471 647.919 492.882C622.608 498.293 636.85 499.899 609.016 512.944C581.182 525.989 596.778 528.494 571.937 533.778C547.095 539.062 551.762 548.656 536.862 556.816C521.962 564.975 515.626 563.279 497.589 575.159C479.552 587.04 484.343 590.435 461.111 598.728C437.879 607.021 442.512 605.226 423.603 618.397C404.694 631.569 402.411 629.541 390.805 641.555C379.2 653.568 369.754 658.175 353.238 663.929C336.722 669.683 330.161 674.689 312.831 684.116C295.5 693.543 288.711 698.815 278.229 704.041C267.747 709.267 258.395 712.506 240.378 726.65C222.361 740.795 230.097 738.379 203.447 745.613C176.797 752.847 193.747 752.523 166.401 767.148C139.056 781.774 151.342 783.641 130.156 791.074C108.97 798.507 116.461 802.688 96.0974 808.817C75.7334 814.946 83.8553 819.505 59.4513 830.576C35.0473 841.648 48.2548 847.874 21.8337 853.886C-4.58739 859.898 10.5966 869.102 -16.396 874.524', - 'M720 450C720 450 695.644 482.465 682.699 506.197C669.755 529.929 671.059 521.996 643.673 556.974C616.286 591.951 625.698 590.8 606.938 615.255C588.178 639.71 592.715 642.351 569.76 665.92C546.805 689.49 557.014 687.498 538.136 722.318C519.258 757.137 520.671 760.818 503.256 774.428C485.841 788.038 491.288 790.063 463.484 831.358C435.681 872.653 437.554 867.001 425.147 885.248C412.74 903.495 411.451 911.175 389.505 934.331C367.559 957.486 375.779 966.276 352.213 990.918C328.647 1015.56 341.908 1008.07 316.804 1047.24C291.699 1086.42 301.938 1060.92 276.644 1100.23C251.349 1139.54 259.792 1138.78 243.151 1153.64', - 'M719.974 450C719.974 450 765.293 459.346 789.305 476.402C813.318 493.459 825.526 487.104 865.093 495.586C904.659 504.068 908.361 510.231 943.918 523.51C979.475 536.789 963.13 535.277 1009.79 547.428C1056.45 559.579 1062.34 555.797 1089.82 568.96C1117.31 582.124 1133.96 582.816 1159.12 592.861C1184.28 602.906 1182.84 603.359 1233.48 614.514C1284.12 625.67 1254.63 632.207 1306.33 644.465C1358.04 656.723 1359.27 656.568 1378.67 670.21C1398.07 683.852 1406.16 676.466 1456.34 692.827C1506.51 709.188 1497.73 708.471 1527.54 715.212', - 'M720 450C720 450 727.941 430.821 734.406 379.251C740.87 327.681 742.857 359.402 757.864 309.798C772.871 260.194 761.947 271.093 772.992 244.308C784.036 217.524 777.105 200.533 786.808 175.699C796.511 150.864 797.141 144.333 808.694 107.307C820.247 70.2821 812.404 88.4169 819.202 37.1016C826 -14.2137 829.525 -0.990829 839.341 -30.3874C849.157 -59.784 844.404 -61.5924 855.042 -98.7516C865.68 -135.911 862.018 -144.559 876.924 -167.488C891.83 -190.418 886.075 -213.535 892.87 -237.945C899.664 -262.355 903.01 -255.031 909.701 -305.588C916.393 -356.144 917.232 -330.612 925.531 -374.777', - 'M720 450C720 450 722.468 499.363 726.104 520.449C729.739 541.535 730.644 550.025 738.836 589.07C747.028 628.115 743.766 639.319 746.146 659.812C748.526 680.306 754.006 693.598 757.006 732.469C760.007 771.34 760.322 765.244 763.893 805.195C767.465 845.146 769.92 822.227 773.398 868.469C776.875 914.71 776.207 901.365 778.233 940.19C780.259 979.015 782.53 990.477 787.977 1010.39C793.424 1030.3 791.788 1060.01 797.243 1082.24C802.698 1104.47 801.758 1130.29 808.181 1149.64C814.604 1168.99 813.135 1171.5 818.026 1225.28C822.918 1279.06 820.269 1267.92 822.905 1293.75', - 'M720 450C720 450 737.033 492.46 757.251 515.772C777.468 539.084 768.146 548.687 785.517 570.846C802.887 593.005 814.782 609.698 824.589 634.112C834.395 658.525 838.791 656.702 855.55 695.611C872.31 734.519 875.197 724.854 890.204 764.253C905.21 803.653 899.844 790.872 919.927 820.763C940.01 850.654 939.071 862.583 954.382 886.946C969.693 911.309 968.683 909.254 993.997 945.221C1019.31 981.187 1006.67 964.436 1023.49 1007.61C1040.32 1050.79 1046.15 1038.25 1059.01 1073.05C1071.88 1107.86 1081.39 1096.19 1089.45 1131.96C1097.51 1167.73 1106.52 1162.12 1125.77 1196.89', - 'M720 450C720 450 687.302 455.326 670.489 467.898C653.676 480.47 653.159 476.959 626.58 485.127C600.002 493.295 599.626 495.362 577.94 503.841C556.254 512.319 556.35 507.426 533.958 517.44C511.566 527.454 505.82 526.441 486.464 539.172C467.108 551.904 461.312 546.36 439.357 553.508C417.402 560.657 406.993 567.736 389.393 572.603C371.794 577.47 371.139 583.76 344.54 587.931C317.941 592.102 327.375 593.682 299.411 607.275C271.447 620.868 283.617 615.022 249.868 622.622C216.119 630.223 227.07 630.86 203.77 638.635C180.47 646.41 168.948 652.487 156.407 657.28C143.866 662.073 132.426 669.534 110.894 675.555C89.3615 681.575 90.3234 680.232 61.1669 689.897C32.0105 699.562 34.3696 702.021 15.9011 709.789C-2.56738 717.558 2.38861 719.841 -29.9494 729.462C-62.2873 739.083 -52.5552 738.225 -77.4307 744.286', - 'M720 450C720 450 743.97 465.061 754.884 490.648C765.798 516.235 781.032 501.34 791.376 525.115C801.72 548.889 808.417 538.333 829.306 564.807C850.195 591.281 852.336 582.531 865.086 601.843C877.835 621.155 874.512 621.773 902.383 643.857C930.255 665.94 921.885 655.976 938.025 681.74C954.164 707.505 959.384 709.719 977.273 720.525C995.162 731.33 994.233 731.096 1015.92 757.676C1037.61 784.257 1025.74 768.848 1047.82 795.343C1069.91 821.837 1065.95 815.45 1085.93 834.73C1105.91 854.009 1110.53 848.089 1124.97 869.759C1139.4 891.428 1140.57 881.585 1158.53 911.499C1176.5 941.414 1184.96 933.829 1194.53 948.792C1204.09 963.755 1221.35 973.711 1232.08 986.224C1242.8 998.738 1257.34 1015.61 1269.99 1026.53C1282.63 1037.45 1293.81 1040.91 1307.21 1064.56', - 'M720 450C720 450 718.24 412.717 716.359 397.31C714.478 381.902 713.988 362.237 710.785 344.829C707.582 327.42 708.407 322.274 701.686 292.106C694.965 261.937 699.926 270.857 694.84 240.765C689.753 210.674 693.055 217.076 689.674 184.902C686.293 152.728 686.041 149.091 682.676 133.657C679.311 118.223 682.23 106.005 681.826 80.8297C681.423 55.6545 677.891 60.196 675.66 30.0226C673.429 -0.150848 672.665 -7.94842 668.592 -26.771C664.52 -45.5935 664.724 -43.0755 661.034 -78.7766C657.343 -114.478 658.509 -103.181 653.867 -133.45C649.226 -163.719 650.748 -150.38 647.052 -182.682C643.357 -214.984 646.125 -214.921 645.216 -238.402C644.307 -261.883 640.872 -253.4 637.237 -291.706C633.602 -330.012 634.146 -309.868 630.717 -343.769C627.288 -377.669 628.008 -370.682 626.514 -394.844', - 'M720 450C720 450 730.384 481.55 739.215 507.557C748.047 533.564 751.618 537.619 766.222 562.033C780.825 586.447 774.187 582.307 787.606 618.195C801.025 654.082 793.116 653.536 809.138 678.315C825.16 703.095 815.485 717.073 829.898 735.518C844.311 753.964 845.351 773.196 852.197 786.599C859.042 800.001 862.876 805.65 872.809 845.974C882.742 886.297 885.179 874.677 894.963 903.246C904.747 931.816 911.787 924.243 921.827 961.809C931.867 999.374 927.557 998.784 940.377 1013.59C953.197 1028.4 948.555 1055.77 966.147 1070.54C983.739 1085.31 975.539 1105.69 988.65 1125.69C1001.76 1145.69 1001.82 1141.59 1007.54 1184.37C1013.27 1227.15 1018.98 1198.8 1029.67 1241.58', - 'M720 450C720 450 684.591 447.135 657.288 439.014C629.985 430.894 618.318 435.733 600.698 431.723C583.077 427.714 566.975 425.639 537.839 423.315C508.704 420.991 501.987 418.958 476.29 413.658C450.592 408.359 460.205 410.268 416.97 408.927C373.736 407.586 396.443 401.379 359.262 396.612C322.081 391.844 327.081 393.286 300.224 391.917C273.368 390.547 264.902 385.49 241.279 382.114C217.655 378.739 205.497 378.95 181.98 377.253C158.464 375.556 150.084 369.938 117.474 366.078C84.8644 362.218 81.5401 361.501 58.8734 358.545C36.2067 355.59 33.6442 351.938 -3.92281 346.728C-41.4898 341.519 -18.6466 345.082 -61.4654 341.179C-104.284 337.275 -102.32 338.048 -121.821 332.369', - 'M720 450C720 450 714.384 428.193 708.622 410.693C702.86 393.193 705.531 397.066 703.397 372.66C701.264 348.254 697.8 345.181 691.079 330.466C684.357 315.751 686.929 312.356 683.352 292.664C679.776 272.973 679.079 273.949 674.646 255.07C670.213 236.192 670.622 244.371 665.271 214.561C659.921 184.751 659.864 200.13 653.352 172.377C646.841 144.623 647.767 151.954 644.123 136.021C640.48 120.088 638.183 107.491 636.127 96.8178C634.072 86.1443 632.548 77.5871 626.743 54.0492C620.938 30.5112 622.818 28.9757 618.613 16.577C614.407 4.17831 615.555 -13.1527 608.752 -24.5691C601.95 -35.9855 603.375 -51.0511 599.526 -60.1492C595.678 -69.2472 593.676 -79.3623 587.865 -100.431C582.053 -121.5 584.628 -117.913 578.882 -139.408C573.137 -160.903 576.516 -161.693 571.966 -182.241C567.416 -202.789 567.42 -198.681 562.834 -218.28C558.248 -237.879 555.335 -240.47 552.072 -260.968C548.808 -281.466 547.605 -280.956 541.772 -296.427C535.94 -311.898 537.352 -315.211 535.128 -336.018C532.905 -356.826 531.15 -360.702 524.129 -377.124', - 'M720 450C720 450 711.433 430.82 707.745 409.428C704.056 388.035 704.937 381.711 697.503 370.916C690.069 360.121 691.274 359.999 685.371 334.109C679.469 308.22 677.496 323.883 671.24 294.303C664.984 264.724 667.608 284.849 662.065 258.116C656.522 231.383 656.357 229.024 647.442 216.172C638.527 203.319 640.134 192.925 635.555 178.727C630.976 164.529 630.575 150.179 624.994 139.987C619.413 129.794 615.849 112.779 612.251 103.074C608.654 93.3696 606.942 85.6729 603.041 63.0758C599.14 40.4787 595.242 36.9267 589.533 23.8967C583.823 10.8666 581.18 -2.12401 576.96 -14.8333C572.739 -27.5425 572.696 -37.7703 568.334 -51.3441C563.972 -64.9179 562.14 -67.2124 556.992 -93.299C551.844 -119.386 550.685 -109.743 544.056 -129.801C537.428 -149.859 534.97 -151.977 531.034 -170.076C527.099 -188.175 522.979 -185.119 519.996 -207.061C517.012 -229.004 511.045 -224.126 507.478 -247.077C503.912 -270.029 501.417 -271.033 495.534 -287C489.651 -302.968 491.488 -300.977 484.68 -326.317C477.872 -351.657 476.704 -348.494 472.792 -363.258', - 'M720 450C720 450 723.524 466.673 728.513 497.319C733.503 527.964 731.894 519.823 740.001 542.706C748.108 565.589 744.225 560.598 748.996 588.365C753.766 616.131 756.585 602.096 761.881 636.194C767.178 670.293 768.155 649.089 771.853 679.845C775.551 710.6 775.965 703.738 781.753 724.555C787.54 745.372 787.248 758.418 791.422 773.79C795.596 789.162 798.173 807.631 804.056 819.914C809.938 832.197 806.864 843.07 811.518 865.275C816.171 887.48 816.551 892.1 822.737 912.643C828.922 933.185 830.255 942.089 833.153 956.603C836.052 971.117 839.475 969.242 846.83 1003.98C854.185 1038.71 850.193 1028.86 854.119 1048.67C858.045 1068.48 857.963 1074.39 863.202 1094.94C868.44 1115.49 867.891 1108.03 874.497 1138.67C881.102 1169.31 880.502 1170.72 887.307 1186.56C894.111 1202.4 890.388 1209.75 896.507 1231.25C902.627 1252.76 902.54 1245.39 906.742 1279.23', - 'M720 450C720 450 698.654 436.893 669.785 424.902C640.916 412.91 634.741 410.601 615.568 402.586C596.396 394.571 594.829 395.346 568.66 378.206C542.492 361.067 547.454 359.714 514.087 348.978C480.721 338.242 479.79 334.731 467.646 329.846C455.502 324.96 448.63 312.156 416.039 303.755C383.448 295.354 391.682 293.73 365.021 280.975C338.36 268.219 328.715 267.114 309.809 252.575C290.903 238.036 277.185 246.984 259.529 230.958C241.873 214.931 240.502 224.403 211.912 206.241C183.323 188.078 193.288 190.89 157.03 181.714C120.772 172.538 127.621 170.109 108.253 154.714C88.8857 139.319 75.4927 138.974 56.9647 132.314C38.4366 125.654 33.8997 118.704 4.77584 106.7C-24.348 94.6959 -19.1326 90.266 -46.165 81.9082', - 'M720 450C720 450 711.596 475.85 701.025 516.114C690.455 556.378 697.124 559.466 689.441 579.079C681.758 598.693 679.099 597.524 675.382 642.732C671.665 687.94 663.4 677.024 657.844 700.179C652.288 723.333 651.086 724.914 636.904 764.536C622.723 804.158 631.218 802.853 625.414 827.056C619.611 851.259 613.734 856.28 605.94 892.262C598.146 928.244 595.403 924.314 588.884 957.785C582.364 991.255 583.079 991.176 575.561 1022.63C568.044 1054.08 566.807 1058.45 558.142 1084.32C549.476 1110.2 553.961 1129.13 542.367 1149.25C530.772 1169.37 538.268 1180.37 530.338 1207.27C522.407 1234.17 520.826 1245.53 512.156 1274.2', - 'M720 450C720 450 730.571 424.312 761.424 411.44C792.277 398.569 772.385 393.283 804.069 377.232C835.752 361.182 829.975 361.373 848.987 342.782C867.999 324.192 877.583 330.096 890.892 303.897C904.201 277.698 910.277 282.253 937.396 264.293C964.514 246.333 949.357 246.834 978.7 230.438C1008.04 214.042 990.424 217.952 1021.51 193.853C1052.6 169.753 1054.28 184.725 1065.97 158.075C1077.65 131.425 1087.76 139.068 1111.12 120.345C1134.49 101.622 1124.9 104.858 1151.67 86.3162C1178.43 67.7741 1167.09 66.2676 1197.53 47.2606C1227.96 28.2536 1225.78 23.2186 1239.27 12.9649C1252.76 2.7112 1269.32 -9.47929 1282.88 -28.5587C1296.44 -47.6381 1305.81 -41.3853 1323.82 -62.7027C1341.83 -84.0202 1340.32 -82.3794 1368.98 -98.9326', - ]; - - const colors = [ - '#46A5CA', - '#8C2F2F', - '#4FAE4D', - '#D6590C', - '#811010', - '#247AFB', - '#A534A0', - '#A8A438', - '#D6590C', - '#46A29C', - '#670F6D', - '#D7C200', - '#59BBEB', - '#504F1C', - '#55BC54', - '#4D3568', - '#9F39A5', - '#363636', - '#860909', - '#6A286F', - '#604483', - ]; - return ( - - {paths.map((path, idx) => ( - - ))} - - {/* duplicate for more paths */} - {paths.map((path, idx) => ( - - ))} - - ); -}; diff --git a/packages/shadcn/src/components/ui/bento-grid.tsx b/packages/shadcn/src/components/ui/bento-grid.tsx deleted file mode 100644 index 8a39db8..0000000 --- a/packages/shadcn/src/components/ui/bento-grid.tsx +++ /dev/null @@ -1,55 +0,0 @@ -// @ts-nocheck -import { cn } from '../../lib/utils'; - -export const BentoGrid = ({ - className, - children, -}: { - className?: string; - children?: React.ReactNode; -}) => { - return ( -
- {children} -
- ); -}; - -export const BentoGridItem = ({ - className, - title, - description, - header, - icon, -}: { - className?: string; - title?: string | React.ReactNode; - description?: string | React.ReactNode; - header?: React.ReactNode; - icon?: React.ReactNode; -}) => { - return ( -
- {header} -
- {icon} -
- {title} -
-
- {description} -
-
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/canvas-reveal-effect.tsx b/packages/shadcn/src/components/ui/canvas-reveal-effect.tsx deleted file mode 100644 index b72f5eb..0000000 --- a/packages/shadcn/src/components/ui/canvas-reveal-effect.tsx +++ /dev/null @@ -1,278 +0,0 @@ -// @ts-nocheck -'use client'; -import { Canvas, useFrame, useThree } from '@react-three/fiber'; -import React, { useMemo, useRef } from 'react'; -import * as THREE from 'three'; -import { cn } from '../../lib/utils'; - -export const CanvasRevealEffect = ({ - animationSpeed = 0.4, - opacities = [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1], - colors = [[0, 255, 255]], - containerClassName, - dotSize, - showGradient = true, -}: { - /** - * 0.1 - slower - * 1.0 - faster - */ - animationSpeed?: number; - opacities?: number[]; - colors?: number[][]; - containerClassName?: string; - dotSize?: number; - showGradient?: boolean; -}) => { - return ( -
-
- -
- {showGradient &&
} -
- ); -}; - -interface DotMatrixProps { - colors?: number[][]; - opacities?: number[]; - totalSize?: number; - dotSize?: number; - shader?: string; - center?: ('x' | 'y')[]; -} - -const DotMatrix: React.FC = ({ - colors = [[0, 0, 0]], - opacities = [0.04, 0.04, 0.04, 0.04, 0.04, 0.08, 0.08, 0.08, 0.08, 0.14], - totalSize = 4, - dotSize = 2, - shader = '', - center = ['x', 'y'], -}) => { - const uniforms = React.useMemo(() => { - let colorsArray = [colors[0], colors[0], colors[0], colors[0], colors[0], colors[0]]; - if (colors.length === 2) { - colorsArray = [colors[0], colors[0], colors[0], colors[1], colors[1], colors[1]]; - } else if (colors.length === 3) { - colorsArray = [colors[0], colors[0], colors[1], colors[1], colors[2], colors[2]]; - } - - return { - u_colors: { - value: colorsArray.map((color) => [color[0] / 255, color[1] / 255, color[2] / 255]), - type: 'uniform3fv', - }, - u_opacities: { - value: opacities, - type: 'uniform1fv', - }, - u_total_size: { - value: totalSize, - type: 'uniform1f', - }, - u_dot_size: { - value: dotSize, - type: 'uniform1f', - }, - }; - }, [colors, opacities, totalSize, dotSize]); - - return ( - - ); -}; - -type Uniforms = { - [key: string]: { - value: number[] | number[][] | number; - type: string; - }; -}; -const ShaderMaterial = ({ - source, - uniforms, - maxFps = 60, -}: { - source: string; - hovered?: boolean; - maxFps?: number; - uniforms: Uniforms; -}) => { - const { size } = useThree(); - const ref = useRef(); - let lastFrameTime = 0; - - useFrame(({ clock }) => { - if (!ref.current) return; - const timestamp = clock.getElapsedTime(); - if (timestamp - lastFrameTime < 1 / maxFps) { - return; - } - lastFrameTime = timestamp; - - const material: any = ref.current.material; - const timeLocation = material.uniforms.u_time; - timeLocation.value = timestamp; - }); - - const getUniforms = () => { - const preparedUniforms: any = {}; - - for (const uniformName in uniforms) { - const uniform: any = uniforms[uniformName]; - - switch (uniform.type) { - case 'uniform1f': - preparedUniforms[uniformName] = { value: uniform.value, type: '1f' }; - break; - case 'uniform3f': - preparedUniforms[uniformName] = { - value: new THREE.Vector3().fromArray(uniform.value), - type: '3f', - }; - break; - case 'uniform1fv': - preparedUniforms[uniformName] = { value: uniform.value, type: '1fv' }; - break; - case 'uniform3fv': - preparedUniforms[uniformName] = { - value: uniform.value.map((v: number[]) => new THREE.Vector3().fromArray(v)), - type: '3fv', - }; - break; - case 'uniform2f': - preparedUniforms[uniformName] = { - value: new THREE.Vector2().fromArray(uniform.value), - type: '2f', - }; - break; - default: - console.error(`Invalid uniform type for '${uniformName}'.`); - break; - } - } - - preparedUniforms['u_time'] = { value: 0, type: '1f' }; - preparedUniforms['u_resolution'] = { - value: new THREE.Vector2(size.width * 2, size.height * 2), - }; // Initialize u_resolution - return preparedUniforms; - }; - - // Shader material - const material = useMemo(() => { - const materialObject = new THREE.ShaderMaterial({ - vertexShader: ` - precision mediump float; - in vec2 coordinates; - uniform vec2 u_resolution; - out vec2 fragCoord; - void main(){ - float x = position.x; - float y = position.y; - gl_Position = vec4(x, y, 0.0, 1.0); - fragCoord = (position.xy + vec2(1.0)) * 0.5 * u_resolution; - fragCoord.y = u_resolution.y - fragCoord.y; - } - `, - fragmentShader: source, - uniforms: getUniforms(), - glslVersion: THREE.GLSL3, - blending: THREE.CustomBlending, - blendSrc: THREE.SrcAlphaFactor, - blendDst: THREE.OneFactor, - }); - - return materialObject; - }, [size.width, size.height, source]); - - return ( - - - - - ); -}; - -const Shader: React.FC = ({ source, uniforms, maxFps = 60 }) => { - return ( - - - - ); -}; -interface ShaderProps { - source: string; - uniforms: { - [key: string]: { - value: number[] | number[][] | number; - type: string; - }; - }; - maxFps?: number; -} diff --git a/packages/shadcn/src/components/ui/card-hover-effect.tsx b/packages/shadcn/src/components/ui/card-hover-effect.tsx deleted file mode 100644 index c3f282e..0000000 --- a/packages/shadcn/src/components/ui/card-hover-effect.tsx +++ /dev/null @@ -1,100 +0,0 @@ -// @ts-nocheck -import { AnimatePresence, motion } from 'framer-motion'; -import Link from 'next/link'; -import { useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const HoverEffect = ({ - items, - className, -}: { - items: { - title: string; - description: string; - link: string; - }[]; - className?: string; -}) => { - let [hoveredIndex, setHoveredIndex] = useState(null); - - return ( -
- {items.map((item, idx) => ( - setHoveredIndex(idx)} - onMouseLeave={() => setHoveredIndex(null)} - > - - {hoveredIndex === idx && ( - - )} - - - {item.title} - {item.description} - - - ))} -
- ); -}; - -export const Card = ({ - className, - children, -}: { - className?: string; - children: React.ReactNode; -}) => { - return ( -
-
-
{children}
-
-
- ); -}; -export const CardTitle = ({ - className, - children, -}: { - className?: string; - children: React.ReactNode; -}) => { - return ( -

{children}

- ); -}; -export const CardDescription = ({ - className, - children, -}: { - className?: string; - children: React.ReactNode; -}) => { - return ( -

- {children} -

- ); -}; diff --git a/packages/shadcn/src/components/ui/card-spotlight.tsx b/packages/shadcn/src/components/ui/card-spotlight.tsx deleted file mode 100644 index 78aec40..0000000 --- a/packages/shadcn/src/components/ui/card-spotlight.tsx +++ /dev/null @@ -1,71 +0,0 @@ -// @ts-nocheck -'use client'; - -import { motion, useMotionTemplate, useMotionValue } from 'framer-motion'; -import React, { MouseEvent as ReactMouseEvent, useState } from 'react'; -import { cn } from '../../lib/utils'; -import { CanvasRevealEffect } from './canvas-reveal-effect'; - -export const CardSpotlight = ({ - children, - radius = 350, - color = '#262626', - className, - ...props -}: { - radius?: number; - color?: string; - children: React.ReactNode; -} & React.HTMLAttributes) => { - const mouseX = useMotionValue(0); - const mouseY = useMotionValue(0); - function handleMouseMove({ currentTarget, clientX, clientY }: ReactMouseEvent) { - let { left, top } = currentTarget.getBoundingClientRect(); - - mouseX.set(clientX - left); - mouseY.set(clientY - top); - } - - const [isHovering, setIsHovering] = useState(false); - const handleMouseEnter = () => setIsHovering(true); - const handleMouseLeave = () => setIsHovering(false); - return ( -
- - {isHovering && ( - - )} - - {children} -
- ); -}; diff --git a/packages/shadcn/src/components/ui/card-stack.tsx b/packages/shadcn/src/components/ui/card-stack.tsx deleted file mode 100644 index 44c6843..0000000 --- a/packages/shadcn/src/components/ui/card-stack.tsx +++ /dev/null @@ -1,70 +0,0 @@ -'use client'; -import { motion } from 'framer-motion'; -import { useEffect, useState } from 'react'; - -let interval: any; - -type Card = { - id: number; - name: string; - designation: string; - content: React.ReactNode; -}; - -export const CardStack = ({ - items, - offset, - scaleFactor, -}: { - items: Card[]; - offset?: number; - scaleFactor?: number; -}) => { - const CARD_OFFSET = offset || 10; - const SCALE_FACTOR = scaleFactor || 0.06; - const [cards, setCards] = useState(items); - - useEffect(() => { - startFlipping(); - - return () => clearInterval(interval); - }, []); - const startFlipping = () => { - interval = setInterval(() => { - setCards((prevCards: Card[]) => { - const newArray = [...prevCards]; // create a copy of the array - newArray.unshift(newArray.pop()!); // move the last element to the front - return newArray; - }); - }, 5000); - }; - - return ( -
- {cards.map((card, index) => { - return ( - -
{card.content}
-
-

{card.name}

-

- {card.designation} -

-
-
- ); - })} -
- ); -}; diff --git a/packages/shadcn/src/components/ui/compare.tsx b/packages/shadcn/src/components/ui/compare.tsx deleted file mode 100644 index 30733c8..0000000 --- a/packages/shadcn/src/components/ui/compare.tsx +++ /dev/null @@ -1,237 +0,0 @@ -// @ts-nocheck -'use client'; -import { IconDotsVertical } from '@tabler/icons-react'; -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; -import { SparklesCore } from './sparkles'; - -interface CompareProps { - firstImage?: string; - secondImage?: string; - className?: string; - firstImageClassName?: string; - secondImageClassname?: string; - initialSliderPercentage?: number; - slideMode?: 'hover' | 'drag'; - showHandlebar?: boolean; - autoplay?: boolean; - autoplayDuration?: number; -} -export const Compare = ({ - firstImage = '', - secondImage = '', - className, - firstImageClassName, - secondImageClassname, - initialSliderPercentage = 50, - slideMode = 'hover', - showHandlebar = true, - autoplay = false, - autoplayDuration = 5000, -}: CompareProps) => { - const [sliderXPercent, setSliderXPercent] = useState(initialSliderPercentage); - const [isDragging, setIsDragging] = useState(false); - - const sliderRef = useRef(null); - - const [isMouseOver, setIsMouseOver] = useState(false); - - const autoplayRef = useRef(null); - - const startAutoplay = useCallback(() => { - if (!autoplay) return; - - const startTime = Date.now(); - const animate = () => { - const elapsedTime = Date.now() - startTime; - const progress = (elapsedTime % (autoplayDuration * 2)) / autoplayDuration; - const percentage = progress <= 1 ? progress * 100 : (2 - progress) * 100; - - setSliderXPercent(percentage); - autoplayRef.current = setTimeout(animate, 16); // ~60fps - }; - - animate(); - }, [autoplay, autoplayDuration]); - - const stopAutoplay = useCallback(() => { - if (autoplayRef.current) { - clearTimeout(autoplayRef.current); - autoplayRef.current = null; - } - }, []); - - useEffect(() => { - startAutoplay(); - return () => stopAutoplay(); - }, [startAutoplay, stopAutoplay]); - - function mouseEnterHandler() { - setIsMouseOver(true); - stopAutoplay(); - } - - function mouseLeaveHandler() { - setIsMouseOver(false); - if (slideMode === 'hover') { - setSliderXPercent(initialSliderPercentage); - } - if (slideMode === 'drag') { - setIsDragging(false); - } - startAutoplay(); - } - - const handleStart = useCallback( - (clientX: number) => { - if (slideMode === 'drag') { - setIsDragging(true); - } - }, - [slideMode], - ); - - const handleEnd = useCallback(() => { - if (slideMode === 'drag') { - setIsDragging(false); - } - }, [slideMode]); - - const handleMove = useCallback( - (clientX: number) => { - if (!sliderRef.current) return; - if (slideMode === 'hover' || (slideMode === 'drag' && isDragging)) { - const rect = sliderRef.current.getBoundingClientRect(); - const x = clientX - rect.left; - const percent = (x / rect.width) * 100; - requestAnimationFrame(() => { - setSliderXPercent(Math.max(0, Math.min(100, percent))); - }); - } - }, - [slideMode, isDragging], - ); - - const handleMouseDown = useCallback( - (e: React.MouseEvent) => handleStart(e.clientX), - [handleStart], - ); - const handleMouseUp = useCallback(() => handleEnd(), [handleEnd]); - const handleMouseMove = useCallback((e: React.MouseEvent) => handleMove(e.clientX), [handleMove]); - - const handleTouchStart = useCallback( - (e: React.TouchEvent) => { - if (!autoplay) { - handleStart(e.touches[0].clientX); - } - }, - [handleStart, autoplay], - ); - - const handleTouchEnd = useCallback(() => { - if (!autoplay) { - handleEnd(); - } - }, [handleEnd, autoplay]); - - const handleTouchMove = useCallback( - (e: React.TouchEvent) => { - if (!autoplay) { - handleMove(e.touches[0].clientX); - } - }, - [handleMove, autoplay], - ); - - return ( -
- - -
-
-
- -
- {showHandlebar && ( -
- -
- )} - - -
- - {firstImage ? ( - - first image - - ) : null} - -
- - - {secondImage ? ( - - ) : null} - -
- ); -}; - -const MemoizedSparklesCore = React.memo(SparklesCore); diff --git a/packages/shadcn/src/components/ui/container-scroll-animation.tsx b/packages/shadcn/src/components/ui/container-scroll-animation.tsx deleted file mode 100644 index 7bc7268..0000000 --- a/packages/shadcn/src/components/ui/container-scroll-animation.tsx +++ /dev/null @@ -1,95 +0,0 @@ -'use client'; -import { motion, MotionValue, useScroll, useTransform } from 'framer-motion'; -import React, { useRef } from 'react'; - -export const ContainerScroll = ({ - titleComponent, - children, -}: { - titleComponent: string | React.ReactNode; - children: React.ReactNode; -}) => { - const containerRef = useRef(null); - const { scrollYProgress } = useScroll({ - target: containerRef, - }); - const [isMobile, setIsMobile] = React.useState(false); - - React.useEffect(() => { - const checkMobile = () => { - setIsMobile(window.innerWidth <= 768); - }; - checkMobile(); - window.addEventListener('resize', checkMobile); - return () => { - window.removeEventListener('resize', checkMobile); - }; - }, []); - - const scaleDimensions = () => { - return isMobile ? [0.7, 0.9] : [1.05, 1]; - }; - - const rotate = useTransform(scrollYProgress, [0, 1], [20, 0]); - const scale = useTransform(scrollYProgress, [0, 1], scaleDimensions()); - const translate = useTransform(scrollYProgress, [0, 1], [0, -100]); - - return ( -
-
-
- - {children} - -
-
- ); -}; - -export const Header = ({ translate, titleComponent }: any) => { - return ( - - {titleComponent} - - ); -}; - -export const Card = ({ - rotate, - scale, - children, -}: { - rotate: MotionValue; - scale: MotionValue; - translate: MotionValue; - children: React.ReactNode; -}) => { - return ( - -
- {children} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/cover.tsx b/packages/shadcn/src/components/ui/cover.tsx deleted file mode 100644 index b7a4083..0000000 --- a/packages/shadcn/src/components/ui/cover.tsx +++ /dev/null @@ -1,219 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useEffect, useId, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; -import { SparklesCore } from './sparkles'; - -export const Cover = ({ - children, - className, -}: { - children?: React.ReactNode; - className?: string; -}) => { - const [hovered, setHovered] = useState(false); - - const ref = useRef(null); - - const [containerWidth, setContainerWidth] = useState(0); - const [beamPositions, setBeamPositions] = useState([]); - - useEffect(() => { - if (ref.current) { - setContainerWidth(ref.current?.clientWidth ?? 0); - - const height = ref.current?.clientHeight ?? 0; - const numberOfBeams = Math.floor(height / 10); // Adjust the divisor to control the spacing - const positions = Array.from( - { length: numberOfBeams }, - (_, i) => (i + 1) * (height / (numberOfBeams + 1)), - ); - setBeamPositions(positions); - } - }, [ref.current]); - - return ( -
setHovered(true)} - onMouseLeave={() => setHovered(false)} - ref={ref} - className='group/cover relative inline-block rounded-sm bg-neutral-100 px-2 py-2 transition duration-200 hover:bg-neutral-900 dark:bg-neutral-900' - > - - {hovered && ( - - - - - - - )} - - {beamPositions.map((position, index) => ( - - ))} - - {children} - - - - - -
- ); -}; - -export const Beam = ({ - className, - delay, - duration, - hovered, - width = 600, - ...svgProps -}: { - className?: string; - delay?: number; - duration?: number; - hovered?: boolean; - width?: number; -} & React.ComponentProps) => { - const id = useId(); - - return ( - - - - - - - - - - - - ); -}; - -export const CircleIcon = ({ className, delay }: { className?: string; delay?: number }) => { - return ( -
- ); -}; diff --git a/packages/shadcn/src/components/ui/direction-aware-hover.tsx b/packages/shadcn/src/components/ui/direction-aware-hover.tsx deleted file mode 100644 index 8aa060e..0000000 --- a/packages/shadcn/src/components/ui/direction-aware-hover.tsx +++ /dev/null @@ -1,157 +0,0 @@ -// @ts-nocheck -'use client'; - -import { AnimatePresence, motion } from 'framer-motion'; -import Image from 'next/image'; -import { useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const DirectionAwareHover = ({ - imageUrl, - children, - childrenClassName, - imageClassName, - className, -}: { - imageUrl: string; - children: React.ReactNode | string; - childrenClassName?: string; - imageClassName?: string; - className?: string; -}) => { - const ref = useRef(null); - - const [direction, setDirection] = useState<'top' | 'bottom' | 'left' | 'right' | string>('left'); - - const handleMouseEnter = (event: React.MouseEvent) => { - if (!ref.current) return; - - const direction = getDirection(event, ref.current); - console.log('direction', direction); - switch (direction) { - case 0: - setDirection('top'); - break; - case 1: - setDirection('right'); - break; - case 2: - setDirection('bottom'); - break; - case 3: - setDirection('left'); - break; - default: - setDirection('left'); - break; - } - }; - - const getDirection = (ev: React.MouseEvent, obj: HTMLElement) => { - const { width: w, height: h, left, top } = obj.getBoundingClientRect(); - const x = ev.clientX - left - (w / 2) * (w > h ? h / w : 1); - const y = ev.clientY - top - (h / 2) * (h > w ? w / h : 1); - const d = Math.round(Math.atan2(y, x) / 1.57079633 + 5) % 4; - return d; - }; - - return ( - - - - - - image - - - {children} - - - - - ); -}; - -const variants = { - initial: { - x: 0, - }, - - exit: { - x: 0, - y: 0, - }, - top: { - y: 20, - }, - bottom: { - y: -20, - }, - left: { - x: 20, - }, - right: { - x: -20, - }, -}; - -const textVariants = { - initial: { - y: 0, - x: 0, - opacity: 0, - }, - exit: { - y: 0, - x: 0, - opacity: 0, - }, - top: { - y: -20, - opacity: 1, - }, - bottom: { - y: 2, - opacity: 1, - }, - left: { - x: -2, - opacity: 1, - }, - right: { - x: 20, - opacity: 1, - }, -}; diff --git a/packages/shadcn/src/components/ui/evervault-card.tsx b/packages/shadcn/src/components/ui/evervault-card.tsx deleted file mode 100644 index 8071172..0000000 --- a/packages/shadcn/src/components/ui/evervault-card.tsx +++ /dev/null @@ -1,96 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useMotionTemplate, useMotionValue } from 'framer-motion'; -import { useEffect, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const EvervaultCard = ({ text, className }: { text?: string; className?: string }) => { - let mouseX = useMotionValue(0); - let mouseY = useMotionValue(0); - - const [randomString, setRandomString] = useState(''); - - useEffect(() => { - let str = generateRandomString(1500); - setRandomString(str); - }, []); - - function onMouseMove({ currentTarget, clientX, clientY }: any) { - let { left, top } = currentTarget.getBoundingClientRect(); - mouseX.set(clientX - left); - mouseY.set(clientY - top); - - const str = generateRandomString(1500); - setRandomString(str); - } - - return ( -
-
- -
-
-
- {text} -
-
-
-
- ); -}; - -export function CardPattern({ mouseX, mouseY, randomString }: any) { - let maskImage = useMotionTemplate`radial-gradient(250px at ${mouseX}px ${mouseY}px, white, transparent)`; - let style = { maskImage, WebkitMaskImage: maskImage }; - - return ( -
-
- - -

- {randomString} -

-
-
- ); -} - -const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; -export const generateRandomString = (length: number) => { - let result = ''; - for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * characters.length)); - } - return result; -}; - -export const Icon = ({ className, ...rest }: any) => { - return ( - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/file-upload.tsx b/packages/shadcn/src/components/ui/file-upload.tsx deleted file mode 100644 index fdd5236..0000000 --- a/packages/shadcn/src/components/ui/file-upload.tsx +++ /dev/null @@ -1,185 +0,0 @@ -// @ts-nocheck -import { IconUpload } from '@tabler/icons-react'; -import { motion } from 'framer-motion'; -import { useRef, useState } from 'react'; -import { useDropzone } from 'react-dropzone'; -import { cn } from '../../lib/utils'; - -const mainVariant = { - initial: { - x: 0, - y: 0, - }, - animate: { - x: 20, - y: -20, - opacity: 0.9, - }, -}; - -const secondaryVariant = { - initial: { - opacity: 0, - }, - animate: { - opacity: 1, - }, -}; - -export const FileUpload = ({ onChange }: { onChange?: (files: File[]) => void }) => { - const [files, setFiles] = useState([]); - const fileInputRef = useRef(null); - - const handleFileChange = (newFiles: File[]) => { - setFiles((prevFiles) => [...prevFiles, ...newFiles]); - onChange && onChange(newFiles); - }; - - const handleClick = () => { - fileInputRef.current?.click(); - }; - - const { getRootProps, isDragActive } = useDropzone({ - multiple: false, - noClick: true, - onDrop: handleFileChange, - onDropRejected: (error) => { - console.log(error); - }, - }); - - return ( -
- - handleFileChange(Array.from(e.target.files || []))} - className='hidden' - /> -
- -
-
-

- Upload file -

-

- Drag or drop your files here or click to upload -

-
- {files.length > 0 && - files.map((file, idx) => ( - -
- - {file.name} - - - {(file.size / (1024 * 1024)).toFixed(2)} MB - -
- -
- - {file.type} - - - - modified {new Date(file.lastModified).toLocaleDateString()} - -
-
- ))} - {!files.length && ( - - {isDragActive ? ( - - Drop it - - - ) : ( - - )} - - )} - - {!files.length && ( - - )} -
-
-
-
- ); -}; - -export function GridPattern() { - const columns = 41; - const rows = 11; - return ( -
- {Array.from({ length: rows }).map((_, row) => - Array.from({ length: columns }).map((_, col) => { - const index = row * columns + col; - return ( -
- ); - }), - )} -
- ); -} diff --git a/packages/shadcn/src/components/ui/flip-words.tsx b/packages/shadcn/src/components/ui/flip-words.tsx deleted file mode 100644 index be8472a..0000000 --- a/packages/shadcn/src/components/ui/flip-words.tsx +++ /dev/null @@ -1,99 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import { useCallback, useEffect, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const FlipWords = ({ - words, - duration = 3000, - className, -}: { - words: string[]; - duration?: number; - className?: string; -}) => { - const [currentWord, setCurrentWord] = useState(words[0]); - const [isAnimating, setIsAnimating] = useState(false); - - // thanks for the fix Julian - https://github.com/Julian-AT - const startAnimation = useCallback(() => { - const word = words[words.indexOf(currentWord) + 1] || words[0]; - setCurrentWord(word); - setIsAnimating(true); - }, [currentWord, words]); - - useEffect(() => { - if (!isAnimating) - setTimeout(() => { - startAnimation(); - }, duration); - }, [isAnimating, duration, startAnimation]); - - return ( - { - setIsAnimating(false); - }} - > - - {/* edit suggested by Sajal: https://x.com/DewanganSajal */} - {currentWord.split(' ').map((word, wordIndex) => ( - - {word.split('').map((letter, letterIndex) => ( - - {letter} - - ))} -   - - ))} - - - ); -}; diff --git a/packages/shadcn/src/components/ui/floating-dock.tsx b/packages/shadcn/src/components/ui/floating-dock.tsx deleted file mode 100644 index d745b64..0000000 --- a/packages/shadcn/src/components/ui/floating-dock.tsx +++ /dev/null @@ -1,197 +0,0 @@ -// @ts-nocheck -'use client'; -/** - * Note: Use position fixed according to your needs - * Desktop navbar is better positioned at the bottom - * Mobile navbar is better positioned at bottom right. - **/ - -import { IconLayoutNavbarCollapse } from '@tabler/icons-react'; -import { - AnimatePresence, - MotionValue, - motion, - useMotionValue, - useSpring, - useTransform, -} from 'framer-motion'; -import Link from 'next/link'; -import { useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const FloatingDock = ({ - items, - desktopClassName, - mobileClassName, -}: { - items: { title: string; icon: React.ReactNode; href: string }[]; - desktopClassName?: string; - mobileClassName?: string; -}) => { - return ( - <> - - - - ); -}; - -const FloatingDockMobile = ({ - items, - className, -}: { - items: { title: string; icon: React.ReactNode; href: string }[]; - className?: string; -}) => { - const [open, setOpen] = useState(false); - return ( -
- - {open && ( - - {items.map((item, idx) => ( - - -
{item.icon}
- -
- ))} -
- )} -
- -
- ); -}; - -const FloatingDockDesktop = ({ - items, - className, -}: { - items: { title: string; icon: React.ReactNode; href: string }[]; - className?: string; -}) => { - let mouseX = useMotionValue(Infinity); - return ( - mouseX.set(e.pageX)} - onMouseLeave={() => mouseX.set(Infinity)} - className={cn( - 'mx-auto hidden h-16 items-end gap-4 rounded-2xl bg-gray-50 px-4 pb-3 md:flex dark:bg-neutral-900', - className, - )} - > - {items.map((item) => ( - - ))} - - ); -}; - -function IconContainer({ - mouseX, - title, - icon, - href, -}: { - mouseX: MotionValue; - title: string; - icon: React.ReactNode; - href: string; -}) { - let ref = useRef(null); - - let distance = useTransform(mouseX, (val) => { - let bounds = ref.current?.getBoundingClientRect() ?? { x: 0, width: 0 }; - - return val - bounds.x - bounds.width / 2; - }); - - let widthTransform = useTransform(distance, [-150, 0, 150], [40, 80, 40]); - let heightTransform = useTransform(distance, [-150, 0, 150], [40, 80, 40]); - - let widthTransformIcon = useTransform(distance, [-150, 0, 150], [20, 40, 20]); - let heightTransformIcon = useTransform(distance, [-150, 0, 150], [20, 40, 20]); - - let width = useSpring(widthTransform, { - mass: 0.1, - stiffness: 150, - damping: 12, - }); - let height = useSpring(heightTransform, { - mass: 0.1, - stiffness: 150, - damping: 12, - }); - - let widthIcon = useSpring(widthTransformIcon, { - mass: 0.1, - stiffness: 150, - damping: 12, - }); - let heightIcon = useSpring(heightTransformIcon, { - mass: 0.1, - stiffness: 150, - damping: 12, - }); - - const [hovered, setHovered] = useState(false); - - return ( - - setHovered(true)} - onMouseLeave={() => setHovered(false)} - className='relative flex aspect-square items-center justify-center rounded-full bg-gray-200 dark:bg-neutral-800' - > - - {hovered && ( - - {title} - - )} - - - {icon} - - - - ); -} diff --git a/packages/shadcn/src/components/ui/floating-navbar.tsx b/packages/shadcn/src/components/ui/floating-navbar.tsx deleted file mode 100644 index 3491d68..0000000 --- a/packages/shadcn/src/components/ui/floating-navbar.tsx +++ /dev/null @@ -1,78 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion, useMotionValueEvent, useScroll } from 'framer-motion'; -import Link from 'next/link'; -import { useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const FloatingNav = ({ - navItems, - className, -}: { - navItems: { - name: string; - link: string; - icon?: JSX.Element; - }[]; - className?: string; -}) => { - const { scrollYProgress } = useScroll(); - - const [visible, setVisible] = useState(false); - - useMotionValueEvent(scrollYProgress, 'change', (current) => { - // Check if current is not undefined and is a number - if (typeof current === 'number') { - let direction = current! - scrollYProgress.getPrevious()!; - - if (scrollYProgress.get() < 0.05) { - setVisible(false); - } else { - if (direction < 0) { - setVisible(true); - } else { - setVisible(false); - } - } - } - }); - - return ( - - - {navItems.map((navItem: any, idx: number) => ( - - {navItem.icon} - {navItem.name} - - ))} - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/focus-cards.tsx b/packages/shadcn/src/components/ui/focus-cards.tsx deleted file mode 100644 index dee15b6..0000000 --- a/packages/shadcn/src/components/ui/focus-cards.tsx +++ /dev/null @@ -1,65 +0,0 @@ -// @ts-nocheck -'use client'; -import Image from 'next/image'; -import React, { useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const Card = React.memo( - ({ - card, - index, - hovered, - setHovered, - }: { - card: any; - index: number; - hovered: number | null; - setHovered: React.Dispatch>; - }) => ( -
setHovered(index)} - onMouseLeave={() => setHovered(null)} - className={cn( - 'relative h-60 w-full overflow-hidden rounded-lg bg-gray-100 transition-all duration-300 ease-out md:h-96 dark:bg-neutral-900', - hovered !== null && hovered !== index && 'scale-[0.98] blur-sm', - )} - > - {card.title} -
-
- {card.title} -
-
-
- ), -); - -Card.displayName = 'Card'; - -type Card = { - title: string; - src: string; -}; - -export function FocusCards({ cards }: { cards: Card[] }) { - const [hovered, setHovered] = useState(null); - - return ( -
- {cards.map((card, index) => ( - - ))} -
- ); -} diff --git a/packages/shadcn/src/components/ui/following-pointer.tsx b/packages/shadcn/src/components/ui/following-pointer.tsx deleted file mode 100644 index c7ca11a..0000000 --- a/packages/shadcn/src/components/ui/following-pointer.tsx +++ /dev/null @@ -1,135 +0,0 @@ -// @ts-nocheck -import React, { useEffect, useState } from 'react'; - -import { AnimatePresence, motion, useMotionValue } from 'framer-motion'; -import { cn } from '../../lib/utils'; - -export const FollowerPointerCard = ({ - children, - className, - title, -}: { - children: React.ReactNode; - className?: string; - title?: string | React.ReactNode; -}) => { - const x = useMotionValue(0); - const y = useMotionValue(0); - const ref = React.useRef(null); - const [rect, setRect] = useState(null); - const [isInside, setIsInside] = useState(false); // Add this line - - useEffect(() => { - if (ref.current) { - setRect(ref.current.getBoundingClientRect()); - } - }, []); - - const handleMouseMove = (e: React.MouseEvent) => { - if (rect) { - const scrollX = window.scrollX; - const scrollY = window.scrollY; - x.set(e.clientX - rect.left + scrollX); - y.set(e.clientY - rect.top + scrollY); - } - }; - const handleMouseLeave = () => { - setIsInside(false); - }; - - const handleMouseEnter = () => { - setIsInside(true); - }; - return ( -
- {isInside && } - {children} -
- ); -}; - -export const FollowPointer = ({ - x, - y, - title, -}: { - x: any; - y: any; - title?: string | React.ReactNode; -}) => { - const colors = [ - 'var(--sky-500)', - 'var(--neutral-500)', - 'var(--teal-500)', - 'var(--green-500)', - 'var(--blue-500)', - 'var(--red-500)', - 'var(--yellow-500)', - ]; - return ( - - - - - - {title || `William Shakespeare`} - - - ); -}; diff --git a/packages/shadcn/src/components/ui/glare-card.tsx b/packages/shadcn/src/components/ui/glare-card.tsx deleted file mode 100644 index 77cd20c..0000000 --- a/packages/shadcn/src/components/ui/glare-card.tsx +++ /dev/null @@ -1,132 +0,0 @@ -// @ts-nocheck -import { useRef } from 'react'; -import { cn } from '../../lib/utils'; - -export const GlareCard = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - const isPointerInside = useRef(false); - const refElement = useRef(null); - const state = useRef({ - glare: { - x: 50, - y: 50, - }, - background: { - x: 50, - y: 50, - }, - rotate: { - x: 0, - y: 0, - }, - }); - const containerStyle = { - '--m-x': '50%', - '--m-y': '50%', - '--r-x': '0deg', - '--r-y': '0deg', - '--bg-x': '50%', - '--bg-y': '50%', - '--duration': '300ms', - '--foil-size': '100%', - '--opacity': '0', - '--radius': '48px', - '--easing': 'ease', - '--transition': 'var(--duration) var(--easing)', - } as any; - - const backgroundStyle = { - '--step': '5%', - '--foil-svg': `url("data:image/svg+xml,%3Csvg width='26' height='26' viewBox='0 0 26 26' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.99994 3.419C2.99994 3.419 21.6142 7.43646 22.7921 12.153C23.97 16.8695 3.41838 23.0306 3.41838 23.0306' stroke='white' stroke-width='5' stroke-miterlimit='3.86874' stroke-linecap='round' style='mix-blend-mode:darken'/%3E%3C/svg%3E")`, - '--pattern': 'var(--foil-svg) center/100% no-repeat', - '--rainbow': - 'repeating-linear-gradient( 0deg,rgb(255,119,115) calc(var(--step) * 1),rgba(255,237,95,1) calc(var(--step) * 2),rgba(168,255,95,1) calc(var(--step) * 3),rgba(131,255,247,1) calc(var(--step) * 4),rgba(120,148,255,1) calc(var(--step) * 5),rgb(216,117,255) calc(var(--step) * 6),rgb(255,119,115) calc(var(--step) * 7) ) 0% var(--bg-y)/200% 700% no-repeat', - '--diagonal': - 'repeating-linear-gradient( 128deg,#0e152e 0%,hsl(180,10%,60%) 3.8%,hsl(180,10%,60%) 4.5%,hsl(180,10%,60%) 5.2%,#0e152e 10%,#0e152e 12% ) var(--bg-x) var(--bg-y)/300% no-repeat', - '--shade': - 'radial-gradient( farthest-corner circle at var(--m-x) var(--m-y),rgba(255,255,255,0.1) 12%,rgba(255,255,255,0.15) 20%,rgba(255,255,255,0.25) 120% ) var(--bg-x) var(--bg-y)/300% no-repeat', - 'backgroundBlendMode': 'hue, hue, hue, overlay', - }; - - const updateStyles = () => { - if (refElement.current) { - console.log(state.current); - const { background, rotate, glare } = state.current; - refElement.current?.style.setProperty('--m-x', `${glare.x}%`); - refElement.current?.style.setProperty('--m-y', `${glare.y}%`); - refElement.current?.style.setProperty('--r-x', `${rotate.x}deg`); - refElement.current?.style.setProperty('--r-y', `${rotate.y}deg`); - refElement.current?.style.setProperty('--bg-x', `${background.x}%`); - refElement.current?.style.setProperty('--bg-y', `${background.y}%`); - } - }; - return ( -
{ - const rotateFactor = 0.4; - const rect = event.currentTarget.getBoundingClientRect(); - const position = { - x: event.clientX - rect.left, - y: event.clientY - rect.top, - }; - const percentage = { - x: (100 / rect.width) * position.x, - y: (100 / rect.height) * position.y, - }; - const delta = { - x: percentage.x - 50, - y: percentage.y - 50, - }; - - const { background, rotate, glare } = state.current; - background.x = 50 + percentage.x / 4 - 12.5; - background.y = 50 + percentage.y / 3 - 16.67; - rotate.x = -(delta.x / 3.5); - rotate.y = delta.y / 2; - rotate.x *= rotateFactor; - rotate.y *= rotateFactor; - glare.x = percentage.x; - glare.y = percentage.y; - - updateStyles(); - }} - onPointerEnter={() => { - isPointerInside.current = true; - if (refElement.current) { - setTimeout(() => { - if (isPointerInside.current) { - refElement.current?.style.setProperty('--duration', '0s'); - } - }, 300); - } - }} - onPointerLeave={() => { - isPointerInside.current = false; - if (refElement.current) { - refElement.current.style.removeProperty('--duration'); - refElement.current?.style.setProperty('--r-x', `0deg`); - refElement.current?.style.setProperty('--r-y', `0deg`); - } - }} - > -
-
-
{children}
-
-
-
-
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/globe.tsx b/packages/shadcn/src/components/ui/globe.tsx deleted file mode 100644 index 9710214..0000000 --- a/packages/shadcn/src/components/ui/globe.tsx +++ /dev/null @@ -1,296 +0,0 @@ -// @ts-nocheck -'use client'; -import { OrbitControls } from '@react-three/drei'; -import { Canvas, extend, Object3DNode, useThree } from '@react-three/fiber'; -import { useEffect, useRef, useState } from 'react'; -import { Color, Fog, PerspectiveCamera, Scene, Vector3 } from 'three'; -import ThreeGlobe from 'three-globe'; -import countries from '../../data/globe.json'; -declare module '@react-three/fiber' { - interface ThreeElements { - threeGlobe: Object3DNode; - } -} - -extend({ ThreeGlobe }); - -const RING_PROPAGATION_SPEED = 3; -const aspect = 1.2; -const cameraZ = 300; - -type Position = { - order: number; - startLat: number; - startLng: number; - endLat: number; - endLng: number; - arcAlt: number; - color: string; -}; - -export type GlobeConfig = { - pointSize?: number; - globeColor?: string; - showAtmosphere?: boolean; - atmosphereColor?: string; - atmosphereAltitude?: number; - emissive?: string; - emissiveIntensity?: number; - shininess?: number; - polygonColor?: string; - ambientLight?: string; - directionalLeftLight?: string; - directionalTopLight?: string; - pointLight?: string; - arcTime?: number; - arcLength?: number; - rings?: number; - maxRings?: number; - initialPosition?: { - lat: number; - lng: number; - }; - autoRotate?: boolean; - autoRotateSpeed?: number; -}; - -interface WorldProps { - globeConfig: GlobeConfig; - data: Position[]; -} - -let numbersOfRings = [0]; - -export function Globe({ globeConfig, data }: WorldProps) { - const [globeData, setGlobeData] = useState< - | { - size: number; - order: number; - color: (t: number) => string; - lat: number; - lng: number; - }[] - | null - >(null); - - const globeRef = useRef(null); - - const defaultProps = { - pointSize: 1, - atmosphereColor: '#ffffff', - showAtmosphere: true, - atmosphereAltitude: 0.1, - polygonColor: 'rgba(255,255,255,0.7)', - globeColor: '#1d072e', - emissive: '#000000', - emissiveIntensity: 0.1, - shininess: 0.9, - arcTime: 2000, - arcLength: 0.9, - rings: 1, - maxRings: 3, - ...globeConfig, - }; - - useEffect(() => { - if (globeRef.current) { - _buildData(); - _buildMaterial(); - } - }, [globeRef.current]); - - const _buildMaterial = () => { - if (!globeRef.current) return; - - const globeMaterial = globeRef.current.globeMaterial() as unknown as { - color: Color; - emissive: Color; - emissiveIntensity: number; - shininess: number; - }; - globeMaterial.color = new Color(globeConfig.globeColor); - globeMaterial.emissive = new Color(globeConfig.emissive); - globeMaterial.emissiveIntensity = globeConfig.emissiveIntensity || 0.1; - globeMaterial.shininess = globeConfig.shininess || 0.9; - }; - - const _buildData = () => { - const arcs = data; - let points = []; - for (let i = 0; i < arcs.length; i++) { - const arc = arcs[i]; - const rgb = hexToRgb(arc.color) as { r: number; g: number; b: number }; - points.push({ - size: defaultProps.pointSize, - order: arc.order, - color: (t: number) => `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${1 - t})`, - lat: arc.startLat, - lng: arc.startLng, - }); - points.push({ - size: defaultProps.pointSize, - order: arc.order, - color: (t: number) => `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${1 - t})`, - lat: arc.endLat, - lng: arc.endLng, - }); - } - - // remove duplicates for same lat and lng - const filteredPoints = points.filter( - (v, i, a) => - a.findIndex((v2) => - ['lat', 'lng'].every((k) => v2[k as 'lat' | 'lng'] === v[k as 'lat' | 'lng']), - ) === i, - ); - - setGlobeData(filteredPoints); - }; - - useEffect(() => { - if (globeRef.current && globeData) { - globeRef.current - .hexPolygonsData(countries.features) - .hexPolygonResolution(3) - .hexPolygonMargin(0.7) - .showAtmosphere(defaultProps.showAtmosphere) - .atmosphereColor(defaultProps.atmosphereColor) - .atmosphereAltitude(defaultProps.atmosphereAltitude) - .hexPolygonColor((e) => { - return defaultProps.polygonColor; - }); - startAnimation(); - } - }, [globeData]); - - const startAnimation = () => { - if (!globeRef.current || !globeData) return; - - globeRef.current - .arcsData(data) - .arcStartLat((d) => (d as { startLat: number }).startLat * 1) - .arcStartLng((d) => (d as { startLng: number }).startLng * 1) - .arcEndLat((d) => (d as { endLat: number }).endLat * 1) - .arcEndLng((d) => (d as { endLng: number }).endLng * 1) - .arcColor((e: any) => (e as { color: string }).color) - .arcAltitude((e) => { - return (e as { arcAlt: number }).arcAlt * 1; - }) - .arcStroke((e) => { - return [0.32, 0.28, 0.3][Math.round(Math.random() * 2)]; - }) - .arcDashLength(defaultProps.arcLength) - .arcDashInitialGap((e) => (e as { order: number }).order * 1) - .arcDashGap(15) - .arcDashAnimateTime((e) => defaultProps.arcTime); - - globeRef.current - .pointsData(data) - .pointColor((e) => (e as { color: string }).color) - .pointsMerge(true) - .pointAltitude(0.0) - .pointRadius(2); - - globeRef.current - .ringsData([]) - .ringColor((e: any) => (t: any) => e.color(t)) - .ringMaxRadius(defaultProps.maxRings) - .ringPropagationSpeed(RING_PROPAGATION_SPEED) - .ringRepeatPeriod((defaultProps.arcTime * defaultProps.arcLength) / defaultProps.rings); - }; - - useEffect(() => { - if (!globeRef.current || !globeData) return; - - const interval = setInterval(() => { - if (!globeRef.current || !globeData) return; - numbersOfRings = genRandomNumbers(0, data.length, Math.floor((data.length * 4) / 5)); - - globeRef.current.ringsData(globeData.filter((d, i) => numbersOfRings.includes(i))); - }, 2000); - - return () => { - clearInterval(interval); - }; - }, [globeRef.current, globeData]); - - return ( - <> - - - ); -} - -export function WebGLRendererConfig() { - const { gl, size } = useThree(); - - useEffect(() => { - gl.setPixelRatio(window.devicePixelRatio); - gl.setSize(size.width, size.height); - gl.setClearColor(0xffaaff, 0); - }, []); - - return null; -} - -export function World(props: WorldProps) { - const { globeConfig } = props; - const scene = new Scene(); - scene.fog = new Fog(0xffffff, 400, 2000); - return ( - - - - - - - - - - ); -} - -export function hexToRgb(hex: string) { - var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - hex = hex.replace(shorthandRegex, function (m, r, g, b) { - return r + r + g + g + b + b; - }); - - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result - ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16), - } - : null; -} - -export function genRandomNumbers(min: number, max: number, count: number) { - const arr = []; - while (arr.length < count) { - const r = Math.floor(Math.random() * (max - min)) + min; - if (arr.indexOf(r) === -1) arr.push(r); - } - - return arr; -} diff --git a/packages/shadcn/src/components/ui/glowing-stars.tsx b/packages/shadcn/src/components/ui/glowing-stars.tsx deleted file mode 100644 index e1a629a..0000000 --- a/packages/shadcn/src/components/ui/glowing-stars.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// @ts-nocheck -'use client'; - -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const GlowingStarsBackgroundCard = ({ - className, - children, -}: { - className?: string; - children?: React.ReactNode; -}) => { - const [mouseEnter, setMouseEnter] = useState(false); - - return ( -
{ - setMouseEnter(true); - }} - onMouseLeave={() => { - setMouseEnter(false); - }} - className={cn( - 'h-full max-h-[20rem] w-full max-w-md rounded-xl border border-[#eaeaea] bg-[linear-gradient(110deg,#333_0.6%,#222)] p-4 dark:border-neutral-600', - className, - )} - > -
- -
-
{children}
-
- ); -}; - -export const GlowingStarsDescription = ({ - className, - children, -}: { - className?: string; - children?: React.ReactNode; -}) => { - return

{children}

; -}; - -export const GlowingStarsTitle = ({ - className, - children, -}: { - className?: string; - children?: React.ReactNode; -}) => { - return

{children}

; -}; - -export const Illustration = ({ mouseEnter }: { mouseEnter: boolean }) => { - const stars = 108; - const columns = 18; - - const [glowingStars, setGlowingStars] = useState([]); - - const highlightedStars = useRef([]); - - useEffect(() => { - const interval = setInterval(() => { - highlightedStars.current = Array.from({ length: 5 }, () => Math.floor(Math.random() * stars)); - setGlowingStars([...highlightedStars.current]); - }, 3000); - - return () => clearInterval(interval); - }, []); - - return ( -
- {[...Array(stars)].map((_, starIdx) => { - const isGlowing = glowingStars.includes(starIdx); - const delay = (starIdx % 10) * 0.1; - const staticDelay = starIdx * 0.01; - return ( -
- - {mouseEnter && } - {isGlowing && } -
- ); - })} -
- ); -}; - -const Star = ({ isGlowing, delay }: { isGlowing: boolean; delay: number }) => { - return ( - - ); -}; - -const Glow = ({ delay }: { delay: number }) => { - return ( - - ); -}; diff --git a/packages/shadcn/src/components/ui/google-gemini-effect.tsx b/packages/shadcn/src/components/ui/google-gemini-effect.tsx deleted file mode 100644 index 046a2fe..0000000 --- a/packages/shadcn/src/components/ui/google-gemini-effect.tsx +++ /dev/null @@ -1,161 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, MotionValue } from 'framer-motion'; -import { cn } from '../../lib/utils'; - -const transition = { - duration: 0, - ease: 'linear', -}; - -export const GoogleGeminiEffect = ({ - pathLengths, - title, - description, - className, -}: { - pathLengths: MotionValue[]; - title?: string; - description?: string; - className?: string; -}) => { - return ( -
-

- {title || `Build with Aceternity UI`} -

-

- {description || - `Scroll this component and see the bottom SVG come to life wow this - works!`} -

-
- -
- - - - - - - - {/* Gaussian blur for the background paths */} - - - - - - - - - - - - - -
- ); -}; diff --git a/packages/shadcn/src/components/ui/grid.tsx b/packages/shadcn/src/components/ui/grid.tsx deleted file mode 100644 index da03199..0000000 --- a/packages/shadcn/src/components/ui/grid.tsx +++ /dev/null @@ -1,13 +0,0 @@ -const GridBackgroundPreview = () => { - return ( -
- {/* Radial gradient for the container to give a faded look */} -
-

- Backgrounds -

-
- ); -}; - -export default GridBackgroundPreview; diff --git a/packages/shadcn/src/components/ui/hero-highlight.tsx b/packages/shadcn/src/components/ui/hero-highlight.tsx deleted file mode 100644 index 5b9f24d..0000000 --- a/packages/shadcn/src/components/ui/hero-highlight.tsx +++ /dev/null @@ -1,93 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useMotionTemplate, useMotionValue } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const HeroHighlight = ({ - children, - className, - containerClassName, -}: { - children: React.ReactNode; - className?: string; - containerClassName?: string; -}) => { - let mouseX = useMotionValue(0); - let mouseY = useMotionValue(0); - - function handleMouseMove({ currentTarget, clientX, clientY }: React.MouseEvent) { - if (!currentTarget) return; - let { left, top } = currentTarget.getBoundingClientRect(); - - mouseX.set(clientX - left); - mouseY.set(clientY - top); - } - return ( -
-
- - -
{children}
-
- ); -}; - -export const Highlight = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return ( - - {children} - - ); -}; diff --git a/packages/shadcn/src/components/ui/hero-parallax.tsx b/packages/shadcn/src/components/ui/hero-parallax.tsx deleted file mode 100644 index 1c83dea..0000000 --- a/packages/shadcn/src/components/ui/hero-parallax.tsx +++ /dev/null @@ -1,122 +0,0 @@ -'use client'; -import { motion, MotionValue, useScroll, useSpring, useTransform } from 'framer-motion'; -import Image from 'next/image'; -import Link from 'next/link'; -import React from 'react'; - -export const HeroParallax = ({ - products, -}: { - products: { - title: string; - link: string; - thumbnail: string; - }[]; -}) => { - const firstRow = products.slice(0, 5); - const secondRow = products.slice(5, 10); - const thirdRow = products.slice(10, 15); - const ref = React.useRef(null); - const { scrollYProgress } = useScroll({ - target: ref, - offset: ['start start', 'end start'], - }); - - const springConfig = { stiffness: 300, damping: 30, bounce: 100 }; - - const translateX = useSpring(useTransform(scrollYProgress, [0, 1], [0, 1000]), springConfig); - const translateXReverse = useSpring( - useTransform(scrollYProgress, [0, 1], [0, -1000]), - springConfig, - ); - const rotateX = useSpring(useTransform(scrollYProgress, [0, 0.2], [15, 0]), springConfig); - const opacity = useSpring(useTransform(scrollYProgress, [0, 0.2], [0.2, 1]), springConfig); - const rotateZ = useSpring(useTransform(scrollYProgress, [0, 0.2], [20, 0]), springConfig); - const translateY = useSpring(useTransform(scrollYProgress, [0, 0.2], [-700, 500]), springConfig); - return ( -
-
- - - {firstRow.map((product) => ( - - ))} - - - {secondRow.map((product) => ( - - ))} - - - {thirdRow.map((product) => ( - - ))} - - -
- ); -}; - -export const Header = () => { - return ( -
-

- The Ultimate
development studio -

-

- We build beautiful products with the latest technologies and frameworks. We are a team of - passionate developers and designers that love to build amazing products. -

-
- ); -}; - -export const ProductCard = ({ - product, - translate, -}: { - product: { - title: string; - link: string; - thumbnail: string; - }; - translate: MotionValue; -}) => { - return ( - - - {product.title} - -
-

- {product.title} -

-
- ); -}; diff --git a/packages/shadcn/src/components/ui/images-slider.tsx b/packages/shadcn/src/components/ui/images-slider.tsx deleted file mode 100644 index d15a8cf..0000000 --- a/packages/shadcn/src/components/ui/images-slider.tsx +++ /dev/null @@ -1,146 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useEffect, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const ImagesSlider = ({ - images, - children, - overlay = true, - overlayClassName, - className, - autoplay = true, - direction = 'up', -}: { - images: string[]; - children: React.ReactNode; - overlay?: React.ReactNode; - overlayClassName?: string; - className?: string; - autoplay?: boolean; - direction?: 'up' | 'down'; -}) => { - const [currentIndex, setCurrentIndex] = useState(0); - const [loading, setLoading] = useState(false); - const [loadedImages, setLoadedImages] = useState([]); - - const handleNext = () => { - setCurrentIndex((prevIndex) => (prevIndex + 1 === images.length ? 0 : prevIndex + 1)); - }; - - const handlePrevious = () => { - setCurrentIndex((prevIndex) => (prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1)); - }; - - useEffect(() => { - loadImages(); - }, []); - - const loadImages = () => { - setLoading(true); - const loadPromises = images.map((image) => { - return new Promise((resolve, reject) => { - const img = new Image(); - img.src = image; - img.onload = () => resolve(image); - img.onerror = reject; - }); - }); - - Promise.all(loadPromises) - .then((loadedImages) => { - setLoadedImages(loadedImages as string[]); - setLoading(false); - }) - .catch((error) => console.error('Failed to load images', error)); - }; - useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if (event.key === 'ArrowRight') { - handleNext(); - } else if (event.key === 'ArrowLeft') { - handlePrevious(); - } - }; - - window.addEventListener('keydown', handleKeyDown); - - // autoplay - let interval: any; - if (autoplay) { - interval = setInterval(() => { - handleNext(); - }, 5000); - } - - return () => { - window.removeEventListener('keydown', handleKeyDown); - clearInterval(interval); - }; - }, []); - - const slideVariants = { - initial: { - scale: 0, - opacity: 0, - rotateX: 45, - }, - visible: { - scale: 1, - rotateX: 0, - opacity: 1, - transition: { - duration: 0.5, - ease: [0.645, 0.045, 0.355, 1.0], - }, - }, - upExit: { - opacity: 1, - y: '-150%', - transition: { - duration: 1, - }, - }, - downExit: { - opacity: 1, - y: '150%', - transition: { - duration: 1, - }, - }, - }; - - const areImagesLoaded = loadedImages.length > 0; - - return ( -
- {areImagesLoaded && children} - {areImagesLoaded && overlay && ( -
- )} - - {areImagesLoaded && ( - - - - )} -
- ); -}; diff --git a/packages/shadcn/src/components/ui/infinite-moving-cards.tsx b/packages/shadcn/src/components/ui/infinite-moving-cards.tsx deleted file mode 100644 index 02d71e0..0000000 --- a/packages/shadcn/src/components/ui/infinite-moving-cards.tsx +++ /dev/null @@ -1,115 +0,0 @@ -// @ts-nocheck -'use client'; - -import React, { useEffect, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const InfiniteMovingCards = ({ - items, - direction = 'left', - speed = 'fast', - pauseOnHover = true, - className, -}: { - items: { - quote: string; - name: string; - title: string; - }[]; - direction?: 'left' | 'right'; - speed?: 'fast' | 'normal' | 'slow'; - pauseOnHover?: boolean; - className?: string; -}) => { - const containerRef = React.useRef(null); - const scrollerRef = React.useRef(null); - - useEffect(() => { - addAnimation(); - }, []); - const [start, setStart] = useState(false); - function addAnimation() { - if (containerRef.current && scrollerRef.current) { - const scrollerContent = Array.from(scrollerRef.current.children); - - scrollerContent.forEach((item) => { - const duplicatedItem = item.cloneNode(true); - if (scrollerRef.current) { - scrollerRef.current.appendChild(duplicatedItem); - } - }); - - getDirection(); - getSpeed(); - setStart(true); - } - } - const getDirection = () => { - if (containerRef.current) { - if (direction === 'left') { - containerRef.current.style.setProperty('--animation-direction', 'forwards'); - } else { - containerRef.current.style.setProperty('--animation-direction', 'reverse'); - } - } - }; - const getSpeed = () => { - if (containerRef.current) { - if (speed === 'fast') { - containerRef.current.style.setProperty('--animation-duration', '20s'); - } else if (speed === 'normal') { - containerRef.current.style.setProperty('--animation-duration', '40s'); - } else { - containerRef.current.style.setProperty('--animation-duration', '80s'); - } - } - }; - return ( -
-
    - {items.map((item, idx) => ( -
  • -
    - - - {item.quote} - -
    - - - {item.name} - - - {item.title} - - -
    -
    -
  • - ))} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/lamp.tsx b/packages/shadcn/src/components/ui/lamp.tsx deleted file mode 100644 index cdc2171..0000000 --- a/packages/shadcn/src/components/ui/lamp.tsx +++ /dev/null @@ -1,105 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export default function LampDemo() { - return ( - - - Build lamps
the right way -
-
- ); -} - -export const LampContainer = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return ( -
-
- -
-
- - -
-
- -
-
-
- - - -
-
- -
- {children} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/layout-grid.tsx b/packages/shadcn/src/components/ui/layout-grid.tsx deleted file mode 100644 index ece37e3..0000000 --- a/packages/shadcn/src/components/ui/layout-grid.tsx +++ /dev/null @@ -1,113 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React, { useState } from 'react'; -import { cn } from '../../lib/utils'; - -type Card = { - id: number; - content: JSX.Element | React.ReactNode | string; - className: string; - thumbnail: string; -}; - -export const LayoutGrid = ({ cards }: { cards: Card[] }) => { - const [selected, setSelected] = useState(null); - const [lastSelected, setLastSelected] = useState(null); - - const handleClick = (card: Card) => { - setLastSelected(selected); - setSelected(card); - }; - - const handleOutsideClick = () => { - setLastSelected(selected); - setSelected(null); - }; - - return ( -
- {cards.map((card, i) => ( -
- handleClick(card)} - className={cn( - card.className, - 'relative overflow-hidden', - selected?.id === card.id - ? 'absolute inset-0 z-50 m-auto flex h-1/2 w-full cursor-pointer flex-col flex-wrap items-center justify-center rounded-lg md:w-1/2' - : lastSelected?.id === card.id - ? 'z-40 h-full w-full rounded-xl bg-white' - : 'h-full w-full rounded-xl bg-white', - )} - layoutId={`card-${card.id}`} - > - {selected?.id === card.id && } - - -
- ))} - -
- ); -}; - -const ImageComponent = ({ card }: { card: Card }) => { - return ( - - ); -}; - -const SelectedCard = ({ selected }: { selected: Card | null }) => { - return ( -
- - - {selected?.content} - -
- ); -}; diff --git a/packages/shadcn/src/components/ui/lens.tsx b/packages/shadcn/src/components/ui/lens.tsx deleted file mode 100644 index 7739c5c..0000000 --- a/packages/shadcn/src/components/ui/lens.tsx +++ /dev/null @@ -1,124 +0,0 @@ -'use client'; - -import { AnimatePresence, motion } from 'framer-motion'; -import React, { useRef, useState } from 'react'; - -interface LensProps { - children: React.ReactNode; - zoomFactor?: number; - lensSize?: number; - position?: { - x: number; - y: number; - }; - isStatic?: boolean; - isFocusing?: () => void; - hovering?: boolean; - setHovering?: (hovering: boolean) => void; -} - -export const Lens: React.FC = ({ - children, - zoomFactor = 1.5, - lensSize = 170, - isStatic = false, - position = { x: 200, y: 150 }, - hovering, - setHovering, -}) => { - const containerRef = useRef(null); - - const [localIsHovering, setLocalIsHovering] = useState(false); - - const isHovering = hovering !== undefined ? hovering : localIsHovering; - const setIsHovering = setHovering || setLocalIsHovering; - - // const [isHovering, setIsHovering] = useState(false); - const [mousePosition, setMousePosition] = useState({ x: 100, y: 100 }); - - const handleMouseMove = (e: React.MouseEvent) => { - const rect = e.currentTarget.getBoundingClientRect(); - const x = e.clientX - rect.left; - const y = e.clientY - rect.top; - setMousePosition({ x, y }); - }; - - return ( -
{ - setIsHovering(true); - }} - onMouseLeave={() => setIsHovering(false)} - onMouseMove={handleMouseMove} - > - {children} - - {isStatic ? ( -
- -
- {children} -
-
-
- ) : ( - - {isHovering && ( -
- -
- {children} -
-
-
- )} -
- )} -
- ); -}; diff --git a/packages/shadcn/src/components/ui/link-preview.tsx b/packages/shadcn/src/components/ui/link-preview.tsx deleted file mode 100644 index d92478b..0000000 --- a/packages/shadcn/src/components/ui/link-preview.tsx +++ /dev/null @@ -1,150 +0,0 @@ -// @ts-nocheck -'use client'; -import * as HoverCardPrimitive from '@radix-ui/react-hover-card'; -import { AnimatePresence, motion, useMotionValue, useSpring } from 'framer-motion'; -import Image from 'next/image'; -import Link from 'next/link'; -import { encode } from 'qss'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -type LinkPreviewProps = { - children: React.ReactNode; - url: string; - className?: string; - width?: number; - height?: number; - quality?: number; - layout?: string; -} & ({ isStatic: true; imageSrc: string } | { isStatic?: false; imageSrc?: never }); - -export const LinkPreview = ({ - children, - url, - className, - width = 200, - height = 125, - quality = 50, - layout = 'fixed', - isStatic = false, - imageSrc = '', -}: LinkPreviewProps) => { - let src; - if (!isStatic) { - const params = encode({ - url, - 'screenshot': true, - 'meta': false, - 'embed': 'screenshot.url', - 'colorScheme': 'dark', - 'viewport.isMobile': true, - 'viewport.deviceScaleFactor': 1, - 'viewport.width': width * 3, - 'viewport.height': height * 3, - }); - src = `https://api.microlink.io/?${params}`; - } else { - src = imageSrc; - } - - const [isOpen, setOpen] = React.useState(false); - - const [isMounted, setIsMounted] = React.useState(false); - - React.useEffect(() => { - setIsMounted(true); - }, []); - - const springConfig = { stiffness: 100, damping: 15 }; - const x = useMotionValue(0); - - const translateX = useSpring(x, springConfig); - - const handleMouseMove = (event: any) => { - const targetRect = event.target.getBoundingClientRect(); - const eventOffsetX = event.clientX - targetRect.left; - const offsetFromCenter = (eventOffsetX - targetRect.width / 2) / 2; // Reduce the effect to make it subtle - x.set(offsetFromCenter); - }; - - return ( - <> - {isMounted ? ( -
- hidden image -
- ) : null} - - { - setOpen(open); - }} - > - - {children} - - - - - {isOpen && ( - - - preview image - - - )} - - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/macbook-scroll.tsx b/packages/shadcn/src/components/ui/macbook-scroll.tsx deleted file mode 100644 index 83df14a..0000000 --- a/packages/shadcn/src/components/ui/macbook-scroll.tsx +++ /dev/null @@ -1,626 +0,0 @@ -// @ts-nocheck -'use client'; -import { - IconBrightnessDown, - IconBrightnessUp, - IconCaretDownFilled, - IconCaretLeftFilled, - IconCaretRightFilled, - IconCaretUpFilled, - IconChevronUp, - IconCommand, - IconMicrophone, - IconMoon, - IconPlayerSkipForward, - IconPlayerTrackNext, - IconPlayerTrackPrev, - IconSearch, - IconTable, - IconVolume, - IconVolume2, - IconVolume3, - IconWorld, -} from '@tabler/icons-react'; -import { MotionValue, motion, useScroll, useTransform } from 'framer-motion'; -import Image from 'next/image'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const MacbookScroll = ({ - src, - showGradient, - title, - badge, -}: { - src?: string; - showGradient?: boolean; - title?: string | React.ReactNode; - badge?: React.ReactNode; -}) => { - const ref = useRef(null); - const { scrollYProgress } = useScroll({ - target: ref, - offset: ['start start', 'end start'], - }); - - const [isMobile, setIsMobile] = useState(false); - - useEffect(() => { - if (window && window.innerWidth < 768) { - setIsMobile(true); - } - }, []); - - const scaleX = useTransform(scrollYProgress, [0, 0.3], [1.2, isMobile ? 1 : 1.5]); - const scaleY = useTransform(scrollYProgress, [0, 0.3], [0.6, isMobile ? 1 : 1.5]); - const translate = useTransform(scrollYProgress, [0, 1], [0, 1500]); - const rotate = useTransform(scrollYProgress, [0.1, 0.12, 0.3], [-28, -28, 0]); - const textTransform = useTransform(scrollYProgress, [0, 0.3], [0, 100]); - const textOpacity = useTransform(scrollYProgress, [0, 0.2], [1, 0]); - - return ( -
- - {title || ( - - This Macbook is built with Tailwindcss.
No kidding. -
- )} -
- {/* Lid */} - - {/* Base area */} -
- {/* above keyboard bar */} -
-
-
-
-
- -
-
- -
-
- -
-
- -
- {showGradient && ( -
- )} - {badge &&
{badge}
} -
-
- ); -}; - -export const Lid = ({ - scaleX, - scaleY, - rotate, - translate, - src, -}: { - scaleX: MotionValue; - scaleY: MotionValue; - rotate: MotionValue; - translate: MotionValue; - src?: string; -}) => { - return ( -
-
-
- - - -
-
- -
- aceternity logo - -
- ); -}; - -export const Trackpad = () => { - return ( -
- ); -}; - -export const Keypad = () => { - return ( -
- {/* First Row */} - - - esc - - - - F1 - - - - - F2 - - - - F3 - - - - F4 - - - - F5 - - - - F6 - - - - F7 - - - - F8 - - - - F8 - - - - F10 - - - - F11 - - - - F12 - - -
-
-
- - - - {/* Second row */} - - - ~ - ` - - - - ! - 1 - - - @ - 2 - - - # - 3 - - - $ - 4 - - - % - 5 - - - ^ - 6 - - - & - 7 - - - * - 8 - - - ( - 9 - - - ) - 0 - - - - _ - - - + - = - - - delete - - - - {/* Third row */} - - - tab - - - Q - - - - W - - - E - - - R - - - T - - - Y - - - U - - - I - - - O - - - P - - - {`{`} - {`[`} - - - {`}`} - {`]`} - - - {`|`} - {`\\`} - - - - {/* Fourth Row */} - - - caps lock - - - A - - - - S - - - D - - - F - - - G - - - H - - - J - - - K - - - L - - - {`:`} - {`;`} - - - {`"`} - {`'`} - - - return - - - - {/* Fifth Row */} - - - shift - - - Z - - - X - - - C - - - V - - - B - - - N - - - M - - - {`<`} - {`,`} - - - {`>`} - {`.`} - {' '} - - {`?`} - {`/`} - - - shift - - - - {/* sixth Row */} - - -
- fn -
-
- -
-
- -
- -
-
- control -
-
- -
- -
-
- option -
-
- -
- -
-
- command -
-
- - -
- -
-
- command -
-
- -
- -
-
- option -
-
-
- - - -
- - - - - - - - - -
-
-
-
- ); -}; -export const KBtn = ({ - className, - children, - childrenClassName, - backlit = true, -}: { - className?: string; - children?: React.ReactNode; - childrenClassName?: string; - backlit?: boolean; -}) => { - return ( -
-
-
- {children} -
-
-
- ); -}; - -export const Row = ({ children }: { children: React.ReactNode }) => { - return
{children}
; -}; - -export const SpeakerGrid = () => { - return ( -
- ); -}; - -export const OptionKey = ({ className }: { className: string }) => { - return ( - - - - - - ); -}; - -const AceternityLogo = () => { - return ( - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/meteors.tsx b/packages/shadcn/src/components/ui/meteors.tsx deleted file mode 100644 index 08e858d..0000000 --- a/packages/shadcn/src/components/ui/meteors.tsx +++ /dev/null @@ -1,26 +0,0 @@ -// @ts-nocheck -import { cn } from '../../lib/utils'; - -export const Meteors = ({ number, className }: { number?: number; className?: string }) => { - const meteors = new Array(number || 20).fill(true); - return ( - <> - {meteors.map((el, idx) => ( - - ))} - - ); -}; diff --git a/packages/shadcn/src/components/ui/moving-border.tsx b/packages/shadcn/src/components/ui/moving-border.tsx deleted file mode 100644 index 3210485..0000000 --- a/packages/shadcn/src/components/ui/moving-border.tsx +++ /dev/null @@ -1,123 +0,0 @@ -// @ts-nocheck -'use client'; -import { - motion, - useAnimationFrame, - useMotionTemplate, - useMotionValue, - useTransform, -} from 'framer-motion'; -import React, { useRef } from 'react'; -import { cn } from '../../lib/utils'; - -export function Button({ - borderRadius = '1.75rem', - children, - as: Component = 'button', - containerClassName, - borderClassName, - duration, - className, - ...otherProps -}: { - borderRadius?: string; - children: React.ReactNode; - as?: any; - containerClassName?: string; - borderClassName?: string; - duration?: number; - className?: string; - [key: string]: any; -}) { - return ( - -
- -
- -
- -
- {children} -
- - ); -} - -export const MovingBorder = ({ - children, - duration = 2000, - rx, - ry, - ...otherProps -}: { - children: React.ReactNode; - duration?: number; - rx?: string; - ry?: string; - [key: string]: any; -}) => { - const pathRef = useRef(); - const progress = useMotionValue(0); - - useAnimationFrame((time) => { - const length = pathRef.current?.getTotalLength(); - if (length) { - const pxPerMillisecond = length / duration; - progress.set((time * pxPerMillisecond) % length); - } - }); - - const x = useTransform(progress, (val) => pathRef.current?.getPointAtLength(val).x); - const y = useTransform(progress, (val) => pathRef.current?.getPointAtLength(val).y); - - const transform = useMotionTemplate`translateX(${x}px) translateY(${y}px) translateX(-50%) translateY(-50%)`; - - return ( - <> - - - - - {children} - - - ); -}; diff --git a/packages/shadcn/src/components/ui/moving-line.tsx b/packages/shadcn/src/components/ui/moving-line.tsx deleted file mode 100644 index ec9168e..0000000 --- a/packages/shadcn/src/components/ui/moving-line.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { motion, useScroll, useSpring, useTransform } from 'framer-motion'; -import { useRef } from 'react'; - -const MovingLine = () => { - const transition = { - duration: 14, - ease: 'easeInOut', - }; - - const ref = useRef(null); - - // Track scroll progress, lies between 0 and 1. - const { scrollYProgress } = useScroll({ - target: ref, - offset: ['end end', 'start start'], - }); - - // when scroll progress reached 1, path length becomes 0. - const pathLengthValue = useTransform(scrollYProgress, [0, 1], [1, 0]); - - const PATH = 'M0.5 0.980671L0.5 1566.02'; - return ( -
- - - - - - - - - - -
- - - -
-
- ); -}; - -{ - /* dummy content to fill up the screen */ -} - -export const Content = () => { - return ( -
-

The path follows the scroll

-

- If you look closely, you can see the path is being animated. -

-
-
-
-
-
- ); -}; - -export default MovingLine; diff --git a/packages/shadcn/src/components/ui/multi-step-loader.tsx b/packages/shadcn/src/components/ui/multi-step-loader.tsx deleted file mode 100644 index c4d47a8..0000000 --- a/packages/shadcn/src/components/ui/multi-step-loader.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// @ts-nocheck -'use client'; -import { AnimatePresence, motion } from 'framer-motion'; -import { useEffect, useState } from 'react'; -import { cn } from '../../lib/utils'; - -const CheckIcon = ({ className }: { className?: string }) => { - return ( - - - - ); -}; - -const CheckFilled = ({ className }: { className?: string }) => { - return ( - - - - ); -}; - -type LoadingState = { - text: string; -}; - -const LoaderCore = ({ - loadingStates, - value = 0, -}: { - loadingStates: LoadingState[]; - value?: number; -}) => { - return ( -
- {loadingStates.map((loadingState, index) => { - const distance = Math.abs(index - value); - const opacity = Math.max(1 - distance * 0.2, 0); // Minimum opacity is 0, keep it 0.2 if you're sane. - - return ( - -
- {index > value && } - {index <= value && ( - - )} -
- - {loadingState.text} - -
- ); - })} -
- ); -}; - -export const MultiStepLoader = ({ - loadingStates, - loading, - duration = 2000, - loop = true, -}: { - loadingStates: LoadingState[]; - loading?: boolean; - duration?: number; - loop?: boolean; -}) => { - const [currentState, setCurrentState] = useState(0); - - useEffect(() => { - if (!loading) { - setCurrentState(0); - return; - } - const timeout = setTimeout(() => { - setCurrentState((prevState) => - loop - ? prevState === loadingStates.length - 1 - ? 0 - : prevState + 1 - : Math.min(prevState + 1, loadingStates.length - 1), - ); - }, duration); - - return () => clearTimeout(timeout); - }, [currentState, loading, loop, loadingStates.length, duration]); - return ( - - {loading && ( - -
- -
- -
- - )} - - ); -}; diff --git a/packages/shadcn/src/components/ui/navbar-menu.tsx b/packages/shadcn/src/components/ui/navbar-menu.tsx deleted file mode 100644 index f10a8ad..0000000 --- a/packages/shadcn/src/components/ui/navbar-menu.tsx +++ /dev/null @@ -1,116 +0,0 @@ -'use client'; -import { motion } from 'framer-motion'; -import Image from 'next/image'; -import Link from 'next/link'; -import React from 'react'; - -const transition = { - type: 'spring', - mass: 0.5, - damping: 11.5, - stiffness: 100, - restDelta: 0.001, - restSpeed: 0.001, -}; - -export const MenuItem = ({ - setActive, - active, - item, - children, -}: { - setActive: (item: string) => void; - active: string | null; - item: string; - children?: React.ReactNode; -}) => { - return ( -
setActive(item)} className='relative'> - - {item} - - {active !== null && ( - - {active === item && ( -
- - - {children} - - -
- )} -
- )} -
- ); -}; - -export const Menu = ({ - setActive, - children, -}: { - setActive: (item: string | null) => void; - children: React.ReactNode; -}) => { - return ( - - ); -}; - -export const ProductItem = ({ - title, - description, - href, - src, -}: { - title: string; - description: string; - href: string; - src: string; -}) => { - return ( - - {title} -
-

{title}

-

- {description} -

-
- - ); -}; - -export const HoveredLink = ({ children, ...rest }: any) => { - return ( - - {children} - - ); -}; diff --git a/packages/shadcn/src/components/ui/parallax-scroll-2.tsx b/packages/shadcn/src/components/ui/parallax-scroll-2.tsx deleted file mode 100644 index 0c12235..0000000 --- a/packages/shadcn/src/components/ui/parallax-scroll-2.tsx +++ /dev/null @@ -1,97 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useScroll, useTransform } from 'framer-motion'; -import Image from 'next/image'; -import { useRef } from 'react'; -import { cn } from '../../lib/utils'; - -export const ParallaxScrollSecond = ({ - images, - className, -}: { - images: string[]; - className?: string; -}) => { - const gridRef = useRef(null); - const { scrollYProgress } = useScroll({ - container: gridRef, // remove this if your container is not fixed height - offset: ['start start', 'end start'], // remove this if your container is not fixed height - }); - - const translateYFirst = useTransform(scrollYProgress, [0, 1], [0, -200]); - const translateXFirst = useTransform(scrollYProgress, [0, 1], [0, -200]); - const rotateXFirst = useTransform(scrollYProgress, [0, 1], [0, -20]); - - const translateYThird = useTransform(scrollYProgress, [0, 1], [0, -200]); - const translateXThird = useTransform(scrollYProgress, [0, 1], [0, 200]); - const rotateXThird = useTransform(scrollYProgress, [0, 1], [0, 20]); - - const third = Math.ceil(images.length / 3); - - const firstPart = images.slice(0, third); - const secondPart = images.slice(third, 2 * third); - const thirdPart = images.slice(2 * third); - - return ( -
-
-
- {firstPart.map((el, idx) => ( - - thumbnail - - ))} -
-
- {secondPart.map((el, idx) => ( - - thumbnail - - ))} -
-
- {thirdPart.map((el, idx) => ( - - thumbnail - - ))} -
-
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/parallax-scroll.tsx b/packages/shadcn/src/components/ui/parallax-scroll.tsx deleted file mode 100644 index 80d5929..0000000 --- a/packages/shadcn/src/components/ui/parallax-scroll.tsx +++ /dev/null @@ -1,76 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useScroll, useTransform } from 'framer-motion'; -import Image from 'next/image'; -import { useRef } from 'react'; -import { cn } from '../../lib/utils'; - -export const ParallaxScroll = ({ images, className }: { images: string[]; className?: string }) => { - const gridRef = useRef(null); - const { scrollYProgress } = useScroll({ - container: gridRef, // remove this if your container is not fixed height - offset: ['start start', 'end start'], // remove this if your container is not fixed height - }); - - const translateFirst = useTransform(scrollYProgress, [0, 1], [0, -200]); - const translateSecond = useTransform(scrollYProgress, [0, 1], [0, 200]); - const translateThird = useTransform(scrollYProgress, [0, 1], [0, -200]); - - const third = Math.ceil(images.length / 3); - - const firstPart = images.slice(0, third); - const secondPart = images.slice(third, 2 * third); - const thirdPart = images.slice(2 * third); - - return ( -
-
-
- {firstPart.map((el, idx) => ( - - thumbnail - - ))} -
-
- {secondPart.map((el, idx) => ( - - thumbnail - - ))} -
-
- {thirdPart.map((el, idx) => ( - - thumbnail - - ))} -
-
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/placeholders-and-vanish-input.tsx b/packages/shadcn/src/components/ui/placeholders-and-vanish-input.tsx deleted file mode 100644 index b933a54..0000000 --- a/packages/shadcn/src/components/ui/placeholders-and-vanish-input.tsx +++ /dev/null @@ -1,268 +0,0 @@ -// @ts-nocheck -'use client'; - -import { AnimatePresence, motion } from 'framer-motion'; -import { useCallback, useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export function PlaceholdersAndVanishInput({ - placeholders, - onChange, - onSubmit, -}: { - placeholders: string[]; - onChange: (e: React.ChangeEvent) => void; - onSubmit: (e: React.FormEvent) => void; -}) { - const [currentPlaceholder, setCurrentPlaceholder] = useState(0); - - const intervalRef = useRef(null); - const startAnimation = () => { - intervalRef.current = setInterval(() => { - setCurrentPlaceholder((prev) => (prev + 1) % placeholders.length); - }, 3000); - }; - const handleVisibilityChange = () => { - if (document.visibilityState !== 'visible' && intervalRef.current) { - clearInterval(intervalRef.current); // Clear the interval when the tab is not visible - intervalRef.current = null; - } else if (document.visibilityState === 'visible') { - startAnimation(); // Restart the interval when the tab becomes visible - } - }; - - useEffect(() => { - startAnimation(); - document.addEventListener('visibilitychange', handleVisibilityChange); - - return () => { - if (intervalRef.current) { - clearInterval(intervalRef.current); - } - document.removeEventListener('visibilitychange', handleVisibilityChange); - }; - }, [placeholders]); - - const canvasRef = useRef(null); - const newDataRef = useRef([]); - const inputRef = useRef(null); - const [value, setValue] = useState(''); - const [animating, setAnimating] = useState(false); - - const draw = useCallback(() => { - if (!inputRef.current) return; - const canvas = canvasRef.current; - if (!canvas) return; - const ctx = canvas.getContext('2d'); - if (!ctx) return; - - canvas.width = 800; - canvas.height = 800; - ctx.clearRect(0, 0, 800, 800); - const computedStyles = getComputedStyle(inputRef.current); - - const fontSize = parseFloat(computedStyles.getPropertyValue('font-size')); - ctx.font = `${fontSize * 2}px ${computedStyles.fontFamily}`; - ctx.fillStyle = '#FFF'; - ctx.fillText(value, 16, 40); - - const imageData = ctx.getImageData(0, 0, 800, 800); - const pixelData = imageData.data; - const newData: any[] = []; - - for (let t = 0; t < 800; t++) { - let i = 4 * t * 800; - for (let n = 0; n < 800; n++) { - let e = i + 4 * n; - if (pixelData[e] !== 0 && pixelData[e + 1] !== 0 && pixelData[e + 2] !== 0) { - newData.push({ - x: n, - y: t, - color: [pixelData[e], pixelData[e + 1], pixelData[e + 2], pixelData[e + 3]], - }); - } - } - } - - newDataRef.current = newData.map(({ x, y, color }) => ({ - x, - y, - r: 1, - color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3]})`, - })); - }, [value]); - - useEffect(() => { - draw(); - }, [value, draw]); - - const animate = (start: number) => { - const animateFrame = (pos: number = 0) => { - requestAnimationFrame(() => { - const newArr = []; - for (let i = 0; i < newDataRef.current.length; i++) { - const current = newDataRef.current[i]; - if (current.x < pos) { - newArr.push(current); - } else { - if (current.r <= 0) { - current.r = 0; - continue; - } - current.x += Math.random() > 0.5 ? 1 : -1; - current.y += Math.random() > 0.5 ? 1 : -1; - current.r -= 0.05 * Math.random(); - newArr.push(current); - } - } - newDataRef.current = newArr; - const ctx = canvasRef.current?.getContext('2d'); - if (ctx) { - ctx.clearRect(pos, 0, 800, 800); - newDataRef.current.forEach((t) => { - const { x: n, y: i, r: s, color: color } = t; - if (n > pos) { - ctx.beginPath(); - ctx.rect(n, i, s, s); - ctx.fillStyle = color; - ctx.strokeStyle = color; - ctx.stroke(); - } - }); - } - if (newDataRef.current.length > 0) { - animateFrame(pos - 8); - } else { - setValue(''); - setAnimating(false); - } - }); - }; - animateFrame(start); - }; - - const handleKeyDown = (e: React.KeyboardEvent) => { - if (e.key === 'Enter' && !animating) { - vanishAndSubmit(); - } - }; - - const vanishAndSubmit = () => { - setAnimating(true); - draw(); - - const value = inputRef.current?.value || ''; - if (value && inputRef.current) { - const maxX = newDataRef.current.reduce( - (prev, current) => (current.x > prev ? current.x : prev), - 0, - ); - animate(maxX); - } - }; - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault(); - vanishAndSubmit(); - onSubmit && onSubmit(e); - }; - return ( -
- - { - if (!animating) { - setValue(e.target.value); - onChange && onChange(e); - } - }} - onKeyDown={handleKeyDown} - ref={inputRef} - value={value} - type='text' - className={cn( - 'relative z-50 h-full w-full rounded-full border-none bg-transparent pl-4 pr-20 text-sm text-black focus:outline-none focus:ring-0 sm:pl-10 sm:text-base dark:text-white', - animating && 'text-transparent dark:text-transparent', - )} - /> - - - -
- - {!value && ( - - {placeholders[currentPlaceholder]} - - )} - -
- - ); -} diff --git a/packages/shadcn/src/components/ui/shooting-stars.tsx b/packages/shadcn/src/components/ui/shooting-stars.tsx deleted file mode 100644 index d6556fe..0000000 --- a/packages/shadcn/src/components/ui/shooting-stars.tsx +++ /dev/null @@ -1,137 +0,0 @@ -// @ts-nocheck -'use client'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -interface ShootingStar { - id: number; - x: number; - y: number; - angle: number; - scale: number; - speed: number; - distance: number; -} - -interface ShootingStarsProps { - minSpeed?: number; - maxSpeed?: number; - minDelay?: number; - maxDelay?: number; - starColor?: string; - trailColor?: string; - starWidth?: number; - starHeight?: number; - className?: string; -} - -const getRandomStartPoint = () => { - const side = Math.floor(Math.random() * 4); - const offset = Math.random() * window.innerWidth; - - switch (side) { - case 0: - return { x: offset, y: 0, angle: 45 }; - case 1: - return { x: window.innerWidth, y: offset, angle: 135 }; - case 2: - return { x: offset, y: window.innerHeight, angle: 225 }; - case 3: - return { x: 0, y: offset, angle: 315 }; - default: - return { x: 0, y: 0, angle: 45 }; - } -}; -export const ShootingStars: React.FC = ({ - minSpeed = 10, - maxSpeed = 30, - minDelay = 1200, - maxDelay = 4200, - starColor = '#9E00FF', - trailColor = '#2EB9DF', - starWidth = 10, - starHeight = 1, - className, -}) => { - const [star, setStar] = useState(null); - const svgRef = useRef(null); - - useEffect(() => { - const createStar = () => { - const { x, y, angle } = getRandomStartPoint(); - const newStar: ShootingStar = { - id: Date.now(), - x, - y, - angle, - scale: 1, - speed: Math.random() * (maxSpeed - minSpeed) + minSpeed, - distance: 0, - }; - setStar(newStar); - - const randomDelay = Math.random() * (maxDelay - minDelay) + minDelay; - setTimeout(createStar, randomDelay); - }; - - createStar(); - - return () => {}; - }, [minSpeed, maxSpeed, minDelay, maxDelay]); - - useEffect(() => { - const moveStar = () => { - if (star) { - setStar((prevStar) => { - if (!prevStar) return null; - const newX = prevStar.x + prevStar.speed * Math.cos((prevStar.angle * Math.PI) / 180); - const newY = prevStar.y + prevStar.speed * Math.sin((prevStar.angle * Math.PI) / 180); - const newDistance = prevStar.distance + prevStar.speed; - const newScale = 1 + newDistance / 100; - if ( - newX < -20 || - newX > window.innerWidth + 20 || - newY < -20 || - newY > window.innerHeight + 20 - ) { - return null; - } - return { - ...prevStar, - x: newX, - y: newY, - distance: newDistance, - scale: newScale, - }; - }); - } - }; - - const animationFrame = requestAnimationFrame(moveStar); - return () => cancelAnimationFrame(animationFrame); - }, [star]); - - return ( - - {star && ( - - )} - - - - - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/sparkles.tsx b/packages/shadcn/src/components/ui/sparkles.tsx deleted file mode 100644 index 3033d7e..0000000 --- a/packages/shadcn/src/components/ui/sparkles.tsx +++ /dev/null @@ -1,426 +0,0 @@ -// @ts-nocheck -'use client'; -import type { Container, SingleOrMultiple } from '@tsparticles/engine'; -import Particles, { initParticlesEngine } from '@tsparticles/react'; -import { loadSlim } from '@tsparticles/slim'; -import { motion, useAnimation } from 'framer-motion'; -import { useEffect, useId, useState } from 'react'; -import { cn } from '../../lib/utils'; - -type ParticlesProps = { - id?: string; - className?: string; - background?: string; - particleSize?: number; - minSize?: number; - maxSize?: number; - speed?: number; - particleColor?: string; - particleDensity?: number; -}; -export const SparklesCore = (props: ParticlesProps) => { - const { id, className, background, minSize, maxSize, speed, particleColor, particleDensity } = - props; - const [init, setInit] = useState(false); - useEffect(() => { - initParticlesEngine(async (engine) => { - await loadSlim(engine); - }).then(() => { - setInit(true); - }); - }, []); - const controls = useAnimation(); - - const particlesLoaded = async (container?: Container) => { - if (container) { - controls.start({ - opacity: 1, - transition: { - duration: 1, - }, - }); - } - }; - - const generatedId = useId(); - return ( - - {init && ( - | undefined, - }, - groups: {}, - move: { - angle: { - offset: 0, - value: 90, - }, - attract: { - distance: 200, - enable: false, - rotate: { - x: 3000, - y: 3000, - }, - }, - center: { - x: 50, - y: 50, - mode: 'percent', - radius: 0, - }, - decay: 0, - distance: {}, - direction: 'none', - drift: 0, - enable: true, - gravity: { - acceleration: 9.81, - enable: false, - inverse: false, - maxSpeed: 50, - }, - path: { - clamp: true, - delay: { - value: 0, - }, - enable: false, - options: {}, - }, - outModes: { - default: 'out', - }, - random: false, - size: false, - speed: { - min: 0.1, - max: 1, - }, - spin: { - acceleration: 0, - enable: false, - }, - straight: false, - trail: { - enable: false, - length: 10, - fill: {}, - }, - vibrate: false, - warp: false, - }, - number: { - density: { - enable: true, - width: 400, - height: 400, - }, - limit: { - mode: 'delete', - value: 0, - }, - value: particleDensity || 120, - }, - opacity: { - value: { - min: 0.1, - max: 1, - }, - animation: { - count: 0, - enable: true, - speed: speed || 4, - decay: 0, - delay: 0, - sync: false, - mode: 'auto', - startValue: 'random', - destroy: 'none', - }, - }, - reduceDuplicates: false, - shadow: { - blur: 0, - color: { - value: '#000', - }, - enable: false, - offset: { - x: 0, - y: 0, - }, - }, - shape: { - close: true, - fill: true, - options: {}, - type: 'circle', - }, - size: { - value: { - min: minSize || 1, - max: maxSize || 3, - }, - animation: { - count: 0, - enable: false, - speed: 5, - decay: 0, - delay: 0, - sync: false, - mode: 'auto', - startValue: 'random', - destroy: 'none', - }, - }, - stroke: { - width: 0, - }, - zIndex: { - value: 0, - opacityRate: 1, - sizeRate: 1, - velocityRate: 1, - }, - destroy: { - bounds: {}, - mode: 'none', - split: { - count: 1, - factor: { - value: 3, - }, - rate: { - value: { - min: 4, - max: 9, - }, - }, - sizeOffset: true, - }, - }, - roll: { - darken: { - enable: false, - value: 0, - }, - enable: false, - enlighten: { - enable: false, - value: 0, - }, - mode: 'vertical', - speed: 25, - }, - tilt: { - value: 0, - animation: { - enable: false, - speed: 0, - decay: 0, - sync: false, - }, - direction: 'clockwise', - enable: false, - }, - twinkle: { - lines: { - enable: false, - frequency: 0.05, - opacity: 1, - }, - particles: { - enable: false, - frequency: 0.05, - opacity: 1, - }, - }, - wobble: { - distance: 5, - enable: false, - speed: { - angle: 50, - move: 10, - }, - }, - life: { - count: 0, - delay: { - value: 0, - sync: false, - }, - duration: { - value: 0, - sync: false, - }, - }, - rotate: { - value: 0, - animation: { - enable: false, - speed: 0, - decay: 0, - sync: false, - }, - direction: 'clockwise', - path: false, - }, - orbit: { - animation: { - count: 0, - enable: false, - speed: 1, - decay: 0, - delay: 0, - sync: false, - }, - enable: false, - opacity: 1, - rotation: { - value: 45, - }, - width: 1, - }, - links: { - blink: false, - color: { - value: '#fff', - }, - consent: false, - distance: 100, - enable: false, - frequency: 1, - opacity: 1, - shadow: { - blur: 5, - color: { - value: '#000', - }, - enable: false, - }, - triangles: { - enable: false, - frequency: 1, - }, - width: 1, - warp: false, - }, - repulse: { - value: 0, - enabled: false, - distance: 1, - duration: 1, - factor: 1, - speed: 1, - }, - }, - detectRetina: true, - }} - /> - )} - - ); -}; diff --git a/packages/shadcn/src/components/ui/spotlight.tsx b/packages/shadcn/src/components/ui/spotlight.tsx deleted file mode 100644 index 605e30d..0000000 --- a/packages/shadcn/src/components/ui/spotlight.tsx +++ /dev/null @@ -1,56 +0,0 @@ -// @ts-nocheck -import { cn } from '../../lib/utils'; - -type SpotlightProps = { - className?: string; - fill?: string; -}; - -export const Spotlight = ({ className, fill }: SpotlightProps) => { - return ( - - - - - - - - - - - - - ); -}; diff --git a/packages/shadcn/src/components/ui/stars-background.tsx b/packages/shadcn/src/components/ui/stars-background.tsx deleted file mode 100644 index 2fa36eb..0000000 --- a/packages/shadcn/src/components/ui/stars-background.tsx +++ /dev/null @@ -1,122 +0,0 @@ -// @ts-nocheck -'use client'; -import React, { RefObject, useCallback, useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -interface StarProps { - x: number; - y: number; - radius: number; - opacity: number; - twinkleSpeed: number | null; -} - -interface StarBackgroundProps { - starDensity?: number; - allStarsTwinkle?: boolean; - twinkleProbability?: number; - minTwinkleSpeed?: number; - maxTwinkleSpeed?: number; - className?: string; -} - -export const StarsBackground: React.FC = ({ - starDensity = 0.00015, - allStarsTwinkle = true, - twinkleProbability = 0.7, - minTwinkleSpeed = 0.5, - maxTwinkleSpeed = 1, - className, -}) => { - const [stars, setStars] = useState([]); - const canvasRef: RefObject = useRef(null); - - const generateStars = useCallback( - (width: number, height: number): StarProps[] => { - const area = width * height; - const numStars = Math.floor(area * starDensity); - return Array.from({ length: numStars }, () => { - const shouldTwinkle = allStarsTwinkle || Math.random() < twinkleProbability; - return { - x: Math.random() * width, - y: Math.random() * height, - radius: Math.random() * 0.05 + 0.5, - opacity: Math.random() * 0.5 + 0.5, - twinkleSpeed: shouldTwinkle - ? minTwinkleSpeed + Math.random() * (maxTwinkleSpeed - minTwinkleSpeed) - : null, - }; - }); - }, - [starDensity, allStarsTwinkle, twinkleProbability, minTwinkleSpeed, maxTwinkleSpeed], - ); - - useEffect(() => { - const updateStars = () => { - if (canvasRef.current) { - const canvas = canvasRef.current; - const ctx = canvas.getContext('2d'); - if (!ctx) return; - - const { width, height } = canvas.getBoundingClientRect(); - canvas.width = width; - canvas.height = height; - setStars(generateStars(width, height)); - } - }; - - updateStars(); - - const resizeObserver = new ResizeObserver(updateStars); - if (canvasRef.current) { - resizeObserver.observe(canvasRef.current); - } - - return () => { - if (canvasRef.current) { - resizeObserver.unobserve(canvasRef.current); - } - }; - }, [ - starDensity, - allStarsTwinkle, - twinkleProbability, - minTwinkleSpeed, - maxTwinkleSpeed, - generateStars, - ]); - - useEffect(() => { - const canvas = canvasRef.current; - if (!canvas) return; - - const ctx = canvas.getContext('2d'); - if (!ctx) return; - - let animationFrameId: number; - - const render = () => { - ctx.clearRect(0, 0, canvas.width, canvas.height); - stars.forEach((star) => { - ctx.beginPath(); - ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2); - ctx.fillStyle = `rgba(255, 255, 255, ${star.opacity})`; - ctx.fill(); - - if (star.twinkleSpeed !== null) { - star.opacity = 0.5 + Math.abs(Math.sin((Date.now() * 0.001) / star.twinkleSpeed) * 0.5); - } - }); - - animationFrameId = requestAnimationFrame(render); - }; - - render(); - - return () => { - cancelAnimationFrame(animationFrameId); - }; - }, [stars]); - - return ; -}; diff --git a/packages/shadcn/src/components/ui/sticky-scroll-reveal.tsx b/packages/shadcn/src/components/ui/sticky-scroll-reveal.tsx deleted file mode 100644 index f71fefe..0000000 --- a/packages/shadcn/src/components/ui/sticky-scroll-reveal.tsx +++ /dev/null @@ -1,103 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useMotionValueEvent, useScroll } from 'framer-motion'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const StickyScroll = ({ - content, - contentClassName, -}: { - content: { - title: string; - description: string; - content?: React.ReactNode | any; - }[]; - contentClassName?: string; -}) => { - const [activeCard, setActiveCard] = React.useState(0); - const ref = useRef(null); - const { scrollYProgress } = useScroll({ - // uncomment line 22 and comment line 23 if you DONT want the overflow container and want to have it change on the entire page scroll - // target: ref - container: ref, - offset: ['start start', 'end start'], - }); - const cardLength = content.length; - - useMotionValueEvent(scrollYProgress, 'change', (latest) => { - const cardsBreakpoints = content.map((_, index) => index / cardLength); - const closestBreakpointIndex = cardsBreakpoints.reduce((acc, breakpoint, index) => { - const distance = Math.abs(latest - breakpoint); - if (distance < Math.abs(latest - cardsBreakpoints[acc])) { - return index; - } - return acc; - }, 0); - setActiveCard(closestBreakpointIndex); - }); - - const backgroundColors = ['var(--slate-900)', 'var(--black)', 'var(--neutral-900)']; - const linearGradients = [ - 'linear-gradient(to bottom right, var(--cyan-500), var(--emerald-500))', - 'linear-gradient(to bottom right, var(--pink-500), var(--indigo-500))', - 'linear-gradient(to bottom right, var(--orange-500), var(--yellow-500))', - ]; - - const [backgroundGradient, setBackgroundGradient] = useState(linearGradients[0]); - - useEffect(() => { - setBackgroundGradient(linearGradients[activeCard % linearGradients.length]); - }, [activeCard]); - - return ( - -
-
- {content.map((item, index) => ( -
- - {item.title} - - - {item.description} - -
- ))} -
-
-
- - - ); -}; diff --git a/packages/shadcn/src/components/ui/svg-mask-effect.tsx b/packages/shadcn/src/components/ui/svg-mask-effect.tsx deleted file mode 100644 index 1e98be2..0000000 --- a/packages/shadcn/src/components/ui/svg-mask-effect.tsx +++ /dev/null @@ -1,73 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const MaskContainer = ({ - children, - revealText, - size = 10, - revealSize = 600, - className, -}: { - children?: string | React.ReactNode; - revealText?: string | React.ReactNode; - size?: number; - revealSize?: number; - className?: string; -}) => { - const [isHovered, setIsHovered] = useState(false); - const [mousePosition, setMousePosition] = useState({ x: null, y: null }); - const containerRef = useRef(null); - const updateMousePosition = (e: any) => { - const rect = containerRef.current.getBoundingClientRect(); - setMousePosition({ x: e.clientX - rect.left, y: e.clientY - rect.top }); - }; - - useEffect(() => { - containerRef.current.addEventListener('mousemove', updateMousePosition); - return () => { - if (containerRef.current) { - containerRef.current.removeEventListener('mousemove', updateMousePosition); - } - }; - }, []); - let maskSize = isHovered ? revealSize : size; - - return ( - - -
-
{ - setIsHovered(true); - }} - onMouseLeave={() => { - setIsHovered(false); - }} - className='relative z-20 mx-auto max-w-4xl text-center text-4xl font-bold text-white' - > - {children} -
- - -
{revealText}
- - ); -}; diff --git a/packages/shadcn/src/components/ui/tailwindcss-buttons.tsx b/packages/shadcn/src/components/ui/tailwindcss-buttons.tsx deleted file mode 100644 index b9d8d21..0000000 --- a/packages/shadcn/src/components/ui/tailwindcss-buttons.tsx +++ /dev/null @@ -1,29 +0,0 @@ -// @ts-nocheck -'use client'; -import { IconClipboard } from '@tabler/icons-react'; -import React from 'react'; -import { cn } from '../../lib/utils'; - -export const ButtonsCard = ({ - children, - className, - onClick, -}: { - children?: React.ReactNode; - className?: string; - onClick?: () => void; -}) => { - return ( -
-
- -
{children}
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/text-hover-effect.tsx b/packages/shadcn/src/components/ui/text-hover-effect.tsx deleted file mode 100644 index cfc3411..0000000 --- a/packages/shadcn/src/components/ui/text-hover-effect.tsx +++ /dev/null @@ -1,121 +0,0 @@ -'use client'; -import { motion } from 'framer-motion'; -import { useEffect, useRef, useState } from 'react'; - -export const TextHoverEffect = ({ - text, - duration, -}: { - text: string; - duration?: number; - automatic?: boolean; -}) => { - const svgRef = useRef(null); - const [cursor, setCursor] = useState({ x: 0, y: 0 }); - const [hovered, setHovered] = useState(false); - const [maskPosition, setMaskPosition] = useState({ cx: '50%', cy: '50%' }); - - useEffect(() => { - if (svgRef.current && cursor.x !== null && cursor.y !== null) { - const svgRect = svgRef.current.getBoundingClientRect(); - const cxPercentage = ((cursor.x - svgRect.left) / svgRect.width) * 100; - const cyPercentage = ((cursor.y - svgRect.top) / svgRect.height) * 100; - setMaskPosition({ - cx: `${cxPercentage}%`, - cy: `${cyPercentage}%`, - }); - } - }, [cursor]); - - return ( - setHovered(true)} - onMouseLeave={() => setHovered(false)} - onMouseMove={(e) => setCursor({ x: e.clientX, y: e.clientY })} - className='select-none' - > - - - {hovered && ( - <> - - - - - - - )} - - - - - - - - - - - - {text} - - - {text} - - - {text} - - - ); -}; diff --git a/packages/shadcn/src/components/ui/text-reveal-card.tsx b/packages/shadcn/src/components/ui/text-reveal-card.tsx deleted file mode 100644 index 7bc83e1..0000000 --- a/packages/shadcn/src/components/ui/text-reveal-card.tsx +++ /dev/null @@ -1,181 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React, { memo, useEffect, useRef, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; -import { cn } from '../../lib/utils'; - -export const TextRevealCard = ({ - text, - revealText, - children, - className, -}: { - text: string; - revealText: string; - children?: React.ReactNode; - className?: string; -}) => { - const [widthPercentage, setWidthPercentage] = useState(0); - const cardRef = useRef(null); - const [left, setLeft] = useState(0); - const [localWidth, setLocalWidth] = useState(0); - const [isMouseOver, setIsMouseOver] = useState(false); - - useEffect(() => { - if (cardRef.current) { - const { left, width: localWidth } = cardRef.current.getBoundingClientRect(); - setLeft(left); - setLocalWidth(localWidth); - } - }, []); - - function mouseMoveHandler(event: any) { - event.preventDefault(); - - const { clientX } = event; - if (cardRef.current) { - const relativeX = clientX - left; - setWidthPercentage((relativeX / localWidth) * 100); - } - } - - function mouseLeaveHandler() { - setIsMouseOver(false); - setWidthPercentage(0); - } - function mouseEnterHandler() { - setIsMouseOver(true); - } - function touchMoveHandler(event: React.TouchEvent) { - event.preventDefault(); - const clientX = event.touches[0]!.clientX; - if (cardRef.current) { - const relativeX = clientX - left; - setWidthPercentage((relativeX / localWidth) * 100); - } - } - - const rotateDeg = (widthPercentage - 50) * 0.1; - return ( -
- {children} - -
- 0 ? 1 : 0, - clipPath: `inset(0 ${100 - widthPercentage}% 0 0)`, - } - : { - clipPath: `inset(0 ${100 - widthPercentage}% 0 0)`, - } - } - transition={isMouseOver ? { duration: 0 } : { duration: 0.4 }} - className='absolute z-20 bg-[#1d1c20] will-change-transform' - > -

- {revealText} -

-
- 0 ? 1 : 0, - }} - transition={isMouseOver ? { duration: 0 } : { duration: 0.4 }} - className='absolute z-50 h-40 w-[8px] bg-gradient-to-b from-transparent via-neutral-800 to-transparent will-change-transform' - > - -
-

- {text} -

- -
-
-
- ); -}; - -export const TextRevealCardTitle = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return

{children}

; -}; - -export const TextRevealCardDescription = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - return

{children}

; -}; - -const Stars = () => { - const randomMove = () => Math.random() * 4 - 2; - const randomOpacity = () => Math.random(); - const random = () => Math.random(); - return ( -
- {[...Array(80)].map((_, i) => ( - - ))} -
- ); -}; - -export const MemoizedStars = memo(Stars); diff --git a/packages/shadcn/src/components/ui/tracing-beam.tsx b/packages/shadcn/src/components/ui/tracing-beam.tsx deleted file mode 100644 index 74ec293..0000000 --- a/packages/shadcn/src/components/ui/tracing-beam.tsx +++ /dev/null @@ -1,109 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion, useScroll, useSpring, useTransform } from 'framer-motion'; -import React, { useEffect, useRef, useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const TracingBeam = ({ - children, - className, -}: { - children: React.ReactNode; - className?: string; -}) => { - const ref = useRef(null); - const { scrollYProgress } = useScroll({ - target: ref, - offset: ['start start', 'end start'], - }); - - const contentRef = useRef(null); - const [svgHeight, setSvgHeight] = useState(0); - - useEffect(() => { - if (contentRef.current) { - setSvgHeight(contentRef.current.offsetHeight); - } - }, []); - - const y1 = useSpring(useTransform(scrollYProgress, [0, 0.8], [50, svgHeight]), { - stiffness: 500, - damping: 90, - }); - const y2 = useSpring(useTransform(scrollYProgress, [0, 1], [50, svgHeight - 200]), { - stiffness: 500, - damping: 90, - }); - - return ( - -
- 0 ? 'none' : 'rgba(0, 0, 0, 0.24) 0px 3px 8px', - }} - className='border-netural-200 ml-[27px] flex h-4 w-4 items-center justify-center rounded-full border shadow-sm' - > - 0 ? 'white' : 'var(--emerald-500)', - borderColor: scrollYProgress.get() > 0 ? 'white' : 'var(--emerald-600)', - }} - className='h-2 w-2 rounded-full border border-neutral-300 bg-white' - /> - - -
-
{children}
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/typewriter-effect.tsx b/packages/shadcn/src/components/ui/typewriter-effect.tsx deleted file mode 100644 index e53da86..0000000 --- a/packages/shadcn/src/components/ui/typewriter-effect.tsx +++ /dev/null @@ -1,182 +0,0 @@ -// @ts-nocheck -'use client'; - -import { motion, stagger, useAnimate, useInView } from 'framer-motion'; -import { useEffect } from 'react'; -import { cn } from '../../lib/utils'; - -export const TypewriterEffect = ({ - words, - className, - cursorClassName, -}: { - words: { - text: string; - className?: string; - }[]; - className?: string; - cursorClassName?: string; -}) => { - // split text inside of words into array of characters - const wordsArray = words.map((word) => { - return { - ...word, - text: word.text.split(''), - }; - }); - - const [scope, animate] = useAnimate(); - const isInView = useInView(scope); - useEffect(() => { - if (isInView) { - animate( - 'span', - { - display: 'inline-block', - opacity: 1, - width: 'fit-content', - }, - { - duration: 0.3, - delay: stagger(0.1), - ease: 'easeInOut', - }, - ); - } - }, [isInView]); - - const renderWords = () => { - return ( - - {wordsArray.map((word, idx) => { - return ( -
- {word.text.map((char, index) => ( - - {char} - - ))} -   -
- ); - })} -
- ); - }; - return ( -
- {renderWords()} - -
- ); -}; - -export const TypewriterEffectSmooth = ({ - words, - className, - cursorClassName, -}: { - words: { - text: string; - className?: string; - }[]; - className?: string; - cursorClassName?: string; -}) => { - // split text inside of words into array of characters - const wordsArray = words.map((word) => { - return { - ...word, - text: word.text.split(''), - }; - }); - const renderWords = () => { - return ( -
- {wordsArray.map((word, idx) => { - return ( -
- {word.text.map((char, index) => ( - - {char} - - ))} -   -
- ); - })} -
- ); - }; - - return ( -
- -
- {renderWords()}{' '} -
{' '} -
- -
- ); -}; diff --git a/packages/shadcn/src/components/ui/vortex.tsx b/packages/shadcn/src/components/ui/vortex.tsx deleted file mode 100644 index 7f17c58..0000000 --- a/packages/shadcn/src/components/ui/vortex.tsx +++ /dev/null @@ -1,244 +0,0 @@ -// @ts-nocheck -import { motion } from 'framer-motion'; -import { useEffect, useRef } from 'react'; -import { createNoise3D } from 'simplex-noise'; -import { cn } from '../../lib/utils'; - -interface VortexProps { - children?: any; - className?: string; - containerClassName?: string; - particleCount?: number; - rangeY?: number; - baseHue?: number; - baseSpeed?: number; - rangeSpeed?: number; - baseRadius?: number; - rangeRadius?: number; - backgroundColor?: string; -} - -export const Vortex = (props: VortexProps) => { - const canvasRef = useRef(null); - const containerRef = useRef(null); - const particleCount = props.particleCount || 700; - const particlePropCount = 9; - const particlePropsLength = particleCount * particlePropCount; - const rangeY = props.rangeY || 100; - const baseTTL = 50; - const rangeTTL = 150; - const baseSpeed = props.baseSpeed || 0.0; - const rangeSpeed = props.rangeSpeed || 1.5; - const baseRadius = props.baseRadius || 1; - const rangeRadius = props.rangeRadius || 2; - const baseHue = props.baseHue || 220; - const rangeHue = 100; - const noiseSteps = 3; - const xOff = 0.00125; - const yOff = 0.00125; - const zOff = 0.0005; - const backgroundColor = props.backgroundColor || '#000000'; - let tick = 0; - const noise3D = createNoise3D(); - let particleProps = new Float32Array(particlePropsLength); - let center: [number, number] = [0, 0]; - - const HALF_PI: number = 0.5 * Math.PI; - const TAU: number = 2 * Math.PI; - const TO_RAD: number = Math.PI / 180; - const rand = (n: number): number => n * Math.random(); - const randRange = (n: number): number => n - rand(2 * n); - const fadeInOut = (t: number, m: number): number => { - let hm = 0.5 * m; - return Math.abs(((t + hm) % m) - hm) / hm; - }; - const lerp = (n1: number, n2: number, speed: number): number => (1 - speed) * n1 + speed * n2; - - const setup = () => { - const canvas = canvasRef.current; - const container = containerRef.current; - if (canvas && container) { - const ctx = canvas.getContext('2d'); - - if (ctx) { - resize(canvas, ctx); - initParticles(); - draw(canvas, ctx); - } - } - }; - - const initParticles = () => { - tick = 0; - // simplex = new SimplexNoise(); - particleProps = new Float32Array(particlePropsLength); - - for (let i = 0; i < particlePropsLength; i += particlePropCount) { - initParticle(i); - } - }; - - const initParticle = (i: number) => { - const canvas = canvasRef.current; - if (!canvas) return; - - let x, y, vx, vy, life, ttl, speed, radius, hue; - - x = rand(canvas.width); - y = center[1] + randRange(rangeY); - vx = 0; - vy = 0; - life = 0; - ttl = baseTTL + rand(rangeTTL); - speed = baseSpeed + rand(rangeSpeed); - radius = baseRadius + rand(rangeRadius); - hue = baseHue + rand(rangeHue); - - particleProps.set([x, y, vx, vy, life, ttl, speed, radius, hue], i); - }; - - const draw = (canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => { - tick++; - - ctx.clearRect(0, 0, canvas.width, canvas.height); - - ctx.fillStyle = backgroundColor; - ctx.fillRect(0, 0, canvas.width, canvas.height); - - drawParticles(ctx); - renderGlow(canvas, ctx); - renderToScreen(canvas, ctx); - - window.requestAnimationFrame(() => draw(canvas, ctx)); - }; - - const drawParticles = (ctx: CanvasRenderingContext2D) => { - for (let i = 0; i < particlePropsLength; i += particlePropCount) { - updateParticle(i, ctx); - } - }; - - const updateParticle = (i: number, ctx: CanvasRenderingContext2D) => { - const canvas = canvasRef.current; - if (!canvas) return; - - let i2 = 1 + i, - i3 = 2 + i, - i4 = 3 + i, - i5 = 4 + i, - i6 = 5 + i, - i7 = 6 + i, - i8 = 7 + i, - i9 = 8 + i; - let n, x, y, vx, vy, life, ttl, speed, x2, y2, radius, hue; - - x = particleProps[i]; - y = particleProps[i2]; - n = noise3D(x * xOff, y * yOff, tick * zOff) * noiseSteps * TAU; - vx = lerp(particleProps[i3], Math.cos(n), 0.5); - vy = lerp(particleProps[i4], Math.sin(n), 0.5); - life = particleProps[i5]; - ttl = particleProps[i6]; - speed = particleProps[i7]; - x2 = x + vx * speed; - y2 = y + vy * speed; - radius = particleProps[i8]; - hue = particleProps[i9]; - - drawParticle(x, y, x2, y2, life, ttl, radius, hue, ctx); - - life++; - - particleProps[i] = x2; - particleProps[i2] = y2; - particleProps[i3] = vx; - particleProps[i4] = vy; - particleProps[i5] = life; - - (checkBounds(x, y, canvas) || life > ttl) && initParticle(i); - }; - - const drawParticle = ( - x: number, - y: number, - x2: number, - y2: number, - life: number, - ttl: number, - radius: number, - hue: number, - ctx: CanvasRenderingContext2D, - ) => { - ctx.save(); - ctx.lineCap = 'round'; - ctx.lineWidth = radius; - ctx.strokeStyle = `hsla(${hue},100%,60%,${fadeInOut(life, ttl)})`; - ctx.beginPath(); - ctx.moveTo(x, y); - ctx.lineTo(x2, y2); - ctx.stroke(); - ctx.closePath(); - ctx.restore(); - }; - - const checkBounds = (x: number, y: number, canvas: HTMLCanvasElement) => { - return x > canvas.width || x < 0 || y > canvas.height || y < 0; - }; - - const resize = (canvas: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) => { - const { innerWidth, innerHeight } = window; - - canvas.width = innerWidth; - canvas.height = innerHeight; - - center[0] = 0.5 * canvas.width; - center[1] = 0.5 * canvas.height; - }; - - const renderGlow = (canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => { - ctx.save(); - ctx.filter = 'blur(8px) brightness(200%)'; - ctx.globalCompositeOperation = 'lighter'; - ctx.drawImage(canvas, 0, 0); - ctx.restore(); - - ctx.save(); - ctx.filter = 'blur(4px) brightness(200%)'; - ctx.globalCompositeOperation = 'lighter'; - ctx.drawImage(canvas, 0, 0); - ctx.restore(); - }; - - const renderToScreen = (canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D) => { - ctx.save(); - ctx.globalCompositeOperation = 'lighter'; - ctx.drawImage(canvas, 0, 0); - ctx.restore(); - }; - - useEffect(() => { - setup(); - window.addEventListener('resize', () => { - const canvas = canvasRef.current; - const ctx = canvas?.getContext('2d'); - if (canvas && ctx) { - resize(canvas, ctx); - } - }); - }, []); - - return ( -
- - - - -
{props.children}
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/wavy-background.tsx b/packages/shadcn/src/components/ui/wavy-background.tsx deleted file mode 100644 index 0a1fc09..0000000 --- a/packages/shadcn/src/components/ui/wavy-background.tsx +++ /dev/null @@ -1,116 +0,0 @@ -// @ts-nocheck -'use client'; -import { useEffect, useRef, useState } from 'react'; -import { createNoise3D } from 'simplex-noise'; -import { cn } from '../../lib/utils'; - -export const WavyBackground = ({ - children, - className, - containerClassName, - colors, - waveWidth, - backgroundFill, - blur = 10, - speed = 'fast', - waveOpacity = 0.5, - ...props -}: { - children?: any; - className?: string; - containerClassName?: string; - colors?: string[]; - waveWidth?: number; - backgroundFill?: string; - blur?: number; - speed?: 'slow' | 'fast'; - waveOpacity?: number; - [key: string]: any; -}) => { - const noise = createNoise3D(); - let w: number, h: number, nt: number, i: number, x: number, ctx: any, canvas: any; - const canvasRef = useRef(null); - const getSpeed = () => { - switch (speed) { - case 'slow': - return 0.001; - case 'fast': - return 0.002; - default: - return 0.001; - } - }; - - const init = () => { - canvas = canvasRef.current; - ctx = canvas.getContext('2d'); - w = ctx.canvas.width = window.innerWidth; - h = ctx.canvas.height = window.innerHeight; - ctx.filter = `blur(${blur}px)`; - nt = 0; - window.onresize = function () { - w = ctx.canvas.width = window.innerWidth; - h = ctx.canvas.height = window.innerHeight; - ctx.filter = `blur(${blur}px)`; - }; - render(); - }; - - const waveColors = colors ?? ['#38bdf8', '#818cf8', '#c084fc', '#e879f9', '#22d3ee']; - const drawWave = (n: number) => { - nt += getSpeed(); - for (i = 0; i < n; i++) { - ctx.beginPath(); - ctx.lineWidth = waveWidth || 50; - ctx.strokeStyle = waveColors[i % waveColors.length]; - for (x = 0; x < w; x += 5) { - var y = noise(x / 800, 0.3 * i, nt) * 100; - ctx.lineTo(x, y + h * 0.5); // adjust for height, currently at 50% of the container - } - ctx.stroke(); - ctx.closePath(); - } - }; - - let animationId: number; - const render = () => { - ctx.fillStyle = backgroundFill || 'black'; - ctx.globalAlpha = waveOpacity || 0.5; - ctx.fillRect(0, 0, w, h); - drawWave(5); - animationId = requestAnimationFrame(render); - }; - - useEffect(() => { - init(); - return () => { - cancelAnimationFrame(animationId); - }; - }, []); - - const [isSafari, setIsSafari] = useState(false); - useEffect(() => { - // I'm sorry but i have got to support it on safari. - setIsSafari( - typeof window !== 'undefined' && - navigator.userAgent.includes('Safari') && - !navigator.userAgent.includes('Chrome'), - ); - }, []); - - return ( -
- -
- {children} -
-
- ); -}; diff --git a/packages/shadcn/src/components/ui/wobble-card.tsx b/packages/shadcn/src/components/ui/wobble-card.tsx deleted file mode 100644 index 0020d9c..0000000 --- a/packages/shadcn/src/components/ui/wobble-card.tsx +++ /dev/null @@ -1,79 +0,0 @@ -// @ts-nocheck -'use client'; -import { motion } from 'framer-motion'; -import React, { useState } from 'react'; -import { cn } from '../../lib/utils'; - -export const WobbleCard = ({ - children, - containerClassName, - className, -}: { - children: React.ReactNode; - containerClassName?: string; - className?: string; -}) => { - const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); - const [isHovering, setIsHovering] = useState(false); - - const handleMouseMove = (event: React.MouseEvent) => { - const { clientX, clientY } = event; - const rect = event.currentTarget.getBoundingClientRect(); - const x = (clientX - (rect.left + rect.width / 2)) / 20; - const y = (clientY - (rect.top + rect.height / 2)) / 20; - setMousePosition({ x, y }); - }; - return ( - setIsHovering(true)} - onMouseLeave={() => { - setIsHovering(false); - setMousePosition({ x: 0, y: 0 }); - }} - style={{ - transform: isHovering - ? `translate3d(${mousePosition.x}px, ${mousePosition.y}px, 0) scale3d(1, 1, 1)` - : 'translate3d(0px, 0px, 0) scale3d(1, 1, 1)', - transition: 'transform 0.1s ease-out', - }} - className={cn( - 'relative mx-auto w-full overflow-hidden rounded-2xl bg-indigo-800', - containerClassName, - )} - > -
- - - {children} - -
-
- ); -}; - -const Noise = () => { - return ( -
- ); -}; diff --git a/packages/shadcn/src/data/globe.json b/packages/shadcn/src/data/globe.json deleted file mode 100644 index 2c37040..0000000 --- a/packages/shadcn/src/data/globe.json +++ /dev/null @@ -1,12335 +0,0 @@ -{ - "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, - "features": [ - { - "type": "Feature", - "properties": { "admin": "Afghanistan", "name": "Afghanistan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [61.21081709172573, 35.650072333309218], - [62.230651483005879, 35.270663967422287], - [62.984662306576588, 35.404040839167614], - [63.193538445900337, 35.857165635718907], - [63.982895949158696, 36.007957465146596], - [64.546479119733888, 36.31207326918426], - [64.746105177677393, 37.111817735333297], - [65.588947788357828, 37.305216783185628], - [65.745630731066811, 37.661164048812061], - [66.217384881459324, 37.393790188133913], - [66.518606805288655, 37.362784328758785], - [67.075782098259609, 37.35614390720928], - [67.829999627559502, 37.144994004864678], - [68.135562371701369, 37.023115139304302], - [68.859445835245921, 37.344335842430588], - [69.196272820924364, 37.15114350030742], - [69.518785434857946, 37.608996690413413], - [70.116578403610319, 37.588222764632086], - [70.270574171840124, 37.73516469985401], - [70.376304152309274, 38.138395901027515], - [70.806820509732873, 38.486281643216408], - [71.348131137990251, 38.258905341132156], - [71.239403924448155, 37.953265082341879], - [71.541917759084768, 37.905774441065631], - [71.448693475230229, 37.065644843080513], - [71.84463829945058, 36.738171291646914], - [72.193040805962383, 36.94828766534566], - [72.636889682917271, 37.047558091778349], - [73.260055779924983, 37.495256862938994], - [73.948695916646486, 37.421566270490786], - [74.980002475895404, 37.419990139305888], - [75.158027785140902, 37.13303091078911], - [74.575892775372964, 37.02084137628345], - [74.067551710917812, 36.836175645488446], - [72.920024855444453, 36.720007025696312], - [71.846291945283909, 36.509942328429851], - [71.262348260385735, 36.074387518857797], - [71.498767938121077, 35.650563259415996], - [71.613076206350698, 35.153203436822857], - [71.115018751921625, 34.733125718722228], - [71.156773309213449, 34.348911444632144], - [70.881803012988385, 33.988855902638512], - [69.93054324735958, 34.020120144175102], - [70.323594191371583, 33.358532619758385], - [69.687147251264847, 33.105498969041228], - [69.262522007122541, 32.501944078088293], - [69.317764113242546, 31.901412258424436], - [68.926676873657655, 31.620189113892064], - [68.556932000609308, 31.713310044882011], - [67.792689243444769, 31.582930406209623], - [67.683393589147457, 31.303154201781414], - [66.938891229118454, 31.304911200479346], - [66.38145755398601, 30.738899237586448], - [66.346472609324408, 29.88794342703617], - [65.046862013616092, 29.472180691031902], - [64.350418735618504, 29.560030625928089], - [64.148002150331237, 29.340819200145965], - [63.550260858011164, 29.468330796826162], - [62.549856805272775, 29.318572496044304], - [60.874248488208778, 29.829238999952604], - [61.78122155136343, 30.735850328081231], - [61.699314406180811, 31.379506130492661], - [60.941944614511115, 31.548074652628745], - [60.863654819588952, 32.182919623334421], - [60.536077915290761, 32.981268825811561], - [60.963700392505991, 33.528832302376252], - [60.528429803311575, 33.676446031217999], - [60.80319339380744, 34.404101874319856], - [61.21081709172573, 35.650072333309218] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Angola", "name": "Angola", "continent": "Africa" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [16.326528354567042, -5.877470391466217], - [16.573179965896141, -6.622644545115092], - [16.860190870845226, -7.222297865429978], - [17.089995965247166, -7.545688978712474], - [17.472970004962288, -8.068551120641656], - [18.134221632569048, -7.987677504104865], - [18.464175652752683, -7.847014255406475], - [19.016751743249664, -7.988245944860138], - [19.166613396896079, -7.738183688999724], - [19.417502475673214, -7.155428562044277], - [20.037723016040214, -7.116361179231658], - [20.091621534920616, -6.943090101756949], - [20.60182295093832, -6.939317722199688], - [20.514748162526526, -7.299605808138663], - [21.728110792739752, -7.290872491081315], - [21.74645592620336, -7.920084730667113], - [21.949130893652033, -8.305900974158304], - [21.80180138518795, -8.908706556842985], - [21.875181919042397, -9.523707777548564], - [22.208753289486417, -9.894796237836529], - [22.155268182064326, -11.084801120653777], - [22.402798292742428, -10.99307545333569], - [22.837345411884762, -11.017621758674334], - [23.456790805767461, -10.867863457892481], - [23.912215203555743, -10.926826267137541], - [24.017893507592614, -11.237298272347115], - [23.904153680118235, -11.722281589406332], - [24.079905226342895, -12.191296888887305], - [23.930922072045373, -12.565847670138821], - [24.0161365088947, -12.91104623784855], - [21.933886346125941, -12.898437188369353], - [21.887842644953871, -16.080310153876891], - [22.562478468524283, -16.898451429921831], - [23.215048455506086, -17.523116143465952], - [21.377176141045592, -17.930636488519706], - [18.956186964603628, -17.789094740472233], - [18.263309360434217, -17.309950860262003], - [14.209706658595049, -17.353100681225708], - [14.058501417709035, -17.423380629142653], - [13.462362094789963, -16.971211846588741], - [12.814081251688405, -16.941342868724075], - [12.21546146001938, -17.111668389558059], - [11.734198846085146, -17.301889336824498], - [11.640096062881609, -16.673142185129205], - [11.778537224991563, -15.793816013250687], - [12.123580763404444, -14.878316338767927], - [12.175618930722264, -14.449143568583889], - [12.500095249083014, -13.547699883684398], - [12.738478631245439, -13.137905775609934], - [13.312913852601834, -12.483630466362511], - [13.633721144269824, -12.038644707897189], - [13.738727654686924, -11.297863050993142], - [13.686379428775293, -10.73107594161584], - [13.38732791510216, -10.373578383020726], - [13.120987583069873, -9.766897067914112], - [12.875369500386567, -9.166933689005488], - [12.929061313537797, -8.959091078327573], - [13.23643273280987, -8.56262948978434], - [12.933040398824314, -7.596538588087752], - [12.728298374083916, -6.927122084178803], - [12.227347039446441, -6.294447523629372], - [12.322431674863562, -6.100092461779651], - [12.735171339578695, -5.965682061388476], - [13.024869419006988, -5.984388929878106], - [13.375597364971892, -5.864241224799555], - [16.326528354567042, -5.877470391466217] - ] - ], - [ - [ - [12.436688266660919, -5.684303887559223], - [12.182336866920277, -5.789930515163801], - [11.914963006242115, -5.037986748884733], - [12.318607618873923, -4.606230157086158], - [12.620759718484548, -4.438023369976121], - [12.995517205465202, -4.781103203961918], - [12.631611769265842, -4.991271254092935], - [12.468004184629759, -5.248361504744991], - [12.436688266660919, -5.684303887559223] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Albania", "name": "Albania", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.590247430104906, 41.855404161133592], - [20.463175083099195, 41.515089016275333], - [20.605181919037356, 41.086226304685219], - [21.020040317476397, 40.842726955725873], - [20.99998986174722, 40.580003973953964], - [20.67499677906363, 40.43499990494302], - [20.61500044117275, 40.110006822259365], - [20.150015903410516, 39.624997666983965], - [19.980000441170144, 39.694993394523401], - [19.9600016618732, 39.915005805006039], - [19.40608198413673, 40.250773423822459], - [19.319058872157139, 40.727230129553554], - [19.403549838954287, 41.409565741535445], - [19.540027296637099, 41.71998607031275], - [19.371768833094958, 41.87754751237064], - [19.304486118250786, 42.195745144207812], - [19.738051385179627, 42.688247382165564], - [19.801613396898681, 42.500093492190835], - [20.0707, 42.58863], - [20.28375451018189, 42.320259507815074], - [20.52295, 42.21787], - [20.590247430104906, 41.855404161133592] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "United Arab Emirates", - "name": "United Arab Emirates", - "continent": "Asia" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [51.579518670463258, 24.245497137951102], - [51.757440626844172, 24.294072984305462], - [51.794389275932865, 24.019826158132499], - [52.577080519425593, 24.177439276622703], - [53.404006788960139, 24.151316840099167], - [54.008000929587574, 24.121757920828212], - [54.693023716048614, 24.797892360935084], - [55.439024692614126, 25.439145209244934], - [56.070820753814544, 26.055464178973978], - [56.261041701080948, 25.714606431576762], - [56.396847365143991, 24.924732163995483], - [55.886232537667993, 24.92083059335744], - [55.804118686756212, 24.269604193615258], - [55.981213820220454, 24.130542914317822], - [55.528631626208231, 23.933604030853498], - [55.525841098864461, 23.524869289640929], - [55.234489373602869, 23.110992743415316], - [55.208341098863187, 22.708329982997039], - [55.006803012924898, 22.496947536707129], - [52.000733270074321, 23.001154486578937], - [51.617707553926969, 24.014219265228824], - [51.579518670463258, 24.245497137951102] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Argentina", "name": "Argentina", "continent": "South America" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-65.5, -55.2], - [-66.45, -55.25], - [-66.95992, -54.89681], - [-67.56244, -54.87001], - [-68.63335, -54.8695], - [-68.634010227583147, -52.636370458874453], - [-68.25, -53.1], - [-67.75, -53.85], - [-66.45, -54.45], - [-65.05, -54.7], - [-65.5, -55.2] - ] - ], - [ - [ - [-64.964892137294569, -22.075861504812348], - [-64.377021043542257, -22.79809132252354], - [-63.986838141522462, -21.993644301035953], - [-62.84646847192154, -22.034985446869452], - [-62.685057135657885, -22.249029229422401], - [-60.846564704009928, -23.880712579038299], - [-60.028966030503973, -24.032796319273238], - [-58.807128465394939, -24.771459242453268], - [-57.777217169817952, -25.162339776309032], - [-57.633660040911124, -25.603656508081666], - [-58.618173590719707, -27.123718763947117], - [-57.609759690976134, -27.395898532828419], - [-56.486701626192989, -27.548499037386243], - [-55.695845506398186, -27.387837009390815], - [-54.788794928595038, -26.621785577096087], - [-54.625290696823541, -25.739255466415479], - [-54.130049607954412, -25.547639255477243], - [-53.628348965048716, -26.12486500417743], - [-53.648735317587885, -26.923472588816104], - [-54.490725267135517, -27.474756768505767], - [-55.162286342984586, -27.881915378533414], - [-56.290899624239088, -28.852760512000849], - [-57.62513342958291, -30.21629485445424], - [-57.874937303281897, -31.016556084926158], - [-58.14244035504074, -32.044503676076182], - [-58.132647671121404, -33.040566908502008], - [-58.349611172098818, -33.263188978815428], - [-58.427074144104367, -33.909454441057541], - [-58.495442064026541, -34.4314897600701], - [-57.225829637263629, -35.288026625307886], - [-57.362358771378737, -35.977390232081497], - [-56.737487352105447, -36.413125909166574], - [-56.788285285048339, -36.901571547189327], - [-57.749156867083421, -38.183870538079901], - [-59.231857062401865, -38.720220228837199], - [-61.2374452378656, -38.92842457454114], - [-62.335956997310134, -38.827707208004362], - [-62.125763108962914, -39.424104913084868], - [-62.33053097191943, -40.172586358400316], - [-62.145994432205228, -40.676896661136723], - [-62.74580278181697, -41.028761488612083], - [-63.770494757732514, -41.166789239263657], - [-64.732089809819698, -40.802677097335128], - [-65.118035244391578, -41.064314874028874], - [-64.97856055363583, -42.058000990569312], - [-64.303407965742466, -42.359016208669495], - [-63.755947842042339, -42.043686618824495], - [-63.458059048095883, -42.563138116222355], - [-64.378803880456289, -42.873558444999638], - [-65.181803961839691, -43.495380954767782], - [-65.328823411710133, -44.501366062193689], - [-65.565268927661592, -45.03678557716978], - [-66.509965786389344, -45.039627780945843], - [-67.293793911392427, -45.551896254255183], - [-67.580546434180079, -46.301772963242527], - [-66.597066413017259, -47.033924655953804], - [-65.641026577401433, -47.23613453551188], - [-65.98508826360073, -48.133289076531128], - [-67.166178961847649, -48.697337334996931], - [-67.816087612566449, -49.869668877970412], - [-68.728745083273154, -50.26421843851886], - [-69.138539191347789, -50.732510267947788], - [-68.815561489523517, -51.771104011594097], - [-68.149994879820397, -52.349983406127699], - [-68.571545376241332, -52.299443855346247], - [-69.498362189396076, -52.142760912637236], - [-71.914803839796321, -52.009022305865912], - [-72.329403856074023, -51.425956312872394], - [-72.309973517532342, -50.677009779666342], - [-72.975746832964617, -50.741450290734299], - [-73.328050910114456, -50.378785088909865], - [-73.415435757120022, -49.318436374712952], - [-72.648247443314929, -48.878618259476774], - [-72.331160854771937, -48.244238376661819], - [-72.44735531278026, -47.738532810253517], - [-71.917258470330196, -46.884838148791786], - [-71.552009446891233, -45.560732924177117], - [-71.659315558545316, -44.973688653341434], - [-71.222778896759721, -44.784242852559409], - [-71.329800788036195, -44.407521661151677], - [-71.793622606071935, -44.207172133156099], - [-71.464056159130493, -43.787611179378324], - [-71.915423956983901, -43.408564548517404], - [-72.148898078078517, -42.254888197601375], - [-71.746803758415453, -42.051386407235988], - [-71.915734015577542, -40.832339369470716], - [-71.680761277946445, -39.808164157878061], - [-71.413516608349042, -38.916022230791107], - [-70.814664272734703, -38.552995293940732], - [-71.118625047475419, -37.576827487947192], - [-71.121880662709771, -36.65812387466233], - [-70.364769253201658, -36.005088799789931], - [-70.388049485949082, -35.169687595359441], - [-69.817309129501453, -34.193571465798279], - [-69.814776984319209, -33.273886000299839], - [-70.074399380153622, -33.09120981214803], - [-70.535068935819439, -31.365010267870279], - [-69.919008348251921, -30.336339206668306], - [-70.013550381129861, -29.367922865518544], - [-69.656130337183143, -28.459141127233686], - [-69.001234910748266, -27.521213881136127], - [-68.295541551370391, -26.899339694935787], - [-68.594799770772667, -26.50690886811126], - [-68.386001146097342, -26.185016371365229], - [-68.417652960876111, -24.518554782816874], - [-67.328442959244128, -24.025303236590908], - [-66.985233934177629, -22.986348565362825], - [-67.106673550063604, -22.735924574476392], - [-66.273339402924833, -21.832310479420677], - [-64.964892137294569, -22.075861504812348] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Armenia", "name": "Armenia", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [43.582745802592726, 41.09214325618256], - [44.972480096218071, 41.248128567055588], - [45.179495883979335, 40.985353908851401], - [45.560351189970433, 40.812289537105919], - [45.359174839058156, 40.561503811193447], - [45.891907179555076, 40.218475653639992], - [45.610012241402913, 39.899993801425175], - [46.034534132680662, 39.628020738273058], - [46.483498976432443, 39.464154771475528], - [46.505719842317966, 38.770605373686287], - [46.143623081248812, 38.74120148371221], - [45.735379266143006, 39.319719143219736], - [45.739978468616975, 39.473999131827114], - [45.298144972521456, 39.471751207022422], - [45.00198733905674, 39.740003567049548], - [44.793989699081934, 39.713002631177041], - [44.400008579288695, 40.005000311842267], - [43.656436395040934, 40.253563951166178], - [43.752657911968399, 40.740200914058754], - [43.582745802592726, 41.09214325618256] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "French Southern and Antarctic Lands", - "name": "Fr. S. Antarctic Lands", - "continent": "Seven seas (open ocean)" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [68.935, -48.625], - [69.58, -48.94], - [70.525, -49.065], - [70.56, -49.255], - [70.28, -49.71], - [68.745, -49.775], - [68.72, -49.2425], - [68.8675, -48.83], - [68.935, -48.625] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Australia", "name": "Australia", "continent": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [145.397978143494782, -40.792548516605883], - [146.364120721623692, -41.137695407883335], - [146.908583612250823, -41.000546156580668], - [147.689259474884125, -40.808258152022681], - [148.289067824495987, -40.875437514002122], - [148.359864536735785, -42.062445163746439], - [148.017301467073082, -42.40702361426861], - [147.914051955353784, -43.211522312188485], - [147.564564243763982, -42.937688897473855], - [146.87034305235494, -43.634597263362082], - [146.663327264593647, -43.580853773778543], - [146.048377720320389, -43.54974456153888], - [145.431929559510536, -42.693776137056268], - [145.295090366801674, -42.03360971452755], - [144.7180713238306, -41.162551771815707], - [144.743754510679622, -40.703975111657705], - [145.397978143494782, -40.792548516605883] - ] - ], - [ - [ - [143.561811151299935, -13.763655694232209], - [143.922099237238882, -14.548310642152], - [144.563713820574804, -14.171176039285879], - [144.894908075133515, -14.594457696188622], - [145.374723748963419, -14.984976495018284], - [145.271991001567244, -15.428205254785691], - [145.48525963763575, -16.285672295804769], - [145.637033319276952, -16.784918308176611], - [145.888904250267672, -16.906926364817647], - [146.160308872664473, -17.76165455492524], - [146.063673944278662, -18.280072523677315], - [146.387478469019584, -18.958274021075905], - [147.471081577747896, -19.480722751546676], - [148.177601760042478, -19.955939222902767], - [148.848413527623222, -20.391209812097252], - [148.717465448195583, -20.633468926681513], - [149.289420200802056, -21.260510756111096], - [149.678337030230637, -22.342511895438388], - [150.07738244038859, -22.122783705333315], - [150.482939081015161, -22.556142266533012], - [150.727265252891158, -22.402404880464655], - [150.899554478152254, -23.462236830338679], - [151.609175246384211, -24.076256198830755], - [152.07353966695905, -24.45788665130619], - [152.855197381805908, -25.267501316023008], - [153.136162144176751, -26.071173191026187], - [153.161948683890358, -26.641319268502439], - [153.09290897034856, -27.260299574494503], - [153.569469028944184, -28.110066827102099], - [153.512108189100218, -28.995077406532751], - [153.339095493787056, -29.458201592732443], - [153.069241164358857, -30.350240166954809], - [153.089601678681788, -30.923641859665445], - [152.891577590139377, -31.640445651985949], - [152.450002476205327, -32.550002536755237], - [151.709117466436766, -33.041342054986337], - [151.343971795862387, -33.816023451473846], - [151.010555454715103, -34.310360202777879], - [150.714139439089024, -35.173459974916803], - [150.328219842733233, -35.671879164371923], - [150.075212030232251, -36.420205580390508], - [149.946124302367139, -37.109052422841224], - [149.997283970336127, -37.425260512035123], - [149.423882277625523, -37.772681166333463], - [148.304622430615893, -37.809061374666875], - [147.38173302631526, -38.219217217767543], - [146.922122837511324, -38.606532077795116], - [146.317921991154776, -39.035756524411433], - [145.489652134380549, -38.593767999019043], - [144.876976353128157, -38.41744801203911], - [145.032212355732952, -37.896187839510972], - [144.485682407814011, -38.085323581699257], - [143.609973586196077, -38.809465427405321], - [142.745426873952965, -38.538267510737519], - [142.17832970598198, -38.380034275059835], - [141.606581659104677, -38.308514092767872], - [140.638578729413211, -38.019332777662541], - [139.992158237874321, -37.402936293285094], - [139.806588169514043, -36.643602797188272], - [139.574147577065219, -36.138362318670666], - [139.082808058834075, -35.732754001611774], - [138.120747918856296, -35.612296237939397], - [138.449461704664998, -35.127261244447887], - [138.207564325106659, -34.384722588845925], - [137.719170363516128, -35.07682504653102], - [136.829405552314711, -35.260534763328614], - [137.352371047108477, -34.707338555644093], - [137.503886346588331, -34.130267836240769], - [137.890116001537649, -33.640478610978327], - [137.810327590079112, -32.900007012668105], - [136.996837192940347, -33.752771498348629], - [136.372069126531642, -34.094766127256186], - [135.98904341038434, -34.89011809666048], - [135.208212518454104, -34.478670342752601], - [135.239218377829161, -33.947953383114971], - [134.613416782774607, -33.222778008763136], - [134.085903761939107, -32.848072198214759], - [134.273902622617015, -32.617233575166949], - [132.990776808809812, -32.011224053680188], - [132.288080682504869, -31.982646986622761], - [131.326330601120901, -31.495803318001041], - [129.535793898639668, -31.590422865527476], - [128.240937534702198, -31.948488864877849], - [127.102867466338282, -32.282266941051041], - [126.148713820501129, -32.2159660784206], - [125.088623488465586, -32.728751316052829], - [124.22164798390493, -32.959486586236061], - [124.028946567888511, -33.483847344701708], - [123.65966678273071, -33.890179131812722], - [122.811036411633609, -33.914467054989835], - [122.18306440642283, -34.003402194964217], - [121.299190708502579, -33.821036065406126], - [120.580268182458113, -33.930176690406618], - [119.893695103028222, -33.976065362281808], - [119.298899367348781, -34.50936614353396], - [119.007340936357977, -34.464149265278529], - [118.505717808100769, -34.746819349915093], - [118.024971958489516, -35.064732761374707], - [117.295507440257438, -35.025458672832862], - [116.62510908413492, -35.025096937806829], - [115.564346958479689, -34.386427911111547], - [115.026808709779516, -34.196517022438918], - [115.048616164206763, -33.623425388322026], - [115.545123325667078, -33.487257989232951], - [115.714673700016661, -33.259571628554944], - [115.679378696761376, -32.900368747694124], - [115.801645135563959, -32.205062351207026], - [115.689610630355105, -31.612437025683782], - [115.160909051576937, -30.601594333622455], - [114.99704308477942, -30.030724786094162], - [115.040037876446249, -29.461095472940794], - [114.64197431850198, -28.810230808224706], - [114.61649783738217, -28.516398614213042], - [114.173579136208446, -28.118076674107321], - [114.048883905088132, -27.33476531342712], - [113.477497593236876, -26.543134047147898], - [113.338953078262477, -26.116545098578477], - [113.77835778204026, -26.549025160429174], - [113.440962355606587, -25.621278171493152], - [113.936901076311642, -25.911234633082877], - [114.232852004047288, -26.298446140245868], - [114.216160516417006, -25.786281019801105], - [113.721255324357685, -24.998938897402123], - [113.625343866024025, -24.683971042583146], - [113.393523390762667, -24.384764499613262], - [113.502043898575607, -23.80635019297025], - [113.706992629045146, -23.56021534596406], - [113.843418410295669, -23.059987481378734], - [113.736551548316072, -22.475475355725372], - [114.149756300921865, -21.755881036061009], - [114.225307244932651, -22.51748829517863], - [114.64776207891866, -21.829519952076904], - [115.460167270979298, -21.495173435148541], - [115.94737267462699, -21.068687839443708], - [116.711615431791529, -20.701681817306817], - [117.166316359527684, -20.623598728113802], - [117.441545037914238, -20.746898695562162], - [118.229558953932951, -20.374208265873232], - [118.836085239742701, -20.263310642174822], - [118.987807244951753, -20.044202569257319], - [119.252493931150624, -19.952941989829835], - [119.805225050944543, -19.976506442954978], - [120.856220330896633, -19.683707777589188], - [121.399856398607199, -19.239755547769729], - [121.655137974129062, -18.70531788500713], - [122.241665480641757, -18.197648614171765], - [122.286623976735655, -17.798603204013911], - [122.312772251475408, -17.254967136303446], - [123.012574497571904, -16.405199883695854], - [123.433789097183009, -17.268558037996225], - [123.859344517106592, -17.069035332917249], - [123.503242222183232, -16.596506036040363], - [123.817073195491915, -16.11131601325199], - [124.258286574399847, -16.32794361741956], - [124.379726190285794, -15.567059828353973], - [124.926152785340022, -15.07510019293532], - [125.167275018413875, -14.680395603090004], - [125.670086704613823, -14.510070082256018], - [125.685796340030493, -14.230655612853834], - [126.125149367376096, -14.347340996968949], - [126.142822707219864, -14.095986830301211], - [126.582589146023736, -13.95279143642041], - [127.065867140817332, -13.817967624570922], - [127.804633416861932, -14.276906019755042], - [128.359689976108939, -14.869169610252253], - [128.985543247595899, -14.875990899314738], - [129.621473423379598, -14.969783623924553], - [129.409600050982988, -14.420669854391031], - [129.888640578328591, -13.618703301653481], - [130.339465773642928, -13.357375583553473], - [130.183506300985982, -13.107520033422301], - [130.617795037966971, -12.536392103732464], - [131.223494500859999, -12.183648776908113], - [131.73509118054946, -12.302452894747159], - [132.575298293183096, -12.114040622611013], - [132.557211541881031, -11.603012383676683], - [131.824698114143644, -11.273781833545097], - [132.357223748911395, -11.128519382372641], - [133.019560581596409, -11.376411228076844], - [133.550845981989028, -11.786515394745134], - [134.393068475481982, -12.042365411022173], - [134.678632440327021, -11.9411829565947], - [135.298491245667975, -12.248606052299051], - [135.882693312727611, -11.962266940969796], - [136.258380975489445, -12.049341729381606], - [136.492475213771627, -11.857208754120389], - [136.951620314684988, -12.351958916882735], - [136.685124953355739, -12.887223402562054], - [136.305406528875096, -13.291229750219895], - [135.961758254134111, -13.324509372615889], - [136.077616815332533, -13.72427825282578], - [135.783836297753226, -14.223989353088211], - [135.4286641786112, -14.715432224183896], - [135.500184360903177, -14.997740573794427], - [136.295174595281367, -15.550264987859121], - [137.065360142159477, -15.870762220933353], - [137.580470819244795, -16.215082289294084], - [138.303217401278971, -16.807604261952658], - [138.58516401586337, -16.806622409739173], - [139.108542922115475, -17.062679131745366], - [139.260574985918197, -17.371600843986183], - [140.215245396078274, -17.710804945550063], - [140.875463495039241, -17.36906869880394], - [141.071110467696258, -16.832047214426719], - [141.274095493738798, -16.388870131091604], - [141.398222284103781, -15.840531508042584], - [141.702183058844611, -15.044921156476928], - [141.563380161708665, -14.561333103089506], - [141.635520461188094, -14.270394789286284], - [141.519868605718955, -13.698078301653805], - [141.650920038011009, -12.944687595270562], - [141.842691278246207, -12.741547539931187], - [141.68699018775078, -12.407614434461134], - [141.928629185147543, -11.877465915578778], - [142.118488397387978, -11.328042087451619], - [142.14370649634634, -11.04273650476814], - [142.51526004452495, -10.668185723516642], - [142.797310011974048, -11.157354831591515], - [142.866763136974271, -11.784706719614929], - [143.11594689348567, -11.90562957117791], - [143.158631626558758, -12.325655612846187], - [143.522123651299864, -12.834358412327429], - [143.597157830987669, -13.400422051652594], - [143.561811151299935, -13.763655694232209] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Austria", "name": "Austria", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.979666782304033, 48.123497015976298], - [16.903754103267257, 47.714865627628321], - [16.340584344150411, 47.712901923201215], - [16.534267612380372, 47.496170966169103], - [16.202298211337361, 46.852385972676949], - [16.011663852612653, 46.683610744811688], - [15.137091912504982, 46.658702704447016], - [14.632471551174827, 46.431817328469535], - [13.806475457421524, 46.509306138691201], - [12.376485223040813, 46.767559109069843], - [12.153088006243051, 47.115393174826437], - [11.164827915093268, 46.941579494812721], - [11.048555942436533, 46.751358547546324], - [10.442701450246627, 46.893546250997424], - [9.932448357796657, 46.920728054382948], - [9.479969516649019, 47.102809963563367], - [9.632931756232974, 47.347601223329974], - [9.594226108446346, 47.525058091820256], - [9.896068149463188, 47.58019684507569], - [10.402083774465209, 47.302487697939156], - [10.544504021861625, 47.566399237653762], - [11.426414015354736, 47.523766181012967], - [12.141357456112784, 47.703083401065761], - [12.620759718484491, 47.672387600284395], - [12.932626987365945, 47.467645575543983], - [13.025851271220487, 47.637583523135824], - [12.884102817443901, 48.289145819687903], - [13.243357374736998, 48.41611481382904], - [13.595945672264433, 48.877171942737135], - [14.33889773932472, 48.555305284207193], - [14.901447381254055, 48.964401760445817], - [15.253415561593979, 49.039074205107575], - [16.029647251050218, 48.733899034207916], - [16.49928266771877, 48.785808010445095], - [16.960288120194573, 48.596982326850593], - [16.879982944412998, 48.470013332709463], - [16.979666782304033, 48.123497015976298] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Azerbaijan", "name": "Azerbaijan", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [45.001987339056789, 39.740003567049591], - [45.298144972521435, 39.471751207022422], - [45.739978468616997, 39.473999131827149], - [45.735379266143092, 39.319719143219785], - [46.143623081248812, 38.74120148371221], - [45.457721795438729, 38.874139105783108], - [44.952688022650264, 39.33576467544642], - [44.79398969908199, 39.713002631177027], - [45.001987339056789, 39.740003567049591] - ] - ], - [ - [ - [47.373315464066216, 41.219732367511249], - [47.81566572448471, 41.151416124021338], - [47.987283156126033, 41.405819200194223], - [48.584352654826283, 41.808869533854669], - [49.110263706260653, 41.282286688800518], - [49.618914829309588, 40.572924302729966], - [50.084829542853093, 40.526157131505776], - [50.392821079312704, 40.256561184239096], - [49.569202101444795, 40.176100979160701], - [49.395259230350419, 39.39948171646224], - [49.2232283872507, 39.04921885838791], - [48.856532423707584, 38.815486355131775], - [48.883249139202533, 38.320245266262638], - [48.634375441284831, 38.270377509100925], - [48.010744256386502, 38.794014797514528], - [48.355529412637928, 39.288764960276886], - [48.060095249225256, 39.582235419262439], - [47.685079380083117, 39.508363959301185], - [46.505719842317966, 38.770605373686251], - [46.483498976432443, 39.464154771475528], - [46.034534132680697, 39.628020738273044], - [45.610012241402913, 39.899993801425175], - [45.891907179555133, 40.21847565363997], - [45.359174839058156, 40.561503811193482], - [45.560351189970469, 40.812289537105947], - [45.179495883979392, 40.98535390885143], - [44.972480096218156, 41.248128567055623], - [45.217426385281634, 41.411451931314041], - [45.962600538930438, 41.123872585609789], - [46.501637404166978, 41.064444688474104], - [46.637908156120567, 41.181672675128219], - [46.145431756378983, 41.72280243587263], - [46.404950799348818, 41.860675157227341], - [46.686070591016652, 41.827137152669899], - [47.373315464066216, 41.219732367511249] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Burundi", "name": "Burundi", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [29.339997592900342, -4.499983412294092], - [29.276383904749046, -3.293907159034063], - [29.02492638521678, -2.839257907730157], - [29.632176141078585, -2.917857761246096], - [29.938359002407935, -2.348486830254238], - [30.469696079232978, -2.413857517103458], - [30.527677036264457, -2.807631931167534], - [30.743012729624692, -3.034284763199686], - [30.752262811004943, -3.359329522315569], - [30.505559523243559, -3.568567396665364], - [30.116332635221166, -4.090137627787242], - [29.753512404099919, -4.45238941815328], - [29.339997592900342, -4.499983412294092] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Belgium", "name": "Belgium", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [3.314971144228536, 51.345780951536071], - [4.047071160507527, 51.267258612668556], - [4.973991326526913, 51.475023708698124], - [5.60697594567, 51.037298488969768], - [6.156658155958779, 50.803721015010574], - [6.043073357781109, 50.128051662794221], - [5.782417433300905, 50.090327867221205], - [5.674051954784828, 49.52948354755749], - [4.799221632515809, 49.985373033236371], - [4.286022983425084, 49.90749664977254], - [3.588184441755685, 50.378992418003563], - [3.123251580425801, 50.780363267614561], - [2.658422071960274, 50.796848049515731], - [2.513573032246142, 51.148506171261815], - [3.314971144228536, 51.345780951536071] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Benin", "name": "Benin", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [2.691701694356254, 6.258817246928628], - [1.865240512712318, 6.14215770102973], - [1.618950636409238, 6.832038072126236], - [1.664477573258381, 9.128590399609378], - [1.46304284018467, 9.334624335157086], - [1.425060662450136, 9.825395412632998], - [1.077795037448737, 10.175606594275022], - [0.772335646171484, 10.470808213742357], - [0.899563022474069, 10.997339382364258], - [1.243469679376488, 11.11051076908346], - [1.447178175471066, 11.547719224488857], - [1.93598554851988, 11.641150214072551], - [2.154473504249921, 11.940150051313337], - [2.49016360841793, 12.233052069543671], - [2.84864301922667, 12.235635891158266], - [3.611180454125558, 11.660167141155966], - [3.572216424177469, 11.327939357951516], - [3.797112257511713, 10.734745591673104], - [3.600070021182801, 10.332186184119406], - [3.705438266625918, 10.063210354040207], - [3.220351596702101, 9.4441525333997], - [2.912308383810255, 9.13760793704432], - [2.723792758809509, 8.506845404489708], - [2.74906253420022, 7.870734361192886], - [2.691701694356254, 6.258817246928628] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Burkina Faso", "name": "Burkina Faso", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-2.827496303712706, 9.642460842319775], - [-3.511898972986272, 9.900326239456216], - [-3.980449184576684, 9.862344061721698], - [-4.330246954760383, 9.610834865757139], - [-4.779883592131966, 9.821984768101741], - [-4.954653286143098, 10.152713934769732], - [-5.404341599946973, 10.370736802609144], - [-5.470564947929004, 10.951269842976044], - [-5.197842576508648, 11.375145778850136], - [-5.220941941743119, 11.713858954307224], - [-4.427166103523802, 12.542645575404292], - [-4.280405035814879, 13.228443508349738], - [-4.006390753587225, 13.472485459848112], - [-3.52280270019986, 13.337661647998612], - [-3.103706834312759, 13.54126679122859], - [-2.967694464520576, 13.798150336151506], - [-2.191824510090384, 14.246417548067352], - [-2.001035122068771, 14.559008287000887], - [-1.066363491205663, 14.973815009007764], - [-0.515854458000348, 15.116157741755725], - [-0.26625729003058, 14.924308986872147], - [0.374892205414682, 14.928908189346128], - [0.295646396495101, 14.444234930880651], - [0.429927605805517, 13.988733018443922], - [0.993045688490071, 13.335749620003821], - [1.024103224297477, 12.851825669806573], - [2.177107781593775, 12.625017808477532], - [2.154473504249921, 11.940150051313337], - [1.93598554851988, 11.641150214072551], - [1.447178175471066, 11.547719224488857], - [1.243469679376488, 11.11051076908346], - [0.899563022474069, 10.997339382364258], - [0.023802524423701, 11.018681748900802], - [-0.438701544588582, 11.09834096927872], - [-0.761575893548183, 10.936929633015053], - [-1.203357713211431, 11.009819240762736], - [-2.94040930827046, 10.962690334512557], - [-2.963896246747111, 10.395334784380081], - [-2.827496303712706, 9.642460842319775] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Bangladesh", "name": "Bangladesh", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [92.672720981825549, 22.041238918541247], - [92.652257114637976, 21.324047552978481], - [92.30323449093865, 21.475485337809815], - [92.368553501355606, 20.670883287025344], - [92.082886183646124, 21.192195135985767], - [92.025215285208361, 21.701569729086764], - [91.834890985077408, 22.182935695885561], - [91.417087029997646, 22.765019029221218], - [90.496006300827247, 22.805016587815125], - [90.586956821660948, 22.392793687422863], - [90.272970819055544, 21.836367702720107], - [89.847467075564268, 22.039146023033421], - [89.70204959509492, 21.857115790285299], - [89.41886274613546, 21.966178900637296], - [89.031961297566198, 22.055708319582973], - [88.876311883503064, 22.879146429937826], - [88.529769728553759, 23.631141872649163], - [88.699940220090895, 24.233714911388557], - [88.084422235062405, 24.501657212821918], - [88.30637251175601, 24.866079413344199], - [88.931553989623069, 25.238692328384769], - [88.209789259802477, 25.768065700782707], - [88.56304935094974, 26.446525580342716], - [89.355094028687276, 26.014407253518065], - [89.832480910199592, 25.965082098895476], - [89.920692580121838, 25.269749864192171], - [90.872210727912105, 25.13260061288954], - [91.799595981822065, 25.14743174895731], - [92.376201613334786, 24.976692816664961], - [91.915092807994398, 24.130413723237108], - [91.467729933643668, 24.072639471934789], - [91.158963250699713, 23.503526923104381], - [91.706475050832083, 22.985263983649183], - [91.869927606171302, 23.62434642180278], - [92.146034783906799, 23.62749868417259], - [92.672720981825549, 22.041238918541247] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Bulgaria", "name": "Bulgaria", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.657149692482985, 44.234923000661276], - [22.94483239105184, 43.823785305347123], - [23.332302280376322, 43.897010809904707], - [24.100679152124169, 43.741051337247846], - [25.569271681426923, 43.688444729174712], - [26.065158725699739, 43.943493760751259], - [27.242399529740904, 44.175986029632398], - [27.970107049275068, 43.812468166675202], - [28.55808149589199, 43.707461656258118], - [28.039095086384712, 43.293171698574177], - [27.673897739378042, 42.577892361006214], - [27.996720411905383, 42.007358710287775], - [27.135739373490473, 42.141484890301335], - [26.117041863720793, 41.826904608724554], - [26.106138136507205, 41.328898830727766], - [25.197201368925441, 41.234485988930523], - [24.492644891058031, 41.583896185872028], - [23.692073601992345, 41.309080918943842], - [22.952377150166445, 41.337993882811141], - [22.881373732197424, 41.999297186850242], - [22.380525750424585, 42.320259507815081], - [22.545011834409614, 42.461362006188025], - [22.436594679461273, 42.580321153323929], - [22.604801466571324, 42.898518785161137], - [22.986018507588479, 43.211161200526959], - [22.500156691180276, 43.642814439460977], - [22.410446404721593, 44.008063462899948], - [22.657149692482985, 44.234923000661276] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "The Bahamas", "name": "Bahamas", "continent": "North America" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-77.53466, 23.75975], - [-77.78, 23.71], - [-78.03405, 24.28615], - [-78.40848, 24.57564], - [-78.19087, 25.2103], - [-77.89, 25.17], - [-77.54, 24.34], - [-77.53466, 23.75975] - ] - ], - [ - [ - [-77.82, 26.58], - [-78.91, 26.42], - [-78.98, 26.79], - [-78.51, 26.87], - [-77.85, 26.84], - [-77.82, 26.58] - ] - ], - [ - [ - [-77.0, 26.59], - [-77.17255, 25.87918], - [-77.35641, 26.00735], - [-77.34, 26.53], - [-77.78802, 26.92516], - [-77.79, 27.04], - [-77.0, 26.59] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Bosnia and Herzegovina", - "name": "Bosnia and Herz.", - "continent": "Europe" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [19.005486281010118, 44.860233669609144], - [19.36803, 44.863], - [19.11761, 44.42307], - [19.59976, 44.03847], - [19.454, 43.568100000000115], - [19.21852, 43.52384], - [19.03165, 43.43253], - [18.70648, 43.20011], - [18.56, 42.65], - [17.674921502358981, 43.028562527023603], - [17.297373488034449, 43.446340643887353], - [16.916156447017325, 43.667722479825663], - [16.456442905348862, 44.041239732431265], - [16.239660271884528, 44.351143296885695], - [15.750026075918978, 44.81871165626255], - [15.959367303133373, 45.233776760430935], - [16.318156772535868, 45.004126695325901], - [16.534939406000202, 45.211607570977705], - [17.00214603035101, 45.233776760430935], - [17.861783481526398, 45.067740383477137], - [18.553214145591646, 45.08158966733145], - [19.005486281010118, 44.860233669609144] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Belarus", "name": "Belarus", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [23.484127638449841, 53.912497667041123], - [24.45068362803703, 53.905702216194747], - [25.536353794056989, 54.282423407602515], - [25.768432651479792, 54.846962592175082], - [26.588279249790386, 55.167175604871659], - [26.494331495883749, 55.61510691997762], - [27.102459751094525, 55.783313707087672], - [28.17670942557799, 56.169129950578807], - [29.2295133806603, 55.918344224666356], - [29.371571893030669, 55.67009064393617], - [29.896294386522353, 55.789463202530406], - [30.87390913262, 55.550976467503396], - [30.971835971813132, 55.081547756564028], - [30.75753380709871, 54.811770941784303], - [31.384472283663733, 54.157056382862422], - [31.791424187962232, 53.974638576872117], - [31.731272820774503, 53.794029446012011], - [32.405598585751157, 53.618045355842028], - [32.693643019346034, 53.351420803432106], - [32.304519484188226, 53.132726141972903], - [31.497643670382924, 53.167426866256889], - [31.30520063652801, 53.073995876673195], - [31.540018344862254, 52.742052313846344], - [31.78599816257158, 52.10167796488544], - [30.927549269338975, 52.042353420614383], - [30.619454380014837, 51.822806098022362], - [30.55511722181145, 51.319503485715643], - [30.157363722460889, 51.416138414101454], - [29.254938185347921, 51.368234361366881], - [28.992835320763522, 51.602044379271462], - [28.617612745892242, 51.427713934934836], - [28.241615024536564, 51.572227077839059], - [27.454066196408426, 51.59230337178446], - [26.337958611768549, 51.832288723347915], - [25.327787713327005, 51.910656032918538], - [24.553106316839511, 51.888461005249177], - [24.005077752384206, 51.617443956094448], - [23.52707075368437, 51.578454087930233], - [23.508002150168689, 52.023646552124717], - [23.19949384938618, 52.486977444053664], - [23.799198846133375, 52.691099351606553], - [23.804934930117774, 53.08973135030606], - [23.527535841574995, 53.47012156840654], - [23.484127638449841, 53.912497667041123] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Belize", "name": "Belize", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-89.143080410503302, 17.808318996649316], - [-89.150909389995519, 17.955467637600414], - [-89.029857347351808, 18.001511338772485], - [-88.848343878926585, 17.883198147040229], - [-88.490122850279334, 18.486830552641603], - [-88.300031094093669, 18.499982204659897], - [-88.296336229184803, 18.353272813383263], - [-88.106812913754368, 18.348673610909284], - [-88.123478563168476, 18.076674709541003], - [-88.285354987322776, 17.644142971258031], - [-88.197866787452625, 17.489475409408453], - [-88.302640753924422, 17.13169363043566], - [-88.239517991879893, 17.036066392479551], - [-88.355428229510551, 16.530774237529624], - [-88.551824510435821, 16.265467434143144], - [-88.732433641295927, 16.233634751851351], - [-88.930612759135244, 15.887273464415072], - [-89.229121670269265, 15.886937567605166], - [-89.15080603713092, 17.015576687075832], - [-89.143080410503302, 17.808318996649316] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Bolivia", "name": "Bolivia", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-62.84646847192154, -22.034985446869442], - [-63.986838141522462, -21.993644301035946], - [-64.377021043542243, -22.798091322523533], - [-64.964892137294598, -22.07586150481232], - [-66.273339402924833, -21.832310479420713], - [-67.10667355006359, -22.735924574476414], - [-67.82817989772272, -22.872918796482171], - [-68.219913092711266, -21.494346612231858], - [-68.757167121033731, -20.372657972904459], - [-68.442225104430904, -19.405068454671426], - [-68.966818406841853, -18.9816834449041], - [-69.100246955019472, -18.260125420812674], - [-69.590423753524036, -17.580011895419329], - [-68.959635382753291, -16.500697930571267], - [-69.389764166934697, -15.66012908291165], - [-69.160346645774936, -15.323973890853015], - [-69.339534674747, -14.953195489158828], - [-68.94888668483658, -14.45363941819328], - [-68.929223802349526, -13.602683607643007], - [-68.880079515239956, -12.89972909917665], - [-68.665079718689611, -12.561300144097171], - [-69.52967810736493, -10.951734307502193], - [-68.786157599549469, -11.036380303596276], - [-68.27125362819325, -11.014521172736817], - [-68.048192308205373, -10.712059014532484], - [-67.173801235610725, -10.30681243249961], - [-66.646908331962791, -9.931331475466861], - [-65.33843522811641, -9.76198780684639], - [-65.444837002205375, -10.51145110437543], - [-65.321898769783004, -10.895872084194675], - [-65.402281460213018, -11.566270440317151], - [-64.31635291203159, -12.461978041232191], - [-63.196498786050562, -12.627032565972433], - [-62.803060268796372, -13.000653171442682], - [-62.127080857986371, -13.19878061284972], - [-61.713204311760769, -13.489202162330049], - [-61.084121263255646, -13.479383640194595], - [-60.503304002511122, -13.775954685117656], - [-60.459198167550014, -14.354007256734551], - [-60.264326341377355, -14.645979099183638], - [-60.251148851142922, -15.077218926659318], - [-60.542965664295131, -15.093910414289592], - [-60.158389655179022, -16.258283786690082], - [-58.241219855366673, -16.299573256091289], - [-58.388058437724027, -16.877109063385273], - [-58.280804002502244, -17.271710300366014], - [-57.734558274960989, -17.552468357007765], - [-57.498371141170971, -18.174187513911289], - [-57.676008877174297, -18.961839694904025], - [-57.949997321185819, -19.400004164306814], - [-57.853801642474494, -19.969995212486186], - [-58.166392381408038, -20.176700941653674], - [-58.183471442280492, -19.868399346600359], - [-59.11504248720609, -19.356906019775398], - [-60.043564622626477, -19.342746677327419], - [-61.786326463453761, -19.633736667562957], - [-62.265961269770784, -20.513734633061272], - [-62.291179368729203, -21.051634616787389], - [-62.685057135657871, -22.24902922942238], - [-62.84646847192154, -22.034985446869442] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Brazil", "name": "Brazil", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.625133429582945, -30.216294854454258], - [-56.290899624239067, -28.852760512000884], - [-55.162286342984558, -27.881915378533456], - [-54.49072526713551, -27.474756768505785], - [-53.648735317587885, -26.923472588816086], - [-53.628348965048737, -26.124865004177465], - [-54.130049607954376, -25.547639255477247], - [-54.625290696823562, -25.739255466415507], - [-54.428946092330577, -25.162184747012162], - [-54.293476325077435, -24.570799655863958], - [-54.292959560754511, -24.021014092710722], - [-54.652834235235119, -23.839578138933955], - [-55.027901780809543, -24.001273695575225], - [-55.400747239795407, -23.956935316668797], - [-55.517639329639621, -23.57199757252663], - [-55.61068274598113, -22.655619398694839], - [-55.797958136606894, -22.356929620047815], - [-56.473317430229379, -22.086300144135279], - [-56.881509568902885, -22.282153822521476], - [-57.937155727761287, -22.090175876557169], - [-57.870673997617786, -20.732687676681948], - [-58.166392381408038, -20.176700941653674], - [-57.853801642474494, -19.969995212486186], - [-57.949997321185819, -19.400004164306814], - [-57.676008877174297, -18.961839694904025], - [-57.498371141170971, -18.174187513911289], - [-57.734558274960989, -17.552468357007765], - [-58.280804002502244, -17.271710300366014], - [-58.388058437724027, -16.877109063385273], - [-58.241219855366673, -16.299573256091289], - [-60.158389655179022, -16.258283786690082], - [-60.542965664295131, -15.093910414289592], - [-60.251148851142922, -15.077218926659318], - [-60.264326341377355, -14.645979099183638], - [-60.459198167550014, -14.354007256734551], - [-60.503304002511122, -13.775954685117656], - [-61.084121263255646, -13.479383640194595], - [-61.713204311760769, -13.489202162330049], - [-62.127080857986371, -13.19878061284972], - [-62.803060268796372, -13.000653171442682], - [-63.196498786050562, -12.627032565972433], - [-64.31635291203159, -12.461978041232191], - [-65.402281460213018, -11.566270440317151], - [-65.321898769783004, -10.895872084194675], - [-65.444837002205375, -10.51145110437543], - [-65.33843522811641, -9.76198780684639], - [-66.646908331962791, -9.931331475466861], - [-67.173801235610725, -10.30681243249961], - [-68.048192308205373, -10.712059014532484], - [-68.27125362819325, -11.014521172736817], - [-68.786157599549469, -11.036380303596276], - [-69.52967810736493, -10.951734307502193], - [-70.093752204046879, -11.123971856331011], - [-70.548685675728393, -11.009146823778462], - [-70.481893886991159, -9.490118096558842], - [-71.302412278921523, -10.079436130415372], - [-72.184890713169821, -10.05359791426943], - [-72.563033006465631, -9.520193780152715], - [-73.226713426390148, -9.462212823121233], - [-73.015382656532537, -9.03283334720806], - [-73.571059332967053, -8.424446709835832], - [-73.987235480429646, -7.523829847853063], - [-73.723401455363486, -7.340998630404412], - [-73.724486660441627, -6.918595472850638], - [-73.120027431923575, -6.629930922068238], - [-73.219711269814596, -6.089188734566076], - [-72.964507208941185, -5.741251315944892], - [-72.891927659787243, -5.274561455916979], - [-71.748405727816532, -4.59398284263301], - [-70.928843349883564, -4.401591485210367], - [-70.79476884630229, -4.251264743673302], - [-69.893635219996611, -4.298186944194326], - [-69.444101935489599, -1.556287123219817], - [-69.420485805932216, -1.122618503426409], - [-69.577065395776586, -0.549991957200163], - [-70.02065589057004, -0.185156345219539], - [-70.015565761989293, 0.541414292804205], - [-69.452396002872447, 0.706158758950693], - [-69.252434048119042, 0.602650865070075], - [-69.218637661400166, 0.985676581217433], - [-69.804596727157701, 1.089081122233466], - [-69.816973232691609, 1.714805202639624], - [-67.868565029558823, 1.692455145673392], - [-67.537810024674684, 2.037162787276329], - [-67.25999752467358, 1.719998684084956], - [-67.065048183852483, 1.130112209473225], - [-66.876325853122566, 1.253360500489336], - [-66.325765143484944, 0.724452215982012], - [-65.548267381437554, 0.78925446207603], - [-65.354713304288353, 1.0952822941085], - [-64.611011928959854, 1.328730576987041], - [-64.199305792890499, 1.49285492594602], - [-64.083085496666072, 1.91636912679408], - [-63.368788011311644, 2.200899562993129], - [-63.422867397705105, 2.411067613124174], - [-64.269999152265783, 2.497005520025566], - [-64.408827887617903, 3.126786200366623], - [-64.368494432214092, 3.797210394705246], - [-64.816064012294007, 4.056445217297422], - [-64.628659430587533, 4.14848094320925], - [-63.888342861574145, 4.020530096854571], - [-63.093197597899092, 3.770571193858784], - [-62.804533047116692, 4.006965033377951], - [-62.085429653559125, 4.162123521334308], - [-60.966893276601517, 4.536467596856638], - [-60.601179165271922, 4.918098049332129], - [-60.733574184803707, 5.2002772078619], - [-60.213683437731319, 5.2444863956876], - [-59.980958624904865, 5.014061184098138], - [-60.111002366767373, 4.574966538914082], - [-59.767405768458701, 4.423502915866606], - [-59.538039923731219, 3.958802598481937], - [-59.815413174057852, 3.606498521332085], - [-59.974524909084543, 2.755232652188055], - [-59.718545701726732, 2.249630438644359], - [-59.646043667221242, 1.786893825686789], - [-59.030861579002639, 1.317697658692722], - [-58.540012986878288, 1.26808828369252], - [-58.429477098205957, 1.46394196207872], - [-58.113449876525003, 1.507195135907025], - [-57.660971035377358, 1.682584947105638], - [-57.33582292339689, 1.948537705895759], - [-56.782704230360814, 1.863710842288653], - [-56.53938574891454, 1.89952260986692], - [-55.995698004771739, 1.817667141116601], - [-55.905600145070871, 2.021995754398659], - [-56.073341844290283, 2.220794989425499], - [-55.973322109589361, 2.510363877773016], - [-55.569755011605984, 2.42150625244713], - [-55.097587449755125, 2.523748073736612], - [-54.524754197799709, 2.311848863123785], - [-54.088062506717243, 2.105556545414629], - [-53.778520677288903, 2.376702785650081], - [-53.554839240113537, 2.33489655192595], - [-53.4184651352953, 2.05338918701598], - [-52.939657151894949, 2.124857692875636], - [-52.556424730018414, 2.504705308437053], - [-52.249337531123942, 3.241094468596244], - [-51.657797410678882, 4.156232408053028], - [-51.317146369010842, 4.203490505383953], - [-51.069771287629649, 3.65039765056403], - [-50.508875291533641, 1.901563828942456], - [-49.974075893745045, 1.736483465986069], - [-49.947100796088705, 1.046189683431223], - [-50.699251268096901, 0.222984117021681], - [-50.388210822132123, -0.078444512536819], - [-48.620566779156313, -0.235489190271821], - [-48.584496629416577, -1.237805271005001], - [-47.824956427590621, -0.5816179337628], - [-46.566583624851219, -0.941027520352776], - [-44.9057030909904, -1.551739597178134], - [-44.417619187993658, -2.137750339367975], - [-44.581588507655773, -2.691308282078523], - [-43.418791266440188, -2.383110039889793], - [-41.47265682632824, -2.912018324397116], - [-39.97866533055403, -2.87305429444904], - [-38.50038347019656, -3.700652357603394], - [-37.223252122535193, -4.820945733258915], - [-36.45293738457638, -5.109403578312153], - [-35.597795783010454, -5.149504489770648], - [-35.235388963347553, -5.464937432480245], - [-34.896029832486825, -6.738193047719709], - [-34.729993455533027, -7.343220716992965], - [-35.128212042774216, -8.996401462442284], - [-35.636966518687707, -9.649281508017811], - [-37.046518724096991, -11.040721123908799], - [-37.683611619607355, -12.17119475672582], - [-38.423876512188436, -13.038118584854285], - [-38.673887091616507, -13.057652276260615], - [-38.953275722802537, -13.79336964280002], - [-38.882298143049645, -15.667053724838764], - [-39.161092495264306, -17.208406670808468], - [-39.267339240056394, -17.867746270420479], - [-39.583521491034219, -18.262295830968934], - [-39.76082333022763, -19.599113457927402], - [-40.774740770010332, -20.90451181405242], - [-40.944756232250597, -21.937316989837807], - [-41.75416419123821, -22.370675551037454], - [-41.988284267736546, -22.970070489190888], - [-43.074703742024738, -22.967693373305462], - [-44.647811855637798, -23.351959323827838], - [-45.35213578955991, -23.796841729428579], - [-46.472093268405523, -24.088968601174539], - [-47.648972337420645, -24.885199069927715], - [-48.495458136577689, -25.877024834905647], - [-48.641004808127725, -26.623697605090928], - [-48.474735887228647, -27.175911960561887], - [-48.661520351747612, -28.186134535435713], - [-48.888457404157393, -28.674115085567877], - [-49.587329474472668, -29.224469089476333], - [-50.696874152211478, -30.984465020472953], - [-51.576226162306149, -31.777698256153204], - [-52.256081305538032, -32.245369968394662], - [-52.71209998229768, -33.196578057591175], - [-53.373661668498229, -33.768377780900757], - [-53.650543992718084, -33.202004082981823], - [-53.209588995971529, -32.727666110974717], - [-53.787951626182185, -32.047242526987617], - [-54.572451544805105, -31.494511407193745], - [-55.601510179249331, -30.853878676071385], - [-55.97324459494093, -30.883075860316296], - [-56.976025763564721, -30.109686374636119], - [-57.625133429582945, -30.216294854454258] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Brunei", "name": "Brunei", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [114.204016554828343, 4.525873928236805], - [114.599961379048707, 4.900011298029965], - [115.450710483869798, 5.447729803891532], - [115.405700311343566, 4.955227565933837], - [115.347460972150643, 4.316636053887009], - [114.869557326315373, 4.348313706881924], - [114.659595981913498, 4.007636826997753], - [114.204016554828343, 4.525873928236805] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Bhutan", "name": "Bhutan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [91.69665652869665, 27.771741848251661], - [92.10371178585973, 27.4526140406332], - [92.033483514375078, 26.838310451763554], - [91.217512648486405, 26.808648179628019], - [90.37327477413406, 26.875724188742872], - [89.744527622438838, 26.71940298105995], - [88.835642531289366, 27.098966376243755], - [88.814248488320544, 27.299315904239361], - [89.475810174521101, 28.04275889740639], - [90.015828891971154, 28.296438503527209], - [90.730513950567769, 28.064953925075748], - [91.258853794319904, 28.040614325466287], - [91.69665652869665, 27.771741848251661] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Botswana", "name": "Botswana", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [25.649163445750155, -18.536025892818987], - [25.850391473094724, -18.714412937090533], - [26.164790887158478, -19.293085625894935], - [27.296504754350501, -20.391519870690995], - [27.724747348753247, -20.499058526290387], - [27.727227817503252, -20.851801853114711], - [28.02137007010861, -21.485975030200578], - [28.794656202924209, -21.639454034107445], - [29.432188348109033, -22.091312758067584], - [28.017235955525244, -22.827753594659072], - [27.119409620886238, -23.574323011979772], - [26.78640669119741, -24.240690606383478], - [26.485753208123292, -24.616326592713097], - [25.941652052522151, -24.696373386333214], - [25.765848829865206, -25.174845472923671], - [25.664666375437712, -25.486816094669706], - [25.025170525825782, -25.719670098576891], - [24.211266717228792, -25.670215752873567], - [23.733569777122703, -25.39012948985161], - [23.312096795350179, -25.268689873965712], - [22.824271274514896, -25.500458672794768], - [22.579531691180584, -25.979447523708142], - [22.105968865657864, -26.28025603607913], - [21.60589603036939, -26.726533705351748], - [20.889609002371731, -26.828542982695907], - [20.666470167735437, -26.477453301704916], - [20.758609246511831, -25.868136488551446], - [20.165725538827186, -24.917961928000768], - [19.895767856534427, -24.767790215760588], - [19.895457797940672, -21.849156996347865], - [20.881134067475866, -21.814327080983144], - [20.910641310314531, -18.252218926672018], - [21.655040317478971, -18.219146010005222], - [23.196858351339298, -17.869038181227783], - [23.579005568137713, -18.281261081620055], - [24.217364536239209, -17.889347019118485], - [24.520705193792534, -17.887124932529932], - [25.084443393664564, -17.661815687737366], - [25.264225701608005, -17.736539808831413], - [25.649163445750155, -18.536025892818987] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Central African Republic", - "name": "Central African Rep.", - "continent": "Africa" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [15.279460483469107, 7.421924546737968], - [16.106231723706767, 7.497087917506504], - [16.290561557691884, 7.754307359239304], - [16.456184523187343, 7.734773667832966], - [16.705988396886251, 7.508327541529978], - [17.964929640380884, 7.890914008002865], - [18.389554884523218, 8.281303615751822], - [18.911021762780504, 8.630894680206351], - [18.81200971850927, 8.982914536978596], - [19.094008009526018, 9.074846910025837], - [20.059685499764267, 9.01270600019485], - [21.00086836109616, 9.475985215691507], - [21.723821648859452, 10.567055568885973], - [22.231129184668784, 10.971888739460507], - [22.864165480244218, 11.142395127807543], - [22.977543572692603, 10.714462591998538], - [23.554304233502187, 10.089255275915306], - [23.557249790142826, 9.681218166538683], - [23.394779087017181, 9.26506785729222], - [23.459012892355979, 8.954285793488891], - [23.805813429466745, 8.666318874542425], - [24.567369012152078, 8.229187933785466], - [25.114932488716786, 7.825104071479172], - [25.12413089366472, 7.500085150579436], - [25.796647983511171, 6.979315904158069], - [26.21341840994511, 6.546603298362071], - [26.465909458123232, 5.94671743410187], - [27.213409051225163, 5.550953477394557], - [27.374226108517483, 5.233944403500059], - [27.044065382604703, 5.127852688004835], - [26.402760857862535, 5.150874538590869], - [25.650455356557465, 5.256087754737123], - [25.278798455514302, 5.170408229997191], - [25.128833449003274, 4.927244777847789], - [24.805028924262409, 4.897246608902349], - [24.41053104014625, 5.108784084489129], - [23.297213982850135, 4.609693101414221], - [22.841479526468103, 4.710126247573483], - [22.704123569436284, 4.633050848810156], - [22.405123732195531, 4.02916006104732], - [21.659122755630019, 4.224341945813719], - [20.927591180106273, 4.322785549329736], - [20.290679152108932, 4.691677761245287], - [19.467783644293146, 5.031527818212779], - [18.932312452884755, 4.709506130385973], - [18.542982211997778, 4.201785183118317], - [18.453065219809925, 3.504385891123348], - [17.809900343505259, 3.560196437998569], - [17.133042433346297, 3.728196519379451], - [16.537058139724135, 3.198254706226278], - [16.01285241055535, 2.267639675298084], - [15.907380812247649, 2.557389431158612], - [15.862732374747479, 3.013537298998982], - [15.405395948964379, 3.335300604664339], - [15.036219516671249, 3.851367295747123], - [14.950953403389658, 4.21038930909492], - [14.478372430080466, 4.732605495620446], - [14.558935988023501, 5.03059764243153], - [14.459407179429345, 5.451760565610299], - [14.536560092841111, 6.22695872642069], - [14.776545444404572, 6.408498033062044], - [15.279460483469107, 7.421924546737968] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Canada", "name": "Canada", "continent": "North America" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-63.6645, 46.55001], - [-62.9393, 46.41587], - [-62.01208, 46.44314], - [-62.50391, 46.03339], - [-62.87433, 45.96818], - [-64.1428, 46.39265], - [-64.39261, 46.72747], - [-64.01486, 47.03601], - [-63.6645, 46.55001] - ] - ], - [ - [ - [-61.806305, 49.10506], - [-62.29318, 49.08717], - [-63.58926, 49.40069], - [-64.51912, 49.87304], - [-64.17322, 49.95718], - [-62.85829, 49.70641], - [-61.835585, 49.28855], - [-61.806305, 49.10506] - ] - ], - [ - [ - [-123.510001587551116, 48.51001089130343], - [-124.012890788399474, 48.370846259141402], - [-125.655012777338342, 48.825004584338494], - [-125.954994466792726, 49.179995835967638], - [-126.850004435871853, 49.530000311880421], - [-127.029993449544392, 49.814995835970073], - [-128.059336304366212, 49.994959011426594], - [-128.444584107102145, 50.53913768167611], - [-128.358413656255408, 50.770648098343678], - [-127.308581096029883, 50.552573554071948], - [-126.695000977212302, 50.40090322529538], - [-125.755006673823161, 50.295018215529367], - [-125.415001587558791, 49.950000515332604], - [-124.920768189119315, 49.47527497008339], - [-123.92250870832099, 49.062483628935794], - [-123.510001587551116, 48.51001089130343] - ] - ], - [ - [ - [-56.134035814017111, 50.687009792679298], - [-56.795881720595261, 49.812308661490945], - [-56.143105027884289, 50.15011749938283], - [-55.471492275602934, 49.935815334668447], - [-55.822401089080913, 49.587128607779093], - [-54.93514258484565, 49.313010972686833], - [-54.473775397343772, 49.556691189159167], - [-53.47654944519131, 49.24913890237405], - [-53.786013759971233, 48.516780503933617], - [-53.086133999226249, 48.687803656603528], - [-52.95864824076223, 48.157164211614472], - [-52.648098720904173, 47.53554840757549], - [-53.069158291218336, 46.655498765644936], - [-53.521456264853029, 46.618291734394823], - [-54.178935512902527, 46.807065741556997], - [-53.961868659060471, 47.625207017601909], - [-54.240482143762122, 47.752279364607617], - [-55.400773078011483, 46.88499380145312], - [-55.997480841685835, 46.919720363953289], - [-55.291219041552765, 47.389562486350982], - [-56.250798712780508, 47.632545070987383], - [-57.325229254777085, 47.572807115257987], - [-59.26601518414676, 47.603347886742498], - [-59.41949418805369, 47.89945384377485], - [-58.796586473207398, 48.251525376979473], - [-59.23162451845652, 48.523188381537793], - [-58.391804979065213, 49.125580552764163], - [-57.358689744686025, 50.718274034215845], - [-56.738650071831998, 51.287438259478527], - [-55.87097693543528, 51.632094224649187], - [-55.406974249886602, 51.588272610065722], - [-55.600218268442077, 51.317074693397913], - [-56.134035814017111, 50.687009792679298] - ] - ], - [ - [ - [-133.180004041711669, 54.169975490935308], - [-132.710007884431292, 54.040009315423518], - [-131.749989584003259, 54.120004380909208], - [-132.049480347350965, 52.984621487024519], - [-131.179042521826574, 52.18043284769827], - [-131.577829549822894, 52.182370713909236], - [-132.180428426778519, 52.639707139692391], - [-132.549992432313843, 53.100014960332132], - [-133.054611178755493, 53.411468817755363], - [-133.239664482792676, 53.851080227262386], - [-133.180004041711669, 54.169975490935308] - ] - ], - [ - [ - [-79.26582, 62.158675], - [-79.65752, 61.63308], - [-80.09956, 61.7181], - [-80.36215, 62.01649], - [-80.315395, 62.085565], - [-79.92939, 62.3856], - [-79.52002, 62.36371], - [-79.26582, 62.158675] - ] - ], - [ - [ - [-81.89825, 62.7108], - [-83.06857, 62.15922], - [-83.77462, 62.18231], - [-83.99367, 62.4528], - [-83.25048, 62.91409], - [-81.87699, 62.90458], - [-81.89825, 62.7108] - ] - ], - [ - [ - [-85.161307949549851, 65.657284654392797], - [-84.975763719405933, 65.217518215588981], - [-84.464012010419495, 65.371772365980163], - [-83.88262630891974, 65.109617824963536], - [-82.78757687043877, 64.766693020274673], - [-81.642013719392509, 64.455135809986942], - [-81.553440314444245, 63.979609280037131], - [-80.817361212878851, 64.057485663500998], - [-80.103451300766594, 63.725981350348597], - [-80.991019863595653, 63.41124603947496], - [-82.547178107416997, 63.651722317145229], - [-83.108797573565042, 64.101875718839707], - [-84.100416632813847, 63.569711819098004], - [-85.523404710618991, 63.052379055424076], - [-85.866768764982339, 63.637252916103542], - [-87.221983201836721, 63.541238104905212], - [-86.352759772471259, 64.035833238370699], - [-86.224886440765133, 64.822916978608262], - [-85.883847825854858, 65.738778388117041], - [-85.161307949549851, 65.657284654392797] - ] - ], - [ - [ - [-75.86588, 67.14886], - [-76.98687, 67.09873], - [-77.2364, 67.58809], - [-76.81166, 68.14856], - [-75.89521, 68.28721], - [-75.1145, 68.01036], - [-75.10333, 67.58202], - [-75.21597, 67.44425], - [-75.86588, 67.14886] - ] - ], - [ - [ - [-95.647681203800488, 69.107690358321761], - [-96.269521203800579, 68.757040358321731], - [-97.61740120380054, 69.060030358321782], - [-98.431801203800504, 68.950700358321768], - [-99.797401203800504, 69.400030358321786], - [-98.917401203800523, 69.710030358321788], - [-98.218261203800466, 70.143540358321744], - [-97.157401203800532, 69.860030358321794], - [-96.557401203800524, 69.680030358321758], - [-96.257401203800498, 69.490030358321761], - [-95.647681203800488, 69.107690358321761] - ] - ], - [ - [ - [-90.5471, 69.49766], - [-90.55151, 68.47499], - [-89.21515, 69.25873], - [-88.01966, 68.61508], - [-88.31749, 67.87338], - [-87.35017, 67.19872], - [-86.30607, 67.92146], - [-85.57664, 68.78456], - [-85.52197, 69.88211], - [-84.10081, 69.80539], - [-82.62258, 69.65826], - [-81.28043, 69.16202], - [-81.2202, 68.66567], - [-81.96436, 68.13253], - [-81.25928, 67.59716], - [-81.38653, 67.11078], - [-83.34456, 66.41154], - [-84.73542, 66.2573], - [-85.76943, 66.55833], - [-86.0676, 66.05625], - [-87.03143, 65.21297], - [-87.32324, 64.77563], - [-88.48296, 64.09897], - [-89.91444, 64.03273], - [-90.70398, 63.61017], - [-90.77004, 62.96021], - [-91.93342, 62.83508], - [-93.15698, 62.02469], - [-94.24153, 60.89865], - [-94.62931, 60.11021], - [-94.6846, 58.94882], - [-93.21502, 58.78212], - [-92.76462, 57.84571], - [-92.297029999999893, 57.08709], - [-90.89769, 57.28468], - [-89.03953, 56.85172], - [-88.03978, 56.47162], - [-87.32421, 55.99914], - [-86.07121, 55.72383], - [-85.01181, 55.3026], - [-83.36055, 55.24489], - [-82.27285, 55.14832], - [-82.4362, 54.28227], - [-82.12502, 53.27703], - [-81.40075, 52.15788], - [-79.91289, 51.20842], - [-79.14301, 51.53393], - [-78.60191, 52.56208], - [-79.12421, 54.14145], - [-79.82958, 54.66772], - [-78.22874, 55.13645], - [-77.0956, 55.83741], - [-76.54137, 56.53423], - [-76.62319, 57.20263], - [-77.30226, 58.05209], - [-78.51688, 58.80458], - [-77.33676, 59.85261], - [-77.77272, 60.75788], - [-78.10687, 62.31964], - [-77.41067, 62.55053], - [-75.69621, 62.2784], - [-74.6682, 62.18111], - [-73.83988, 62.4438], - [-72.90853, 62.10507], - [-71.67708, 61.52535], - [-71.37369, 61.13717], - [-69.59042, 61.06141], - [-69.62033, 60.22125], - [-69.2879, 58.95736], - [-68.37455, 58.80106], - [-67.64976, 58.21206], - [-66.20178, 58.76731], - [-65.24517, 59.87071], - [-64.58352, 60.33558], - [-63.80475, 59.4426], - [-62.50236, 58.16708], - [-61.39655, 56.96745], - [-61.79866, 56.33945], - [-60.46853, 55.77548], - [-59.56962, 55.20407], - [-57.97508, 54.94549], - [-57.3332, 54.6265], - [-56.93689, 53.78032], - [-56.15811, 53.64749], - [-55.75632, 53.27036], - [-55.68338, 52.14664], - [-56.40916, 51.7707], - [-57.12691, 51.41972], - [-58.77482, 51.0643], - [-60.03309, 50.24277], - [-61.72366, 50.08046], - [-63.86251, 50.29099], - [-65.36331, 50.2982], - [-66.39905, 50.22897], - [-67.23631, 49.51156], - [-68.51114, 49.06836], - [-69.95362, 47.74488], - [-71.10458, 46.82171], - [-70.25522, 46.98606], - [-68.65, 48.3], - [-66.55243, 49.1331], - [-65.05626, 49.23278], - [-64.17099, 48.74248], - [-65.11545, 48.07085], - [-64.79854, 46.99297], - [-64.47219, 46.23849], - [-63.17329, 45.73902], - [-61.52072, 45.88377], - [-60.51815, 47.00793], - [-60.4486, 46.28264], - [-59.80287, 45.9204], - [-61.03988, 45.26525], - [-63.25471, 44.67014], - [-64.24656, 44.26553], - [-65.36406, 43.54523], - [-66.1234, 43.61867], - [-66.16173, 44.46512], - [-64.42549, 45.29204], - [-66.02605, 45.25931], - [-67.13741, 45.13753], - [-67.79134, 45.70281], - [-67.79046, 47.06636], - [-68.23444, 47.35486], - [-68.905, 47.185], - [-69.237216, 47.447781], - [-69.99997, 46.69307], - [-70.305, 45.915], - [-70.66, 45.46], - [-71.08482, 45.30524], - [-71.405, 45.255], - [-71.50506, 45.0082], - [-73.34783, 45.00738], - [-74.867, 45.00048], - [-75.31821, 44.81645], - [-76.375, 44.09631], - [-76.5, 44.018458893758712], - [-76.820034145805565, 43.628784288093748], - [-77.737885097957687, 43.62905558936329], - [-78.720279914042365, 43.625089423184868], - [-79.171673550111862, 43.466339423184216], - [-79.01, 43.27], - [-78.92, 42.965], - [-78.939362148743683, 42.863611355148031], - [-80.247447679347928, 42.366199856122584], - [-81.277746548167144, 42.209025987306845], - [-82.439277716791608, 41.675105088867149], - [-82.690089280920162, 41.675105088867149], - [-83.029810146806909, 41.832795722005834], - [-83.141999681312555, 41.975681057292825], - [-83.12, 42.08], - [-82.9, 42.43], - [-82.43, 42.98], - [-82.137642381503881, 43.571087551439909], - [-82.337763125431053, 44.44], - [-82.550924648758169, 45.347516587905368], - [-83.592850714843067, 45.816893622412373], - [-83.469550747394621, 45.994686387712584], - [-83.616130947590563, 46.116926988299056], - [-83.890765347005726, 46.116926988299056], - [-84.091851264161463, 46.27541860613816], - [-84.14211951367335, 46.512225857115723], - [-84.3367, 46.40877], - [-84.6049, 46.4396], - [-84.543748745445853, 46.538684190449132], - [-84.779238247399888, 46.637101955749038], - [-84.876079881514855, 46.900083319682366], - [-85.652363247403414, 47.220218817730498], - [-86.461990831228249, 47.553338019392037], - [-87.439792623300207, 47.94], - [-88.378114183286698, 48.302917588893727], - [-89.272917446636654, 48.019808254582657], - [-89.6, 48.01], - [-90.83, 48.27], - [-91.64, 48.14], - [-92.61, 48.45], - [-93.63087, 48.60926], - [-94.32914, 48.67074], - [-94.64, 48.84], - [-94.81758, 49.38905], - [-95.15609, 49.38425], - [-95.159069509172014, 49.0], - [-97.228720000004799, 49.0007], - [-100.65, 49.0], - [-104.04826, 48.99986], - [-107.05, 49.0], - [-110.05, 49.0], - [-113.0, 49.0], - [-116.04818, 49.0], - [-117.03121, 49.0], - [-120.0, 49.0], - [-122.84, 49.0], - [-122.97421, 49.002537777777789], - [-124.91024, 49.98456], - [-125.62461, 50.41656], - [-127.43561, 50.83061], - [-127.99276, 51.71583], - [-127.85032, 52.32961], - [-129.12979, 52.75538], - [-129.30523, 53.56159], - [-130.51497, 54.28757], - [-130.53611, 54.80278], - [-129.98, 55.285], - [-130.00778, 55.91583], - [-131.70781, 56.55212], - [-132.73042, 57.69289], - [-133.35556, 58.41028], - [-134.27111, 58.86111], - [-134.945, 59.27056], - [-135.47583, 59.78778], - [-136.47972, 59.46389], - [-137.4525, 58.905], - [-138.34089, 59.56211], - [-139.039, 60.0], - [-140.013, 60.27682], - [-140.99778, 60.30639], - [-140.9925, 66.00003], - [-140.986, 69.712], - [-139.12052, 69.47102], - [-137.54636, 68.99002], - [-136.50358, 68.89804], - [-135.62576, 69.31512], - [-134.41464, 69.62743], - [-132.92925, 69.50534], - [-131.43136, 69.94451], - [-129.79471, 70.19369], - [-129.10773, 69.77927], - [-128.36156, 70.01286], - [-128.13817, 70.48384], - [-127.44712, 70.37721], - [-125.75632, 69.48058], - [-124.42483, 70.1584], - [-124.28968, 69.39969], - [-123.06108, 69.56372], - [-122.6835, 69.85553], - [-121.47226, 69.79778], - [-119.94288, 69.37786], - [-117.60268, 69.01128], - [-116.22643, 68.84151], - [-115.2469, 68.90591], - [-113.89794, 68.3989], - [-115.30489, 67.90261], - [-113.49727, 67.68815], - [-110.798, 67.80612], - [-109.94619, 67.98104], - [-108.8802, 67.38144], - [-107.79239, 67.88736], - [-108.81299, 68.31164], - [-108.16721, 68.65392], - [-106.95, 68.7], - [-106.15, 68.8], - [-105.34282, 68.56122], - [-104.33791, 68.018], - [-103.22115, 68.09775], - [-101.45433, 67.64689], - [-99.90195, 67.80566], - [-98.4432, 67.78165], - [-98.5586, 68.40394], - [-97.66948, 68.57864], - [-96.11991, 68.23939], - [-96.12588, 67.29338], - [-95.48943, 68.0907], - [-94.685, 68.06383], - [-94.23282, 69.06903], - [-95.30408, 69.68571], - [-96.47131, 70.08976], - [-96.39115, 71.19482], - [-95.2088, 71.92053], - [-93.88997, 71.76015], - [-92.87818, 71.31869], - [-91.51964, 70.19129], - [-92.40692, 69.69997], - [-90.5471, 69.49766] - ] - ], - [ - [ - [-114.167169999999871, 73.12145], - [-114.66634, 72.65277], - [-112.441019999999867, 72.9554], - [-111.05039, 72.4504], - [-109.920349999999857, 72.96113], - [-109.00654, 72.63335], - [-108.188349999999886, 71.65089], - [-107.68599, 72.06548], - [-108.39639, 73.08953], - [-107.51645, 73.23598], - [-106.522589999999866, 73.07601], - [-105.402459999999877, 72.67259], - [-104.77484, 71.6984], - [-104.464759999999814, 70.99297], - [-102.78537, 70.49776], - [-100.980779999999868, 70.02432], - [-101.089289999999892, 69.58447000000011], - [-102.731159999999875, 69.50402], - [-102.09329, 69.11962], - [-102.43024, 68.75282], - [-104.24, 68.91], - [-105.96, 69.180000000000135], - [-107.12254, 69.11922], - [-108.999999999999872, 68.78], - [-111.534148875200117, 68.630059156817921], - [-113.3132, 68.53554], - [-113.854959999999807, 69.007440000000102], - [-115.22, 69.28], - [-116.10794, 69.16821], - [-117.34, 69.960000000000107], - [-116.674729999999869, 70.06655], - [-115.13112, 70.2373], - [-113.72141, 70.19237], - [-112.4161, 70.36638], - [-114.35, 70.6], - [-116.48684, 70.52045], - [-117.9048, 70.540560000000127], - [-118.43238, 70.9092], - [-116.11311, 71.30918], - [-117.65568, 71.2952], - [-119.40199, 71.55859], - [-118.56267, 72.30785], - [-117.866419999999877, 72.70594], - [-115.18909, 73.314590000000109], - [-114.167169999999871, 73.12145] - ] - ], - [ - [ - [-104.5, 73.42], - [-105.38, 72.76], - [-106.94, 73.46], - [-106.6, 73.6], - [-105.26, 73.64], - [-104.5, 73.42] - ] - ], - [ - [ - [-76.34, 73.102684989953005], - [-76.251403808593736, 72.826385498046861], - [-77.314437866210895, 72.85554504394527], - [-78.391670227050795, 72.876655578613253], - [-79.486251831054645, 72.742202758789062], - [-79.775833129882827, 72.80290222167973], - [-80.876098632812514, 73.333183288574205], - [-80.833885192871051, 73.693183898925767], - [-80.353057861328111, 73.75971984863277], - [-78.064437866210923, 73.651931762695327], - [-76.34, 73.102684989953005] - ] - ], - [ - [ - [-86.562178514334107, 73.157447007938444], - [-85.774371304044521, 72.534125881633798], - [-84.850112474288224, 73.34027822538711], - [-82.315590176100969, 73.750950832810574], - [-80.600087653307611, 72.716543687624181], - [-80.748941616524391, 72.061906643350753], - [-78.770638597310764, 72.352173163534147], - [-77.824623989559569, 72.749616604291035], - [-75.605844692675717, 72.243678493937381], - [-74.228616095664975, 71.767144273557889], - [-74.099140794557698, 71.330840155717638], - [-72.242225714797641, 71.556924546994495], - [-71.200015428335192, 70.920012518997211], - [-68.78605424668487, 70.525023708774242], - [-67.914970465756923, 70.121947536897594], - [-66.969033372654152, 69.18608734809186], - [-68.805122850200533, 68.720198472764409], - [-66.449866095633851, 68.067163397892003], - [-64.862314419195215, 67.847538560651614], - [-63.424934454996745, 66.928473212340649], - [-61.851981370680569, 66.862120673277829], - [-62.163176845942296, 66.160251369889593], - [-63.91844438338417, 64.998668524832837], - [-65.148860236253611, 65.426032619886669], - [-66.72121904159853, 66.388041083432185], - [-68.015016038673949, 66.262725735124391], - [-68.141287400979152, 65.689789130304362], - [-67.089646165623392, 65.108455105236985], - [-65.732080451099748, 64.64840566675862], - [-65.320167609301265, 64.382737128346051], - [-64.669406297449669, 63.392926744227474], - [-65.013803880458894, 62.674185085695974], - [-66.275044725190455, 62.945098781986069], - [-68.783186204692711, 63.745670071051805], - [-67.369680752213029, 62.883965562584869], - [-66.328297288667201, 62.28007477482204], - [-66.165568203380147, 61.930897121825879], - [-68.877366502544632, 62.330149237712803], - [-71.023437059193824, 62.910708116295829], - [-72.23537858751898, 63.397836005295154], - [-71.886278449171286, 63.679989325608837], - [-73.37830624051837, 64.193963121183813], - [-74.834418911422588, 64.679075629323776], - [-74.818502570276706, 64.389093329517962], - [-77.709979824520019, 64.229542344816778], - [-78.55594885935416, 64.572906399180127], - [-77.897281053361908, 65.309192206474776], - [-76.018274298797181, 65.326968899183143], - [-73.95979529488271, 65.454764716240888], - [-74.293883429649625, 65.81177134872938], - [-73.94491248238262, 66.310578111426722], - [-72.65116716173938, 67.284575507263853], - [-72.926059943316076, 67.726925767682374], - [-73.311617804645721, 68.069437160912898], - [-74.8433072577768, 68.554627183701271], - [-76.869100918266739, 68.894735622830254], - [-76.228649054657339, 69.147769273547411], - [-77.28736996123709, 69.769540106883269], - [-78.168633999326588, 69.826487535268896], - [-78.95724219431672, 70.166880194775402], - [-79.492455003563649, 69.871807766388898], - [-81.305470954091732, 69.743185126414332], - [-84.944706183598456, 69.966634019644388], - [-87.060003424817864, 70.260001125765356], - [-88.681713223001495, 70.410741278760796], - [-89.513419562523012, 70.762037665480975], - [-88.467721116880753, 71.218185533321318], - [-89.888151211287465, 71.222552191849942], - [-90.205160285181989, 72.235074367960792], - [-89.43657670770493, 73.129464219852352], - [-88.408241543312784, 73.537888902471209], - [-85.826151089200906, 73.803815823045213], - [-86.562178514334107, 73.157447007938444] - ] - ], - [ - [ - [-100.35642, 73.84389], - [-99.16387, 73.63339], - [-97.38, 73.76], - [-97.12, 73.47], - [-98.05359, 72.99052], - [-96.54, 72.56], - [-96.72, 71.66], - [-98.35966, 71.27285], - [-99.32286, 71.35639], - [-100.01482, 71.73827], - [-102.5, 72.51], - [-102.48, 72.83], - [-100.43836, 72.70588], - [-101.54, 73.36], - [-100.35642, 73.84389] - ] - ], - [ - [ - [-93.196295539100205, 72.771992499473342], - [-94.26904659704725, 72.024596259235949], - [-95.409855516322637, 72.061880805134578], - [-96.033745083382428, 72.940276801231789], - [-96.01826799191096, 73.437429918095788], - [-95.495793423224001, 73.862416897264154], - [-94.503657599652328, 74.134906724739196], - [-92.420012173211745, 74.100025132942179], - [-90.509792853542578, 73.85673248971203], - [-92.003965216829869, 72.966244208458477], - [-93.196295539100205, 72.771992499473342] - ] - ], - [ - [ - [-120.46, 71.383601793087578], - [-123.09219, 70.90164], - [-123.62, 71.34], - [-125.92894873747332, 71.868688463011395], - [-125.499999999999872, 72.292260811795003], - [-124.80729, 73.02256], - [-123.94, 73.680000000000135], - [-124.917749999999899, 74.292750000000112], - [-121.53788, 74.44893], - [-120.10978, 74.24135], - [-117.55564, 74.18577], - [-116.58442, 73.89607], - [-115.51081, 73.47519], - [-116.767939999999882, 73.22292], - [-119.22, 72.52], - [-120.46, 71.82], - [-120.46, 71.383601793087578] - ] - ], - [ - [ - [-93.612755906940464, 74.979997260224437], - [-94.156908738973812, 74.59234650338685], - [-95.60868058956558, 74.666863918751758], - [-96.820932176484561, 74.927623196096576], - [-96.288587409229791, 75.377828274223333], - [-94.850819871789113, 75.647217515760886], - [-93.977746548217908, 75.296489569795952], - [-93.612755906940464, 74.979997260224437] - ] - ], - [ - [ - [-98.5, 76.72], - [-97.735585, 76.25656], - [-97.704415, 75.74344], - [-98.16, 75.0], - [-99.80874, 74.89744], - [-100.88366, 75.05736], - [-100.86292, 75.64075], - [-102.50209, 75.5638], - [-102.56552, 76.3366], - [-101.48973, 76.30537], - [-99.98349, 76.64634], - [-98.57699, 76.58859], - [-98.5, 76.72] - ] - ], - [ - [ - [-108.21141, 76.20168], - [-107.81943, 75.84552], - [-106.92893, 76.01282], - [-105.881, 75.9694], - [-105.70498, 75.47951], - [-106.31347, 75.00527], - [-109.7, 74.85], - [-112.22307, 74.41696], - [-113.74381, 74.39427], - [-113.87135, 74.72029], - [-111.79421, 75.1625], - [-116.31221, 75.04343], - [-117.7104, 75.2222], - [-116.34602, 76.19903], - [-115.40487, 76.47887], - [-112.59056, 76.14134], - [-110.81422, 75.54919], - [-109.0671, 75.47321], - [-110.49726, 76.42982], - [-109.5811, 76.79417], - [-108.54859, 76.67832], - [-108.21141, 76.20168] - ] - ], - [ - [ - [-94.684085862999439, 77.097878323058367], - [-93.573921068073105, 76.776295884906062], - [-91.605023159536586, 76.778517971494594], - [-90.741845872749209, 76.449597479956807], - [-90.969661424507976, 76.074013170059445], - [-89.822237921899244, 75.847773749485626], - [-89.187082892599776, 75.610165513807615], - [-87.838276333349611, 75.566188869927217], - [-86.379192267588664, 75.482421373182163], - [-84.789625210290595, 75.699204006646497], - [-82.753444586910049, 75.784315090631225], - [-81.12853084992436, 75.713983466282016], - [-80.05751095245914, 75.336848863415867], - [-79.833932868148324, 74.923127346487192], - [-80.457770758775823, 74.657303778777774], - [-81.948842536125511, 74.442459011524321], - [-83.2288936022114, 74.564027818490928], - [-86.097452358733292, 74.410032050261137], - [-88.150350307960196, 74.392307033984977], - [-89.764722052758358, 74.515555325001117], - [-92.422440965529418, 74.837757880340973], - [-92.768285488642789, 75.38681997344213], - [-92.889905972041717, 75.882655341282629], - [-93.893824022175977, 76.319243679500516], - [-95.962457445035795, 76.44138092722244], - [-97.121378953829463, 76.751077785947587], - [-96.745122850312342, 77.161388658345132], - [-94.684085862999439, 77.097878323058367] - ] - ], - [ - [ - [-116.198586595507322, 77.645286770326194], - [-116.335813361458349, 76.876961575010554], - [-117.106050584768766, 76.530031846819114], - [-118.040412157038119, 76.481171780087081], - [-119.899317586885687, 76.053213406061971], - [-121.499995077126471, 75.900018622532784], - [-122.85492448615895, 76.116542873835684], - [-122.854925293603188, 76.116542873835684], - [-121.157535360328239, 76.864507554828336], - [-119.103938971821023, 77.512219957174608], - [-117.570130784965954, 77.498318996888102], - [-116.198586595507322, 77.645286770326194] - ] - ], - [ - [ - [-93.840003017943971, 77.51999726023449], - [-94.295608283245244, 77.491342678528682], - [-96.169654100310055, 77.55511139597688], - [-96.436304490936109, 77.83462921824362], - [-94.422577277386353, 77.820004787904978], - [-93.720656297565867, 77.634331366680314], - [-93.840003017943971, 77.51999726023449] - ] - ], - [ - [ - [-110.186938035912945, 77.697014879050286], - [-112.051191169058455, 77.409228827616843], - [-113.534278937619035, 77.732206529441143], - [-112.724586758253835, 78.051050116681935], - [-111.264443325630822, 78.152956041161545], - [-109.854451870547067, 77.996324774884812], - [-110.186938035912945, 77.697014879050286] - ] - ], - [ - [ - [-109.663145718202557, 78.601972561345676], - [-110.88131425661885, 78.406919867659994], - [-112.542091437615142, 78.407901719873493], - [-112.525890876091566, 78.550554511215225], - [-111.500010342233367, 78.849993598130538], - [-110.96366065147599, 78.804440823065207], - [-109.663145718202557, 78.601972561345676] - ] - ], - [ - [ - [-95.830294969449312, 78.056941229963243], - [-97.309842902397975, 77.85059723582178], - [-98.124289313533964, 78.082856960757567], - [-98.55286780474664, 78.458105373845086], - [-98.631984422585504, 78.871930243638374], - [-97.337231411512604, 78.831984361476756], - [-96.754398769908761, 78.765812689926989], - [-95.559277920294562, 78.41831452098026], - [-95.830294969449312, 78.056941229963243] - ] - ], - [ - [ - [-100.060191820052111, 78.324754340315891], - [-99.670939093813601, 77.907544664207393], - [-101.303940192452984, 78.018984890444798], - [-102.949808722733025, 78.343228664860206], - [-105.176132778731514, 78.38033234324574], - [-104.210429450277147, 78.677420152491777], - [-105.419580451258511, 78.918335679836431], - [-105.492289191493128, 79.301593939929177], - [-103.529282396237917, 79.16534902619162], - [-100.8251580472688, 78.80046173777869], - [-100.060191820052111, 78.324754340315891] - ] - ], - [ - [ - [-87.02, 79.66], - [-85.81435, 79.3369], - [-87.18756, 79.0393], - [-89.03535, 78.28723], - [-90.80436, 78.21533], - [-92.87669, 78.34333], - [-93.95116, 78.75099], - [-93.93574, 79.11373], - [-93.14524, 79.3801], - [-94.974, 79.37248], - [-96.07614, 79.70502], - [-96.70972, 80.15777], - [-96.01644, 80.60233], - [-95.32345, 80.90729], - [-94.29843, 80.97727], - [-94.73542, 81.20646], - [-92.40984, 81.25739], - [-91.13289, 80.72345], - [-89.45, 80.509322033898258], - [-87.81, 80.32], - [-87.02, 79.66] - ] - ], - [ - [ - [-68.5, 83.106321516765732], - [-65.82735, 83.02801], - [-63.68, 82.9], - [-61.85, 82.6286], - [-61.89388, 82.36165], - [-64.334, 81.92775], - [-66.75342, 81.72527], - [-67.65755, 81.50141], - [-65.48031, 81.50657], - [-67.84, 80.9], - [-69.4697, 80.61683], - [-71.18, 79.8], - [-73.2428, 79.63415], - [-73.88, 79.430162204802073], - [-76.90773, 79.32309], - [-75.52924, 79.19766], - [-76.22046, 79.01907], - [-75.39345, 78.52581], - [-76.34354, 78.18296], - [-77.88851, 77.89991], - [-78.36269, 77.50859], - [-79.75951, 77.20968], - [-79.61965, 76.98336], - [-77.91089, 77.022045], - [-77.88911, 76.777955], - [-80.56125, 76.17812], - [-83.17439, 76.45403], - [-86.11184, 76.29901], - [-87.6, 76.42], - [-89.49068, 76.47239], - [-89.6161, 76.95213], - [-87.76739, 77.17833], - [-88.26, 77.9], - [-87.65, 77.970222222222205], - [-84.97634, 77.53873], - [-86.34, 78.18], - [-87.96192, 78.37181], - [-87.15198, 78.75867], - [-85.37868, 78.9969], - [-85.09495, 79.34543], - [-86.50734, 79.73624], - [-86.93179, 80.25145], - [-84.19844, 80.20836], - [-83.408695652173819, 80.1], - [-81.84823, 80.46442], - [-84.1, 80.58], - [-87.59895, 80.51627], - [-89.36663, 80.85569], - [-90.2, 81.26], - [-91.36786, 81.5531], - [-91.58702, 81.89429], - [-90.1, 82.085], - [-88.93227, 82.11751], - [-86.97024, 82.27961], - [-85.5, 82.652273458057024], - [-84.260005, 82.6], - [-83.18, 82.32], - [-82.42, 82.86], - [-81.1, 83.02], - [-79.30664, 83.13056], - [-76.25, 83.172058823529369], - [-75.71878, 83.06404], - [-72.83153, 83.23324], - [-70.665765, 83.169780758382828], - [-68.5, 83.106321516765732] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Switzerland", "name": "Switzerland", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.594226108446346, 47.525058091820256], - [9.632931756232974, 47.347601223329974], - [9.479969516649019, 47.102809963563367], - [9.932448357796657, 46.920728054382948], - [10.442701450246627, 46.893546250997424], - [10.36337812667861, 46.483571275409851], - [9.922836541390378, 46.314899400409182], - [9.182881707403054, 46.440214748716976], - [8.966305779667804, 46.036931871111186], - [8.489952426801322, 46.005150865251672], - [8.316629672894377, 46.163642483090847], - [7.755992058959832, 45.824490057959302], - [7.273850945676655, 45.776947740250769], - [6.843592970414504, 45.991146552100595], - [6.500099724970424, 46.429672756529428], - [6.022609490593537, 46.272989813820466], - [6.037388950229, 46.725778713561859], - [6.768713820023605, 47.287708238303686], - [6.736571079138058, 47.541801255882838], - [7.192202182655505, 47.449765529971003], - [7.466759067422228, 47.620581976911794], - [8.31730146651415, 47.613579820336255], - [8.522611932009765, 47.830827541691285], - [9.594226108446346, 47.525058091820256] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Chile", "name": "Chile", "continent": "South America" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-68.634010227583147, -52.636370458874353], - [-68.633349999999879, -54.8695], - [-67.56244, -54.87001], - [-66.95992, -54.89681], - [-67.291029999999878, -55.30124], - [-68.148629999999841, -55.61183], - [-68.639990810811796, -55.580017999086877], - [-69.2321, -55.49906], - [-69.95809, -55.19843], - [-71.00568, -55.05383], - [-72.2639, -54.49514], - [-73.2852, -53.957519999999874], - [-74.66253, -52.83749], - [-73.8381, -53.04743], - [-72.43418, -53.7154], - [-71.10773, -54.07433], - [-70.591779999999787, -53.61583], - [-70.26748, -52.93123], - [-69.345649999999878, -52.5183], - [-68.634010227583147, -52.636370458874353] - ] - ], - [ - [ - [-68.219913092711224, -21.49434661223183], - [-67.828179897722634, -22.872918796482178], - [-67.106673550063604, -22.735924574476392], - [-66.985233934177629, -22.986348565362825], - [-67.328442959244128, -24.025303236590908], - [-68.417652960876111, -24.518554782816874], - [-68.386001146097342, -26.185016371365229], - [-68.594799770772667, -26.50690886811126], - [-68.295541551370391, -26.899339694935787], - [-69.001234910748266, -27.521213881136127], - [-69.656130337183143, -28.459141127233686], - [-70.013550381129861, -29.367922865518544], - [-69.919008348251921, -30.336339206668306], - [-70.535068935819439, -31.365010267870279], - [-70.074399380153622, -33.09120981214803], - [-69.814776984319209, -33.273886000299839], - [-69.817309129501453, -34.193571465798279], - [-70.388049485949082, -35.169687595359441], - [-70.364769253201658, -36.005088799789931], - [-71.121880662709771, -36.65812387466233], - [-71.118625047475419, -37.576827487947192], - [-70.814664272734703, -38.552995293940732], - [-71.413516608349042, -38.916022230791107], - [-71.680761277946445, -39.808164157878061], - [-71.915734015577542, -40.832339369470716], - [-71.746803758415453, -42.051386407235988], - [-72.148898078078517, -42.254888197601375], - [-71.915423956983901, -43.408564548517404], - [-71.464056159130493, -43.787611179378324], - [-71.793622606071935, -44.207172133156099], - [-71.329800788036195, -44.407521661151677], - [-71.222778896759721, -44.784242852559409], - [-71.659315558545316, -44.973688653341434], - [-71.552009446891233, -45.560732924177117], - [-71.917258470330196, -46.884838148791786], - [-72.44735531278026, -47.738532810253517], - [-72.331160854771937, -48.244238376661819], - [-72.648247443314929, -48.878618259476774], - [-73.415435757120022, -49.318436374712952], - [-73.328050910114456, -50.378785088909865], - [-72.975746832964617, -50.741450290734299], - [-72.309973517532342, -50.677009779666342], - [-72.329403856074023, -51.425956312872394], - [-71.914803839796321, -52.009022305865912], - [-69.498362189396076, -52.142760912637236], - [-68.571545376241332, -52.299443855346247], - [-69.461284349226617, -52.291950772663924], - [-69.94277950710611, -52.537930590373243], - [-70.8451016913545, -52.899200528525711], - [-71.006332160105217, -53.833252042201345], - [-71.429794684520928, -53.856454760300373], - [-72.557942877884855, -53.531410001184447], - [-73.702756720662862, -52.835069268607249], - [-73.702756720662862, -52.835070076051487], - [-74.946763475225154, -52.262753588419017], - [-75.260026007778507, -51.62935475037321], - [-74.976632453089806, -51.043395684615675], - [-75.47975419788348, -50.378371677451547], - [-75.608015102831942, -48.673772881871784], - [-75.182769741502128, -47.711919447623153], - [-74.126580980104677, -46.939253431995084], - [-75.644395311165439, -46.647643324572016], - [-74.69215369332305, -45.76397633238097], - [-74.351709357384252, -44.10304412208788], - [-73.240356004515192, -44.454960625995611], - [-72.717803921179765, -42.383355808278985], - [-73.388899909138232, -42.117532240569567], - [-73.701335618774834, -43.365776462579738], - [-74.33194312203257, -43.224958184584395], - [-74.017957119427152, -41.794812920906828], - [-73.677099372029943, -39.942212823243111], - [-73.217592536090663, -39.258688653318508], - [-73.505559455037044, -38.282882582351064], - [-73.588060879191076, -37.156284681956016], - [-73.166717088499283, -37.123780206044351], - [-72.553136969681717, -35.508840020491022], - [-71.861732143832555, -33.909092706031522], - [-71.438450486929895, -32.418899428030819], - [-71.668720669222424, -30.920644626592516], - [-71.370082567007714, -30.095682061484997], - [-71.48989437527645, -28.861442152625909], - [-70.905123867461569, -27.640379734001193], - [-70.724953986275963, -25.705924167587209], - [-70.403965827095035, -23.628996677344542], - [-70.091245897080668, -21.393319187101223], - [-70.164419725205974, -19.756468194256183], - [-70.372572394477714, -18.347975355708879], - [-69.858443569605797, -18.092693780187027], - [-69.590423753523979, -17.580011895419286], - [-69.100246955019401, -18.260125420812653], - [-68.966818406841824, -18.981683444904089], - [-68.442225104430918, -19.405068454671419], - [-68.757167121033703, -20.37265797290447], - [-68.219913092711224, -21.49434661223183] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "China", "name": "China", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [110.339187860151526, 18.678395087147603], - [109.475209588663702, 18.19770091396861], - [108.655207961056135, 18.507681993071397], - [108.626217482540426, 19.367887885001974], - [109.119055617308007, 19.821038519769385], - [110.211598748822837, 20.101253973872073], - [110.786550734502228, 20.077534491450077], - [111.01005130416462, 19.695929877190732], - [110.570646600386794, 19.255879218009305], - [110.339187860151526, 18.678395087147603] - ] - ], - [ - [ - [127.657407261262378, 49.760270494172929], - [129.397817824420429, 49.440600084015429], - [130.58229332898236, 48.729687404976112], - [130.987281528853828, 47.790132351261391], - [132.506671991099495, 47.788969631534876], - [133.373595819228001, 48.183441677434914], - [135.026311476786702, 48.478229885443902], - [134.500813836810607, 47.578439846377833], - [134.112362095272601, 47.212467352886719], - [133.76964399631288, 46.116926988299056], - [133.097126906466428, 45.14406647397216], - [131.883454217659562, 45.32116160743643], - [131.025212030156069, 44.967953192721573], - [131.288555129115537, 44.111519680348252], - [131.144687941614848, 42.929989732426932], - [130.633866408409801, 42.903014634770543], - [130.640015903852429, 42.39500946712527], - [129.994267205933227, 42.985386867843793], - [129.596668735879462, 42.424981797854592], - [128.05221520397231, 41.994284572917984], - [128.208433058790717, 41.466771552082534], - [127.343782993683021, 41.503151760415953], - [126.869083286649854, 41.816569322266155], - [126.18204511932943, 41.107336127276362], - [125.079941847840587, 40.569823716792449], - [124.265624627785314, 39.928493353834135], - [122.86757042856101, 39.637787583976255], - [122.131387974130917, 39.170451768544623], - [121.054554478032856, 38.89747101496291], - [121.585994907722466, 39.360853583324136], - [121.376757033372641, 39.750261338859524], - [122.168595005381007, 40.422442531896046], - [121.640358514493528, 40.946389878903304], - [120.768628778161954, 40.593388169917596], - [119.639602085449056, 39.898055935214209], - [119.023463983233015, 39.252333075511096], - [118.042748651197897, 39.204273993479674], - [117.532702264477052, 38.73763580988409], - [118.05969852098967, 38.061475531561051], - [118.878149855628351, 37.897325344385898], - [118.911636183753501, 37.448463853498723], - [119.702802362142037, 37.156388658185072], - [120.823457472823648, 37.870427761377968], - [121.711258579597938, 37.481123358707165], - [122.357937453298462, 37.454484157860684], - [122.519994744965814, 36.930614325501828], - [121.104163853033029, 36.651329047180432], - [120.63700890511457, 36.111439520811125], - [119.66456180224607, 35.609790554337728], - [119.151208123858567, 34.909859117160458], - [120.227524855633717, 34.360331936168613], - [120.620369093916565, 33.37672272392512], - [121.229014113450219, 32.460318711877186], - [121.908145786630044, 31.692174384074683], - [121.891919386890336, 30.949351508095098], - [121.264257440273298, 30.676267401648712], - [121.503519321784722, 30.14291494396425], - [122.092113885589086, 29.832520453403156], - [121.93842817595305, 29.018022365834803], - [121.684438511238469, 28.225512600206677], - [121.125661248866436, 28.135673122667178], - [120.395473260582307, 27.053206895449385], - [119.585496860839555, 25.740780544532605], - [118.656871372554519, 24.547390855400234], - [117.281606479970833, 23.624501451099714], - [115.890735304835118, 22.782873236578094], - [114.763827345846209, 22.668074042241663], - [114.152546828265656, 22.223760077396204], - [113.806779819800752, 22.548339748621423], - [113.241077915501592, 22.051367499270462], - [111.843592157032447, 21.550493679281512], - [110.78546552942413, 21.39714386645533], - [110.444039341271662, 20.34103261970639], - [109.88986128137357, 20.282457383703441], - [109.627655063924635, 21.008227037026725], - [109.864488153118316, 21.395050970947516], - [108.522812941524421, 21.715212307211821], - [108.050180291782979, 21.552379869060101], - [107.043420037872636, 21.8118989120299], - [106.567273390735352, 22.21820486092474], - [106.725403273548466, 22.794267889898375], - [105.811247186305209, 22.976892401617899], - [105.329209425886631, 23.352063300056976], - [104.476858351664475, 22.819150092046918], - [103.504514601660503, 22.703756618739217], - [102.706992222100155, 22.708795070887696], - [102.170435825613552, 22.464753119389336], - [101.652017856861576, 22.318198757409554], - [101.803119744882906, 21.174366766845051], - [101.27002566936001, 21.201651923095167], - [101.180005324307558, 21.436572984294052], - [101.150032993578236, 21.849984442629015], - [100.416537713627349, 21.558839423096654], - [99.983489211021549, 21.742936713136451], - [99.240898878987196, 22.118314317304559], - [99.53199222208741, 22.949038804612591], - [98.898749220782804, 23.142722072842581], - [98.66026248575578, 24.063286037690002], - [97.604719679762027, 23.897404690033049], - [97.724609002679131, 25.083637193293036], - [98.671838006589212, 25.91870250091349], - [98.712093947344556, 26.743535874940243], - [98.682690057370507, 27.508812160750658], - [98.246230910233351, 27.747221381129172], - [97.91198774616943, 28.335945136014367], - [97.327113885490007, 28.261582749946339], - [96.248833449287829, 28.411030992134467], - [96.586590610747521, 28.830979519154361], - [96.117678664131006, 29.452802028922513], - [95.404802280664626, 29.031716620392157], - [94.565990431702929, 29.27743805593996], - [93.413347609432662, 28.640629380807233], - [92.503118931043616, 27.896876329046442], - [91.696656528696693, 27.771741848251615], - [91.258853794319876, 28.040614325466343], - [90.730513950567797, 28.064953925075738], - [90.015828891971182, 28.296438503527177], - [89.475810174521158, 28.042758897406365], - [88.814248488320573, 27.299315904239389], - [88.730325962278528, 28.086864732367552], - [88.120440708369941, 27.876541652939572], - [86.954517043000635, 27.974261786403524], - [85.823319940131526, 28.203575954698742], - [85.011638218123053, 28.642773952747369], - [84.23457970575015, 28.839893703724691], - [83.89899295444674, 29.320226141877633], - [83.337115106137176, 29.463731594352193], - [82.327512648450877, 30.115268052688204], - [81.525804477874786, 30.422716986608659], - [81.111256138029276, 30.183480943313402], - [79.721366815107118, 30.882714748654728], - [78.738894484374001, 31.515906073527045], - [78.458446486326025, 32.61816437431272], - [79.176128777995544, 32.483779812137747], - [79.208891636068543, 32.994394639613738], - [78.811086460285722, 33.506198025032397], - [78.912268914713209, 34.321936346975768], - [77.83745079947461, 35.494009507787794], - [76.192848341785705, 35.89840342868785], - [75.896897414050173, 36.666806138651872], - [75.158027785140987, 37.133030910789152], - [74.980002475895404, 37.419990139305888], - [74.829985792952144, 37.990007025701445], - [74.864815708316783, 38.378846340481587], - [74.25751427602269, 38.606506862943476], - [73.928852166646394, 38.505815334622717], - [73.675379266254836, 39.431236884105566], - [73.960013055318427, 39.660008449861714], - [73.822243686828315, 39.893973497063136], - [74.776862420556043, 40.366425279291619], - [75.467827996730719, 40.56207225194867], - [76.526368035797432, 40.427946071935132], - [76.90448449087711, 41.066485907549648], - [78.187196893226044, 41.185315863604799], - [78.543660923175253, 41.582242540038713], - [80.119430373051401, 42.12394074153822], - [80.259990268885318, 42.34999929459908], - [80.180150180994374, 42.920067857426844], - [80.866206496101213, 43.180362046881008], - [79.966106398441426, 44.917516994804622], - [81.947070753918084, 45.317027492853143], - [82.458925815769035, 45.539649563166499], - [83.180483839860543, 47.330031236350735], - [85.164290399113213, 47.000955715516099], - [85.720483839870667, 47.452969468773077], - [85.76823286330837, 48.455750637396896], - [86.59877648310335, 48.549181626980605], - [87.359970330762692, 49.214980780629148], - [87.751264276076668, 49.297197984405464], - [88.013832228551678, 48.599462795600594], - [88.854297723346747, 48.069081732773007], - [90.280825636763893, 47.693549099307901], - [90.970809360724957, 46.88814606382293], - [90.585768263718307, 45.719716091487491], - [90.945539585334316, 45.286073309910243], - [92.133890822318222, 45.115075995456429], - [93.480733677141316, 44.97547211362], - [94.688928664125356, 44.352331854828456], - [95.306875441471504, 44.241330878265458], - [95.762454868556688, 43.319449164394619], - [96.349395786527808, 42.725635280928643], - [97.451757440177971, 42.74888967546007], - [99.515817498779995, 42.524691473961688], - [100.845865513108279, 42.663804429691417], - [101.833040399179936, 42.51487295182627], - [103.312278273534787, 41.907468166667613], - [104.522281935649005, 41.90834666601662], - [104.964993931093431, 41.597409572916334], - [106.129315627061658, 42.134327704428891], - [107.744772576937976, 42.481515814781908], - [109.243595819131428, 42.519446316084149], - [110.412103306115299, 42.871233628911014], - [111.129682244920218, 43.406834011400171], - [111.82958784388137, 43.743118394539486], - [111.667737257943202, 44.073175767587706], - [111.348376906379428, 44.457441718110047], - [111.87330610560025, 45.102079372735112], - [112.436062453258842, 45.01164561622425], - [113.463906691544196, 44.808893134127111], - [114.46033165899604, 45.339816799493875], - [115.985096470200133, 45.727235012386004], - [116.717868280098855, 46.38820241961524], - [117.421701287914246, 46.67273285581421], - [118.874325799638711, 46.805412095723646], - [119.663269891438745, 46.692679958678944], - [119.772823927897562, 47.048058783550132], - [118.866574334794947, 47.747060044946195], - [118.064142694166719, 48.06673045510373], - [117.295507440257438, 47.697709052107385], - [116.308952671373234, 47.853410142602812], - [115.742837355615734, 47.726544501326273], - [115.485282017073018, 48.135382595403442], - [116.191802199367601, 49.134598090199056], - [116.67880089728618, 49.888531399121398], - [117.879244419426371, 49.510983384796944], - [119.288460728025839, 50.142882798862033], - [119.279365675942358, 50.582907619827282], - [120.182049595216924, 51.64356639261802], - [120.738191359541972, 51.964115302124547], - [120.725789015791975, 52.516226304730814], - [120.177088657716865, 52.753886216841195], - [121.003084751470226, 53.251401068731226], - [122.245747918792858, 53.431725979213681], - [123.571506789240843, 53.458804429734627], - [125.068211297710434, 53.161044826868832], - [125.946348911646169, 52.792798570356936], - [126.564399041856959, 51.784255479532689], - [126.939156528837657, 51.353894151405896], - [127.287455682484904, 50.739797268265434], - [127.657407261262378, 49.760270494172929] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ivory Coast", "name": "Côte d'Ivoire", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-2.856125047202397, 4.994475816259508], - [-3.311084357100071, 4.984295559098014], - [-4.008819545904941, 5.179813340674314], - [-4.64991736491791, 5.168263658057084], - [-5.834496222344525, 4.993700669775135], - [-6.528769090185845, 4.705087795425015], - [-7.518941209330434, 4.338288479017307], - [-7.712159389669749, 4.364565944837721], - [-7.63536821128403, 5.188159084489455], - [-7.53971513511176, 5.313345241716517], - [-7.570152553731686, 5.707352199725903], - [-7.993692592795879, 6.126189683451541], - [-8.311347622094017, 6.193033148621081], - [-8.602880214868618, 6.467564195171659], - [-8.385451626000572, 6.911800645368742], - [-8.485445522485348, 7.395207831243068], - [-8.439298468448696, 7.686042792181736], - [-8.280703497744936, 7.687179673692156], - [-8.221792364932197, 8.123328762235571], - [-8.299048631208562, 8.316443589710302], - [-8.203498907900878, 8.455453192575446], - [-7.832100389019186, 8.575704250518625], - [-8.079113735374348, 9.376223863152033], - [-8.309616461612249, 9.789531968622439], - [-8.22933712404682, 10.129020290563897], - [-8.029943610048617, 10.206534939001711], - [-7.89958980959237, 10.297382106970824], - [-7.622759161804808, 10.147236232946792], - [-6.850506557635057, 10.138993841996237], - [-6.666460944027547, 10.430810655148447], - [-6.493965013037267, 10.411302801958268], - [-6.205222947606429, 10.524060777219132], - [-6.050452032892266, 10.096360785355442], - [-5.816926235365286, 10.222554633012191], - [-5.404341599946973, 10.370736802609144], - [-4.954653286143098, 10.152713934769732], - [-4.779883592131966, 9.821984768101741], - [-4.330246954760383, 9.610834865757139], - [-3.980449184576684, 9.862344061721698], - [-3.511898972986272, 9.900326239456216], - [-2.827496303712706, 9.642460842319775], - [-2.56218950032624, 8.219627793811481], - [-2.983584967450326, 7.379704901555511], - [-3.244370083011261, 6.2504715031135], - [-2.810701463217839, 5.389051215024109], - [-2.856125047202397, 4.994475816259508] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Cameroon", "name": "Cameroon", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [13.07582238124675, 2.267097072759014], - [12.951333855855605, 2.321615708826939], - [12.359380323952218, 2.19281220133945], - [11.751665480199787, 2.326757513839993], - [11.276449008843711, 2.261050930180871], - [9.649158155972627, 2.283866075037735], - [9.795195753629455, 3.073404445809117], - [9.404366896205998, 3.734526882335202], - [8.948115675501068, 3.904128933117135], - [8.744923943729416, 4.352215277519959], - [8.488815545290889, 4.495617377129917], - [8.500287713259693, 4.771982937026847], - [8.757532993208626, 5.47966583904791], - [9.233162876023043, 6.444490668153334], - [9.522705926154398, 6.453482367372116], - [10.118276808318255, 7.038769639509879], - [10.497375115611417, 7.055357774275562], - [11.058787876030349, 6.644426784690593], - [11.745774366918509, 6.981382961449753], - [11.839308709366801, 7.397042344589434], - [12.063946160539556, 7.799808457872301], - [12.218872104550597, 8.305824082874322], - [12.753671502339214, 8.717762762888993], - [12.955467970438971, 9.417771714714702], - [13.1675997249971, 9.64062632897341], - [13.308676385153914, 10.160362046748926], - [13.572949659894558, 10.798565985553564], - [14.415378859116682, 11.572368882692071], - [14.468192172918974, 11.90475169519341], - [14.57717776862253, 12.085360826053501], - [14.181336297266792, 12.483656927943112], - [14.213530714584634, 12.802035427293344], - [14.495787387762842, 12.859396267137326], - [14.893385857816522, 12.219047756392582], - [14.960151808337598, 11.555574042197222], - [14.923564894274955, 10.891325181517471], - [15.467872755605269, 9.982336737503429], - [14.909353875394713, 9.99212942142273], - [14.627200555081057, 9.920919297724536], - [14.171466098699025, 10.021378282099928], - [13.954218377344002, 9.549494940626685], - [14.544466586981766, 8.965861314322266], - [14.979995558337688, 8.796104234243471], - [15.120865512765331, 8.382150173369423], - [15.436091749745765, 7.692812404811971], - [15.279460483469107, 7.421924546737968], - [14.776545444404572, 6.408498033062044], - [14.536560092841111, 6.22695872642069], - [14.459407179429345, 5.451760565610299], - [14.558935988023501, 5.03059764243153], - [14.478372430080466, 4.732605495620446], - [14.950953403389658, 4.21038930909492], - [15.036219516671249, 3.851367295747123], - [15.405395948964379, 3.335300604664339], - [15.862732374747479, 3.013537298998982], - [15.907380812247649, 2.557389431158612], - [16.01285241055535, 2.267639675298084], - [15.940918816805061, 1.727672634280295], - [15.14634199388524, 1.964014797367184], - [14.337812534246577, 2.22787466064949], - [13.07582238124675, 2.267097072759014] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Democratic Republic of the Congo", - "name": "Dem. Rep. Congo", - "continent": "Africa" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [30.833859897593801, 3.50916596111034], - [30.773346795380036, 2.339883327642127], - [31.174149204235807, 2.204465236821263], - [30.852670118948048, 1.849396470543809], - [30.468507521290292, 1.58380544677972], - [30.086153598762703, 1.062312730306288], - [29.875778842902488, 0.597379868976304], - [29.819503208136634, -0.205310153813372], - [29.587837762172164, -0.58740569417948], - [29.579466180140876, -1.341313164885626], - [29.29188683443661, -1.620055840667987], - [29.254834832483336, -2.215109958508911], - [29.117478875451546, -2.292211195488384], - [29.02492638521678, -2.839257907730157], - [29.276383904749046, -3.293907159034063], - [29.339997592900342, -4.499983412294092], - [29.519986606572925, -5.419978936386313], - [29.41999271008816, -5.939998874539432], - [29.620032179490003, -6.520015150583424], - [30.199996779101692, -7.079980970898161], - [30.740015496551781, -8.340007419470913], - [30.34608605319081, -8.238256524288216], - [29.002912225060467, -8.40703175215347], - [28.734866570762495, -8.526559340044576], - [28.449871046672818, -9.164918308146083], - [28.673681674928922, -9.605924981324931], - [28.496069777141763, -10.789883721564044], - [28.372253045370421, -11.793646742401389], - [28.642417433392346, -11.971568698782312], - [29.341547885869087, -12.36074391037241], - [29.616001417771223, -12.178894545137307], - [29.699613885219485, -13.257226657771827], - [28.934285922976834, -13.248958428605132], - [28.52356163912102, -12.698604424696679], - [28.15510867687998, -12.272480564017894], - [27.38879886242378, -12.132747491100663], - [27.164419793412456, -11.608748467661071], - [26.55308759939961, -11.924439792532125], - [25.752309604604726, -11.784965101776356], - [25.418118116973197, -11.330935967659958], - [24.783169793402948, -11.238693536018962], - [24.314516228947948, -11.262826429899269], - [24.257155389103982, -10.951992689663655], - [23.912215203555714, -10.926826267137512], - [23.456790805767433, -10.867863457892481], - [22.837345411884733, -11.017621758674329], - [22.402798292742371, -10.99307545333569], - [22.155268182064304, -11.084801120653768], - [22.208753289486388, -9.894796237836507], - [21.87518191904234, -9.523707777548564], - [21.801801385187897, -8.908706556842978], - [21.949130893652036, -8.305900974158275], - [21.746455926203303, -7.920084730667147], - [21.728110792739695, -7.2908724910813], - [20.514748162526498, -7.299605808138629], - [20.601822950938292, -6.93931772219968], - [20.091621534920645, -6.943090101756993], - [20.037723016040214, -7.116361179231644], - [19.417502475673157, -7.155428562044297], - [19.166613396896107, -7.738183688999753], - [19.016751743249664, -7.988245944860132], - [18.464175652752683, -7.847014255406442], - [18.134221632569048, -7.98767750410492], - [17.472970004962232, -8.068551120641699], - [17.089995965247166, -7.545688978712525], - [16.860190870845198, -7.222297865429984], - [16.573179965896141, -6.622644545115087], - [16.326528354567042, -5.877470391466267], - [13.375597364971892, -5.864241224799548], - [13.02486941900696, -5.984388929878157], - [12.735171339578695, -5.965682061388497], - [12.322431674863507, -6.100092461779658], - [12.182336866920249, -5.789930515163837], - [12.436688266660866, -5.684303887559245], - [12.468004184629734, -5.248361504745003], - [12.631611769265788, -4.991271254092935], - [12.995517205465173, -4.781103203961883], - [13.258240187237044, -4.882957452009165], - [13.600234816144676, -4.500138441590969], - [14.144956088933295, -4.510008640158715], - [14.209034864975219, -4.793092136253597], - [14.582603794013179, -4.970238946150139], - [15.170991652088441, -4.3435071753143], - [15.753540073314749, -3.855164890156096], - [16.006289503654298, -3.535132744972528], - [15.972803175529149, -2.712392266453612], - [16.407091912510051, -1.740927015798682], - [16.86530683764212, -1.225816338713287], - [17.523716261472853, -0.743830254726987], - [17.638644646889983, -0.424831638189246], - [17.663552687254676, -0.058083998213817], - [17.826540154703245, 0.288923244626105], - [17.774191928791563, 0.855658677571085], - [17.89883548347958, 1.741831976728278], - [18.09427575040743, 2.365721543788055], - [18.39379235197114, 2.90044342692822], - [18.453065219809925, 3.504385891123348], - [18.542982211997778, 4.201785183118317], - [18.932312452884755, 4.709506130385973], - [19.467783644293146, 5.031527818212779], - [20.290679152108932, 4.691677761245287], - [20.927591180106273, 4.322785549329736], - [21.659122755630019, 4.224341945813719], - [22.405123732195531, 4.02916006104732], - [22.704123569436284, 4.633050848810156], - [22.841479526468103, 4.710126247573483], - [23.297213982850135, 4.609693101414221], - [24.41053104014625, 5.108784084489129], - [24.805028924262409, 4.897246608902349], - [25.128833449003274, 4.927244777847789], - [25.278798455514302, 5.170408229997191], - [25.650455356557465, 5.256087754737123], - [26.402760857862535, 5.150874538590869], - [27.044065382604703, 5.127852688004835], - [27.374226108517483, 5.233944403500059], - [27.979977247842807, 4.408413397637373], - [28.428993768026906, 4.287154649264493], - [28.696677687298795, 4.455077215996936], - [29.159078403446497, 4.38926727947323], - [29.715995314256013, 4.600804755060024], - [29.953500197069467, 4.173699042167683], - [30.833859897593801, 3.50916596111034] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Republic of Congo", "name": "Congo", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [12.995517205465173, -4.781103203961883], - [12.620759718484491, -4.438023369976135], - [12.318607618873923, -4.606230157086187], - [11.914963006242086, -5.037986748884789], - [11.093772820691923, -3.978826592630546], - [11.855121697648114, -3.42687061932105], - [11.478038771214299, -2.765618991714241], - [11.820963575903189, -2.514161472181982], - [12.495702752338159, -2.391688327650242], - [12.575284458067639, -1.948511244315134], - [13.109618767965626, -2.428740329603513], - [13.992407260807706, -2.470804945489099], - [14.299210239324564, -1.998275648612213], - [14.425455763413593, -1.333406670744971], - [14.316418491277741, -0.552627455247048], - [13.843320753645653, 0.038757635901149], - [14.276265903386953, 1.196929836426619], - [14.026668735417214, 1.395677395021153], - [13.282631463278816, 1.31418366129688], - [13.003113641012074, 1.830896307783319], - [13.07582238124675, 2.267097072759014], - [14.337812534246577, 2.22787466064949], - [15.14634199388524, 1.964014797367184], - [15.940918816805061, 1.727672634280295], - [16.01285241055535, 2.267639675298084], - [16.537058139724135, 3.198254706226278], - [17.133042433346297, 3.728196519379451], - [17.809900343505259, 3.560196437998569], - [18.453065219809925, 3.504385891123348], - [18.39379235197114, 2.90044342692822], - [18.09427575040743, 2.365721543788055], - [17.89883548347958, 1.741831976728278], - [17.774191928791563, 0.855658677571085], - [17.826540154703245, 0.288923244626105], - [17.663552687254676, -0.058083998213817], - [17.638644646889983, -0.424831638189246], - [17.523716261472853, -0.743830254726987], - [16.86530683764212, -1.225816338713287], - [16.407091912510051, -1.740927015798682], - [15.972803175529149, -2.712392266453612], - [16.006289503654298, -3.535132744972528], - [15.753540073314749, -3.855164890156096], - [15.170991652088441, -4.3435071753143], - [14.582603794013179, -4.970238946150139], - [14.209034864975219, -4.793092136253597], - [14.144956088933295, -4.510008640158715], - [13.600234816144676, -4.500138441590969], - [13.258240187237044, -4.882957452009165], - [12.995517205465173, -4.781103203961883] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Colombia", "name": "Colombia", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-75.373223232713841, -0.15203175212045], - [-75.801465827116587, 0.084801337073202], - [-76.292314419240938, 0.416047268064119], - [-76.576379767549383, 0.256935533037435], - [-77.424984300430367, 0.395686753741117], - [-77.668612840470416, 0.825893052570961], - [-77.855061408179509, 0.809925034992773], - [-78.855258755188686, 1.380923773601822], - [-78.990935228171026, 1.691369940595251], - [-78.617831387023699, 1.766404120283056], - [-78.662118089497838, 2.267355454920476], - [-78.427610439757302, 2.629555568854215], - [-77.931542527971473, 2.696605739752925], - [-77.510431281224996, 3.325016994638246], - [-77.127689785455246, 3.849636135265356], - [-77.496271938776999, 4.087606105969427], - [-77.307601284479375, 4.667984117039452], - [-77.533220587865713, 5.582811997902496], - [-77.318815070286718, 5.845354112161359], - [-77.476660732722266, 6.691116441266301], - [-77.881571417945239, 7.223771267114783], - [-77.75341386586139, 7.709839789252141], - [-77.431107957656977, 7.638061224798733], - [-77.242566494440069, 7.935278225125442], - [-77.474722866511314, 8.524286200388216], - [-77.353360765273848, 8.670504665558068], - [-76.836673957003541, 8.638749497914715], - [-76.086383836557843, 9.336820583529486], - [-75.674600185840035, 9.443248195834597], - [-75.664704149056149, 9.774003200718736], - [-75.480425991503338, 10.618990383339305], - [-74.906895107711975, 11.08304474532032], - [-74.276752692344871, 11.102035834187586], - [-74.197222663047683, 11.310472723836865], - [-73.414763963500278, 11.227015285685479], - [-72.62783525255962, 11.731971543825519], - [-72.238194953078903, 11.955549628136325], - [-71.754090135368628, 12.437303168177305], - [-71.399822353791691, 12.376040757695289], - [-71.137461107045866, 12.112981879113503], - [-71.331583624950284, 11.776284084515805], - [-71.973921678338272, 11.608671576377116], - [-72.227575446242923, 11.108702093953237], - [-72.614657762325194, 10.821975409381777], - [-72.905286017534692, 10.45034434655477], - [-73.027604132769554, 9.736770331252441], - [-73.304951544880026, 9.151999823437604], - [-72.788729824500379, 9.085027167187331], - [-72.660494757768092, 8.62528778730268], - [-72.439862230097944, 8.405275376820027], - [-72.360900641555958, 8.002638454617893], - [-72.479678921178831, 7.632506008327352], - [-72.444487270788059, 7.42378489830048], - [-72.19835242378187, 7.340430813013682], - [-71.960175747348629, 6.991614895043538], - [-70.674233567981503, 7.087784735538717], - [-70.093312954372408, 6.960376491723109], - [-69.389479946557103, 6.099860541198835], - [-68.985318569602327, 6.206804917826856], - [-68.265052456318216, 6.153268133972473], - [-67.695087246355001, 6.267318020040645], - [-67.34143958196556, 6.095468044454021], - [-67.521531948502741, 5.556870428891968], - [-67.744696621355203, 5.221128648291667], - [-67.823012254493534, 4.503937282728898], - [-67.621835903581271, 3.839481716319994], - [-67.33756384954367, 3.542342230641721], - [-67.303173183853417, 3.31845408773718], - [-67.809938117123693, 2.820655015469569], - [-67.447092047786299, 2.600280869960869], - [-67.181294318293041, 2.250638129074062], - [-66.876325853122566, 1.253360500489336], - [-67.065048183852483, 1.130112209473225], - [-67.25999752467358, 1.719998684084956], - [-67.537810024674684, 2.037162787276329], - [-67.868565029558823, 1.692455145673392], - [-69.816973232691609, 1.714805202639624], - [-69.804596727157701, 1.089081122233466], - [-69.218637661400166, 0.985676581217433], - [-69.252434048119042, 0.602650865070075], - [-69.452396002872447, 0.706158758950693], - [-70.015565761989293, 0.541414292804205], - [-70.02065589057004, -0.185156345219539], - [-69.577065395776586, -0.549991957200163], - [-69.420485805932216, -1.122618503426409], - [-69.444101935489599, -1.556287123219817], - [-69.893635219996611, -4.298186944194326], - [-70.394043952094975, -3.766591485207825], - [-70.692682054309699, -3.742872002785858], - [-70.047708502874841, -2.725156345229699], - [-70.813475714791949, -2.256864515800742], - [-71.413645799429773, -2.342802422702128], - [-71.774760708285385, -2.169789727388937], - [-72.325786505813639, -2.434218031426453], - [-73.070392218707212, -2.308954359550952], - [-73.659503546834586, -1.260491224781134], - [-74.122395189089048, -1.002832533373848], - [-74.441600511355958, -0.530820000819887], - [-75.106624518520064, -0.05720549886486], - [-75.373223232713841, -0.15203175212045] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Costa Rica", "name": "Costa Rica", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-82.965783047197348, 8.225027980985983], - [-83.508437262694287, 8.446926581247281], - [-83.711473965169063, 8.656836249216864], - [-83.596313035806631, 8.830443223501417], - [-83.632641567707822, 9.051385809765319], - [-83.909885626953724, 9.290802720573579], - [-84.303401658856345, 9.487354030795712], - [-84.64764421256865, 9.615537421095707], - [-84.713350796227743, 9.908051866083849], - [-84.975660366541319, 10.086723130733004], - [-84.911374884770211, 9.795991522658921], - [-85.110923428065291, 9.557039699741308], - [-85.339488288092255, 9.834542141148658], - [-85.660786505866966, 9.93334747969072], - [-85.797444831062819, 10.134885565629032], - [-85.791708747078417, 10.439337266476612], - [-85.65931372754666, 10.754330959511718], - [-85.941725430021748, 10.895278428587799], - [-85.712540452807289, 11.088444932494822], - [-85.561851976244171, 11.217119248901593], - [-84.903003302738924, 10.952303371621895], - [-84.673069017256239, 11.082657172078139], - [-84.355930752281026, 10.999225572142901], - [-84.190178595704822, 10.793450018756671], - [-83.895054490885926, 10.726839097532444], - [-83.655611741861563, 10.938764146361418], - [-83.402319708982944, 10.39543813724465], - [-83.015676642575158, 9.992982082555553], - [-82.546196255203469, 9.566134751824674], - [-82.932890998043561, 9.476812038608172], - [-82.927154914059145, 9.074330145702914], - [-82.719183112300513, 8.925708726431493], - [-82.868657192704759, 8.807266343618521], - [-82.829770677405151, 8.626295477732368], - [-82.9131764391242, 8.423517157419068], - [-82.965783047197348, 8.225027980985983] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Cuba", "name": "Cuba", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-82.268151211257035, 23.188610744717703], - [-81.404457160146819, 23.117271429938775], - [-80.61876868358118, 23.105980129482994], - [-79.679523688460222, 22.765303249598823], - [-79.281485968732071, 22.399201565027049], - [-78.347434455056472, 22.512166246017085], - [-77.993295864560253, 22.277193508385928], - [-77.146422492161037, 21.657851467367831], - [-76.523824835908528, 21.20681956632437], - [-76.194620123993175, 21.220565497314006], - [-75.598222418912655, 21.01662445727413], - [-75.671060350228032, 20.735091254147999], - [-74.933896043584483, 20.693905137611381], - [-74.178024868451246, 20.284627793859737], - [-74.296648118777242, 20.050378526280678], - [-74.961594611292924, 19.923435370355687], - [-75.634680141894577, 19.873774318923193], - [-76.323656175425981, 19.952890936762056], - [-77.755480923153044, 19.855480861891873], - [-77.085108405246729, 20.413353786698789], - [-77.492654588516601, 20.673105373613886], - [-78.137292243141573, 20.739948838783427], - [-78.482826707661161, 21.028613389565848], - [-78.719866502583997, 21.598113511638431], - [-79.284999966127913, 21.559175319906497], - [-80.217475348618635, 21.827324327069032], - [-80.517534552721401, 22.037078965741756], - [-81.820943366203167, 22.192056586185068], - [-82.169991828118611, 22.387109279870746], - [-81.79500179719264, 22.636964830001951], - [-82.775897996740838, 22.688150336187057], - [-83.494458787759328, 22.168517971276124], - [-83.908800421875611, 22.154565334557329], - [-84.052150845053248, 21.910575059491251], - [-84.547030198896351, 21.801227728761639], - [-84.974911058273079, 21.896028143801082], - [-84.44706214062775, 22.204949856041903], - [-84.23035702181177, 22.56575470630376], - [-83.778239915690165, 22.78811839445569], - [-83.267547573565736, 22.983041897060641], - [-82.510436164057495, 23.078746649665181], - [-82.268151211257035, 23.188610744717703] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Northern Cyprus", "name": "N. Cyprus", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.731780226377445, 35.14002594658843], - [32.802473585752743, 35.145503648411363], - [32.946960890440799, 35.38670339613369], - [33.667227003724939, 35.373215847305509], - [34.576473829900458, 35.671595567358786], - [33.900804477684197, 35.245755927057608], - [33.973616570783456, 35.058506374647997], - [33.866439650210104, 35.093594672174177], - [33.675391880027057, 35.017862860650446], - [33.525685255677494, 35.038688462864066], - [33.475817498515845, 35.000344550103499], - [33.45592207208346, 35.101423651666401], - [33.383833449036295, 35.162711900364563], - [33.190977003723042, 35.173124701471373], - [32.919572381326127, 35.087832749973636], - [32.731780226377445, 35.14002594658843] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Cyprus", "name": "Cyprus", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.973616570783456, 35.058506374647997], - [34.004880812320032, 34.978097846001852], - [32.97982710137844, 34.571869411755436], - [32.490296258277532, 34.701654771456468], - [32.256667107885953, 35.103232326796622], - [32.731780226377445, 35.14002594658843], - [32.919572381326127, 35.087832749973636], - [33.190977003723042, 35.173124701471373], - [33.383833449036295, 35.162711900364563], - [33.45592207208346, 35.101423651666401], - [33.475817498515845, 35.000344550103499], - [33.525685255677494, 35.038688462864066], - [33.675391880027057, 35.017862860650446], - [33.866439650210104, 35.093594672174177], - [33.973616570783456, 35.058506374647997] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Czech Republic", "name": "Czech Rep.", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.960288120194573, 48.596982326850593], - [16.49928266771877, 48.785808010445095], - [16.029647251050218, 48.733899034207916], - [15.253415561593979, 49.039074205107575], - [14.901447381254055, 48.964401760445817], - [14.33889773932472, 48.555305284207193], - [13.595945672264433, 48.877171942737135], - [13.031328973043427, 49.307068182973232], - [12.52102420416119, 49.54741526956272], - [12.415190870827441, 49.96912079528056], - [12.240111118222556, 50.266337795607271], - [12.96683678554319, 50.484076443069071], - [13.338131951560282, 50.733234361364346], - [14.05622765468817, 50.926917629594286], - [14.307013380600633, 51.117267767941399], - [14.570718214586062, 51.002339382524262], - [15.016995883858666, 51.106674099321566], - [15.490972120839725, 50.7847299261432], - [16.238626743238566, 50.697732652379827], - [16.176253289462263, 50.4226073268579], - [16.719475945714429, 50.215746568393527], - [16.868769158605655, 50.473973700556016], - [17.554567091551117, 50.36214590107641], - [17.649445021238986, 50.049038397819942], - [18.392913852622168, 49.988628648470737], - [18.85314415861361, 49.496229763377634], - [18.554971144289478, 49.495015367218777], - [18.399993523846174, 49.315000515330034], - [18.170498488037961, 49.271514797556421], - [18.104972771891848, 49.043983466175298], - [17.913511590250462, 48.996492824899072], - [17.886484816161808, 48.903475246773695], - [17.545006951577101, 48.800019029325362], - [17.101984897538895, 48.8169688991171], - [16.960288120194573, 48.596982326850593] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Germany", "name": "Germany", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.92190636560923, 54.983104153048025], - [9.939579705452898, 54.596641954153242], - [10.950112338920517, 54.363607082733147], - [10.939466993868447, 54.008693345752583], - [11.95625247564328, 54.196485500701144], - [12.518440382546711, 54.470370591847988], - [13.647467075259495, 54.075510972705885], - [14.119686313542555, 53.757029120491026], - [14.353315463934164, 53.248171291713092], - [14.074521111719431, 52.981262518925334], - [14.437599725002197, 52.62485016540829], - [14.685026482815713, 52.089947414755208], - [14.607098422919645, 51.745188096719964], - [15.016995883858781, 51.106674099321701], - [14.570718214586119, 51.002339382524369], - [14.307013380600662, 51.117267767941364], - [14.05622765468831, 50.92691762959435], - [13.338131951560397, 50.733234361364268], - [12.966836785543249, 50.484076443069164], - [12.240111118222668, 50.266337795607214], - [12.41519087082747, 49.969120795280602], - [12.521024204161332, 49.547415269562741], - [13.031328973043513, 49.307068182973232], - [13.595945672264575, 48.877171942737156], - [13.243357374737112, 48.416114813829026], - [12.884102817443873, 48.289145819687846], - [13.025851271220514, 47.637583523135945], - [12.93262698736606, 47.467645575543983], - [12.620759718484519, 47.672387600284409], - [12.141357456112869, 47.703083401065768], - [11.426414015354847, 47.523766181013045], - [10.544504021861597, 47.566399237653783], - [10.402083774465321, 47.302487697939164], - [9.896068149463188, 47.58019684507569], - [9.594226108446376, 47.525058091820185], - [8.522611932009793, 47.830827541691342], - [8.317301466514092, 47.613579820336263], - [7.466759067422286, 47.620581976911907], - [7.59367638513106, 48.333019110703724], - [8.099278598674855, 49.017783515003423], - [6.658229607783709, 49.201958319691627], - [6.186320428094176, 49.4638028021145], - [6.242751092156992, 49.90222565367872], - [6.043073357781109, 50.128051662794221], - [6.156658155958779, 50.803721015010574], - [5.988658074577812, 51.85161570902504], - [6.589396599970825, 51.85202912048338], - [6.842869500362381, 52.228440253297542], - [7.092053256873895, 53.14404328064488], - [6.905139601274128, 53.482162177130633], - [7.100424838905268, 53.693932196662658], - [7.936239454793961, 53.748295803433777], - [8.121706170289483, 53.527792466844275], - [8.800734490604667, 54.02078563090889], - [8.572117954145368, 54.395646470754045], - [8.526229282270206, 54.962743638725144], - [9.282048780971136, 54.830865383516297], - [9.92190636560923, 54.983104153048025] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Djibouti", "name": "Djibouti", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [43.081226027200152, 12.699638576707112], - [43.317852410664663, 12.390148423711022], - [43.286381463398911, 11.974928290245883], - [42.715873650896519, 11.735640570518338], - [43.145304803242126, 11.462039699748853], - [42.776851841000948, 10.926878566934416], - [42.55493000000012, 11.105110000000193], - [42.314140000000116, 11.0342], - [41.755570000000191, 11.05091], - [41.739590000000177, 11.355110000000137], - [41.661760000000122, 11.6312], - [42.000000000000107, 12.100000000000133], - [42.351560000000106, 12.54223000000013], - [42.779642368344739, 12.455415757695672], - [43.081226027200152, 12.699638576707112] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Denmark", "name": "Denmark", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [12.690006137755629, 55.60999095318077], - [12.089991082414738, 54.800014553437919], - [11.043543328504226, 55.36486379660424], - [10.90391360845163, 55.779954738988735], - [12.370904168353288, 56.111407375708822], - [12.690006137755629, 55.60999095318077] - ] - ], - [ - [ - [10.912181837618359, 56.4586213242779], - [10.667803989309986, 56.081383368547208], - [10.369992710011983, 56.190007229224719], - [9.649984978889306, 55.469999498102041], - [9.921906365609173, 54.983104153048046], - [9.282048780971136, 54.830865383516155], - [8.526229282270235, 54.962743638724973], - [8.120310906617588, 55.517722683323612], - [8.089976840862247, 56.540011705137587], - [8.256581658571262, 56.809969387430286], - [8.543437534223385, 57.110002753316891], - [9.424469028367609, 57.172066148499468], - [9.775558709358561, 57.447940782289649], - [10.580005730846151, 57.730016587954843], - [10.54610599126269, 57.21573273378614], - [10.250000034230222, 56.890016181050456], - [10.369992710011983, 56.60998159446082], - [10.912181837618359, 56.4586213242779] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Dominican Republic", - "name": "Dominican Rep.", - "continent": "North America" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-71.71236141629295, 19.714455878167353], - [-71.587304450146604, 19.884910590082093], - [-70.806706102161726, 19.880285549391981], - [-70.214364997016119, 19.622885240146157], - [-69.950815192327568, 19.647999986240002], - [-69.769250047470067, 19.293267116772437], - [-69.222125820579862, 19.313214219637096], - [-69.254346076113819, 19.015196234609871], - [-68.809411994080818, 18.979074408437846], - [-68.317943284768958, 18.612197577381689], - [-68.689315965434503, 18.205142320218609], - [-69.164945848248905, 18.422648423735108], - [-69.623987596297624, 18.380712998930246], - [-69.952933926051529, 18.428306993071057], - [-70.133232998317879, 18.245915025296892], - [-70.517137213814195, 18.184290879788829], - [-70.669298468697619, 18.42688589118303], - [-70.999950120717173, 18.283328762276206], - [-71.400209927033885, 17.598564357976596], - [-71.657661912712001, 17.757572740138695], - [-71.708304816358037, 18.044997056546091], - [-71.687737596305865, 18.316660061104468], - [-71.945112067335543, 18.616900132720257], - [-71.701302659782485, 18.785416978424049], - [-71.624873216422813, 19.169837958243303], - [-71.71236141629295, 19.714455878167353] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Algeria", "name": "Algeria", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [11.99950564947161, 23.471668402596443], - [8.572893100629782, 21.565660712159136], - [5.677565952180684, 19.601206976799713], - [4.267419467800038, 19.155265204336995], - [3.158133172222704, 19.057364203360034], - [3.146661004253899, 19.693578599521441], - [2.683588494486428, 19.856230170160114], - [2.060990838233919, 20.142233384679482], - [1.823227573259032, 20.61080943448604], - [-1.550054897457613, 22.792665920497377], - [-4.92333736817423, 24.974574082940993], - [-8.684399786809051, 27.395744126895998], - [-8.66512447756419, 27.58947907155822], - [-8.665589565454805, 27.656425889592349], - [-8.674116176782972, 28.841288967396572], - [-7.059227667661928, 29.579228420524522], - [-6.060632290053772, 29.731699734001687], - [-5.242129278982786, 30.000443020135581], - [-4.859646165374469, 30.501187649043839], - [-3.690441046554695, 30.896951605751152], - [-3.647497931320145, 31.637294012980668], - [-3.068980271812647, 31.724497992473207], - [-2.616604783529567, 32.094346218386143], - [-1.30789913573787, 32.262888902306095], - [-1.124551153966308, 32.651521511357124], - [-1.388049282222567, 32.864015000941301], - [-1.733454555661467, 33.91971283623198], - [-1.792985805661686, 34.527918606091198], - [-2.169913702798624, 35.168396307916673], - [-1.208602871089056, 35.71484874118709], - [-0.127454392894606, 35.888662421200799], - [0.503876580415209, 36.301272894835272], - [1.466918572606545, 36.605647081034398], - [3.161698846050824, 36.783904934225205], - [4.815758090849129, 36.865036932923452], - [5.320120070017792, 36.716518866516616], - [6.261819695672611, 37.110655015606731], - [7.330384962603969, 37.118380642234364], - [7.737078484741003, 36.885707505840209], - [8.420964389691674, 36.946427313783154], - [8.217824334352313, 36.433176988260271], - [8.376367628623766, 35.479876003555937], - [8.140981479534302, 34.655145982393783], - [7.524481642292242, 34.097376410451453], - [7.612641635782181, 33.344114895148955], - [8.430472853233367, 32.748337307255944], - [8.439102817426116, 32.506284898400814], - [9.055602654668148, 32.102691962201284], - [9.482139926805273, 30.307556057246181], - [9.805634392952411, 29.424638373323383], - [9.859997999723443, 28.959989732371007], - [9.683884718472765, 28.144173895779193], - [9.756128370816779, 27.688258571884141], - [9.629056023811073, 27.140953477480913], - [9.716285841519747, 26.512206325785691], - [9.319410841518161, 26.094324856057447], - [9.910692579801774, 25.365454616796733], - [9.948261346077969, 24.93695364023251], - [10.30384687667836, 24.37931325937091], - [10.771363559622925, 24.562532050061744], - [11.560669386449002, 24.097909247325511], - [11.99950564947161, 23.471668402596443] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ecuador", "name": "Ecuador", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-80.302560594387188, -3.404856459164712], - [-79.770293341780913, -2.65751189535964], - [-79.986559210922394, -2.220794366061014], - [-80.368783942369234, -2.685158786635788], - [-80.967765469064332, -2.246942640800703], - [-80.764806281238023, -1.965047702648532], - [-80.933659023751702, -1.057454522306358], - [-80.583370327461239, -0.906662692878683], - [-80.39932471385373, -0.283703301600141], - [-80.020898200180355, 0.360340074053468], - [-80.090609707342097, 0.768428859862396], - [-79.542762010399784, 0.982937730305963], - [-78.855258755188686, 1.380923773601822], - [-77.855061408179509, 0.809925034992773], - [-77.668612840470416, 0.825893052570961], - [-77.424984300430367, 0.395686753741117], - [-76.576379767549383, 0.256935533037435], - [-76.292314419240938, 0.416047268064119], - [-75.801465827116587, 0.084801337073202], - [-75.373223232713841, -0.15203175212045], - [-75.233722703741932, -0.911416924649529], - [-75.544995693652027, -1.56160979574588], - [-76.635394253226707, -2.608677666843817], - [-77.83790483265858, -3.003020521663103], - [-78.450683966775628, -3.873096612161375], - [-78.639897223612323, -4.547784112164072], - [-79.205289069317715, -4.959128513207388], - [-79.62497921417615, -4.454198093283494], - [-80.028908047185581, -4.346090996928893], - [-80.442241990872134, -4.425724379090673], - [-80.46929460317692, -4.059286797708999], - [-80.184014858709645, -3.821161797708043], - [-80.302560594387188, -3.404856459164712] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Egypt", "name": "Egypt", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.9226, 29.50133], - [34.64174, 29.09942], - [34.42655, 28.34399], - [34.15451, 27.8233], - [33.92136, 27.6487], - [33.58811, 27.97136], - [33.13676, 28.41765], - [32.42323, 29.85108], - [32.32046, 29.76043], - [32.73482, 28.70523], - [33.34876, 27.69989], - [34.10455, 26.14227], - [34.47387, 25.59856], - [34.79507, 25.03375], - [35.69241, 23.92671], - [35.49372, 23.75237], - [35.52598, 23.10244], - [36.69069, 22.20485], - [36.86623, 22.0], - [32.9, 22.0], - [29.02, 22.0], - [25.0, 22.0], - [25.0, 25.682499996360992], - [25.0, 29.238654529533452], - [24.70007, 30.04419], - [24.95762, 30.6616], - [24.80287, 31.08929], - [25.16482, 31.56915], - [26.49533, 31.58568], - [27.45762, 31.32126], - [28.45048, 31.02577], - [28.91353, 30.87005], - [29.68342, 31.18686], - [30.09503, 31.4734], - [30.97693, 31.55586], - [31.68796, 31.4296], - [31.96041, 30.9336], - [32.19247, 31.26034], - [32.99392, 31.02407], - [33.7734, 30.96746], - [34.26544, 31.21936], - [34.9226, 29.50133] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Eritrea", "name": "Eritrea", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [42.351560000000106, 12.54223000000013], - [42.00975, 12.86582], - [41.59856, 13.452090000000108], - [41.15519371924983, 13.773319810435224], - [40.8966, 14.118640000000138], - [40.026218702969167, 14.519579169162281], - [39.34061, 14.53155], - [39.0994, 14.74064], - [38.51295, 14.50547], - [37.90607, 14.959430000000165], - [37.59377, 14.2131], - [36.42951, 14.42211], - [36.323188917798113, 14.822480577041057], - [36.753860304518575, 16.291874091044289], - [36.852530000000108, 16.95655], - [37.16747, 17.263140000000128], - [37.904000000000103, 17.42754], - [38.410089959473218, 17.998307399970312], - [38.990622999839999, 16.84062612555169], - [39.266110060388016, 15.922723496967246], - [39.814293654140208, 15.435647284400314], - [41.179274936697645, 14.491079616753209], - [41.734951613132345, 13.921036892141554], - [42.276830682144848, 13.34399201095442], - [42.589576450375255, 13.000421250861901], - [43.081226027200152, 12.699638576707112], - [42.779642368344739, 12.455415757695672], - [42.351560000000106, 12.54223000000013] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Spain", "name": "Spain", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-9.034817674180244, 41.880570583659669], - [-8.98443315269567, 42.592775173506261], - [-9.392883673530644, 43.026624660812686], - [-7.978189663108308, 43.748337714200979], - [-6.754491746436754, 43.567909450853918], - [-5.411886359061596, 43.574239813809669], - [-4.347842779955783, 43.403449205085025], - [-3.51753170410609, 43.455900783861296], - [-1.901351284177764, 43.422802028978332], - [-1.502770961910528, 43.034014390630425], - [0.338046909190581, 42.579546006839543], - [0.701590610363894, 42.795734361332599], - [1.826793247087153, 42.343384711265678], - [2.985998976258457, 42.473015041669854], - [3.039484083680548, 41.892120266276891], - [2.091841668312184, 41.226088568683082], - [0.810524529635188, 41.014731960609332], - [0.721331007499401, 40.678318386389229], - [0.106691521819869, 40.123933620762003], - [-0.278711310212941, 39.309978135732713], - [0.111290724293838, 38.738514309233032], - [-0.467123582349103, 38.292365831041138], - [-0.683389451490598, 37.642353827457811], - [-1.438382127274849, 37.443063666324214], - [-2.146452602538119, 36.674144192037282], - [-3.415780808923386, 36.658899644511173], - [-4.368900926114718, 36.677839056946141], - [-4.995219285492211, 36.32470815687963], - [-5.377159796561457, 35.946850083961458], - [-5.866432257500902, 36.02981659600605], - [-6.236693894872174, 36.367677110330327], - [-6.520190802425402, 36.942913316387312], - [-7.45372555177809, 37.097787583966053], - [-7.537105475281022, 37.428904323876232], - [-7.166507941099863, 37.803894354802217], - [-7.029281175148794, 38.075764065089757], - [-7.374092169616317, 38.373058580064914], - [-7.098036668313126, 39.03007274022378], - [-7.498632371439724, 39.629571031241802], - [-7.066591559263527, 39.711891587882768], - [-7.026413133156593, 40.184524237624238], - [-6.864019944679383, 40.330871893874821], - [-6.851126674822551, 41.111082668617513], - [-6.389087693700914, 41.381815497394641], - [-6.668605515967655, 41.883386949219577], - [-7.251308966490822, 41.91834605566504], - [-7.422512986673794, 41.792074693359822], - [-8.01317460776991, 41.790886135417118], - [-8.26385698081779, 42.280468654950326], - [-8.671945766626719, 42.134689439454952], - [-9.034817674180244, 41.880570583659669] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Estonia", "name": "Estonia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [24.312862583114615, 57.793423570376966], - [24.428927850042154, 58.383413397853275], - [24.061198357853179, 58.257374579493394], - [23.426560092876681, 58.612753404364618], - [23.339795363058641, 59.187240302153363], - [24.604214308376182, 59.465853786855007], - [25.864189080516631, 59.611090399811324], - [26.949135776484518, 59.445803331125767], - [27.981114129353237, 59.47538808861286], - [28.131699253051742, 59.300825100330904], - [27.420166456824941, 58.724581203844224], - [27.716685825315714, 57.791899115624354], - [27.288184848751509, 57.474528306703817], - [26.46353234223778, 57.476388658266316], - [25.602809685984365, 57.847528794986559], - [25.164593540149262, 57.970156968815175], - [24.312862583114615, 57.793423570376966] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ethiopia", "name": "Ethiopia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [37.90607, 14.959430000000165], - [38.51295, 14.50547], - [39.0994, 14.74064], - [39.34061, 14.53155], - [40.026250000000111, 14.51959], - [40.8966, 14.118640000000138], - [41.1552, 13.77333], - [41.59856, 13.452090000000108], - [42.00975, 12.86582], - [42.351560000000106, 12.54223000000013], - [42.000000000000107, 12.100000000000133], - [41.661760000000122, 11.6312], - [41.739590000000177, 11.355110000000137], - [41.755570000000191, 11.05091], - [42.314140000000116, 11.0342], - [42.55493000000012, 11.105110000000193], - [42.776851841000948, 10.926878566934416], - [42.55876, 10.572580000000126], - [42.92812, 10.021940000000139], - [43.29699, 9.540480000000169], - [43.67875, 9.183580000000116], - [46.94834, 7.99688], - [47.78942, 8.003], - [44.9636, 5.001620000000115], - [43.66087, 4.95755], - [42.769670000000119, 4.252590000000223], - [42.12861, 4.234130000000163], - [41.855083092644108, 3.918911920483764], - [41.171800000000125, 3.91909], - [40.768480000000118, 4.257020000000124], - [39.854940000000106, 3.83879000000013], - [39.559384258765917, 3.422060000000215], - [38.89251, 3.50074], - [38.67114, 3.61607], - [38.436970000000137, 3.58851], - [38.120915000000132, 3.598605], - [36.85509323800823, 4.447864127672857], - [36.159078632855646, 4.447864127672857], - [35.817447662353622, 4.776965663462021], - [35.817447662353622, 5.338232082790852], - [35.298007118233095, 5.506], - [34.70702, 6.59422000000012], - [34.25032, 6.82607], - [34.075100000000184, 7.22595], - [33.56829, 7.71334], - [32.954180000000228, 7.7849700000001], - [33.294800000000116, 8.35458], - [33.82550000000014, 8.37916], - [33.97498, 8.684560000000145], - [33.96162, 9.58358], - [34.25745, 10.63009], - [34.73115000000012, 10.910170000000106], - [34.831630000000125, 11.318960000000116], - [35.26049, 12.08286], - [35.863630000000164, 12.57828], - [36.27022, 13.563330000000118], - [36.42951, 14.42211], - [37.59377, 14.2131], - [37.90607, 14.959430000000165] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Finland", "name": "Finland", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [28.591929559043187, 69.064776923286644], - [28.445943637818651, 68.36461294216403], - [29.9774263852206, 67.698297024192641], - [29.054588657352319, 66.944286200621917], - [30.21765, 65.80598], - [29.544429559046982, 64.948671576590471], - [30.444684686003704, 64.204453436939076], - [30.035872430142714, 63.552813625738544], - [31.516092156711117, 62.867687486412869], - [31.139991082490891, 62.357692776124395], - [30.211107212044443, 61.780027777749673], - [28.06999759289527, 60.503516547275829], - [26.25517296723697, 60.423960679762487], - [24.496623976344516, 60.057316392651636], - [22.869694858499454, 59.846373196036211], - [22.290763787533589, 60.391921291741525], - [21.322244093519313, 60.720169989659503], - [21.544866163832687, 61.705329494871783], - [21.059211053153682, 62.607393296958726], - [21.536029493910799, 63.189735012455863], - [22.442744174903986, 63.817810370531276], - [24.730511508897528, 64.902343655040823], - [25.398067661243939, 65.111426500093728], - [25.2940430030404, 65.53434642197044], - [23.903378533633795, 66.006927395279604], - [23.565879754335576, 66.396050930437411], - [23.539473097434435, 67.936008612735236], - [21.978534783626113, 68.616845608180682], - [20.645592889089521, 69.106247260200846], - [21.244936150810666, 69.370443020293067], - [22.356237827247405, 68.841741441514898], - [23.662049594830751, 68.891247463650529], - [24.735679152126721, 68.649556789821446], - [25.689212680776361, 69.092113755969024], - [26.179622023226241, 69.825298977326113], - [27.732292107867856, 70.164193020296239], - [29.015572950971968, 69.766491197377974], - [28.591929559043187, 69.064776923286644] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Fiji", "name": "Fiji", "continent": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [178.3736, -17.33992], - [178.71806, -17.62846], - [178.55271, -18.15059], - [177.93266, -18.28799], - [177.38146, -18.16432], - [177.28504, -17.72465], - [177.67087, -17.38114], - [178.12557, -17.50481], - [178.3736, -17.33992] - ] - ], - [ - [ - [179.364142661964223, -16.801354076946847], - [178.725059362997058, -17.012041674368017], - [178.596838595117021, -16.63915], - [179.096609362997128, -16.43398427754742], - [179.413509362997075, -16.379054277547393], - [180.000000000000114, -16.067132663642436], - [180.000000000000114, -16.555216566639157], - [179.364142661964223, -16.801354076946847] - ] - ], - [ - [ - [-179.917369384765237, -16.501783135649358], - [-180.0, -16.555216566639157], - [-180.0, -16.067132663642436], - [-179.793320109048551, -16.020882256741228], - [-179.917369384765237, -16.501783135649358] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Falkland Islands", - "name": "Falkland Is.", - "continent": "South America" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-61.2, -51.85], - [-60.0, -51.25], - [-59.15, -51.5], - [-58.55, -51.1], - [-57.75, -51.55], - [-58.05, -51.9], - [-59.4, -52.2], - [-59.85, -51.85], - [-60.7, -52.3], - [-61.2, -51.85] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "France", "name": "France", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-52.556424730018378, 2.504705308437053], - [-52.939657151894963, 2.124857692875622], - [-53.41846513529525, 2.053389187016037], - [-53.554839240113481, 2.334896551925964], - [-53.778520677288881, 2.376702785650053], - [-54.088062506717264, 2.105556545414629], - [-54.524754197799737, 2.311848863123785], - [-54.271229620975781, 2.738747870286942], - [-54.184284023644743, 3.194172268075234], - [-54.011503872276812, 3.622569891774857], - [-54.3995422023565, 4.212611395683481], - [-54.478632981979203, 4.896755682795642], - [-53.958044603070917, 5.756548163267808], - [-53.618452928264837, 5.646529038918401], - [-52.882141282754063, 5.409850979021598], - [-51.823342861525916, 4.565768133966144], - [-51.657797410678874, 4.156232408053028], - [-52.249337531123977, 3.241094468596287], - [-52.556424730018378, 2.504705308437053] - ] - ], - [ - [ - [9.560016310269132, 42.152491970379558], - [9.229752231491771, 41.380006822264441], - [8.77572309737536, 41.583611965494427], - [8.544212680707828, 42.256516628583078], - [8.746009148807586, 42.628121853193946], - [9.390000848028901, 43.009984849614725], - [9.560016310269132, 42.152491970379558] - ] - ], - [ - [ - [3.588184441755714, 50.378992418003563], - [4.28602298342514, 49.90749664977254], - [4.799221632515752, 49.985373033236314], - [5.674051954784885, 49.529483547557433], - [5.897759230176375, 49.442667141307155], - [6.186320428094204, 49.463802802114444], - [6.658229607783538, 49.201958319691549], - [8.09927859867477, 49.017783515003366], - [7.59367638513106, 48.333019110703724], - [7.466759067422228, 47.620581976911851], - [7.192202182655533, 47.449765529970982], - [6.736571079138086, 47.541801255882874], - [6.768713820023634, 47.287708238303672], - [6.037388950228971, 46.725778713561894], - [6.022609490593566, 46.272989813820502], - [6.500099724970453, 46.429672756529428], - [6.84359297041456, 45.991146552100659], - [6.80235517744566, 45.708579820328673], - [7.096652459347835, 45.333098863295859], - [6.749955275101711, 45.028517971367584], - [7.007562290076661, 44.254766750661382], - [7.549596388386161, 44.127901109384808], - [7.435184767291841, 43.693844916349164], - [6.529245232783068, 43.12889232031835], - [4.556962517931395, 43.399650987311581], - [3.100410597352719, 43.075200507167118], - [2.985998976258486, 42.473015041669882], - [1.826793247087181, 42.343384711265649], - [0.701590610363922, 42.795734361332642], - [0.338046909190581, 42.57954600683955], - [-1.502770961910471, 43.034014390630482], - [-1.901351284177735, 43.422802028978332], - [-1.384225226232956, 44.022610378590166], - [-1.193797573237361, 46.014917710954862], - [-2.225724249673788, 47.064362697938201], - [-2.963276129559573, 47.570326646507958], - [-4.491554938159481, 47.95495433205641], - [-4.592349819344746, 48.68416046812694], - [-3.295813971357745, 48.901692409859628], - [-1.616510789384932, 48.644421291694577], - [-1.933494025063254, 49.776341864615759], - [-0.98946895995536, 49.347375800160869], - [1.338761020522753, 50.127173163445256], - [1.6390010921385, 50.9466063502975], - [2.51357303224617, 51.14850617126185], - [2.65842207196033, 50.796848049515646], - [3.123251580425716, 50.780363267614504], - [3.588184441755714, 50.378992418003563] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Gabon", "name": "Gabon", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [11.093772820691923, -3.978826592630546], - [10.066135288135738, -2.969482517105681], - [9.405245395554969, -2.144313246269042], - [8.797995639693168, -1.111301364754496], - [8.830086704146423, -0.779073581550037], - [9.048419630579586, -0.459351494960217], - [9.291350538783687, 0.268666083167687], - [9.492888624721981, 1.010119533691494], - [9.83028405115564, 1.067893784993799], - [11.285078973036461, 1.057661851400013], - [11.276449008843711, 2.261050930180871], - [11.751665480199787, 2.326757513839993], - [12.359380323952218, 2.19281220133945], - [12.951333855855605, 2.321615708826939], - [13.07582238124675, 2.267097072759014], - [13.003113641012074, 1.830896307783319], - [13.282631463278816, 1.31418366129688], - [14.026668735417214, 1.395677395021153], - [14.276265903386953, 1.196929836426619], - [13.843320753645653, 0.038757635901149], - [14.316418491277741, -0.552627455247048], - [14.425455763413593, -1.333406670744971], - [14.299210239324564, -1.998275648612213], - [13.992407260807706, -2.470804945489099], - [13.109618767965626, -2.428740329603513], - [12.575284458067639, -1.948511244315134], - [12.495702752338159, -2.391688327650242], - [11.820963575903189, -2.514161472181982], - [11.478038771214299, -2.765618991714241], - [11.855121697648114, -3.42687061932105], - [11.093772820691923, -3.978826592630546] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "United Kingdom", "name": "United Kingdom", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-5.661948614921896, 54.554603176483838], - [-6.197884894220976, 53.867565009163329], - [-6.953730231137994, 54.073702297575622], - [-7.572167934591078, 54.059956366585979], - [-7.366030646178785, 54.595840969452688], - [-7.572167934591078, 55.131622219454883], - [-6.733847011736144, 55.172860012423783], - [-5.661948614921896, 54.554603176483838] - ] - ], - [ - [ - [-3.00500484863528, 58.635000108466322], - [-4.073828497728015, 57.55302480735525], - [-3.055001796877661, 57.690019029360933], - [-1.959280564776918, 57.684799709699512], - [-2.219988165689301, 56.870017401753515], - [-3.119003058271118, 55.97379303651546], - [-2.085009324543023, 55.909998480851264], - [-2.005675679673856, 55.804902850350217], - [-1.11499101399221, 54.624986477265388], - [-0.4304849918542, 54.464376125702145], - [0.184981316742039, 53.325014146531018], - [0.469976840831777, 52.929999498091959], - [1.681530795914739, 52.739520168663987], - [1.559987827164377, 52.099998480836], - [1.050561557630914, 51.806760565795678], - [1.4498653499503, 51.289427802121949], - [0.550333693045502, 50.765738837275862], - [-0.787517462558639, 50.774988918656206], - [-2.489997524414377, 50.500018622431227], - [-2.956273972984035, 50.696879991247002], - [-3.617448085942327, 50.228355617872708], - [-4.542507900399243, 50.341837063185658], - [-5.245023159191134, 49.959999904981082], - [-5.776566941745299, 50.159677639356815], - [-4.309989793301837, 51.210001125689146], - [-3.414850633142122, 51.426008612669236], - [-3.422719467108322, 51.426848167406078], - [-4.984367234710873, 51.593466091510962], - [-5.267295701508885, 51.991400458374571], - [-4.222346564134852, 52.30135569926135], - [-4.770013393564112, 52.840004991255611], - [-4.579999152026914, 53.495003770555165], - [-3.093830673788658, 53.404547400669671], - [-3.092079637047106, 53.404440822963544], - [-2.945008510744343, 53.98499970154667], - [-3.614700825433033, 54.60093677329256], - [-3.63000545898933, 54.615012925833], - [-4.844169073903003, 54.790971177786837], - [-5.082526617849224, 55.061600653699358], - [-4.719112107756643, 55.508472601943467], - [-5.047980922862108, 55.783985500707516], - [-5.586397670911139, 55.311146145236805], - [-5.64499874513018, 56.275014960344791], - [-6.149980841486352, 56.785009670633528], - [-5.78682471355529, 57.818848375064633], - [-5.009998745127574, 58.630013332750039], - [-4.211494513353555, 58.550845038479153], - [-3.00500484863528, 58.635000108466322] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Georgia", "name": "Georgia", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [41.55408410011065, 41.535656236327561], - [41.703170607272703, 41.962942816732912], - [41.453470086438379, 42.645123399417926], - [40.875469191253785, 43.013628038091277], - [40.321394484220313, 43.128633938156831], - [39.955008579270917, 43.434997666999216], - [40.07696495947976, 43.553104153002309], - [40.922184686045618, 43.38215851498078], - [42.394394565608806, 43.220307929042619], - [43.756016880067378, 42.74082815202248], - [43.931199985536828, 42.554973863284758], - [44.537622918481979, 42.71199270280362], - [45.470279168485703, 42.502780666669963], - [45.776410353382758, 42.09244395605635], - [46.404950799348818, 41.860675157227298], - [46.145431756379004, 41.722802435872573], - [46.637908156120574, 41.181672675128219], - [46.501637404166921, 41.064444688474104], - [45.962600538930381, 41.123872585609767], - [45.217426385281577, 41.411451931314041], - [44.972480096218071, 41.248128567055588], - [43.582745802592726, 41.09214325618256], - [42.619548781104484, 41.583172715819934], - [41.55408410011065, 41.535656236327561] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ghana", "name": "Ghana", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [1.060121697604927, 5.928837388528875], - [-0.507637905265938, 5.343472601742675], - [-1.063624640294193, 5.000547797053811], - [-1.964706590167594, 4.71046214438337], - [-2.856125047202397, 4.994475816259508], - [-2.810701463217839, 5.389051215024109], - [-3.244370083011261, 6.2504715031135], - [-2.983584967450326, 7.379704901555511], - [-2.56218950032624, 8.219627793811481], - [-2.827496303712706, 9.642460842319775], - [-2.963896246747111, 10.395334784380081], - [-2.94040930827046, 10.962690334512557], - [-1.203357713211431, 11.009819240762736], - [-0.761575893548183, 10.936929633015053], - [-0.438701544588582, 11.09834096927872], - [0.023802524423701, 11.018681748900802], - [-0.049784715159944, 10.706917832883928], - [0.367579990245389, 10.191212876827176], - [0.365900506195885, 9.46500397382948], - [0.461191847342121, 8.677222601756013], - [0.712029249686878, 8.312464504423827], - [0.490957472342245, 7.411744289576474], - [0.570384148774849, 6.914358628767188], - [0.836931186536333, 6.279978745952147], - [1.060121697604927, 5.928837388528875] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Guinea", "name": "Guinea", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-8.439298468448696, 7.686042792181736], - [-8.722123582382123, 7.711674302598509], - [-8.926064622422002, 7.309037380396375], - [-9.208786383490844, 7.313920803247952], - [-9.403348151069748, 7.526905218938906], - [-9.33727983238458, 7.928534450711351], - [-9.755342169625832, 8.541055202666923], - [-10.016566534861253, 8.42850393313523], - [-10.230093553091276, 8.406205552601291], - [-10.505477260774667, 8.348896389189603], - [-10.494315151399629, 8.715540676300433], - [-10.65477047366589, 8.977178452994194], - [-10.622395188835037, 9.267910061068276], - [-10.839151984083299, 9.688246161330367], - [-11.117481248407328, 10.045872911006283], - [-11.917277390988655, 10.046983954300556], - [-12.150338100625003, 9.858571682164378], - [-12.425928514037562, 9.835834051955953], - [-12.596719122762206, 9.620188300001969], - [-12.711957566773076, 9.342711696810765], - [-13.246550258832512, 8.903048610871506], - [-13.685153977909788, 9.494743760613458], - [-14.074044969122278, 9.886166897008248], - [-14.330075852912367, 10.015719712763966], - [-14.579698859098254, 10.214467271358513], - [-14.693231980843501, 10.65630076745404], - [-14.83955379887794, 10.876571560098139], - [-15.130311245168167, 11.040411688679525], - [-14.685687221728896, 11.527823798056485], - [-14.382191534878727, 11.509271958863691], - [-14.121406419317776, 11.677117010947693], - [-13.900799729863772, 11.678718980348744], - [-13.743160773157411, 11.811269029177408], - [-13.828271857142122, 12.142644151249041], - [-13.718743658899511, 12.247185573775507], - [-13.700476040084322, 12.586182969610192], - [-13.217818162478235, 12.575873521367964], - [-12.499050665730561, 12.332089952031053], - [-12.278599005573438, 12.354440008997285], - [-12.20356482588563, 12.465647691289401], - [-11.658300950557928, 12.386582749882834], - [-11.513942836950587, 12.442987575729415], - [-11.456168585648269, 12.076834214725336], - [-11.297573614944508, 12.077971096235768], - [-11.036555955438256, 12.211244615116513], - [-10.870829637078211, 12.177887478072106], - [-10.593223842806278, 11.923975328005977], - [-10.165213792348835, 11.844083563682743], - [-9.890992804392011, 12.060478623904968], - [-9.567911749703212, 12.194243068892472], - [-9.327616339546008, 12.334286200403451], - [-9.127473517279581, 12.308060411015331], - [-8.905264858424529, 12.088358059126433], - [-8.786099005559462, 11.812560939984705], - [-8.376304897484911, 11.393645941610627], - [-8.581305304386772, 11.136245632364801], - [-8.620321010767126, 10.810890814655181], - [-8.407310756860026, 10.90925690352276], - [-8.282357143578279, 10.792597357623842], - [-8.335377163109738, 10.494811916541932], - [-8.029943610048617, 10.206534939001711], - [-8.22933712404682, 10.129020290563897], - [-8.309616461612249, 9.789531968622439], - [-8.079113735374348, 9.376223863152033], - [-7.832100389019186, 8.575704250518625], - [-8.203498907900878, 8.455453192575446], - [-8.299048631208562, 8.316443589710302], - [-8.221792364932197, 8.123328762235571], - [-8.280703497744936, 7.687179673692156], - [-8.439298468448696, 7.686042792181736] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Gambia", "name": "Gambia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-16.84152462408127, 13.151393947802557], - [-16.713728807023468, 13.594958604379853], - [-15.624596320039936, 13.623587347869556], - [-15.398770310924457, 13.860368760630916], - [-15.081735398813816, 13.876491807505982], - [-14.687030808968483, 13.63035696049978], - [-14.376713833055785, 13.625680243377371], - [-14.046992356817478, 13.794067898000446], - [-13.844963344772404, 13.505041612191999], - [-14.277701788784553, 13.28058502853224], - [-14.712197231494626, 13.298206691943774], - [-15.141163295949463, 13.509511623585235], - [-15.511812506562931, 13.278569647672864], - [-15.691000535534991, 13.270353094938455], - [-15.931295945692208, 13.130284125211331], - [-16.84152462408127, 13.151393947802557] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Guinea Bissau", "name": "Guinea-Bissau", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-15.130311245168167, 11.040411688679525], - [-15.664180467175523, 11.458474025920792], - [-16.085214199273562, 11.524594021038236], - [-16.314786749730199, 11.806514797406548], - [-16.308947312881227, 11.958701890506116], - [-16.613838263403277, 12.170911159712698], - [-16.67745195155457, 12.38485158940105], - [-16.147716844130581, 12.547761542201185], - [-15.816574266004251, 12.515567124883345], - [-15.548476935274005, 12.628170070847343], - [-13.700476040084322, 12.586182969610192], - [-13.718743658899511, 12.247185573775507], - [-13.828271857142122, 12.142644151249041], - [-13.743160773157411, 11.811269029177408], - [-13.900799729863772, 11.678718980348744], - [-14.121406419317776, 11.677117010947693], - [-14.382191534878727, 11.509271958863691], - [-14.685687221728896, 11.527823798056485], - [-15.130311245168167, 11.040411688679525] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Equatorial Guinea", "name": "Eq. Guinea", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.492888624721981, 1.010119533691494], - [9.305613234096255, 1.160911363119183], - [9.649158155972627, 2.283866075037735], - [11.276449008843711, 2.261050930180871], - [11.285078973036461, 1.057661851400013], - [9.83028405115564, 1.067893784993799], - [9.492888624721981, 1.010119533691494] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Greece", "name": "Greece", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [23.699980096133, 35.705004380835526], - [24.246665073348673, 35.368022365860149], - [25.025015496528873, 35.424995632461979], - [25.769207797964182, 35.354018052709073], - [25.745023227651579, 35.179997666966209], - [26.290002882601719, 35.299990342747911], - [26.164997592887651, 35.004995429009789], - [24.724982130642299, 34.919987697889603], - [24.735007358506941, 35.084990546197581], - [23.514978468528106, 35.27999156345097], - [23.699980096133, 35.705004380835526] - ] - ], - [ - [ - [26.604195590936282, 41.562114569661098], - [26.294602085075777, 40.936261298174244], - [26.056942172965499, 40.824123440100827], - [25.44767703624418, 40.852545477861455], - [24.925848422960932, 40.947061672523226], - [23.714811232200809, 40.687129218095116], - [24.407998894964063, 40.124992987624083], - [23.89996788910258, 39.962005520175573], - [23.342999301860797, 39.960997829745786], - [22.813987664488959, 40.476005153966547], - [22.626298862404777, 40.256561184239175], - [22.849747755634805, 39.659310818025759], - [23.350027296652595, 39.190011298167256], - [22.97309939951554, 38.97090322524965], - [23.53001631032495, 38.51000112563846], - [24.025024855248937, 38.219992987616443], - [24.040011020613601, 37.655014553369419], - [23.115002882589145, 37.920011298162215], - [23.409971958111065, 37.409990749657389], - [22.77497195810863, 37.305010077456551], - [23.154225294698612, 36.422505804992042], - [22.4900281104511, 36.410000108377446], - [21.670026482843692, 36.84498647719419], - [21.295010613701574, 37.644989325504689], - [21.120034213961329, 38.31032339126272], - [20.730032179454579, 38.769985256498778], - [20.217712029712853, 39.340234686839629], - [20.150015903410516, 39.624997666984022], - [20.615000441172779, 40.110006822259422], - [20.67499677906363, 40.434999904943048], - [20.999989861747274, 40.580003973953964], - [21.020040317476422, 40.842726955725873], - [21.674160597426969, 40.931274522457976], - [22.055377638444266, 41.149865831052686], - [22.597308383889008, 41.130487168943198], - [22.76177, 41.3048], - [22.952377150166562, 41.337993882811212], - [23.692073601992455, 41.309080918943849], - [24.492644891058031, 41.583896185872035], - [25.19720136892553, 41.234485988930651], - [26.106138136507177, 41.328898830727823], - [26.11704186372091, 41.826904608724725], - [26.604195590936282, 41.562114569661098] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Greenland", "name": "Greenland", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-46.76379, 82.62796], - [-43.40644, 83.22516], - [-39.89753, 83.18018], - [-38.62214, 83.54905], - [-35.08787, 83.64513], - [-27.10046, 83.51966], - [-20.84539, 82.72669], - [-22.69182, 82.34165], - [-26.51753, 82.29765], - [-31.9, 82.2], - [-31.39646, 82.02154], - [-27.85666, 82.13178], - [-24.84448, 81.78697], - [-22.90328, 82.09317], - [-22.07175, 81.73449], - [-23.16961, 81.15271], - [-20.62363, 81.52462], - [-15.76818, 81.91245], - [-12.77018, 81.71885], - [-12.20855, 81.29154], - [-16.28533, 80.58004], - [-16.85, 80.35], - [-20.04624, 80.17708], - [-17.73035, 80.12912], - [-18.9, 79.4], - [-19.70499, 78.75128], - [-19.67353, 77.63859], - [-18.47285, 76.98565], - [-20.03503, 76.94434], - [-21.67944, 76.62795], - [-19.83407, 76.09808], - [-19.59896, 75.24838], - [-20.66818, 75.15585], - [-19.37281, 74.29561], - [-21.59422, 74.22382], - [-20.43454, 73.81713], - [-20.76234, 73.46436], - [-22.17221, 73.30955], - [-23.56593, 73.30663], - [-22.31311, 72.62928], - [-22.29954, 72.18409], - [-24.27834, 72.59788], - [-24.79296, 72.3302], - [-23.44296, 72.08016], - [-22.13281, 71.46898], - [-21.75356, 70.66369], - [-23.53603, 70.471], - [-24.30702, 70.85649], - [-25.54341, 71.43094], - [-25.20135, 70.75226], - [-26.36276, 70.22646], - [-23.72742, 70.18401], - [-22.34902, 70.12946], - [-25.02927, 69.2588], - [-27.74737, 68.47046], - [-30.67371, 68.12503], - [-31.77665, 68.12078], - [-32.81105, 67.73547], - [-34.20196, 66.67974], - [-36.35284, 65.9789], - [-37.04378, 65.93768], - [-38.37505, 65.69213], - [-39.81222, 65.45848], - [-40.66899, 64.83997], - [-40.68281, 64.13902], - [-41.1887, 63.48246], - [-42.81938, 62.68233], - [-42.41666, 61.90093], - [-42.86619, 61.07404], - [-43.3784, 60.09772], - [-44.7875, 60.03676], - [-46.26364, 60.85328], - [-48.26294, 60.85843], - [-49.23308, 61.40681], - [-49.90039, 62.38336], - [-51.63325, 63.62691], - [-52.14014, 64.27842], - [-52.27659, 65.1767], - [-53.66166, 66.09957], - [-53.30161, 66.8365], - [-53.96911, 67.18899], - [-52.9804, 68.35759], - [-51.47536, 68.72958], - [-51.08041, 69.14781], - [-50.87122, 69.9291], - [-52.013585, 69.574925], - [-52.55792, 69.42616], - [-53.45629, 69.283625], - [-54.68336, 69.61003], - [-54.75001, 70.28932], - [-54.35884, 70.821315], - [-53.431315, 70.835755], - [-51.39014, 70.56978], - [-53.10937, 71.20485], - [-54.00422, 71.54719], - [-55.0, 71.406536967272558], - [-55.83468, 71.65444], - [-54.71819, 72.58625], - [-55.32634, 72.95861], - [-56.12003, 73.64977], - [-57.32363, 74.71026], - [-58.59679, 75.09861], - [-58.58516, 75.51727], - [-61.26861, 76.10238], - [-63.39165, 76.1752], - [-66.06427, 76.13486], - [-68.50438, 76.06141], - [-69.66485, 76.37975], - [-71.40257, 77.00857], - [-68.77671, 77.32312], - [-66.76397, 77.37595], - [-71.04293, 77.63595], - [-73.297, 78.04419], - [-73.15938, 78.43271], - [-69.37345, 78.91388], - [-65.7107, 79.39436], - [-65.3239, 79.75814], - [-68.02298, 80.11721], - [-67.15129, 80.51582], - [-63.68925, 81.21396], - [-62.23444, 81.3211], - [-62.65116, 81.77042], - [-60.28249, 82.03363], - [-57.20744, 82.19074], - [-54.13442, 82.19962], - [-53.04328, 81.88833], - [-50.39061, 82.43883], - [-48.00386, 82.06481], - [-46.59984, 81.985945], - [-44.523, 81.6607], - [-46.9007, 82.19979], - [-46.76379, 82.62796] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Guatemala", "name": "Guatemala", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-90.095554572290951, 13.73533763270073], - [-90.608624030300817, 13.909771429901948], - [-91.232410244496037, 13.927832342987953], - [-91.689746670279106, 14.126218166556452], - [-92.227750006869812, 14.538828640190925], - [-92.203229539747298, 14.830102850804066], - [-92.087215949252041, 15.064584662328436], - [-92.229248623406249, 15.251446641495857], - [-91.747960171255912, 16.066564846251719], - [-90.464472622422647, 16.069562079324651], - [-90.438866950222021, 16.410109768128091], - [-90.600846727240906, 16.470777899638758], - [-90.711821865587694, 16.687483018454724], - [-91.081670091500641, 16.918476670799404], - [-91.453921271515128, 17.252177232324168], - [-91.002269253284197, 17.254657701074176], - [-91.001519945015943, 17.817594916245707], - [-90.067933519230948, 17.819326076727474], - [-89.143080410503302, 17.808318996649316], - [-89.15080603713092, 17.015576687075832], - [-89.229121670269265, 15.886937567605166], - [-88.930612759135244, 15.887273464415072], - [-88.604586147805833, 15.706380113177358], - [-88.518364020526846, 15.855389105690971], - [-88.22502275262201, 15.727722479713901], - [-88.680679694355618, 15.346247056535301], - [-89.15481096063354, 15.066419175674806], - [-89.225220099631244, 14.874286200413618], - [-89.145535041037149, 14.67801911056908], - [-89.353325975282772, 14.424132798719112], - [-89.587342698916544, 14.362586167859485], - [-89.5342193265205, 14.244815578666302], - [-89.7219339668207, 14.134228013561694], - [-90.064677903996568, 13.881969509328924], - [-90.095554572290951, 13.73533763270073] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Guyana", "name": "Guyana", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-59.758284878159181, 8.367034816924045], - [-59.10168412945864, 7.99920197187049], - [-58.482962205628041, 7.347691351750696], - [-58.454876064677414, 6.832787380394463], - [-58.078103196837361, 6.809093736188641], - [-57.542218593970631, 6.321268215353355], - [-57.147436489476874, 5.973149929219161], - [-57.307245856339492, 5.073566595882225], - [-57.914288906472123, 4.812626451024413], - [-57.860209520078691, 4.576801052260449], - [-58.044694383360664, 4.060863552258382], - [-57.601568976457848, 3.334654649260684], - [-57.281433478409703, 3.333491929534119], - [-57.150097825739898, 2.768926906745406], - [-56.53938574891454, 1.89952260986692], - [-56.782704230360814, 1.863710842288653], - [-57.33582292339689, 1.948537705895759], - [-57.660971035377358, 1.682584947105638], - [-58.113449876525003, 1.507195135907025], - [-58.429477098205957, 1.46394196207872], - [-58.540012986878288, 1.26808828369252], - [-59.030861579002639, 1.317697658692722], - [-59.646043667221242, 1.786893825686789], - [-59.718545701726732, 2.249630438644359], - [-59.974524909084543, 2.755232652188055], - [-59.815413174057852, 3.606498521332085], - [-59.538039923731219, 3.958802598481937], - [-59.767405768458701, 4.423502915866606], - [-60.111002366767373, 4.574966538914082], - [-59.980958624904865, 5.014061184098138], - [-60.213683437731319, 5.2444863956876], - [-60.733574184803707, 5.2002772078619], - [-61.410302903881941, 5.959068101419616], - [-61.139415045807937, 6.234296779806142], - [-61.159336310456467, 6.696077378766317], - [-60.543999192940966, 6.856584377464881], - [-60.295668097562377, 7.043911444522918], - [-60.637972785063752, 7.414999904810853], - [-60.550587938058186, 7.779602972846178], - [-59.758284878159181, 8.367034816924045] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Honduras", "name": "Honduras", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-87.316654425795463, 12.984685777229], - [-87.48940873894712, 13.29753489832393], - [-87.793111131526501, 13.384480495655165], - [-87.723502977229288, 13.785050360565602], - [-87.859515347021599, 13.893312486217097], - [-88.065342576840109, 13.964625962779788], - [-88.503997972349609, 13.845485948130939], - [-88.541230841815931, 13.98015473068352], - [-88.843072882832743, 14.140506700085208], - [-89.058511929057644, 14.340029405164213], - [-89.353325975282786, 14.424132798719084], - [-89.145535041037164, 14.678019110569149], - [-89.22522009963123, 14.874286200413675], - [-89.154810960633526, 15.066419175674863], - [-88.680679694355575, 15.346247056535386], - [-88.225022752621925, 15.727722479714027], - [-88.121153123715359, 15.688655096901355], - [-87.901812506852394, 15.864458319558194], - [-87.615680101252309, 15.878798529519198], - [-87.522920905288444, 15.797278957578779], - [-87.367762417332116, 15.846940009011286], - [-86.903191291028165, 15.756712958229565], - [-86.440945604177372, 15.782835394753189], - [-86.119233974944322, 15.893448798073958], - [-86.00195431185783, 16.005405788634388], - [-85.68331743034625, 15.953651841693949], - [-85.444003872402547, 15.885749009662444], - [-85.182443610357183, 15.909158433490628], - [-84.98372188997881, 15.995923163308698], - [-84.526979743167118, 15.857223619037423], - [-84.36825558138257, 15.835157782448729], - [-84.063054572266807, 15.648244126849132], - [-83.773976610026111, 15.42407176356687], - [-83.410381232420363, 15.27090281825377], - [-83.147219000974104, 14.995829169164207], - [-83.489988776366005, 15.01626719813566], - [-83.628584967772866, 14.880073960830368], - [-83.975721401693576, 14.749435939996483], - [-84.228341640952394, 14.748764146376626], - [-84.449335903648588, 14.62161428472251], - [-84.64958207877963, 14.666805324761865], - [-84.820036790694289, 14.819586696832628], - [-84.924500698572302, 14.790492865452332], - [-85.052787441736868, 14.551541042534719], - [-85.148750576502877, 14.560196844943615], - [-85.165364549484806, 14.354369615125048], - [-85.514413011400265, 14.079011745657905], - [-85.698665330736944, 13.960078436737998], - [-85.801294725268505, 13.8360549992376], - [-86.096263800790595, 14.03818736414723], - [-86.312142096689826, 13.771356106008223], - [-86.520708177419891, 13.778487453664464], - [-86.755086636079596, 13.754845485890936], - [-86.733821784191463, 13.263092556201398], - [-86.880557013684353, 13.254204209847213], - [-87.005769009127434, 13.025794379117254], - [-87.316654425795463, 12.984685777229] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Croatia", "name": "Croatia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [18.829838087650039, 45.908877671891837], - [19.072768995854172, 45.521511135432078], - [19.390475701584588, 45.236515611342369], - [19.005486281010118, 44.860233669609144], - [18.553214145591646, 45.08158966733145], - [17.861783481526398, 45.067740383477137], - [17.00214603035101, 45.233776760430935], - [16.534939406000202, 45.211607570977705], - [16.318156772535868, 45.004126695325901], - [15.959367303133373, 45.233776760430935], - [15.750026075918978, 44.81871165626255], - [16.239660271884528, 44.351143296885695], - [16.456442905348862, 44.041239732431265], - [16.916156447017325, 43.667722479825663], - [17.297373488034449, 43.446340643887353], - [17.674921502358981, 43.028562527023603], - [18.56, 42.65], - [18.450016310304814, 42.47999136002931], - [17.509970330483323, 42.84999461523914], - [16.930005730871638, 43.209998480800373], - [16.015384555737679, 43.507215481127204], - [15.174453973052094, 44.243191229827907], - [15.376250441151793, 44.317915350922064], - [14.920309279040504, 44.73848399512945], - [14.901602410550874, 45.076060289076104], - [14.258747592839992, 45.233776760430935], - [13.952254672917032, 44.802123521496853], - [13.65697553880119, 45.136935126315947], - [13.679403110415816, 45.484149074884996], - [13.715059848697248, 45.500323798192419], - [14.411968214585496, 45.466165676447403], - [14.595109490627916, 45.63494090431282], - [14.935243767972961, 45.471695054702757], - [15.327674594797424, 45.452316392593325], - [15.323953891672428, 45.731782538427687], - [15.671529575267638, 45.8341535507979], - [15.768732944408608, 46.23810822202352], - [16.564808383864939, 46.503750922219794], - [16.882515089595412, 46.380631822284428], - [17.630066359129554, 45.951769110694087], - [18.456062452882858, 45.759481106136143], - [18.829838087650039, 45.908877671891837] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Haiti", "name": "Haiti", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-73.189790615517595, 19.915683905511909], - [-72.579672817663607, 19.871500555902351], - [-71.71236141629295, 19.714455878167353], - [-71.624873216422813, 19.169837958243303], - [-71.701302659782485, 18.785416978424049], - [-71.945112067335543, 18.616900132720257], - [-71.687737596305865, 18.316660061104468], - [-71.708304816358037, 18.044997056546091], - [-72.372476162389333, 18.214960842354053], - [-72.844411180294856, 18.145611070218362], - [-73.454554816365018, 18.217906398994696], - [-73.922433234335642, 18.030992743395], - [-74.458033616824764, 18.342549953682703], - [-74.369925299767118, 18.664907538319408], - [-73.449542202432696, 18.526052964751141], - [-72.694937099890623, 18.445799465401858], - [-72.334881557896992, 18.66842153571525], - [-72.791649542924873, 19.101625067618027], - [-72.784104783810264, 19.483591416903405], - [-73.41502234566174, 19.639550889560276], - [-73.189790615517595, 19.915683905511909] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Hungary", "name": "Hungary", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.202298211337361, 46.852385972676949], - [16.534267612380372, 47.496170966169103], - [16.340584344150411, 47.712901923201215], - [16.903754103267257, 47.714865627628321], - [16.979666782304033, 48.123497015976298], - [17.488472934649813, 47.867466132186209], - [17.857132602620023, 47.758428860050365], - [18.696512892336923, 47.88095368101439], - [18.777024773847668, 48.081768296900627], - [19.174364861739885, 48.111378892603859], - [19.66136355965849, 48.266614895208647], - [19.769470656013109, 48.2026911484636], - [20.239054396249344, 48.327567247096916], - [20.473562045989862, 48.562850043321809], - [20.801293979584919, 48.62385407164237], - [21.872236362401729, 48.319970811550007], - [22.085608351334848, 48.422264309271782], - [22.640819939878746, 48.150239569687351], - [22.710531447040488, 47.882193915389394], - [22.09976769378283, 47.672439276716695], - [21.626514926853869, 46.994237779318148], - [21.021952345471245, 46.316087958351886], - [20.220192498462833, 46.127468980486547], - [19.596044549241579, 46.171729844744533], - [18.829838087649957, 45.908877671891915], - [18.456062452882858, 45.759481106136121], - [17.630066359129554, 45.95176911069418], - [16.882515089595298, 46.380631822284428], - [16.564808383864854, 46.503750922219822], - [16.370504998447412, 46.841327216166498], - [16.202298211337361, 46.852385972676949] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Indonesia", "name": "Indonesia", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [120.715608758630438, -10.239581394087862], - [120.295014276206871, -10.258649997603525], - [118.967808465654684, -9.55796925215803], - [119.900309686361609, -9.361340427287514], - [120.425755649905398, -9.665921319215796], - [120.775501743656719, -9.969675388227456], - [120.715608758630438, -10.239581394087862] - ] - ], - [ - [ - [124.435950148619384, -10.14000090906144], - [123.579981724136701, -10.359987481327961], - [123.459989048354998, -10.239994805546171], - [123.55000939340745, -9.900015557497978], - [123.980008986508096, -9.290026950724693], - [124.96868248911619, -8.892790215697046], - [125.070019972840612, -9.089987481322835], - [125.088520135601073, -9.393173109579321], - [124.435950148619384, -10.14000090906144] - ] - ], - [ - [ - [117.900018345207741, -8.095681247594923], - [118.260616489740471, -8.362383314653327], - [118.87845991422212, -8.280682875199828], - [119.126506789223086, -8.705824883665072], - [117.97040164598927, -8.906639499551257], - [117.277730747549015, -9.040894870645557], - [116.74014082241662, -9.032936700072637], - [117.083737420725313, -8.457157891476539], - [117.632024367342126, -8.44930307376819], - [117.900018345207741, -8.095681247594923] - ] - ], - [ - [ - [122.903537225436082, -8.094234307490735], - [122.756982863456287, -8.649807631060638], - [121.2544905945701, -8.933666273639941], - [119.924390903809567, -8.810417982623873], - [119.920928582846102, -8.44485890059107], - [120.715091994307542, -8.236964613480863], - [121.341668735846554, -8.53673959720602], - [122.007364536630405, -8.46062021244016], - [122.903537225436082, -8.094234307490735] - ] - ], - [ - [ - [108.623478631628927, -6.777673841990675], - [110.539227329553285, -6.877357679881682], - [110.759575636845909, -6.465186455921751], - [112.614811232556349, -6.946035658397589], - [112.978768345188087, -7.594213148634578], - [114.478935174621142, -7.776527601760277], - [115.705526971501058, -8.370806573116864], - [114.564511346496488, -8.75181690840483], - [113.464733514460875, -8.348947442257424], - [112.559672479301028, -8.376180922075163], - [111.522061395312448, -8.302128594600957], - [110.586149530074294, -8.122604668819021], - [109.427667270955183, -7.740664157749761], - [108.693655226681301, -7.641600437046219], - [108.277763299596302, -7.766657403192579], - [106.454102004016136, -7.354899590690947], - [106.280624220812285, -6.924899997590201], - [105.365486281355516, -6.851416110871169], - [106.051645949327053, -5.895918877794499], - [107.265008579540165, -5.954985039904058], - [108.072091099074683, -6.345762220895237], - [108.486846144649235, -6.421984958525768], - [108.623478631628927, -6.777673841990675] - ] - ], - [ - [ - [134.724624465066654, -6.214400730009286], - [134.210133905168902, -6.895237725454704], - [134.112775506730998, -6.142467136259014], - [134.290335728085779, -5.783057549669038], - [134.499625278867882, -5.445042006047898], - [134.727001580952106, -5.737582289252158], - [134.724624465066654, -6.214400730009286] - ] - ], - [ - [ - [127.249215122588893, -3.459065036638889], - [126.874922723498855, -3.790982761249579], - [126.183802118027302, -3.607376397316556], - [125.989033644719257, -3.177273451351325], - [127.00065148326496, -3.12931772218441], - [127.249215122588893, -3.459065036638889] - ] - ], - [ - [ - [130.471344028851775, -3.09376433676762], - [130.834836053592767, -3.858472181822761], - [129.990546502808115, -3.446300957862817], - [129.155248651242403, -3.362636813982248], - [128.590683628453633, -3.428679294451256], - [127.898891229362334, -3.393435967628192], - [128.135879347852779, -2.843650404474914], - [129.370997756060888, -2.802154229344551], - [130.471344028851775, -3.09376433676762] - ] - ], - [ - [ - [134.143367954647772, -1.151867364103594], - [134.422627394753022, -2.769184665542383], - [135.457602980694674, -3.367752780779113], - [136.293314243718754, -2.30704233155609], - [137.4407377463275, -1.703513278819372], - [138.329727411044757, -1.70268645590265], - [139.18492068904294, -2.051295668143637], - [139.926684198160387, -2.409051608900284], - [141.000210402591847, -2.600151055515624], - [141.017056919519007, -5.85902190513802], - [141.033851760013874, -9.117892754760417], - [140.143415155192542, -8.297167657100955], - [139.127766554928087, -8.096042982620942], - [138.881476678624949, -8.380935153846094], - [137.614473911692812, -8.41168263105976], - [138.039099155835174, -7.597882175327354], - [138.668621454014783, -7.320224704623072], - [138.407913853102343, -6.232849216337483], - [137.927839797110835, -5.393365573755998], - [135.989250116113453, -4.546543877789047], - [135.164597609599667, -4.462931410340771], - [133.662880487197867, -3.538853448097526], - [133.367704705946778, -4.024818617370314], - [132.983955519747326, -4.112978610860281], - [132.75694095268895, -3.746282647317129], - [132.753788690319197, -3.311787204607071], - [131.989804315316178, -2.820551039240455], - [133.066844517143466, -2.460417982598443], - [133.780030959203486, -2.479848321140209], - [133.69621178602614, -2.214541517753687], - [132.232373488494204, -2.212526136894325], - [131.836221958544684, -1.617161960459597], - [130.942839797082797, -1.432522067880796], - [130.519558140180038, -0.937720228686075], - [131.867537876513609, -0.695461114101818], - [132.380116408416768, -0.369537855636977], - [133.985548130428384, -0.780210463060442], - [134.143367954647772, -1.151867364103594] - ] - ], - [ - [ - [125.240500522971573, 1.419836127117605], - [124.43703535369734, 0.427881171058971], - [123.685504998876695, 0.235593166500877], - [122.723083123872854, 0.431136786293337], - [121.056724888189081, 0.381217352699451], - [120.18308312386273, 0.23724681233422], - [120.040869582195455, -0.519657891444851], - [120.935905389490699, -1.408905938323372], - [121.475820754076167, -0.955962009285116], - [123.34056481332847, -0.615672702643081], - [123.258399285984481, -1.076213067228337], - [122.822715285331597, -0.930950616055881], - [122.388529901215364, -1.516858005381124], - [121.508273553555455, -1.904482924002422], - [122.454572381684272, -3.186058444840881], - [122.271896193532541, -3.529500013852696], - [123.170962762546537, -4.683693129091707], - [123.162332798353759, -5.34060393638596], - [122.628515252778683, -5.634591159694494], - [122.236394484548057, -5.282933037948281], - [122.71956912647704, -4.46417164471579], - [121.738233677254357, -4.851331475446499], - [121.48946333220124, -4.574552504091215], - [121.619171177253861, -4.188477878438674], - [120.898181593917684, -3.602105401222828], - [120.972388950688767, -2.627642917494909], - [120.305452915529884, -2.931603692235725], - [120.39004723519173, -4.097579034037223], - [120.430716587405371, -5.528241062037778], - [119.796543410319487, -5.67340016034565], - [119.36690555224493, -5.379878024927804], - [119.653606398600104, -4.459417412944958], - [119.498835483885969, -3.49441171632651], - [119.078344354326987, -3.487021986508764], - [118.767768996252869, -2.801999200047688], - [119.180973748858662, -2.147103773612798], - [119.323393996255049, -1.35314706788047], - [119.825998976725828, 0.154254462073496], - [120.035701938966341, 0.566477362465804], - [120.885779250167687, 1.309222723796835], - [121.666816847826965, 1.013943589681076], - [122.927566766451818, 0.875192368977465], - [124.077522414242836, 0.917101955566139], - [125.065989211121803, 1.643259182131558], - [125.240500522971573, 1.419836127117605] - ] - ], - [ - [ - [128.688248732620707, 1.132385972494106], - [128.635952183141342, 0.258485826006179], - [128.120169712436166, 0.356412665199286], - [127.968034295768845, -0.252077325037533], - [128.379998813999691, -0.780003757331286], - [128.100015903842291, -0.899996433112974], - [127.69647464407501, -0.266598402511505], - [127.399490187693743, 1.011721503092573], - [127.600511509309044, 1.81069082275718], - [127.932377557487484, 2.174596258956555], - [128.004156121940809, 1.628531398928331], - [128.594559360875451, 1.540810655112864], - [128.688248732620707, 1.132385972494106] - ] - ], - [ - [ - [117.875627069166001, 1.827640692548911], - [118.996747267738158, 0.902219143066048], - [117.811858351717788, 0.784241848143722], - [117.478338657706047, 0.102474676917026], - [117.521643507966587, -0.803723239753211], - [116.560048455879496, -1.487660821136231], - [116.533796828275158, -2.483517347832901], - [116.148083937648607, -4.012726332214014], - [116.000857782049067, -3.657037448749008], - [114.864803094544513, -4.106984144714416], - [114.468651564595064, -3.49570362713382], - [113.755671828264099, -3.439169610206519], - [113.256994256647545, -3.118775729996854], - [112.068126255340644, -3.478392022316071], - [111.703290643359992, -2.994442233902631], - [111.04824018762821, -3.049425957861188], - [110.223846063275971, -2.934032484553483], - [110.070935500124335, -1.592874037282414], - [109.571947869914041, -1.314906507984489], - [109.091873813922518, -0.459506524257051], - [108.952657505328162, 0.415375474444346], - [109.069136183714036, 1.341933905437642], - [109.663260125773718, 2.006466986494984], - [109.830226678508836, 1.338135687664191], - [110.514060907027101, 0.773131415200993], - [111.159137811326559, 0.976478176269509], - [111.797548455860408, 0.904441229654651], - [112.380251906383648, 1.410120957846757], - [112.859809198052176, 1.497790025229946], - [113.805849644019531, 1.217548732911041], - [114.621355422017473, 1.430688177898886], - [115.134037306785231, 2.821481838386219], - [115.51907840379198, 3.169238389494395], - [115.86551720587677, 4.306559149590156], - [117.01521447150634, 4.306094061699468], - [117.882034946770162, 4.137551377779487], - [117.313232456533513, 3.234428208830578], - [118.048329705885351, 2.287690131027361], - [117.875627069166001, 1.827640692548911] - ] - ], - [ - [ - [105.817655063909356, -5.852355645372411], - [104.710384149191498, -5.873284600450644], - [103.868213332130736, -5.037314955264974], - [102.584260695406897, -4.220258884298203], - [102.156173130300999, -3.614146009946765], - [101.399113397225051, -2.799777113459171], - [100.902502882900137, -2.05026213949786], - [100.141980828860596, -0.650347588710957], - [99.26373986206022, 0.183141587724663], - [98.970011020913319, 1.042882391764536], - [98.601351352943084, 1.823506577965616], - [97.699597609449881, 2.453183905442116], - [97.17694217324987, 3.30879059489861], - [96.424016554757316, 3.86885976807791], - [95.380876092513475, 4.970782172053673], - [95.293026157617305, 5.479820868344816], - [95.936862827541745, 5.439513251157108], - [97.484882033277088, 5.24632090903401], - [98.369169142655679, 4.268370266126366], - [99.142558628335792, 3.590349636240915], - [99.693997837322399, 3.174328518075156], - [100.641433546961665, 2.099381211755798], - [101.658012323007313, 2.083697414555189], - [102.498271112073212, 1.398700466310217], - [103.076840448013002, 0.561361395668854], - [103.838396030698348, 0.104541734208666], - [103.437645298274973, -0.711945896002845], - [104.010788608824001, -1.059211521004229], - [104.369991489684878, -1.084843031421016], - [104.539490187602155, -1.782371514496716], - [104.887892694113987, -2.340425306816655], - [105.622111444116982, -2.42884368246807], - [106.10859337771268, -3.06177662517895], - [105.857445916774111, -4.305524997579723], - [105.817655063909356, -5.852355645372411] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "India", "name": "India", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [77.837450799474553, 35.494009507787759], - [78.912268914713209, 34.321936346975782], - [78.811086460285722, 33.506198025032404], - [79.208891636068572, 32.994394639613709], - [79.176128777995501, 32.483779812137705], - [78.458446486325997, 32.61816437431272], - [78.738894484374001, 31.515906073527056], - [79.721366815107089, 30.882714748654724], - [81.11125613802929, 30.183480943313398], - [80.476721225917373, 29.729865220655334], - [80.088424513676259, 28.794470119740136], - [81.057202589851997, 28.416095282499036], - [81.999987420584958, 27.925479234319987], - [83.304248895199535, 27.364505723575554], - [84.675017938173767, 27.234901231387528], - [85.25177859898335, 26.726198431906337], - [86.024392938179147, 26.630984605408567], - [87.22747195836628, 26.39789805755607], - [88.060237664749806, 26.414615383402484], - [88.174804315140904, 26.810405178325944], - [88.043132765661198, 27.445818589786818], - [88.120440708369841, 27.876541652939586], - [88.730325962278528, 28.086864732367509], - [88.814248488320544, 27.299315904239361], - [88.835642531289366, 27.098966376243755], - [89.744527622438838, 26.71940298105995], - [90.37327477413406, 26.875724188742872], - [91.217512648486405, 26.808648179628019], - [92.033483514375078, 26.838310451763554], - [92.10371178585973, 27.4526140406332], - [91.69665652869665, 27.771741848251661], - [92.503118931043616, 27.896876329046442], - [93.413347609432662, 28.640629380807219], - [94.565990431702929, 29.277438055939978], - [95.404802280664612, 29.031716620392125], - [96.117678664131006, 29.452802028922459], - [96.586590610747479, 28.830979519154337], - [96.248833449287758, 28.411030992134435], - [97.327113885490007, 28.261582749946331], - [97.402561476636123, 27.88253611908544], - [97.051988559968066, 27.699058946233144], - [97.133999058015277, 27.08377350514996], - [96.419365675850941, 27.264589341739221], - [95.124767694074933, 26.573572089132295], - [95.155153436262566, 26.001307277932078], - [94.603249139385355, 25.162495428970399], - [94.552657912171611, 24.675238348890328], - [94.106741977925054, 23.850740871673477], - [93.325187615942767, 24.078556423432197], - [93.286326938859247, 23.043658352138998], - [93.060294224014598, 22.703110663335565], - [93.166127557348361, 22.278459580977099], - [92.672720981825549, 22.041238918541247], - [92.146034783906799, 23.62749868417259], - [91.869927606171302, 23.62434642180278], - [91.706475050832083, 22.985263983649183], - [91.158963250699713, 23.503526923104381], - [91.467729933643668, 24.072639471934789], - [91.915092807994398, 24.130413723237108], - [92.376201613334786, 24.976692816664961], - [91.799595981822065, 25.14743174895731], - [90.872210727912105, 25.13260061288954], - [89.920692580121838, 25.269749864192171], - [89.832480910199592, 25.965082098895476], - [89.355094028687276, 26.014407253518065], - [88.56304935094974, 26.446525580342716], - [88.209789259802477, 25.768065700782707], - [88.931553989623069, 25.238692328384769], - [88.30637251175601, 24.866079413344199], - [88.084422235062405, 24.501657212821918], - [88.699940220090895, 24.233714911388557], - [88.529769728553759, 23.631141872649163], - [88.876311883503064, 22.879146429937826], - [89.031961297566198, 22.055708319582973], - [88.888765903685396, 21.690588487224741], - [88.208497348995209, 21.703171698487804], - [86.975704380240259, 21.495561631755201], - [87.033168572948853, 20.743307806882406], - [86.499351027373777, 20.151638495356604], - [85.060265740909671, 19.478578802971096], - [83.941005893899998, 18.302009792549722], - [83.189217156917834, 17.671221421778977], - [82.192792189465905, 17.016636053937813], - [82.191241896497175, 16.556664130107844], - [81.692719354177456, 16.3102192245079], - [80.791999139330116, 15.951972357644488], - [80.324895867843864, 15.899184882058346], - [80.025069207686428, 15.136414903214144], - [80.23327355339039, 13.835770778859978], - [80.286293572921849, 13.006260687710832], - [79.862546828128487, 12.056215318240886], - [79.85799930208681, 10.357275091997108], - [79.340511509115984, 10.308854274939618], - [78.885345493489169, 9.54613597252772], - [79.189719679688281, 9.216543687370146], - [78.27794070833049, 8.933046779816932], - [77.94116539908434, 8.25295909263974], - [77.539897902337927, 7.965534776232331], - [76.592978957021657, 8.899276231314188], - [76.130061476551063, 10.299630031775518], - [75.746467319648488, 11.308250637248303], - [75.396101108709573, 11.781245022015822], - [74.864815708316812, 12.741935736537895], - [74.616717156883524, 13.992582912649677], - [74.443859490867197, 14.617221787977693], - [73.534199253233368, 15.990652167214957], - [73.119909295549419, 17.928570054592495], - [72.820909458308634, 19.208233547436162], - [72.824475132136783, 20.41950328214153], - [72.630533481745388, 21.356009426351001], - [71.175273471973938, 20.757441311114228], - [70.470458611945091, 20.877330634031381], - [69.164130080038817, 22.089298000572697], - [69.644927606082391, 22.450774644454334], - [69.349596795534325, 22.843179633062686], - [68.176645135373377, 23.691965033456704], - [68.842599318318761, 24.359133612560932], - [71.0432401874682, 24.356523952730193], - [70.844699334602822, 25.215102037043511], - [70.282873162725579, 25.722228705339823], - [70.168926629522005, 26.491871649678835], - [69.514392938113119, 26.940965684511365], - [70.61649620960192, 27.989196275335861], - [71.777665643200308, 27.913180243434521], - [72.823751662084689, 28.961591701772047], - [73.450638462217412, 29.976413479119863], - [74.421380242820263, 30.97981476493117], - [74.405928989564998, 31.692639471965272], - [75.258641798813187, 32.271105455040491], - [74.451559279278698, 32.764899603805489], - [74.104293654277328, 33.441473293586846], - [73.749948358051952, 34.317698879527846], - [74.240202671204955, 34.748887030571247], - [75.757060988268321, 34.504922593721311], - [76.871721632804011, 34.653544012992732], - [77.837450799474553, 35.494009507787759] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ireland", "name": "Ireland", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-6.197884894220989, 53.86756500916335], - [-6.032985398777609, 53.153164170944336], - [-6.788856573910847, 52.260117906292322], - [-8.561616583683557, 51.669301255899349], - [-9.977085740590267, 51.820454820353071], - [-9.16628251793078, 52.864628811242667], - [-9.688524542672452, 53.881362616585285], - [-8.327987433292007, 54.664518947968624], - [-7.572167934591064, 55.131622219454854], - [-7.366030646178785, 54.595840969452709], - [-7.572167934591064, 54.059956366585986], - [-6.953730231138065, 54.073702297575622], - [-6.197884894220989, 53.86756500916335] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Iran", "name": "Iran", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [53.921597934795543, 37.198918361961255], - [54.800303989486558, 37.392420762678178], - [55.511578403551894, 37.964117133123153], - [56.180374790273319, 37.935126654607423], - [56.619366082592805, 38.121394354803478], - [57.330433790928964, 38.029229437810933], - [58.436154412678192, 37.522309475243794], - [59.234761997316795, 37.412987982730336], - [60.377637973883864, 36.52738312432836], - [61.123070509694131, 36.491597194966239], - [61.21081709172573, 35.650072333309218], - [60.80319339380744, 34.404101874319856], - [60.528429803311575, 33.676446031217999], - [60.963700392505991, 33.528832302376252], - [60.536077915290761, 32.981268825811561], - [60.863654819588952, 32.182919623334421], - [60.941944614511115, 31.548074652628745], - [61.699314406180811, 31.379506130492661], - [61.78122155136343, 30.735850328081231], - [60.874248488208778, 29.829238999952604], - [61.369308709564926, 29.303276272085917], - [61.771868117118615, 28.699333807890792], - [62.727830438085974, 28.259644883735383], - [62.755425652929851, 27.378923448184985], - [63.23389773952028, 27.217047024030702], - [63.316631707619578, 26.756532497661659], - [61.874187453056535, 26.239974880472097], - [61.497362908784183, 25.078237006118492], - [59.616134067630831, 25.380156561783775], - [58.525761346272297, 25.609961656185725], - [57.39725141788238, 25.739902045183634], - [56.97076582217754, 26.966106268821356], - [56.492138706290199, 27.14330475515019], - [55.723710158110059, 26.964633490501036], - [54.715089552637252, 26.480657863871507], - [53.493096958231334, 26.812368882753042], - [52.483597853409599, 27.580849107365488], - [51.520762566947404, 27.865689602158291], - [50.852948032439528, 28.814520575469377], - [50.115008579311571, 30.14777252859971], - [49.576850213423988, 29.9857152369324], - [48.941333449098536, 30.31709035900403], - [48.567971225789748, 29.926778265903515], - [48.014568312376085, 30.452456773392594], - [48.00469811380831, 30.985137437457237], - [47.685286085812258, 30.984853217079621], - [47.849203729042095, 31.709175930298663], - [47.334661492711895, 32.469155381799105], - [46.109361606639304, 33.017287299118998], - [45.416690708199035, 33.967797756479577], - [45.648459507028079, 34.748137722303007], - [46.15178795755093, 35.093258775364284], - [46.076340366404786, 35.67738332777548], - [45.420618117053202, 35.977545884742817], - [44.77267, 37.17045], - [44.225755649600522, 37.971584377589345], - [44.421402622257538, 38.281281236314534], - [44.109225294782334, 39.428136298168091], - [44.793989699081934, 39.713002631177041], - [44.9526880226503, 39.335764675446363], - [45.457721795438765, 38.874139105783051], - [46.143623081248812, 38.74120148371221], - [46.505719842317966, 38.770605373686287], - [47.685079380083081, 39.508363959301207], - [48.060095249225235, 39.582235419262453], - [48.355529412637871, 39.2887649602769], - [48.010744256386474, 38.794014797514514], - [48.634375441284803, 38.27037750910096], - [48.883249139202483, 38.32024526626261], - [49.199612257693332, 37.582874253889877], - [50.147771437384606, 37.37456655532133], - [50.842354363819695, 36.872814235983384], - [52.26402469260141, 36.700421657857696], - [53.825789829326411, 36.965030829408228], - [53.921597934795543, 37.198918361961255] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Iraq", "name": "Iraq", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [45.420618117053202, 35.977545884742817], - [46.076340366404786, 35.67738332777548], - [46.15178795755093, 35.093258775364284], - [45.648459507028079, 34.748137722303007], - [45.416690708199035, 33.967797756479577], - [46.109361606639304, 33.017287299118998], - [47.334661492711895, 32.469155381799105], - [47.849203729042095, 31.709175930298663], - [47.685286085812258, 30.984853217079621], - [48.00469811380831, 30.985137437457237], - [48.014568312376085, 30.452456773392594], - [48.567971225789748, 29.926778265903515], - [47.974519077349889, 29.975819200148493], - [47.302622104690947, 30.059069932570711], - [46.568713413281742, 29.099025173452283], - [44.709498732284736, 29.178891099559376], - [41.889980910007829, 31.190008653278362], - [40.399994337736238, 31.889991766887931], - [39.195468377444961, 32.16100881604266], - [38.792340529136077, 33.378686428352218], - [41.00615888851992, 34.419372260062111], - [41.383965285005807, 35.628316555314349], - [41.289707472505448, 36.358814602192261], - [41.837064243340954, 36.605853786763568], - [42.349591098811764, 37.22987254490409], - [42.779125604021822, 37.385263576805741], - [43.942258742047287, 37.256227525372942], - [44.293451775902852, 37.001514390606289], - [44.772699008977689, 37.170444647768427], - [45.420618117053202, 35.977545884742817] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Iceland", "name": "Iceland", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-14.508695441129232, 66.455892239031414], - [-14.739637417041605, 65.808748277440287], - [-13.609732224979807, 65.126671047619851], - [-14.9098337467949, 64.36408193628867], - [-17.794438035543418, 63.67874909123384], - [-18.656245896874989, 63.496382961675806], - [-19.972754685942757, 63.643634955491514], - [-22.762971971110154, 63.960178941495371], - [-21.778484259517676, 64.402115790455497], - [-23.955043911219104, 64.891129869233481], - [-22.184402635170354, 65.084968166760291], - [-22.227423265053329, 65.378593655042721], - [-24.326184047939332, 65.611189276788451], - [-23.650514695723082, 66.262519029395207], - [-22.134922451250883, 66.410468655046856], - [-20.576283738679543, 65.732112128351417], - [-19.056841600001587, 66.276600857194751], - [-17.798623826559048, 65.993853257909763], - [-16.167818976292121, 66.526792304135853], - [-14.508695441129232, 66.455892239031414] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Israel", "name": "Israel", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.719918247222743, 32.709192409794859], - [35.545665317534535, 32.393992011030569], - [35.183930291491428, 32.532510687788935], - [34.974640740709319, 31.866582343059715], - [35.225891554512422, 31.754341132121759], - [34.970506626125989, 31.616778469360803], - [34.927408481594554, 31.35343537040141], - [35.397560662586038, 31.489086005167572], - [35.420918409981958, 31.100065822874349], - [34.922602573391423, 29.501326198844517], - [34.26543338393568, 31.219360866820146], - [34.556371697738903, 31.548823960896989], - [34.48810713068135, 31.605538845337314], - [34.752587111151165, 32.07292633720116], - [34.955417107896771, 32.827376410446369], - [35.098457472480668, 33.080539252244257], - [35.126052687324538, 33.090900376918775], - [35.460709262846699, 33.089040025356276], - [35.552796665190805, 33.264274807258012], - [35.821100701650231, 33.277426459276292], - [35.836396925608618, 32.868123277308506], - [35.700797967274745, 32.716013698857374], - [35.719918247222743, 32.709192409794859] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Italy", "name": "Italy", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [15.52037601081383, 38.231155096991465], - [15.160242954171732, 37.444045518537813], - [15.309897902089002, 37.134219468731793], - [15.099988234119445, 36.61998729099539], - [14.335228712632013, 36.996630967754747], - [13.826732618879927, 37.104531358380186], - [12.431003859108809, 37.612949937483812], - [12.570943637755132, 38.126381130519682], - [13.741156447004581, 38.03496552179535], - [14.761249220446157, 38.143873602850498], - [15.52037601081383, 38.231155096991465] - ] - ], - [ - [ - [9.210011834356264, 41.209991360024212], - [9.809975213264973, 40.500008856766094], - [9.669518670295671, 39.177376410471787], - [9.214817742559486, 39.240473334300127], - [8.806935662479729, 38.906617743478471], - [8.428302443077113, 39.171847032216611], - [8.388253208050939, 40.378310858718798], - [8.159998406617659, 40.950007229163774], - [8.709990675500107, 40.899984442705225], - [9.210011834356264, 41.209991360024212] - ] - ], - [ - [ - [12.376485223040842, 46.767559109069872], - [13.806475457421552, 46.50930613869118], - [13.698109978905475, 46.016778062517368], - [13.937630242578335, 45.59101593686465], - [13.141606479554294, 45.736691799495411], - [12.328581170306304, 45.38177806251484], - [12.383874952858601, 44.885374253919075], - [12.261453484759157, 44.600482082694008], - [12.589237094786482, 44.091365871754462], - [13.526905958722491, 43.587727362637899], - [14.029820997787024, 42.761007798832473], - [15.142569614327952, 41.955139675456891], - [15.926191033601892, 41.961315009115729], - [16.169897088290409, 41.740294908203417], - [15.889345737377793, 41.541082261718195], - [16.785001661860573, 41.179605617836579], - [17.519168735431204, 40.877143459632229], - [18.376687452882575, 40.355624904942651], - [18.4802470231954, 40.168866278639818], - [18.293385044028096, 39.810774441073235], - [17.738380161213279, 40.277671006830289], - [16.869595981522334, 40.442234605463838], - [16.448743116937319, 39.795400702466473], - [17.171489698971495, 39.424699815420716], - [17.052840610429339, 38.902871202137291], - [16.635088331781841, 38.843572496082395], - [16.100960727613053, 37.985898749334176], - [15.684086948314498, 37.908849188787023], - [15.687962680736318, 38.214592800441849], - [15.891981235424705, 38.750942491199218], - [16.109332309644312, 38.964547024077682], - [15.718813510814638, 39.544072374014938], - [15.413612501698818, 40.048356838535163], - [14.998495721098234, 40.172948716790913], - [14.703268263414767, 40.604550279292617], - [14.06067182786526, 40.786347968095434], - [13.627985060285393, 41.188287258461649], - [12.888081902730418, 41.253089504555604], - [12.106682570044907, 41.7045348170574], - [11.191906365614184, 42.355425319989671], - [10.511947869517794, 42.93146251074721], - [10.200028924204046, 43.920006822274608], - [9.702488234097812, 44.036278794931313], - [8.888946160526869, 44.366336167979533], - [8.428560825238575, 44.23122813575241], - [7.8507666357832, 43.767147935555236], - [7.435184767291841, 43.693844916349164], - [7.549596388386161, 44.127901109384808], - [7.007562290076661, 44.254766750661382], - [6.749955275101711, 45.028517971367584], - [7.096652459347835, 45.333098863295859], - [6.80235517744566, 45.708579820328673], - [6.84359297041456, 45.991146552100659], - [7.273850945676683, 45.776947740250748], - [7.755992058959832, 45.824490057959267], - [8.316629672894377, 46.16364248309084], - [8.489952426801294, 46.005150865251736], - [8.966305779667833, 46.03693187111115], - [9.18288170740311, 46.440214748716976], - [9.92283654139035, 46.314899400409182], - [10.363378126678665, 46.48357127540983], - [10.4427014502466, 46.893546250997431], - [11.048555942436504, 46.751358547546396], - [11.164827915093325, 46.941579494812729], - [12.153088006243079, 47.115393174826423], - [12.376485223040842, 46.767559109069872] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Jamaica", "name": "Jamaica", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-77.569600796199197, 18.490525417550483], - [-76.896618618462114, 18.400866807524078], - [-76.365359056285527, 18.16070058844759], - [-76.19965857614163, 17.886867173732963], - [-76.902561408175671, 17.868237819891743], - [-77.206341315403449, 17.701116237859818], - [-77.766022915340599, 17.861597398342237], - [-78.337719285785596, 18.225967922432226], - [-78.217726610003865, 18.454532782459193], - [-77.797364671525614, 18.524218451404774], - [-77.569600796199197, 18.490525417550483] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Jordan", "name": "Jordan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.545665317534535, 32.393992011030569], - [35.719918247222743, 32.709192409794859], - [36.834062127435537, 32.312937526980768], - [38.792340529136077, 33.378686428352218], - [39.195468377444961, 32.16100881604266], - [39.004885695152545, 32.010216986614971], - [37.002165561681004, 31.508412990844736], - [37.998848911294367, 30.508499864213128], - [37.668119744626374, 30.338665269485894], - [37.503581984209028, 30.003776150018396], - [36.740527784987243, 29.865283311476183], - [36.501214227043583, 29.505253607698702], - [36.068940870922049, 29.19749461518445], - [34.956037225084252, 29.356554673778835], - [34.922602573391423, 29.501326198844517], - [35.420918409981958, 31.100065822874349], - [35.397560662586038, 31.489086005167572], - [35.545251906076196, 31.782504787720832], - [35.545665317534535, 32.393992011030569] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Japan", "name": "Japan", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [134.638428176003856, 34.149233710256418], - [134.766379022358478, 33.806334743783673], - [134.20341596897083, 33.201177883429622], - [133.792950067276479, 33.521985175097583], - [133.280268182508848, 33.289570420864941], - [133.014858026257855, 32.704567369104772], - [132.363114862192674, 32.989382025681373], - [132.371176385630179, 33.463642483040068], - [132.924372593314786, 34.060298570282036], - [133.492968377822194, 33.944620876596694], - [133.904106073136347, 34.364931138642611], - [134.638428176003856, 34.149233710256418] - ] - ], - [ - [ - [140.976387567305267, 37.142074286440156], - [140.599769728762084, 36.343983466124534], - [140.774074334882641, 35.842877102190229], - [140.253279250245072, 35.138113918593653], - [138.975527785396196, 34.667600002576101], - [137.217598911691198, 34.606285915661843], - [135.792983026268871, 33.46480520276662], - [135.120982700745401, 33.849071153289053], - [135.07943484918269, 34.596544908174813], - [133.340316196831964, 34.375938218720755], - [132.156770868051296, 33.904933376596503], - [130.986144647343451, 33.885761420216276], - [132.000036248910021, 33.149992377244608], - [131.33279015515734, 31.450354519164836], - [130.68631798718593, 31.029579169228235], - [130.202419875204953, 31.418237616495411], - [130.447676222862128, 32.319474595665717], - [129.81469160371887, 32.610309556604385], - [129.408463169472554, 33.296055813117583], - [130.353935174684636, 33.604150702441693], - [130.878450962447118, 34.232742824840031], - [131.884229364143891, 34.749713853487911], - [132.617672967662486, 35.433393052709413], - [134.608300815977771, 35.731617743465812], - [135.677537876528902, 35.527134100886819], - [136.723830601142424, 37.304984239240376], - [137.390611607004473, 36.827390651998819], - [138.857602166906247, 37.827484646143454], - [139.426404657142882, 38.215962225897634], - [140.054790073812057, 39.438807481436378], - [139.883379347899847, 40.563312486323682], - [140.305782505453664, 41.195005194659551], - [141.368973423426667, 41.378559882160282], - [141.914263136970476, 39.991616115878678], - [141.884600864834965, 39.18086456965149], - [140.959489373945729, 38.174000962876583], - [140.976387567305267, 37.142074286440156] - ] - ], - [ - [ - [143.910161981379474, 44.174099839853724], - [144.613426548439634, 43.960882880217511], - [145.320825230083074, 44.384732977875437], - [145.543137241802754, 43.262088324550596], - [144.059661899999867, 42.988358262700551], - [143.183849725517291, 41.995214748699183], - [141.611490920172457, 42.678790595056071], - [141.067286411706618, 41.58459381770799], - [139.95510623592105, 41.56955597591103], - [139.817543573159924, 42.563758856774392], - [140.312087030193169, 43.333272610032644], - [141.380548944259999, 43.388824774746489], - [141.671952345953912, 44.772125352551477], - [141.967644891527982, 45.551483466161343], - [143.142870314709796, 44.510358384776957], - [143.910161981379474, 44.174099839853724] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Kazakhstan", "name": "Kazakhstan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [70.962314894499272, 42.26615428320553], - [70.388964878220776, 42.081307684897517], - [69.070027296835221, 41.384244289712335], - [68.632482944620037, 40.668680731766855], - [68.259895867795635, 40.662324530594894], - [67.985855747351806, 41.135990708982199], - [66.714047072216587, 41.168443508461557], - [66.510648634715707, 41.987644151368549], - [66.023391554635609, 41.994646307944031], - [66.098012322865188, 42.997660020513074], - [64.90082441595932, 43.728080552742647], - [63.18578698105658, 43.650074978197999], - [62.013300408786264, 43.504476630215649], - [61.05831994003249, 44.405816962250576], - [60.239971958258472, 44.784036770194739], - [58.689989048095796, 45.500013739598721], - [58.503127068928428, 45.58680430763296], - [55.928917270741167, 44.995858466159163], - [55.968191359283011, 41.30864166926937], - [55.455251092353805, 41.259859117185826], - [54.755345493392653, 42.04397146256661], - [54.079417759014959, 42.324109402020831], - [52.944293247291725, 42.116034247397572], - [52.502459751196277, 41.783315538086462], - [52.446339145727208, 42.027150783855561], - [52.692112257707251, 42.443895372073364], - [52.501426222550315, 42.792297878585188], - [51.342427199108201, 43.132974758469338], - [50.891291945200223, 44.031033637053774], - [50.339129266161358, 44.284015611338468], - [50.305642938036257, 44.609835516938908], - [51.278503452363211, 44.514854234386448], - [51.316899041556034, 45.245998236667894], - [52.167389764215713, 45.408391425145098], - [53.040876499245194, 45.259046535821753], - [53.220865512917712, 46.23464590105992], - [53.042736850807771, 46.853006089864486], - [52.042022739475598, 46.804636949239232], - [51.191945428274252, 47.048704738953909], - [50.034083286342465, 46.608989976582208], - [49.10116, 46.39933000000012], - [48.593241001180495, 46.561034247415471], - [48.694733514201729, 47.075628160177921], - [48.057253045449258, 47.743752753279516], - [47.315231154170242, 47.715847479841948], - [46.466445753776256, 48.394152330104923], - [47.043671502476506, 49.1520388860976], - [46.751596307162728, 49.35600576435376], - [47.549480421749301, 50.454698391311119], - [48.577841424357523, 49.874759629915658], - [48.702381626181008, 50.605128485712825], - [50.766648390512145, 51.692762356159889], - [52.328723585830957, 51.71865224873811], - [54.53287845237621, 51.026239732459302], - [55.716940545479801, 50.62171662047853], - [56.777961053296551, 51.043551337277037], - [58.363290643146733, 51.063653469438563], - [59.642282342370599, 50.545442206415707], - [59.932807244715484, 50.842194118851857], - [61.337424350840919, 50.799070136104248], - [61.588003371024158, 51.2726587998432], - [59.967533807215531, 51.960420437215696], - [60.927268507740258, 52.447548326215028], - [60.739993117114572, 52.719986477257734], - [61.699986199800584, 52.979996446334255], - [60.978066440683151, 53.664993394579128], - [61.436591424409052, 54.006264553434775], - [65.178533563095911, 54.354227810272093], - [65.66687584825398, 54.601266994843449], - [68.169100376258811, 54.970391750704309], - [69.068166945272864, 55.385250149143516], - [70.865266554655122, 55.169733588270091], - [71.180131056609397, 54.133285224008247], - [72.224150018202167, 54.376655381886728], - [73.508516066384388, 54.035616766976588], - [73.425678745420427, 53.489810289109741], - [74.384845005190044, 53.546861070360066], - [76.891100294913414, 54.490524400441913], - [76.525179477854735, 54.177003485727127], - [77.800915561844221, 53.404414984747561], - [80.035559523441663, 50.864750881547238], - [80.568446893235475, 51.388336493528456], - [81.945985548839914, 50.812195949906354], - [83.383003778012366, 51.069182847693909], - [83.935114780618832, 50.889245510453563], - [84.416377394553052, 50.311399644565817], - [85.115559523462011, 50.117302964877631], - [85.541269972682457, 49.69285858824815], - [86.829356723989619, 49.826674709668154], - [87.359970330762664, 49.214980780629148], - [86.598776483103379, 48.549181626980605], - [85.768232863308285, 48.455750637396974], - [85.72048383987071, 47.452969468773112], - [85.164290399113355, 47.000955715516099], - [83.180483839860443, 47.330031236350848], - [82.458925815769106, 45.539649563166499], - [81.947070753918112, 45.317027492853235], - [79.966106398441397, 44.917516994804643], - [80.866206496101356, 43.180362046881037], - [80.180150180994289, 42.920067857426936], - [80.259990268885332, 42.349999294599101], - [79.643645460940135, 42.496682847659649], - [79.142177361979776, 42.856092434249589], - [77.658391961583206, 42.960685533208327], - [76.000353631498555, 42.988022365890622], - [75.636964959622091, 42.877899888676765], - [74.212865838522575, 43.298339341803505], - [73.645303582660901, 43.091271877609863], - [73.489757521462337, 42.500894476891276], - [71.844638299450637, 42.845395412765178], - [71.186280552052253, 42.704292914392219], - [70.962314894499272, 42.26615428320553] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Kenya", "name": "Kenya", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [40.993, -0.85829], - [41.58513, -1.68325], - [40.88477, -2.08255], - [40.63785, -2.49979], - [40.26304, -2.57309], - [40.12119, -3.27768], - [39.80006, -3.68116], - [39.60489, -4.34653], - [39.20222, -4.67677], - [37.7669, -3.67712], - [37.69869, -3.09699], - [34.07262, -1.05982], - [33.903711197104521, -0.95], - [33.893568969666937, 0.109813537861896], - [34.18, 0.515], - [34.6721, 1.17694], - [35.03599, 1.90584], - [34.59607, 3.05374], - [34.47913, 3.5556], - [34.005, 4.249884947362047], - [34.620196267853871, 4.847122742081987], - [35.298007118232974, 5.506], - [35.817447662353501, 5.338232082790795], - [35.817447662353501, 4.776965663461889], - [36.159078632855639, 4.447864127672768], - [36.855093238008116, 4.447864127672768], - [38.120915, 3.598605], - [38.43697, 3.58851], - [38.67114, 3.61607], - [38.89251, 3.50074], - [39.559384258765846, 3.42206], - [39.85494, 3.83879], - [40.76848, 4.25702], - [41.1718, 3.91909], - [41.855083092643966, 3.918911920483726], - [40.98105, 2.78452], - [40.993, -0.85829] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Kyrgyzstan", "name": "Kyrgyzstan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [70.96231489449913, 42.266154283205481], - [71.186280552052111, 42.704292914392127], - [71.84463829945058, 42.845395412765093], - [73.489757521462337, 42.500894476891311], - [73.645303582660901, 43.09127187760982], - [74.212865838522546, 43.298339341803363], - [75.636964959622006, 42.877899888676673], - [76.000353631498442, 42.988022365890664], - [77.658391961583206, 42.960685533208256], - [79.142177361979762, 42.856092434249511], - [79.643645460940107, 42.496682847659514], - [80.259990268885289, 42.349999294599044], - [80.119430373051358, 42.123940741538235], - [78.543660923175295, 41.582242540038685], - [78.187196893225959, 41.185315863604792], - [76.904484490877067, 41.066485907549634], - [76.526368035797432, 40.427946071935111], - [75.467827996730691, 40.562072251948663], - [74.776862420556043, 40.366425279291619], - [73.822243686828287, 39.893973497063179], - [73.960013055318413, 39.660008449861721], - [73.67537926625478, 39.431236884105594], - [71.784693637991992, 39.279463202464363], - [70.549161818325601, 39.604197902986492], - [69.464886915977516, 39.526683254548693], - [69.559609816368507, 40.103211371412968], - [70.648018833299957, 39.935753892571157], - [71.014198032520156, 40.244365546218226], - [71.774875115856545, 40.145844428053763], - [73.055417108049156, 40.86603302668945], - [71.870114780570447, 41.392900092121259], - [71.157858514291576, 41.143587144529107], - [70.420022414028196, 41.519998277343134], - [71.259247674448218, 42.167710679689456], - [70.96231489449913, 42.266154283205481] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Cambodia", "name": "Cambodia", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [103.497279901139677, 10.632555446815926], - [103.090689731867229, 11.153660590047162], - [102.58493248902667, 12.186594956913279], - [102.348099399833004, 13.39424734135822], - [102.988422072361601, 14.225721136934464], - [104.281418084736586, 14.416743068901363], - [105.218776890078871, 14.27321177821069], - [106.04394616091551, 13.881091009979952], - [106.496373325630856, 14.57058380783428], - [107.382727492301058, 14.202440904186968], - [107.614547967562402, 13.535530707244202], - [107.491403029410861, 12.337205918827944], - [105.810523716253101, 11.567614650921225], - [106.249670037869436, 10.961811835163585], - [105.199914992292321, 10.889309800658094], - [104.334334751403446, 10.486543687375228], - [103.497279901139677, 10.632555446815926] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "South Korea", "name": "Korea", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [128.349716424676586, 38.612242946927843], - [129.212919549680038, 37.432392483055942], - [129.460449660358137, 36.784189154602821], - [129.468304478066472, 35.632140611303939], - [129.091376580929563, 35.08248423923142], - [128.18585045787907, 34.890377102186385], - [127.386519403188373, 34.475673733044111], - [126.485747511908713, 34.390045884736473], - [126.3739197124291, 34.934560451795939], - [126.559231398627773, 35.684540513647896], - [126.117397902532261, 36.725484727519252], - [126.860143263863364, 36.893924058574612], - [126.174758742376213, 37.749685777328033], - [126.237338901881742, 37.840377916000271], - [126.683719924018888, 37.804772854151174], - [127.073308547067342, 38.256114813788393], - [127.780035435090966, 38.304535630845884], - [128.205745884311426, 38.370397243801882], - [128.349716424676586, 38.612242946927843] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Kosovo", "name": "Kosovo", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.76216, 42.05186], - [20.717310000000108, 41.84711], - [20.59023, 41.85541], - [20.52295, 42.21787], - [20.28374, 42.32025], - [20.0707, 42.58863], - [20.25758, 42.81275], - [20.49679, 42.88469], - [20.63508, 43.21671], - [20.81448, 43.27205], - [20.95651, 43.13094], - [21.143395, 43.068685000000123], - [21.27421, 42.90959], - [21.43866, 42.86255], - [21.63302, 42.67717], - [21.77505, 42.6827], - [21.66292, 42.43922], - [21.54332, 42.32025], - [21.576635989402117, 42.245224397061847], - [21.352700000000134, 42.2068], - [20.76216, 42.05186] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Kuwait", "name": "Kuwait", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [47.974519077349889, 29.975819200148493], - [48.183188510944483, 29.534476630159759], - [48.09394331237641, 29.306299343374999], - [48.416094191283939, 28.552004299426663], - [47.708850538937376, 28.526062730416136], - [47.459821811722819, 29.002519436147217], - [46.568713413281742, 29.099025173452283], - [47.302622104690947, 30.059069932570711], - [47.974519077349889, 29.975819200148493] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Laos", "name": "Lao PDR", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [105.218776890078871, 14.27321177821069], - [105.544338413517664, 14.723933620660414], - [105.589038527450128, 15.570316066952856], - [104.779320509868768, 16.441864935771445], - [104.716947056092465, 17.428858954330078], - [103.956476678485288, 18.240954087796872], - [103.200192091893726, 18.309632066312769], - [102.998705682387694, 17.961694647691598], - [102.413004998791592, 17.932781683824281], - [102.113591750092453, 18.109101670804161], - [101.059547560635139, 17.512497259994486], - [101.035931431077742, 18.408928330961611], - [101.282014601651667, 19.462584947176762], - [100.606293573003128, 19.508344427971217], - [100.548881056726856, 20.109237982661124], - [100.115987583417819, 20.41784963630818], - [100.329101190189519, 20.786121731036229], - [101.180005324307515, 21.436572984294024], - [101.270025669359939, 21.201651923095177], - [101.803119744882906, 21.174366766845065], - [101.652017856861491, 22.318198757409544], - [102.170435825613552, 22.464753119389297], - [102.754896274834636, 21.675137233969462], - [103.203861118586431, 20.766562201413745], - [104.435000441508024, 20.758733221921528], - [104.822573683697073, 19.886641750563879], - [104.183387892678908, 19.624668077060214], - [103.896532017026701, 19.265180975821799], - [105.094598423281496, 18.666974595611073], - [105.925762160264, 17.485315456608955], - [106.55600792849566, 16.604283962464802], - [107.312705926545576, 15.908538316303177], - [107.564525181103875, 15.202173163305554], - [107.382727492301058, 14.202440904186968], - [106.496373325630856, 14.57058380783428], - [106.04394616091551, 13.881091009979952], - [105.218776890078871, 14.27321177821069] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Lebanon", "name": "Lebanon", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.821100701650231, 33.277426459276292], - [35.552796665190805, 33.264274807258012], - [35.460709262846699, 33.089040025356276], - [35.126052687324538, 33.090900376918775], - [35.48220665868012, 33.905450140919434], - [35.979592319489392, 34.610058295219126], - [35.998402540843628, 34.644914048799997], - [36.448194207512095, 34.59393524834406], - [36.611750115715886, 34.201788641897174], - [36.066460402172048, 33.824912421192543], - [35.821100701650231, 33.277426459276292] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Liberia", "name": "Liberia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-7.712159389669749, 4.364565944837721], - [-7.974107224957249, 4.355755113131961], - [-9.004793667018673, 4.832418524592199], - [-9.913420376006682, 5.593560695819205], - [-10.765383876986643, 6.140710760925556], - [-11.438779466182053, 6.785916856305746], - [-11.199801805048278, 7.105845648624735], - [-11.14670427086838, 7.396706447779534], - [-10.695594855176477, 7.939464016141085], - [-10.230093553091276, 8.406205552601291], - [-10.016566534861253, 8.42850393313523], - [-9.755342169625832, 8.541055202666923], - [-9.33727983238458, 7.928534450711351], - [-9.403348151069748, 7.526905218938906], - [-9.208786383490844, 7.313920803247952], - [-8.926064622422002, 7.309037380396375], - [-8.722123582382123, 7.711674302598509], - [-8.439298468448696, 7.686042792181736], - [-8.485445522485348, 7.395207831243068], - [-8.385451626000572, 6.911800645368742], - [-8.602880214868618, 6.467564195171659], - [-8.311347622094017, 6.193033148621081], - [-7.993692592795879, 6.126189683451541], - [-7.570152553731686, 5.707352199725903], - [-7.53971513511176, 5.313345241716517], - [-7.63536821128403, 5.188159084489455], - [-7.712159389669749, 4.364565944837721] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Libya", "name": "Libya", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [14.8513, 22.862950000000119], - [14.143870883855239, 22.491288967371126], - [13.581424594790459, 23.040506089769274], - [11.999505649471697, 23.471668402596432], - [11.560669386449032, 24.09790924732561], - [10.771363559622952, 24.562532050061741], - [10.303846876678445, 24.379313259370967], - [9.948261346078024, 24.936953640232613], - [9.910692579801774, 25.365454616796789], - [9.319410841518218, 26.094324856057476], - [9.716285841519662, 26.512206325785652], - [9.629056023811073, 27.140953477481041], - [9.756128370816779, 27.688258571884198], - [9.68388471847288, 28.144173895779311], - [9.859997999723472, 28.959989732371064], - [9.805634392952353, 29.424638373323369], - [9.482139926805415, 30.307556057246181], - [9.970017124072966, 30.539324856075375], - [10.056575148161697, 30.961831366493517], - [9.950225050505194, 31.376069647745275], - [10.636901482799484, 31.761420803345679], - [10.944789666394511, 32.081814683555358], - [11.43225345220378, 32.368903103152824], - [11.488787469131008, 33.136995754523234], - [12.66331, 32.79278], - [13.08326, 32.87882], - [13.91868, 32.71196], - [15.24563, 32.26508], - [15.71394, 31.37626], - [16.61162, 31.18218], - [18.02109, 30.76357], - [19.08641, 30.26639], - [19.57404, 30.52582], - [20.05335, 30.98576], - [19.82033, 31.751790000000135], - [20.13397, 32.2382], - [20.85452, 32.7068], - [21.54298, 32.8432], - [22.89576, 32.63858], - [23.2368, 32.19149], - [23.6091300000001, 32.18726], - [23.9275, 32.01667], - [24.92114, 31.89936], - [25.16482, 31.56915], - [24.80287, 31.08929], - [24.95762, 30.6616], - [24.70007, 30.04419], - [25.00000000000011, 29.238654529533552], - [25.00000000000011, 25.682499996360995], - [25.00000000000011, 22.0], - [25.00000000000011, 20.00304], - [23.850000000000129, 20.0], - [23.837660000000135, 19.580470000000101], - [19.84926, 21.49509], - [15.86085, 23.40972], - [14.8513, 22.862950000000119] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Sri Lanka", "name": "Sri Lanka", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [81.787959018891371, 7.523055324733162], - [81.637322218760573, 6.481775214051921], - [81.218019647144317, 6.197141424988287], - [80.348356968104397, 5.968369859232154], - [79.872468703128519, 6.763463446474928], - [79.6951668639351, 8.200843410673384], - [80.147800734379629, 9.824077663609554], - [80.838817986986541, 9.268426825391186], - [81.304319289071756, 8.564206244333688], - [81.787959018891371, 7.523055324733162] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Lesotho", "name": "Lesotho", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [28.978262566857236, -28.955596612261708], - [29.325166456832587, -29.257386976846245], - [29.018415154748016, -29.743765557577362], - [28.848399692507734, -30.070050551068245], - [28.291069370239903, -30.226216729454293], - [28.107204624145421, -30.545732110314944], - [27.749397006956478, -30.645105889612214], - [26.999261915807629, -29.875953871379977], - [27.532511020627471, -29.242710870075353], - [28.07433841320778, -28.851468601193581], - [28.541700066855491, -28.647501722937562], - [28.978262566857236, -28.955596612261708] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Lithuania", "name": "Lithuania", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.731098667092649, 54.327536932993311], - [22.651051873472536, 54.582740993866729], - [22.757763706155256, 54.856574408581366], - [22.31572350433057, 55.01529857036585], - [21.26844892750346, 55.190481675835301], - [21.05580040862241, 56.031076361711051], - [22.201156853939491, 56.337801825579483], - [23.878263787539957, 56.273671373105259], - [24.860684441840753, 56.372528388079616], - [25.000934279080887, 56.164530748104831], - [25.533046502390327, 56.100296942766029], - [26.494331495883749, 55.61510691997762], - [26.588279249790386, 55.167175604871659], - [25.768432651479792, 54.846962592175082], - [25.536353794056989, 54.282423407602515], - [24.45068362803703, 53.905702216194747], - [23.484127638449841, 53.912497667041123], - [23.243987257589506, 54.220566718149129], - [22.731098667092649, 54.327536932993311] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Luxembourg", "name": "Luxembourg", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [6.043073357781109, 50.128051662794221], - [6.242751092156992, 49.90222565367872], - [6.186320428094176, 49.4638028021145], - [5.897759230176403, 49.442667141307012], - [5.674051954784828, 49.52948354755749], - [5.782417433300905, 50.090327867221205], - [6.043073357781109, 50.128051662794221] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Latvia", "name": "Latvia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [21.05580040862241, 56.031076361711051], - [21.090423618257965, 56.783872789122924], - [21.581866489353668, 57.411870632549913], - [22.524341261492872, 57.753374335350756], - [23.31845299652209, 57.006236477274854], - [24.120729607853423, 57.025692654032753], - [24.312862583114615, 57.793423570376966], - [25.164593540149262, 57.970156968815175], - [25.602809685984365, 57.847528794986559], - [26.46353234223778, 57.476388658266316], - [27.288184848751509, 57.474528306703817], - [27.770015903440925, 57.244258124411218], - [27.855282016722519, 56.759326483784278], - [28.17670942557799, 56.169129950578807], - [27.102459751094525, 55.783313707087672], - [26.494331495883749, 55.61510691997762], - [25.533046502390327, 56.100296942766029], - [25.000934279080887, 56.164530748104831], - [24.860684441840753, 56.372528388079616], - [23.878263787539957, 56.273671373105259], - [22.201156853939491, 56.337801825579483], - [21.05580040862241, 56.031076361711051] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Morocco", "name": "Morocco", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-5.193863491222031, 35.755182196590845], - [-4.591006232105143, 35.330711981745644], - [-3.640056525070007, 35.39985504815197], - [-2.604305792644111, 35.17909332940112], - [-2.169913702798624, 35.168396307916694], - [-1.792985805661658, 34.527918606091298], - [-1.73345455566141, 33.919712836232115], - [-1.388049282222596, 32.864015000941372], - [-1.124551153966195, 32.651521511357195], - [-1.30789913573787, 32.262888902306024], - [-2.616604783529567, 32.094346218386157], - [-3.068980271812648, 31.724497992473285], - [-3.647497931320145, 31.637294012980814], - [-3.690441046554666, 30.896951605751152], - [-4.859646165374442, 30.501187649043874], - [-5.242129278982786, 30.00044302013557], - [-6.060632290053745, 29.731699734001801], - [-7.059227667661899, 29.57922842052465], - [-8.67411617678283, 28.841288967396643], - [-8.665589565454836, 27.656425889592462], - [-8.817809007940523, 27.656425889592462], - [-8.817828334986642, 27.656425889592462], - [-8.794883999049032, 27.120696316022553], - [-9.413037482124507, 27.088476060488539], - [-9.735343390328749, 26.860944729107409], - [-10.189424200877452, 26.860944729107409], - [-10.551262579785258, 26.990807603456879], - [-11.392554897496948, 26.883423977154386], - [-11.718219773800339, 26.104091701760801], - [-12.030758836301654, 26.030866197203121], - [-12.500962693725368, 24.770116278578136], - [-13.891110398809044, 23.691009019459383], - [-14.22116777185715, 22.310163072188338], - [-14.630832688850942, 21.860939846274867], - [-14.750954555713404, 21.500600083903802], - [-17.002961798561071, 21.42073415779668], - [-17.020428432675768, 21.422310288981631], - [-16.973247849993182, 21.88574453377495], - [-16.589136928767626, 22.158234361250091], - [-16.26192175949566, 22.679339504481273], - [-16.326413946995896, 23.017768459560894], - [-15.982610642958059, 23.723358466074096], - [-15.426003790742183, 24.359133612561035], - [-15.089331834360729, 24.520260728446964], - [-14.824645148161689, 25.103532619725307], - [-14.800925665739666, 25.636264960222285], - [-14.439939947964827, 26.254418443297645], - [-13.773804897506462, 26.618892320252279], - [-13.13994177901429, 27.640147813420491], - [-13.121613369914709, 27.654147671719805], - [-12.61883663578311, 28.038185533148656], - [-11.688919236690761, 28.148643907172577], - [-10.9009569971044, 28.832142238880913], - [-10.39959225100864, 29.09858592377778], - [-9.564811163765624, 29.933573716749855], - [-9.814718390329174, 31.177735500609053], - [-9.434793260119362, 32.038096421836478], - [-9.300692918321827, 32.564679266890629], - [-8.657476365585039, 33.24024526624239], - [-7.654178432638217, 33.697064927702506], - [-6.912544114601358, 34.11047638603744], - [-6.24434200685141, 35.145865383437517], - [-5.929994269219832, 35.759988104793983], - [-5.193863491222031, 35.755182196590845] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Moldova", "name": "Moldova", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [26.619336785597788, 48.220726223333457], - [26.857823520624798, 48.368210761094488], - [27.52253746919515, 48.467119452501102], - [28.259546746541837, 48.155562242213406], - [28.670891147585163, 48.118148505234089], - [29.122698195113024, 47.849095160506458], - [29.050867954227321, 47.510226955752493], - [29.415135125452732, 47.346645209332571], - [29.559674106573105, 46.928582872091312], - [29.908851759569295, 46.67436066343145], - [29.838210076626289, 46.525325832701675], - [30.024658644335364, 46.423936672545032], - [29.759971958136383, 46.349987697935354], - [29.170653924279879, 46.379262396828693], - [29.072106967899288, 46.517677720722482], - [28.862972446414055, 46.437889309263824], - [28.933717482221621, 46.258830471372491], - [28.659987420371575, 45.939986884131628], - [28.48526940279276, 45.596907050145887], - [28.233553501099035, 45.488283189468369], - [28.054442986775392, 45.944586086605618], - [28.160017937947707, 46.371562608417207], - [28.128030226359037, 46.81047638608824], - [27.551166212684841, 47.405117092470817], - [27.233872918412736, 47.826770941756365], - [26.924176059687561, 48.123264472030982], - [26.619336785597788, 48.220726223333457] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Madagascar", "name": "Madagascar", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [49.543518914595737, -12.469832858940553], - [49.80898074727908, -12.895284925999551], - [50.05651085795715, -13.555761407121981], - [50.217431268114055, -14.758788750876795], - [50.476536899625515, -15.226512139550541], - [50.377111443895942, -15.706069431219122], - [50.200274692593169, -16.000263360256763], - [49.860605503138665, -15.414252618066913], - [49.672606642460849, -15.710203545802477], - [49.863344354050142, -16.451036879138773], - [49.774564243372694, -16.875042006093597], - [49.49861209493411, -17.10603565843827], - [49.435618523970298, -17.953064060134363], - [49.04179243347393, -19.118781019774442], - [48.548540887247995, -20.496888116134119], - [47.930749139198653, -22.391501153251077], - [47.547723423051295, -23.781958916928513], - [47.095761346226588, -24.941629733990446], - [46.282477654817079, -25.178462823184102], - [45.409507684110444, -25.601434421493082], - [44.833573846217547, -25.346101169538933], - [44.039720493349755, -24.9883452287823], - [43.763768344911156, -24.460677178649988], - [43.697777540874441, -23.574116306250595], - [43.345654331237611, -22.77690398528387], - [43.254187046080986, -22.057413018484116], - [43.433297560404633, -21.336475111580185], - [43.893682895692919, -21.163307386970121], - [43.89637007017209, -20.830459486578167], - [44.374325392439644, -20.072366224856385], - [44.464397413924374, -19.435454196859045], - [44.23242190936616, -18.961994724200899], - [44.042976108584149, -18.331387220943167], - [43.963084344260899, -17.409944756746778], - [44.312468702986273, -16.850495700754951], - [44.446517368351387, -16.216219170804504], - [44.944936557806521, -16.179373874580396], - [45.502731967964976, -15.974373467678538], - [45.872993605336255, -15.793454278224681], - [46.312243279817203, -15.780018405828795], - [46.882182651564271, -15.210182386946309], - [47.70512983581235, -14.594302666891762], - [48.005214878131241, -14.091232598530372], - [47.869047479042152, -13.663868503476582], - [48.29382775248137, -13.784067884987483], - [48.845060255738773, -13.08917489995866], - [48.863508742066976, -12.487867933810417], - [49.194651320193302, -12.040556735891967], - [49.543518914595737, -12.469832858940553] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Mexico", "name": "Mexico", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-97.140008307670684, 25.869997463478395], - [-97.528072475966539, 24.992144069920297], - [-97.702945522842214, 24.272343044526728], - [-97.776041836319024, 22.932579860927653], - [-97.872366706111094, 22.444211737553356], - [-97.699043952204164, 21.898689480064256], - [-97.388959520236739, 21.411018988525818], - [-97.189333462293277, 20.635433254473124], - [-96.525575527720306, 19.890930894444061], - [-96.292127244841737, 19.32037140550954], - [-95.90088497595994, 18.828024196848727], - [-94.8390634834427, 18.562717393462204], - [-94.425729539756205, 18.144370835843343], - [-93.548651292682365, 18.423836981677933], - [-92.786113857783477, 18.524838568592255], - [-92.037348192090391, 18.704569200103432], - [-91.407903408559235, 18.876083278880227], - [-90.771869879910852, 19.284120388256778], - [-90.533589850613026, 19.867418117751292], - [-90.451475999701231, 20.707521877520428], - [-90.278618333684889, 20.999855454995547], - [-89.601321173851474, 21.261725775634485], - [-88.543866339862845, 21.493675441976613], - [-87.658416510757704, 21.458845526611977], - [-87.051890224948053, 21.543543199138295], - [-86.811982388032931, 21.331514797444747], - [-86.845907965832595, 20.849864610268348], - [-87.383291185235848, 20.255404771398727], - [-87.621054450210721, 19.646553046135917], - [-87.436750454441764, 19.472403469312265], - [-87.586560431655911, 19.040130113190738], - [-87.837191128271485, 18.259815985583426], - [-88.090664028663156, 18.516647854074048], - [-88.300031094093626, 18.499982204659997], - [-88.490122850279278, 18.486830552641717], - [-88.84834387892657, 17.883198147040329], - [-89.029857347351737, 18.001511338772556], - [-89.150909389995462, 17.955467637600403], - [-89.143080410503316, 17.808318996649401], - [-90.067933519230891, 17.819326076727517], - [-91.001519945015943, 17.817594916245692], - [-91.002269253284155, 17.254657701074272], - [-91.453921271515114, 17.252177232324183], - [-91.08167009150057, 16.918476670799517], - [-90.711821865587623, 16.687483018454767], - [-90.600846727240921, 16.470777899638787], - [-90.438866950221993, 16.410109768128105], - [-90.464472622422633, 16.069562079324722], - [-91.747960171255926, 16.066564846251762], - [-92.229248623406278, 15.251446641495871], - [-92.087215949252013, 15.06458466232851], - [-92.203229539747255, 14.830102850804108], - [-92.227750006869812, 14.538828640190953], - [-93.359463874061746, 15.61542959234367], - [-93.875168830118511, 15.94016429286591], - [-94.691656460330108, 16.20097524664288], - [-95.250227016973014, 16.128318182840641], - [-96.053382127653293, 15.752087917539592], - [-96.557434048228274, 15.653515122942787], - [-97.263592495496624, 15.917064927631312], - [-98.013029954809596, 16.107311713113912], - [-98.947675747456486, 16.566043402568763], - [-99.697397427147024, 16.706164048728166], - [-100.829498867581293, 17.171071071842047], - [-101.666088629954444, 17.649026394109622], - [-101.918528001700196, 17.916090196193974], - [-102.478132086988907, 17.975750637275095], - [-103.500989549558057, 18.292294623278845], - [-103.917527432046811, 18.748571682200005], - [-104.992009650475467, 19.316133938061679], - [-105.493038499761411, 19.946767279535429], - [-105.731396043707633, 20.434101874264108], - [-105.397772996831321, 20.531718654863422], - [-105.500660773524402, 20.816895046466122], - [-105.27075232625792, 21.076284898355137], - [-105.265817226974022, 21.422103583252348], - [-105.603160976975374, 21.871145941652568], - [-105.693413865973113, 22.269080308516148], - [-106.028716396898943, 22.77375234627862], - [-106.909980434988341, 23.767774359628895], - [-107.91544877809136, 24.548915310152946], - [-108.401904873470954, 25.172313951105931], - [-109.260198737406625, 25.580609442644054], - [-109.444089321717314, 25.824883938087673], - [-109.291643846456267, 26.44293406829842], - [-109.801457689231796, 26.676175645447923], - [-110.391731737085692, 27.162114976504533], - [-110.641018846461606, 27.859876003525521], - [-111.178918830187826, 27.941240546169062], - [-111.759606899851619, 28.467952582303944], - [-112.228234626090369, 28.954408677683482], - [-112.27182369672866, 29.266844387320074], - [-112.80959448937395, 30.021113593052341], - [-113.163810594518651, 30.786880804969424], - [-113.148669399857141, 31.170965887978912], - [-113.871881069781836, 31.56760834403519], - [-114.205736660603506, 31.524045111613123], - [-114.776451178835003, 31.79953217216114], - [-114.936699795372121, 31.393484605427595], - [-114.771231859173483, 30.91361725516526], - [-114.673899298951739, 30.162681179315985], - [-114.330974494262918, 29.750432440707407], - [-113.588875088335413, 29.061611436473008], - [-113.424053107540516, 28.826173610951223], - [-113.271969367305502, 28.754782619739892], - [-113.140039435664363, 28.411289374295954], - [-112.962298346796473, 28.425190334582503], - [-112.761587083774856, 27.78021678314752], - [-112.457910529411635, 27.525813706974752], - [-112.24495195193677, 27.171726792910754], - [-111.616489020619184, 26.662817287700474], - [-111.284674648872993, 25.732589830014426], - [-110.987819383572386, 25.294606228124557], - [-110.71000688357131, 24.826004340101854], - [-110.655048997828871, 24.298594672131113], - [-110.17285620811343, 24.265547593680417], - [-109.771847093528521, 23.811182562754194], - [-109.409104377055698, 23.364672349536242], - [-109.433392300232896, 23.185587673428696], - [-109.85421932660168, 22.818271592698061], - [-110.031391974714424, 22.823077500901199], - [-110.295070970483636, 23.430973212166684], - [-110.949501309028022, 24.000964260345988], - [-111.670568407012681, 24.484423122652508], - [-112.182035895621468, 24.73841278736716], - [-112.148988817170817, 25.470125230404044], - [-112.300710822379671, 26.012004299416613], - [-112.777296719191526, 26.321959540303162], - [-113.464670783321907, 26.768185533143416], - [-113.596729906043805, 26.639459540304465], - [-113.848936733844241, 26.900063788352437], - [-114.465746629680027, 27.142090358991361], - [-115.055142178184965, 27.722726752222904], - [-114.982252570437382, 27.798200181585109], - [-114.570365566854917, 27.741485297144884], - [-114.199328782999231, 28.115002549750553], - [-114.162018398884612, 28.566111965442296], - [-114.931842210736605, 29.279479275015483], - [-115.518653937626965, 29.556361599235395], - [-115.887365282029563, 30.180793768834171], - [-116.2583503894529, 30.836464341753572], - [-116.721526252084956, 31.635743720012037], - [-117.127759999999839, 32.53534], - [-115.99135, 32.612390000000111], - [-114.72139, 32.72083], - [-114.815, 32.52528], - [-113.30498, 32.03914], - [-111.02361, 31.33472], - [-109.035, 31.341940000000129], - [-108.24194, 31.34222], - [-108.24, 31.754853718166366], - [-106.507589999999851, 31.75452], - [-106.1429, 31.39995], - [-105.63159, 31.08383], - [-105.03737, 30.64402], - [-104.70575, 30.12173], - [-104.456969999999885, 29.57196], - [-103.94, 29.27], - [-103.11, 28.97], - [-102.48, 29.76], - [-101.6624, 29.7793], - [-100.9576, 29.380710000000125], - [-100.45584, 28.696120000000118], - [-100.11, 28.11000000000012], - [-99.52, 27.54], - [-99.3, 26.84], - [-99.019999999999897, 26.37], - [-98.24, 26.06], - [-97.529999999999887, 25.84], - [-97.140008307670684, 25.869997463478395] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Macedonia", "name": "Macedonia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.59023, 41.85541], - [20.717310000000108, 41.84711], - [20.76216, 42.05186], - [21.352700000000134, 42.2068], - [21.576635989402117, 42.245224397061847], - [21.917080000000105, 42.30364], - [22.380525750424674, 42.320259507815074], - [22.881373732197339, 41.999297186850349], - [22.952377150166505, 41.337993882811176], - [22.76177, 41.3048], - [22.597308383889008, 41.130487168943198], - [22.055377638444266, 41.149865831052686], - [21.674160597426969, 40.93127452245794], - [21.020040317476397, 40.842726955725873], - [20.60518, 41.08622], - [20.46315, 41.51509], - [20.59023, 41.85541] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Mali", "name": "Mali", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-12.170750291380299, 14.616834214735503], - [-11.834207526079465, 14.799096991428936], - [-11.666078253617853, 15.388208319556295], - [-11.349095017939502, 15.411256008358475], - [-10.650791388379414, 15.132745876521422], - [-10.086846482778212, 15.330485744686269], - [-9.700255092802703, 15.264107367407359], - [-9.550238409859388, 15.486496893775435], - [-5.537744309908446, 15.501689764869253], - [-5.315277268891931, 16.201853745991837], - [-5.488522508150438, 16.325102037007962], - [-5.971128709324247, 20.640833441647626], - [-6.453786586930334, 24.956590684503418], - [-4.92333736817423, 24.974574082940993], - [-1.550054897457613, 22.792665920497377], - [1.823227573259032, 20.61080943448604], - [2.060990838233919, 20.142233384679482], - [2.683588494486428, 19.856230170160114], - [3.146661004253899, 19.693578599521441], - [3.158133172222704, 19.057364203360034], - [4.267419467800038, 19.155265204336995], - [4.270209995143801, 16.852227484601212], - [3.723421665063482, 16.184283759012612], - [3.638258904646476, 15.568119818580453], - [2.749992709981483, 15.409524847876693], - [1.385528191746857, 15.323561102759168], - [1.01578331869851, 14.968182277887944], - [0.374892205414682, 14.928908189346128], - [-0.26625729003058, 14.924308986872147], - [-0.515854458000348, 15.116157741755725], - [-1.066363491205663, 14.973815009007764], - [-2.001035122068771, 14.559008287000887], - [-2.191824510090384, 14.246417548067352], - [-2.967694464520576, 13.798150336151506], - [-3.103706834312759, 13.54126679122859], - [-3.52280270019986, 13.337661647998612], - [-4.006390753587225, 13.472485459848112], - [-4.280405035814879, 13.228443508349738], - [-4.427166103523802, 12.542645575404292], - [-5.220941941743119, 11.713858954307224], - [-5.197842576508648, 11.375145778850136], - [-5.470564947929004, 10.951269842976044], - [-5.404341599946973, 10.370736802609144], - [-5.816926235365286, 10.222554633012191], - [-6.050452032892266, 10.096360785355442], - [-6.205222947606429, 10.524060777219132], - [-6.493965013037267, 10.411302801958268], - [-6.666460944027547, 10.430810655148447], - [-6.850506557635057, 10.138993841996237], - [-7.622759161804808, 10.147236232946792], - [-7.89958980959237, 10.297382106970824], - [-8.029943610048617, 10.206534939001711], - [-8.335377163109738, 10.494811916541932], - [-8.282357143578279, 10.792597357623842], - [-8.407310756860026, 10.90925690352276], - [-8.620321010767126, 10.810890814655181], - [-8.581305304386772, 11.136245632364801], - [-8.376304897484911, 11.393645941610627], - [-8.786099005559462, 11.812560939984705], - [-8.905264858424529, 12.088358059126433], - [-9.127473517279581, 12.308060411015331], - [-9.327616339546008, 12.334286200403451], - [-9.567911749703212, 12.194243068892472], - [-9.890992804392011, 12.060478623904968], - [-10.165213792348835, 11.844083563682743], - [-10.593223842806278, 11.923975328005977], - [-10.870829637078211, 12.177887478072106], - [-11.036555955438256, 12.211244615116513], - [-11.297573614944508, 12.077971096235768], - [-11.456168585648269, 12.076834214725336], - [-11.513942836950587, 12.442987575729415], - [-11.467899135778522, 12.754518947800973], - [-11.553397793005427, 13.141213690641063], - [-11.927716030311613, 13.422075100147392], - [-12.124887457721256, 13.994727484589784], - [-12.170750291380299, 14.616834214735503] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Myanmar", "name": "Myanmar", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [99.543309360759281, 20.186597601802056], - [98.959675734454848, 19.752980658440944], - [98.253723992915582, 19.708203029860041], - [97.797782830804394, 18.627080389881751], - [97.375896437573516, 18.445437730375811], - [97.859122755934848, 17.567946071843657], - [98.493761020911322, 16.837835598207928], - [98.90334842325673, 16.177824204976115], - [98.537375929765687, 15.308497422746081], - [98.192074009191373, 15.123702500870349], - [98.430819126379859, 14.622027696180831], - [99.097755161538728, 13.827502549693275], - [99.212011753336071, 13.269293728076462], - [99.196353794351637, 12.804748439988666], - [99.587286004639694, 11.892762762901695], - [99.038120558673953, 10.960545762572435], - [98.553550653073017, 9.932959906448543], - [98.457174106848697, 10.675266018105146], - [98.764545526120756, 11.441291612183745], - [98.428338657629823, 12.032986761925681], - [98.509574009192661, 13.122377631070675], - [98.103603957107666, 13.64045970301285], - [97.777732375075161, 14.837285874892638], - [97.597071567782749, 16.100567938699765], - [97.164539829499773, 16.928734442609336], - [96.505768670642965, 16.427240505432845], - [95.369352248112378, 15.714389960182599], - [94.808404575584092, 15.803454291237637], - [94.188804152404515, 16.037936102762014], - [94.533485955791321, 17.277240301985724], - [94.324816522196741, 18.213513902249893], - [93.540988397193615, 19.366492621330021], - [93.663254835996199, 19.726961574781992], - [93.078277622452163, 19.855144965081973], - [92.368553501355606, 20.670883287025344], - [92.30323449093865, 21.475485337809815], - [92.652257114637976, 21.324047552978481], - [92.672720981825549, 22.041238918541247], - [93.166127557348361, 22.278459580977099], - [93.060294224014598, 22.703110663335565], - [93.286326938859247, 23.043658352138998], - [93.325187615942767, 24.078556423432197], - [94.106741977925054, 23.850740871673477], - [94.552657912171611, 24.675238348890328], - [94.603249139385355, 25.162495428970399], - [95.155153436262566, 26.001307277932078], - [95.124767694074933, 26.573572089132295], - [96.419365675850941, 27.264589341739221], - [97.133999058015277, 27.08377350514996], - [97.051988559968066, 27.699058946233144], - [97.402561476636123, 27.88253611908544], - [97.327113885490007, 28.261582749946331], - [97.91198774616943, 28.335945136014338], - [98.24623091023328, 27.747221381129172], - [98.682690057370451, 27.508812160750612], - [98.712093947344499, 26.74353587494026], - [98.671838006589127, 25.918702500913518], - [97.724609002679117, 25.083637193292994], - [97.604719679761956, 23.897404690033039], - [98.660262485755737, 24.063286037689959], - [98.898749220782747, 23.142722072842524], - [99.531992222087382, 22.949038804612574], - [99.240898878987224, 22.118314317304577], - [99.983489211021464, 21.742936713136398], - [100.416537713627349, 21.558839423096607], - [101.150032993578222, 21.849984442629015], - [101.180005324307515, 21.436572984294024], - [100.329101190189519, 20.786121731036229], - [100.115987583417819, 20.41784963630818], - [99.543309360759281, 20.186597601802056] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Montenegro", "name": "Montenegro", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [19.801613396898681, 42.500093492190835], - [19.738051385179627, 42.688247382165564], - [19.30449, 42.19574], - [19.371770000000136, 41.87755], - [19.16246, 41.95502], - [18.88214, 42.28151], - [18.45, 42.48], - [18.56, 42.65], - [18.70648, 43.20011], - [19.03165, 43.43253], - [19.21852, 43.52384], - [19.48389, 43.35229], - [19.63, 43.213779970270522], - [19.95857, 43.10604], - [20.3398, 42.89852], - [20.25758, 42.81275], - [20.0707, 42.58863], - [19.801613396898681, 42.500093492190835] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Mongolia", "name": "Mongolia", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [87.751264276076697, 49.297197984405479], - [88.805566847695488, 49.470520738312409], - [90.713667433640666, 50.331811835321076], - [92.234711541719662, 50.802170722041716], - [93.104219191462661, 50.495290228876414], - [94.147566359435615, 50.480536607457083], - [94.815949334698701, 50.013433335970838], - [95.814027947983973, 49.977466539095708], - [97.259727817781396, 49.726060695995727], - [98.231761509191543, 50.422400621128737], - [97.825739780674283, 51.010995184933165], - [98.861490513100307, 52.047366034546684], - [99.981732212323507, 51.634006252643978], - [100.889480421962588, 51.516855780638316], - [102.065222609467298, 51.25992055928311], - [102.255908644624299, 50.510560614618669], - [103.676545444760194, 50.089966132195109], - [104.621552362081687, 50.275329494826067], - [105.886591424586726, 50.406019192092209], - [106.888804152455336, 50.274295966180219], - [107.868175897250936, 49.793705145865808], - [108.475167270951275, 49.282547715850725], - [109.402449171996636, 49.292960516957535], - [110.662010532678764, 49.130128078805861], - [111.581230910286607, 49.377968248077678], - [112.897739699354361, 49.543565375356984], - [114.362456496235239, 50.248302720737399], - [114.962109816550154, 50.140247300815112], - [115.485695428531386, 49.805177313834591], - [116.678800897286152, 49.888531399121376], - [116.191802199367544, 49.134598090199091], - [115.485282017073018, 48.135382595403428], - [115.742837355615748, 47.726544501326273], - [116.308952671373206, 47.853410142602826], - [117.295507440257396, 47.69770905210742], - [118.064142694166691, 48.066730455103674], - [118.866574334794933, 47.747060044946153], - [119.772823927897477, 47.048058783550125], - [119.66326989143873, 46.692679958678909], - [118.874325799638711, 46.805412095723646], - [117.421701287914175, 46.672732855814253], - [116.717868280098841, 46.388202419615205], - [115.985096470200062, 45.727235012385989], - [114.46033165899604, 45.339816799493811], - [113.463906691544139, 44.808893134127111], - [112.436062453258785, 45.011645616224278], - [111.873306105600278, 45.102079372735055], - [111.348376906379428, 44.457441718110083], - [111.667737257943202, 44.073175767587706], - [111.829587843881342, 43.743118394539515], - [111.129682244920218, 43.406834011400136], - [110.412103306115256, 42.871233628911014], - [109.243595819131428, 42.519446316084093], - [107.744772576937933, 42.481515814781865], - [106.129315627061658, 42.134327704428898], - [104.964993931093446, 41.597409572916334], - [104.522281935648977, 41.908346666016541], - [103.312278273534787, 41.907468166667591], - [101.833040399179922, 42.51487295182627], - [100.845865513108237, 42.663804429691439], - [99.515817498780009, 42.524691473961717], - [97.451757440177985, 42.748889675460013], - [96.349395786527793, 42.725635280928678], - [95.762454868556674, 43.319449164394598], - [95.306875441471504, 44.241330878265458], - [94.688928664125299, 44.352331854828414], - [93.480733677141274, 44.975472113619951], - [92.133890822318193, 45.115075995456444], - [90.945539585334288, 45.286073309910265], - [90.585768263718265, 45.719716091487513], - [90.970809360724985, 46.888146063822923], - [90.280825636763893, 47.693549099307923], - [88.854297723346733, 48.06908173277295], - [88.013832228551721, 48.599462795600601], - [87.751264276076697, 49.297197984405479] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Mozambique", "name": "Mozambique", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.559989047999345, -11.520020033415923], - [35.312397902169032, -11.439146416879145], - [36.514081658684248, -11.720938002166733], - [36.775150994622791, -11.594537448780804], - [37.471284214026596, -11.568750909067157], - [37.827644891111383, -11.268769219612834], - [38.427556593587745, -11.285202325081654], - [39.521029900883768, -10.896853936408224], - [40.316588576017182, -10.317096042525696], - [40.478387485523022, -10.765440769089992], - [40.437253045418672, -11.761710707245014], - [40.560811395028558, -12.639176527561023], - [40.599620395679743, -14.201975192931858], - [40.775475294768988, -14.691764418194239], - [40.477250604012596, -15.406294447493968], - [40.089263950365208, -16.100774021064456], - [39.452558628097044, -16.720891208566936], - [38.53835086442151, -17.101023044505954], - [37.411132846838875, -17.586368096591233], - [36.281279331209348, -18.659687595293445], - [35.896496616364054, -18.842260430580634], - [35.198399692533137, -19.552811374593887], - [34.786383497870041, -19.784011732667732], - [34.701892531072836, -20.497043145431007], - [35.176127150215358, -21.254361260668407], - [35.373427768705731, -21.840837090748874], - [35.385848253705397, -22.14], - [35.562545536369079, -22.09], - [35.533934767404297, -23.070787855727751], - [35.371774122872374, -23.535358982031692], - [35.607470330555621, -23.706563002214676], - [35.458745558419615, -24.122609958596545], - [35.040734897610655, -24.478350518493798], - [34.215824008935463, -24.816314385682652], - [33.013210076639005, -25.357573337507731], - [32.574632195777859, -25.727318210556088], - [32.660363396950082, -26.148584486599443], - [32.915955031065685, -26.215867201443459], - [32.830120477028878, -26.74219166433619], - [32.071665480281062, -26.733820082304902], - [31.985779249811962, -26.29177988048022], - [31.837777947728057, -25.843331801051342], - [31.752408481581874, -25.484283949487406], - [31.930588820124242, -24.369416599222532], - [31.670397983534645, -23.658969008073861], - [31.191409132621278, -22.251509698172395], - [32.244988234188007, -21.116488539313689], - [32.508693068173436, -20.395292250248303], - [32.659743279762573, -20.30429005298231], - [32.772707960752619, -19.715592136313294], - [32.611994256324884, -19.419382826416268], - [32.654885695127142, -18.672089939043492], - [32.849860874164385, -17.979057305577175], - [32.847638787575839, -16.713398125884613], - [32.328238966610222, -16.392074069893749], - [31.852040643040592, -16.319417006091374], - [31.636498243951188, -16.071990248277881], - [31.173063999157673, -15.860943698797868], - [30.338954705534537, -15.880839125230242], - [30.274255812305103, -15.507786960515208], - [30.179481235481827, -14.796099134991525], - [33.214024692525207, -13.97186003993615], - [33.789700148256678, -14.451830743063068], - [34.064825473778619, -14.359950046448118], - [34.459633416488536, -14.613009535381421], - [34.517666049952304, -15.013708591372609], - [34.307291294092089, -15.478641452702592], - [34.381291945134045, -16.183559665596039], - [35.033810255683527, -16.801299737213089], - [35.339062941231639, -16.107440280830108], - [35.771904738108347, -15.896858819240721], - [35.686845330555926, -14.611045830954328], - [35.267956170398001, -13.887834161029563], - [34.907151320136158, -13.565424899960565], - [34.559989047999345, -13.579997653866872], - [34.280006137841973, -12.280025323132504], - [34.559989047999345, -11.520020033415923] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Mauritania", "name": "Mauritania", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-12.170750291380299, 14.616834214735503], - [-12.830658331747513, 15.303691514542942], - [-13.43573767745306, 16.039383042866188], - [-14.099521450242175, 16.304302273010489], - [-14.577347581428977, 16.598263658102805], - [-15.135737270558813, 16.587282416240779], - [-15.623666144258689, 16.369337063049809], - [-16.120690070041928, 16.45566254319338], - [-16.463098110407881, 16.135036119038457], - [-16.549707810929061, 16.673892116761959], - [-16.270551723688353, 17.166962795474866], - [-16.146347418674846, 18.108481553616652], - [-16.256883307347163, 19.096715806550304], - [-16.377651129613266, 19.593817246981981], - [-16.277838100641514, 20.092520656814695], - [-16.536323614965465, 20.567866319251486], - [-17.063423224342568, 20.99975210213082], - [-16.845193650773989, 21.333323472574875], - [-12.929101935263528, 21.327070624267559], - [-13.118754441774708, 22.771220201096249], - [-12.874221564169574, 23.284832261645171], - [-11.93722449385332, 23.374594224536164], - [-11.969418911171159, 25.933352769468261], - [-8.687293667017398, 25.881056219988899], - [-8.684399786809051, 27.395744126895998], - [-4.92333736817423, 24.974574082940993], - [-6.453786586930334, 24.956590684503418], - [-5.971128709324247, 20.640833441647626], - [-5.488522508150438, 16.325102037007962], - [-5.315277268891931, 16.201853745991837], - [-5.537744309908446, 15.501689764869253], - [-9.550238409859388, 15.486496893775435], - [-9.700255092802703, 15.264107367407359], - [-10.086846482778212, 15.330485744686269], - [-10.650791388379414, 15.132745876521422], - [-11.349095017939502, 15.411256008358475], - [-11.666078253617853, 15.388208319556295], - [-11.834207526079465, 14.799096991428936], - [-12.170750291380299, 14.616834214735503] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Malawi", "name": "Malawi", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.559989047999345, -11.520020033415923], - [34.280006137841973, -12.280025323132504], - [34.559989047999345, -13.579997653866872], - [34.907151320136158, -13.565424899960565], - [35.267956170398001, -13.887834161029563], - [35.686845330555926, -14.611045830954328], - [35.771904738108347, -15.896858819240721], - [35.339062941231639, -16.107440280830108], - [35.033810255683527, -16.801299737213089], - [34.381291945134045, -16.183559665596039], - [34.307291294092089, -15.478641452702592], - [34.517666049952304, -15.013708591372609], - [34.459633416488536, -14.613009535381421], - [34.064825473778619, -14.359950046448118], - [33.789700148256678, -14.451830743063068], - [33.214024692525207, -13.97186003993615], - [32.688165317523122, -13.712857761289273], - [32.991764357237876, -12.783870537978272], - [33.306422153463068, -12.435778090060214], - [33.114289178201908, -11.607198174692311], - [33.315310499817279, -10.796549981329695], - [33.485687697083584, -10.525558770391111], - [33.231387973775291, -9.676721693564799], - [32.759375441221316, -9.230599053589058], - [33.739729038230443, -9.417150974162722], - [33.940837724096532, -9.693673841980292], - [34.280006137841973, -10.159999688358402], - [34.559989047999345, -11.520020033415923] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Malaysia", "name": "Malaysia", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [101.075515578213299, 6.204867051615891], - [101.154218784593809, 5.691384182147713], - [101.814281854258013, 5.810808417174228], - [102.141186964936423, 6.221636053894655], - [102.371147088635212, 6.12820506431096], - [102.961705356866673, 5.524495144061077], - [103.381214634212142, 4.855001125503746], - [103.438575474056165, 4.181605536308381], - [103.332122023534851, 3.72669790284297], - [103.42942874554052, 3.382868760589019], - [103.502447544368877, 2.791018581550204], - [103.854674106870334, 2.515454006353763], - [104.247931756611479, 1.631141058759055], - [104.228811476663523, 1.293048000489534], - [103.519707472754433, 1.226333726400682], - [102.573615350354771, 1.967115383304744], - [101.39063846232915, 2.760813706875623], - [101.273539666755838, 3.27029165284118], - [100.69543541870668, 3.939139715994869], - [100.557407668055092, 4.767280381688279], - [100.19670617065772, 5.312492580583678], - [100.306260207116509, 6.040561835143875], - [100.085756870527078, 6.46448944745029], - [100.259596388756918, 6.64282481528957], - [101.075515578213299, 6.204867051615891] - ] - ], - [ - [ - [118.618320754064825, 4.47820241944754], - [117.882034946770162, 4.137551377779487], - [117.01521447150634, 4.306094061699468], - [115.86551720587677, 4.306559149590156], - [115.51907840379198, 3.169238389494395], - [115.134037306785231, 2.821481838386219], - [114.621355422017473, 1.430688177898886], - [113.805849644019531, 1.217548732911041], - [112.859809198052176, 1.497790025229946], - [112.380251906383648, 1.410120957846757], - [111.797548455860408, 0.904441229654651], - [111.159137811326559, 0.976478176269509], - [110.514060907027101, 0.773131415200993], - [109.830226678508836, 1.338135687664191], - [109.663260125773718, 2.006466986494984], - [110.396135288537039, 1.663774725751395], - [111.168852980597478, 1.850636704918784], - [111.370081007942076, 2.697303371588872], - [111.796928338672842, 2.885896511238073], - [112.995614862115247, 3.102394924324869], - [113.712935418758718, 3.893509426281127], - [114.204016554828399, 4.525873928236819], - [114.659595981913526, 4.00763682699781], - [114.869557326315373, 4.348313706881952], - [115.347460972150671, 4.316636053887009], - [115.405700311343594, 4.955227565933824], - [115.450710483869798, 5.447729803891561], - [116.220741001450961, 6.143191229675621], - [116.725102980619752, 6.924771429873998], - [117.129626092600461, 6.928052883324566], - [117.643393182446303, 6.422166449403305], - [117.689075148592337, 5.98749013918018], - [118.347691278152197, 5.708695786965462], - [119.181903924639926, 5.407835598162249], - [119.110693800941718, 5.016128241389864], - [118.439727004064082, 4.966518866389619], - [118.618320754064825, 4.47820241944754] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Namibia", "name": "Namibia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.344976840895239, -28.576705010697697], - [15.601818068105812, -27.821247247022797], - [15.210472446359457, -27.09095590587404], - [14.989710727608548, -26.117371921495153], - [14.74321414557633, -25.392920017195376], - [14.40814415859583, -23.85301401132984], - [14.385716586981145, -22.656652927340687], - [14.257714064194172, -22.111208184499951], - [13.868642205468657, -21.699036960539974], - [13.352497999737437, -20.872834161057497], - [12.82684533046449, -19.673165785401661], - [12.608564080463617, -19.045348809487695], - [11.794918654028063, -18.069129327061912], - [11.734198846085118, -17.30188933682447], - [12.215461460019352, -17.11166838955808], - [12.814081251688405, -16.941342868724067], - [13.462362094789963, -16.971211846588769], - [14.058501417709007, -17.42338062914266], - [14.209706658595021, -17.353100681225715], - [18.26330936043416, -17.309950860262003], - [18.956186964603599, -17.789094740472255], - [21.377176141045563, -17.930636488519688], - [23.215048455506057, -17.52311614346598], - [24.033861525170771, -17.29584319424632], - [24.6823490740015, -17.35341073981947], - [25.076950310982255, -17.578823337476617], - [25.084443393664564, -17.661815687737366], - [24.520705193792534, -17.887124932529932], - [24.217364536239209, -17.889347019118485], - [23.579005568137713, -18.281261081620055], - [23.196858351339298, -17.869038181227783], - [21.655040317478971, -18.219146010005222], - [20.910641310314531, -18.252218926672018], - [20.881134067475866, -21.814327080983144], - [19.895457797940672, -21.849156996347865], - [19.895767856534427, -24.767790215760588], - [19.89473432788861, -28.461104831660769], - [19.002127312911082, -28.972443129188857], - [18.464899122804745, -29.045461928017271], - [17.836151971109526, -28.856377862261311], - [17.387497185951499, -28.783514092729774], - [17.218928663815401, -28.355943291946804], - [16.824017368240899, -28.082161553664466], - [16.344976840895239, -28.576705010697697] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "New Caledonia", "name": "New Caledonia", "continent": "Australia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [165.779989862326346, -21.080004978115621], - [166.599991489933814, -21.700018812753523], - [167.120011428086883, -22.159990736583488], - [166.74003462144475, -22.399976088146943], - [166.189732293968632, -22.129708347260447], - [165.474375441752159, -21.679606621998229], - [164.829815301775653, -21.149819838141948], - [164.16799523341362, -20.444746595951624], - [164.029605747735957, -20.105645847252347], - [164.459967075862664, -20.120011895429492], - [165.020036249041993, -20.459991143477726], - [165.460009393575064, -20.800022067958253], - [165.779989862326346, -21.080004978115621] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Niger", "name": "Niger", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [2.154473504249949, 11.940150051313422], - [2.177107781593917, 12.625017808477534], - [1.024103224297619, 12.851825669806598], - [0.993045688490156, 13.335749620003865], - [0.429927605805517, 13.988733018443893], - [0.295646396495215, 14.444234930880663], - [0.374892205414767, 14.928908189346144], - [1.015783318698481, 14.968182277887989], - [1.385528191746971, 15.323561102759237], - [2.74999270998154, 15.409524847876751], - [3.63825890464659, 15.56811981858044], - [3.723421665063596, 16.184283759012654], - [4.270209995143886, 16.852227484601311], - [4.267419467800095, 19.155265204337123], - [5.677565952180712, 19.601206976799794], - [8.572893100629868, 21.565660712159225], - [11.999505649471697, 23.471668402596432], - [13.581424594790459, 23.040506089769274], - [14.143870883855239, 22.491288967371126], - [14.8513, 22.862950000000119], - [15.096887648181847, 21.308518785074902], - [15.471076694407314, 21.048457139565979], - [15.487148064850143, 20.730414537025634], - [15.90324669766431, 20.387618923417499], - [15.68574059414777, 19.957180080642384], - [15.300441114979716, 17.927949937405], - [15.247731154041842, 16.627305813050778], - [13.972201775781681, 15.684365953021139], - [13.540393507550785, 14.36713369390122], - [13.956698846094124, 13.996691189016925], - [13.954476759505607, 13.353448798063765], - [14.595781284247604, 13.330426947477859], - [14.495787387762899, 12.859396267137353], - [14.213530714584746, 12.80203542729333], - [14.181336297266906, 12.483656927943169], - [13.995352817448289, 12.4615652531383], - [13.318701613018558, 13.55635630945795], - [13.083987257548809, 13.596147162322492], - [12.302071160540546, 13.037189032437535], - [11.527803175511504, 13.328980007373556], - [10.989593133191532, 13.387322699431191], - [10.701031935273816, 13.246917832894038], - [10.114814487354748, 13.277251898649464], - [9.524928012743088, 12.85110219975456], - [9.014933302454436, 12.826659247280414], - [7.804671258178869, 13.343526923063731], - [7.330746697630046, 13.098038031461213], - [6.82044192874781, 13.115091254117598], - [6.445426059605721, 13.492768459522718], - [5.443058302440135, 13.865923977102225], - [4.368343540066006, 13.747481594289408], - [4.107945997747378, 13.531215725147941], - [3.967282749048933, 12.956108710171574], - [3.680633579125924, 12.552903347214167], - [3.611180454125587, 11.660167141155965], - [2.848643019226585, 12.235635891158207], - [2.490163608418015, 12.233052069543588], - [2.154473504249949, 11.940150051313422] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Nigeria", "name": "Nigeria", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [8.500287713259693, 4.771982937026847], - [7.462108188515939, 4.41210826254624], - [7.082596469764438, 4.464689032403228], - [6.698072137080598, 4.240594183769516], - [5.898172641634686, 4.262453314628984], - [5.362804803090881, 4.887970689305957], - [5.033574252959368, 5.611802476418233], - [4.325607130560683, 6.270651149923466], - [3.574180128604552, 6.258300482605717], - [2.691701694356254, 6.258817246928628], - [2.74906253420022, 7.870734361192886], - [2.723792758809509, 8.506845404489708], - [2.912308383810255, 9.13760793704432], - [3.220351596702101, 9.4441525333997], - [3.705438266625918, 10.063210354040207], - [3.600070021182801, 10.332186184119406], - [3.797112257511713, 10.734745591673104], - [3.572216424177469, 11.327939357951516], - [3.611180454125558, 11.660167141155966], - [3.68063357912581, 12.552903347214222], - [3.967282749048848, 12.956108710171572], - [4.107945997747321, 13.531215725147829], - [4.368343540066063, 13.747481594289324], - [5.443058302440163, 13.865923977102295], - [6.445426059605636, 13.492768459522676], - [6.820441928747753, 13.115091254117514], - [7.330746697630017, 13.098038031461199], - [7.804671258178784, 13.343526923063745], - [9.014933302454462, 12.826659247280427], - [9.524928012742945, 12.851102199754477], - [10.114814487354689, 13.277251898649409], - [10.701031935273702, 13.246917832894081], - [10.989593133191532, 13.387322699431108], - [11.527803175511393, 13.328980007373584], - [12.302071160540521, 13.037189032437521], - [13.083987257548866, 13.596147162322563], - [13.318701613018558, 13.556356309457824], - [13.995352817448346, 12.461565253138343], - [14.181336297266792, 12.483656927943112], - [14.57717776862253, 12.085360826053501], - [14.468192172918974, 11.90475169519341], - [14.415378859116682, 11.572368882692071], - [13.572949659894558, 10.798565985553564], - [13.308676385153914, 10.160362046748926], - [13.1675997249971, 9.64062632897341], - [12.955467970438971, 9.417771714714702], - [12.753671502339214, 8.717762762888993], - [12.218872104550597, 8.305824082874322], - [12.063946160539556, 7.799808457872301], - [11.839308709366801, 7.397042344589434], - [11.745774366918509, 6.981382961449753], - [11.058787876030349, 6.644426784690593], - [10.497375115611417, 7.055357774275562], - [10.118276808318255, 7.038769639509879], - [9.522705926154398, 6.453482367372116], - [9.233162876023043, 6.444490668153334], - [8.757532993208626, 5.47966583904791], - [8.500287713259693, 4.771982937026847] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Nicaragua", "name": "Nicaragua", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-85.712540452807289, 11.088444932494822], - [-86.058488328785245, 11.40343862552994], - [-86.525849982432931, 11.806876532432593], - [-86.7459915839963, 12.143961900272483], - [-87.167516242201131, 12.458257961471656], - [-87.668493415054698, 12.909909979702629], - [-87.557466600275603, 13.064551703336061], - [-87.392386237319201, 12.914018256069836], - [-87.316654425795463, 12.984685777228972], - [-87.005769009127562, 13.025794379117157], - [-86.880557013684339, 13.254204209847241], - [-86.733821784191576, 13.263092556201441], - [-86.755086636079696, 13.754845485890909], - [-86.520708177419877, 13.778487453664436], - [-86.312142096689911, 13.771356106008167], - [-86.096263800790581, 14.038187364147245], - [-85.801294725268576, 13.836054999237586], - [-85.698665330736901, 13.960078436738083], - [-85.514413011400222, 14.079011745657834], - [-85.165364549484792, 14.354369615125076], - [-85.148750576502948, 14.560196844943615], - [-85.052787441736925, 14.551541042534719], - [-84.924500698572388, 14.790492865452348], - [-84.820036790694346, 14.819586696832669], - [-84.649582078779602, 14.66680532476175], - [-84.449335903648588, 14.621614284722494], - [-84.228341640952394, 14.748764146376654], - [-83.975721401693576, 14.749435939996458], - [-83.628584967772895, 14.880073960830298], - [-83.489988776366104, 15.016267198135534], - [-83.147219000974104, 14.995829169164109], - [-83.233234422523907, 14.8998660343981], - [-83.28416154654758, 14.676623846897197], - [-83.182126430987267, 14.310703029838447], - [-83.412499966144424, 13.970077826386554], - [-83.519831916014667, 13.56769928634588], - [-83.55220720084553, 13.127054348193084], - [-83.498515387694255, 12.869292303921226], - [-83.473323126951968, 12.419087225794424], - [-83.626104499022887, 12.320850328007563], - [-83.719613003255034, 11.893124497927724], - [-83.650857510090702, 11.629032090700116], - [-83.855470343750369, 11.373311265503785], - [-83.808935716471538, 11.103043524617274], - [-83.655611741861563, 10.938764146361418], - [-83.895054490885926, 10.726839097532444], - [-84.190178595704822, 10.793450018756671], - [-84.355930752281026, 10.999225572142901], - [-84.673069017256239, 11.082657172078139], - [-84.903003302738924, 10.952303371621895], - [-85.561851976244171, 11.217119248901593], - [-85.712540452807289, 11.088444932494822] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Netherlands", "name": "Netherlands", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [6.074182570020922, 53.51040334737813], - [6.905139601274128, 53.482162177130633], - [7.092053256873895, 53.14404328064488], - [6.842869500362381, 52.228440253297542], - [6.589396599970825, 51.85202912048338], - [5.988658074577812, 51.85161570902504], - [6.156658155958779, 50.803721015010574], - [5.60697594567, 51.037298488969768], - [4.973991326526913, 51.475023708698124], - [4.047071160507527, 51.267258612668556], - [3.314971144228536, 51.345755113319903], - [3.830288527043137, 51.620544542031936], - [4.705997348661184, 53.091798407597757], - [6.074182570020922, 53.51040334737813] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Norway", "name": "Norway", "continent": "Europe" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [28.165547316202911, 71.185474351680497], - [31.293418409965472, 70.453787746859902], - [30.005435011522785, 70.186258856884876], - [31.101078728975118, 69.558080145944857], - [29.399580519332879, 69.156916002063056], - [28.591929559043187, 69.064776923286686], - [29.015572950971968, 69.76649119737796], - [27.732292107867885, 70.164193020296281], - [26.179622023226298, 69.825298977326142], - [25.689212680776389, 69.092113755968995], - [24.735679152126714, 68.649556789821432], - [23.662049594830759, 68.891247463650515], - [22.356237827247405, 68.841741441514941], - [21.244936150810723, 69.370443020293109], - [20.645592889089581, 69.106247260200846], - [20.02526899585791, 69.065138658312705], - [19.878559604581248, 68.407194322372604], - [17.993868442464386, 68.567391262477329], - [17.729181756265344, 68.01055186631622], - [16.768878614985535, 68.013936672631374], - [16.108712192456832, 67.302455552836889], - [15.108411492583055, 66.193866889095418], - [13.555689731509087, 64.787027696381458], - [13.919905226302202, 64.445420640716108], - [13.571916131248766, 64.049114081469654], - [12.57993533697393, 64.066218980558332], - [11.930569288794228, 63.128317572676977], - [11.992064243221531, 61.800362453856557], - [12.63114668137524, 61.293571682370079], - [12.300365838274896, 60.117932847730046], - [11.468271925511173, 59.432393296945989], - [11.027368605196925, 58.856149400459394], - [10.356556837616095, 59.469807033925363], - [8.382000359743641, 58.313288479233265], - [7.048748406613297, 58.078884182357271], - [5.665835402050418, 58.588155422593658], - [5.308234490590733, 59.663231919993805], - [4.992078077829005, 61.97099803328426], - [5.912900424837885, 62.614472968182682], - [8.553411085655766, 63.454008287196459], - [10.527709181366784, 64.486038316497471], - [12.358346795306371, 65.879725857193151], - [14.7611458675816, 67.810641587995121], - [16.435927361728968, 68.563205471461671], - [19.184028354578512, 69.817444159617807], - [21.378416375420606, 70.255169379346043], - [23.02374230316158, 70.202071845166259], - [24.546543409938515, 71.030496731237221], - [26.370049676221807, 70.986261705195361], - [28.165547316202911, 71.185474351680497] - ] - ], - [ - [ - [24.72412, 77.85385], - [22.49032, 77.44493], - [20.72601, 77.67704], - [21.41611, 77.93504], - [20.8119, 78.25463], - [22.88426, 78.45494], - [23.28134, 78.07954], - [24.72412, 77.85385] - ] - ], - [ - [ - [18.25183, 79.70175], - [21.54383, 78.95611], - [19.02737, 78.5626], - [18.47172, 77.82669], - [17.59441, 77.63796], - [17.1182, 76.80941], - [15.91315, 76.77045], - [13.76259, 77.38035], - [14.66956, 77.73565], - [13.1706, 78.02493], - [11.22231, 78.8693], - [10.44453, 79.65239], - [13.17077, 80.01046], - [13.71852, 79.66039], - [15.14282, 79.67431], - [15.52255, 80.01608], - [16.99085, 80.05086], - [18.25183, 79.70175] - ] - ], - [ - [ - [25.447625359811887, 80.407340399894494], - [27.407505730913492, 80.056405748200447], - [25.924650506298171, 79.517833970854539], - [23.024465773213613, 79.40001170522909], - [20.075188429451877, 79.566823228667232], - [19.897266473070907, 79.842361965647498], - [18.46226362475792, 79.859880276194403], - [17.368015170977454, 80.318896186027004], - [20.455992059010693, 80.598155626132225], - [21.907944777115397, 80.357679348462071], - [22.919252557067431, 80.657144273593488], - [25.447625359811887, 80.407340399894494] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Nepal", "name": "Nepal", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [88.120440708369841, 27.876541652939586], - [88.043132765661198, 27.445818589786818], - [88.174804315140904, 26.810405178325944], - [88.060237664749806, 26.414615383402484], - [87.22747195836628, 26.39789805755607], - [86.024392938179147, 26.630984605408567], - [85.25177859898335, 26.726198431906337], - [84.675017938173767, 27.234901231387528], - [83.304248895199535, 27.364505723575554], - [81.999987420584958, 27.925479234319987], - [81.057202589851997, 28.416095282499036], - [80.088424513676259, 28.794470119740136], - [80.476721225917373, 29.729865220655334], - [81.11125613802929, 30.183480943313398], - [81.525804477874729, 30.422716986608627], - [82.327512648450863, 30.115268052688126], - [83.337115106137176, 29.463731594352193], - [83.898992954446712, 29.320226141877654], - [84.234579705750136, 28.839893703724691], - [85.011638218123025, 28.642773952747337], - [85.823319940131498, 28.203575954698699], - [86.954517043000592, 27.97426178640351], - [88.120440708369841, 27.876541652939586] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "New Zealand", "name": "New Zealand", "continent": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [173.020374790740703, -40.919052422856417], - [173.247234328502003, -41.331998793300777], - [173.958405389702875, -40.926700534835604], - [174.2475867048081, -41.349155368821663], - [174.248516880589449, -41.770008233406749], - [173.876446568087886, -42.233184096038819], - [173.222739699595621, -42.970038344088557], - [172.711246372770717, -43.372287693048492], - [173.080112746470206, -43.853343601253577], - [172.308583612352464, -43.865694268571332], - [171.452925246463622, -44.24251881284372], - [171.185137974327233, -44.897104180684885], - [170.616697219116588, -45.908928724959701], - [169.83142215400926, -46.355774834987585], - [169.332331170934253, -46.641235446967848], - [168.411353794628525, -46.619944756863582], - [167.763744745146823, -46.290197442409195], - [166.676886021184202, -46.219917494492236], - [166.509144321964669, -45.852704766626204], - [167.046424188503238, -45.110941257508664], - [168.303763462596862, -44.12397307716612], - [168.949408807651508, -43.93581918719142], - [169.667814569373149, -43.555325616226334], - [170.524919875366152, -43.031688327812823], - [171.125089960004004, -42.512753594737781], - [171.569713983443194, -41.767424411792128], - [171.948708937871885, -41.514416599291145], - [172.097227004278722, -40.956104424809674], - [172.798579543343948, -40.493962090823466], - [173.020374790740703, -40.919052422856417] - ] - ], - [ - [ - [174.612008905330526, -36.156397393540537], - [175.336615838927173, -37.209097995758263], - [175.3575964704375, -36.52619394302112], - [175.808886753642469, -36.798942152657681], - [175.958490025127475, -37.555381768546063], - [176.763195428776555, -37.881253350578696], - [177.438813104560495, -37.961248467766488], - [178.010354445708657, -37.579824721020124], - [178.517093540762801, -37.695373223624792], - [178.274731073313802, -38.582812595373092], - [177.970460239979332, -39.166342868812968], - [177.206992629299123, -39.145775648760839], - [176.939980503647007, -39.449736423501562], - [177.032946405340113, -39.879942722331471], - [176.8858236026052, -40.06597787858216], - [176.508017206119348, -40.60480803808958], - [176.012440220440283, -41.289624118821493], - [175.239567499082966, -41.688307793953236], - [175.067898391009408, -41.425894870775075], - [174.650972935278418, -41.281820977545443], - [175.227630243223615, -40.459235528323397], - [174.900156691789959, -39.908933200847216], - [173.824046665743992, -39.508854262043506], - [173.852261997775315, -39.146602471677461], - [174.57480187408035, -38.797683200842748], - [174.743473749081033, -38.027807712558378], - [174.69701663645057, -37.381128838857954], - [174.292028436579187, -36.71109221776144], - [174.319003534235549, -36.534823907213884], - [173.840996535535766, -36.121980889634109], - [173.05417117745958, -35.237125339500331], - [172.636005487353714, -34.529106540669382], - [173.007042271209457, -34.450661716450334], - [173.551298456107475, -35.006183363587958], - [174.329390497126241, -35.265495700828616], - [174.612008905330526, -36.156397393540537] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Oman", "name": "Oman", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [58.861141391846573, 21.114034532144299], - [58.487985874266961, 20.428985907467101], - [58.03431847517659, 20.481437486243347], - [57.826372511634098, 20.24300242764863], - [57.66576216007094, 19.736004950433109], - [57.788700392493368, 19.067570298737646], - [57.694390903560667, 18.944709580963799], - [57.2342639504338, 18.947991034414255], - [56.609650913321971, 18.574267076079476], - [56.512189162019482, 18.087113348863934], - [56.283520949128011, 17.876066799383945], - [55.661491733630683, 17.884128322821535], - [55.269939406155189, 17.632309068263194], - [55.274900343655091, 17.228354397037659], - [54.791002231674113, 16.950696926333357], - [54.239252964093751, 17.04498057704998], - [53.57050825380459, 16.707662665264674], - [53.108572625547502, 16.651051133688977], - [52.782184279192066, 17.349742336491229], - [52.000009800022227, 19.000003363516068], - [54.999981723862405, 19.999994004796118], - [55.666659376859869, 22.000001125572307], - [55.208341098863187, 22.708329982997007], - [55.234489373602869, 23.110992743415348], - [55.52584109886449, 23.524869289640911], - [55.528631626208288, 23.933604030853498], - [55.981213820220503, 24.130542914317854], - [55.80411868675624, 24.269604193615287], - [55.88623253766805, 24.920830593357486], - [56.396847365143984, 24.924732163995508], - [56.845140415276049, 24.241673081961487], - [57.403452589757428, 23.878594468678834], - [58.136947869708322, 23.747930609628835], - [58.729211460205427, 23.565667832935414], - [59.180501743410346, 22.992395331305456], - [59.450097690677033, 22.660270900965592], - [59.80806033716285, 22.533611965418199], - [59.806148309168087, 22.31052480721419], - [59.442191196536399, 21.71454051359208], - [59.282407667889871, 21.433885809814875], - [58.861141391846573, 21.114034532144299] - ] - ], - [ - [ - [56.391421339753393, 25.895990708921254], - [56.261041701080913, 25.714606431576748], - [56.070820753814544, 26.055464178973946], - [56.362017449779344, 26.395934353128947], - [56.485679152253809, 26.309117946878665], - [56.391421339753393, 25.895990708921254] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Pakistan", "name": "Pakistan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [75.158027785140902, 37.13303091078911], - [75.896897414050116, 36.666806138651829], - [76.192848341785677, 35.898403428687821], - [77.837450799474553, 35.494009507787759], - [76.871721632804011, 34.653544012992732], - [75.757060988268321, 34.504922593721311], - [74.240202671204955, 34.748887030571247], - [73.749948358051952, 34.317698879527846], - [74.104293654277328, 33.441473293586846], - [74.451559279278698, 32.764899603805489], - [75.258641798813187, 32.271105455040491], - [74.405928989564998, 31.692639471965272], - [74.421380242820263, 30.97981476493117], - [73.450638462217412, 29.976413479119863], - [72.823751662084689, 28.961591701772047], - [71.777665643200308, 27.913180243434521], - [70.61649620960192, 27.989196275335861], - [69.514392938113119, 26.940965684511365], - [70.168926629522005, 26.491871649678835], - [70.282873162725579, 25.722228705339823], - [70.844699334602822, 25.215102037043511], - [71.0432401874682, 24.356523952730193], - [68.842599318318761, 24.359133612560932], - [68.176645135373377, 23.691965033456704], - [67.443666619745457, 23.944843654876983], - [67.145441928989058, 24.663611151624639], - [66.37282758979326, 25.425140896093847], - [64.530407749291115, 25.237038682551425], - [62.905700718034595, 25.218409328710202], - [61.497362908784183, 25.078237006118492], - [61.874187453056535, 26.239974880472097], - [63.316631707619578, 26.756532497661659], - [63.23389773952028, 27.217047024030702], - [62.755425652929851, 27.378923448184985], - [62.727830438085974, 28.259644883735383], - [61.771868117118615, 28.699333807890792], - [61.369308709564926, 29.303276272085917], - [60.874248488208778, 29.829238999952604], - [62.549856805272775, 29.318572496044304], - [63.550260858011164, 29.468330796826162], - [64.148002150331237, 29.340819200145965], - [64.350418735618504, 29.560030625928089], - [65.046862013616092, 29.472180691031902], - [66.346472609324408, 29.88794342703617], - [66.38145755398601, 30.738899237586448], - [66.938891229118454, 31.304911200479346], - [67.683393589147457, 31.303154201781414], - [67.792689243444769, 31.582930406209623], - [68.556932000609308, 31.713310044882011], - [68.926676873657655, 31.620189113892064], - [69.317764113242546, 31.901412258424436], - [69.262522007122541, 32.501944078088293], - [69.687147251264847, 33.105498969041228], - [70.323594191371583, 33.358532619758385], - [69.93054324735958, 34.020120144175102], - [70.881803012988385, 33.988855902638512], - [71.156773309213449, 34.348911444632144], - [71.115018751921625, 34.733125718722228], - [71.613076206350698, 35.153203436822857], - [71.498767938121077, 35.650563259415996], - [71.262348260385735, 36.074387518857797], - [71.846291945283909, 36.509942328429851], - [72.920024855444453, 36.720007025696312], - [74.067551710917812, 36.836175645488446], - [74.575892775372964, 37.02084137628345], - [75.158027785140902, 37.13303091078911] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Panama", "name": "Panama", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-77.881571417945239, 7.223771267114783], - [-78.214936082660103, 7.512254950384159], - [-78.429160732726061, 8.052041123888925], - [-78.182095709938608, 8.319182440621772], - [-78.43546525746568, 8.387705389840788], - [-78.622120530903928, 8.718124497915026], - [-79.120307176413732, 8.996092027213022], - [-79.557877366845176, 8.932374986197145], - [-79.760578172510037, 8.584515082224398], - [-80.164481167303322, 8.333315944853593], - [-80.382659064439608, 8.29840851484043], - [-80.480689256497286, 8.090307522001067], - [-80.003689948227148, 7.54752411542337], - [-80.276670701808982, 7.419754136581713], - [-80.421158006497066, 7.271571966984763], - [-80.886400926420791, 7.220541490096535], - [-81.059542812814698, 7.817921047390596], - [-81.189715745757937, 7.647905585150339], - [-81.519514736644666, 7.706610012233908], - [-81.721311204744453, 8.108962714058434], - [-82.131441209628889, 8.175392767769635], - [-82.390934414382542, 8.292362372262287], - [-82.820081346350406, 8.290863755725821], - [-82.850958014644803, 8.073822740099954], - [-82.965783047197348, 8.225027980985983], - [-82.9131764391242, 8.423517157419068], - [-82.829770677405151, 8.626295477732368], - [-82.868657192704759, 8.807266343618521], - [-82.719183112300513, 8.925708726431493], - [-82.927154914059145, 9.074330145702914], - [-82.932890998043561, 9.476812038608172], - [-82.546196255203469, 9.566134751824674], - [-82.187122565423394, 9.207448635286779], - [-82.207586432610952, 8.995575262890098], - [-81.808566860669259, 8.95061676679617], - [-81.714154018872023, 9.031955471223581], - [-81.43928707551153, 8.786234035675715], - [-80.947301601876745, 8.858503526235905], - [-80.521901211250054, 9.11107208906243], - [-79.914599778955974, 9.312765204297618], - [-79.573302781884294, 9.611610012241526], - [-79.021191779277913, 9.552931423374103], - [-79.058450486960353, 9.454565334506523], - [-78.500887620747164, 9.420458889193879], - [-78.055927700497989, 9.247730414258296], - [-77.729513515926399, 8.946844387238867], - [-77.353360765273848, 8.670504665558068], - [-77.474722866511314, 8.524286200388216], - [-77.242566494440069, 7.935278225125442], - [-77.431107957656977, 7.638061224798733], - [-77.75341386586139, 7.709839789252141], - [-77.881571417945239, 7.223771267114783] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Peru", "name": "Peru", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-69.590423753524036, -17.580011895419329], - [-69.858443569605839, -18.092693780187009], - [-70.3725723944777, -18.347975355708861], - [-71.375250210236914, -17.77379851651385], - [-71.462040778271117, -17.363487644116379], - [-73.444529588500401, -16.359362888252992], - [-75.23788265654143, -15.26568287522778], - [-76.009205084929931, -14.649286390850317], - [-76.423469204397733, -13.823186944232431], - [-76.259241502574156, -13.535039157772939], - [-77.10619238962181, -12.222716159720816], - [-78.092152879534623, -10.377712497604062], - [-79.036953091126918, -8.38656788496589], - [-79.445920376284832, -7.930833428583859], - [-79.760578172510037, -7.194340915560081], - [-80.537481655586049, -6.541667575713715], - [-81.249996304026411, -6.136834405139182], - [-80.926346808582423, -5.690556735866563], - [-81.410942552399433, -4.736764825055459], - [-81.099669562489353, -4.036394138203696], - [-80.302560594387188, -3.404856459164712], - [-80.184014858709645, -3.821161797708043], - [-80.46929460317692, -4.059286797708999], - [-80.442241990872134, -4.425724379090673], - [-80.028908047185581, -4.346090996928893], - [-79.62497921417615, -4.454198093283494], - [-79.205289069317715, -4.959128513207388], - [-78.639897223612323, -4.547784112164072], - [-78.450683966775628, -3.873096612161375], - [-77.83790483265858, -3.003020521663103], - [-76.635394253226707, -2.608677666843817], - [-75.544995693652027, -1.56160979574588], - [-75.233722703741932, -0.911416924649529], - [-75.373223232713841, -0.15203175212045], - [-75.106624518520064, -0.05720549886486], - [-74.441600511355958, -0.530820000819887], - [-74.122395189089048, -1.002832533373848], - [-73.659503546834586, -1.260491224781134], - [-73.070392218707212, -2.308954359550952], - [-72.325786505813639, -2.434218031426453], - [-71.774760708285385, -2.169789727388937], - [-71.413645799429773, -2.342802422702128], - [-70.813475714791949, -2.256864515800742], - [-70.047708502874841, -2.725156345229699], - [-70.692682054309699, -3.742872002785858], - [-70.394043952094975, -3.766591485207825], - [-69.893635219996611, -4.298186944194326], - [-70.79476884630229, -4.251264743673302], - [-70.928843349883564, -4.401591485210367], - [-71.748405727816532, -4.59398284263301], - [-72.891927659787243, -5.274561455916979], - [-72.964507208941185, -5.741251315944892], - [-73.219711269814596, -6.089188734566076], - [-73.120027431923575, -6.629930922068238], - [-73.724486660441627, -6.918595472850638], - [-73.723401455363486, -7.340998630404412], - [-73.987235480429646, -7.523829847853063], - [-73.571059332967053, -8.424446709835832], - [-73.015382656532537, -9.03283334720806], - [-73.226713426390148, -9.462212823121233], - [-72.563033006465631, -9.520193780152715], - [-72.184890713169821, -10.05359791426943], - [-71.302412278921523, -10.079436130415372], - [-70.481893886991159, -9.490118096558842], - [-70.548685675728393, -11.009146823778462], - [-70.093752204046879, -11.123971856331011], - [-69.52967810736493, -10.951734307502193], - [-68.665079718689611, -12.561300144097171], - [-68.880079515239956, -12.89972909917665], - [-68.929223802349526, -13.602683607643007], - [-68.94888668483658, -14.45363941819328], - [-69.339534674747, -14.953195489158828], - [-69.160346645774936, -15.323973890853015], - [-69.389764166934697, -15.66012908291165], - [-68.959635382753291, -16.500697930571267], - [-69.590423753524036, -17.580011895419329] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Philippines", "name": "Philippines", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [126.376813592637447, 8.414706325713352], - [126.478512811387873, 7.750354112168976], - [126.537423944200611, 7.189380601424572], - [126.19677290253253, 6.274294338400038], - [125.831420526229081, 7.293715318221855], - [125.363852166852283, 6.78648529706099], - [125.683160841983707, 6.049656887227257], - [125.396511672060626, 5.581003322772288], - [124.219787632342332, 6.16135549562618], - [123.938719517106918, 6.88513560630612], - [124.243662144061318, 7.360610459823659], - [123.610212437027542, 7.833527329942753], - [123.29607140512519, 7.418875637232786], - [122.825505812675388, 7.457374579290216], - [122.085499302255769, 6.899424139834847], - [121.919928013192603, 7.192119452336072], - [122.312358840017112, 8.034962063016506], - [122.94239790251963, 8.316236883981174], - [123.487687616063511, 8.693009751821192], - [123.841154412939815, 8.240324204944384], - [124.6014697612502, 8.514157619659015], - [124.764612257995623, 8.960409450715458], - [125.471390822451539, 8.986996975129641], - [125.412117954612754, 9.760334784377545], - [126.222714471543156, 9.28607432701885], - [126.306636997585073, 8.782487494334573], - [126.376813592637447, 8.414706325713352] - ] - ], - [ - [ - [123.982437778825798, 10.278778591345811], - [123.62318322153277, 9.950090643753297], - [123.309920688979332, 9.318268744336676], - [122.995883009941636, 9.022188625520398], - [122.380054966319463, 9.713360907424201], - [122.586088901867072, 9.981044826696104], - [122.837081333508706, 10.261156927934234], - [122.947410516451896, 10.881868394408029], - [123.498849725438447, 10.940624497923945], - [123.337774285984722, 10.267383938025445], - [124.077935825701218, 11.232725531453706], - [123.982437778825798, 10.278778591345811] - ] - ], - [ - [ - [118.504580926590336, 9.316382554558087], - [117.174274530100675, 8.367499904814663], - [117.664477166821371, 9.066888739452933], - [118.386913690261736, 9.684499619989223], - [118.98734215706105, 10.376292019080507], - [119.511496209797528, 11.36966807702721], - [119.689676548339889, 10.554291490109872], - [119.029458449378978, 10.003653265823869], - [118.504580926590336, 9.316382554558087] - ] - ], - [ - [ - [121.883547804859106, 11.891755072471977], - [122.483821242361458, 11.582187404827506], - [123.120216506035959, 11.583660183147867], - [123.100837843926442, 11.165933742716486], - [122.637713657726692, 10.741308498574226], - [122.002610304859559, 10.441016750526087], - [121.967366978036523, 10.905691229694622], - [122.038370396005519, 11.415840969280039], - [121.883547804859106, 11.891755072471977] - ] - ], - [ - [ - [125.502551711123488, 12.162694606978347], - [125.783464797062152, 11.046121934447767], - [125.01188398651226, 11.311454576050377], - [125.032761265158115, 10.975816148314703], - [125.277449172060244, 10.358722032101308], - [124.801819289245714, 10.134678859899889], - [124.760168084818474, 10.8379951033923], - [124.459101190286049, 10.889929917845633], - [124.302521600441722, 11.495370998577227], - [124.891012811381572, 11.415582587118589], - [124.877990350443952, 11.794189968304988], - [124.266761509295705, 12.557760931849682], - [125.22711632700782, 12.53572093347719], - [125.502551711123488, 12.162694606978347] - ] - ], - [ - [ - [121.527393833503481, 13.069590155484516], - [121.262190382981544, 12.2055602075644], - [120.833896112146533, 12.704496161342416], - [120.323436313967477, 13.466413479053866], - [121.18012820850214, 13.429697373910439], - [121.527393833503481, 13.069590155484516] - ] - ], - [ - [ - [121.321308221523566, 18.504064642811013], - [121.937601353036371, 18.21855235439838], - [122.246006300954264, 18.478949896717094], - [122.336956821787965, 18.224882717354173], - [122.174279412933174, 17.810282701076371], - [122.51565392465335, 17.09350474697197], - [122.252310825693883, 16.262444362854122], - [121.662786086108255, 15.931017564350125], - [121.505069614753367, 15.124813544164621], - [121.728828566577249, 14.328376369682244], - [122.258925409027313, 14.218202216035973], - [122.701275669445636, 14.336541245984417], - [123.950295037940236, 13.782130642141066], - [123.855107049658599, 13.237771104378464], - [124.181288690284873, 12.997527370653469], - [124.077419061378222, 12.536676947474573], - [123.298035109552245, 13.027525539598981], - [122.928651971529902, 13.552919826710404], - [122.671355015148663, 13.185836289925131], - [122.034649692880521, 13.784481919810343], - [121.126384718918587, 13.636687323455559], - [120.628637323083296, 13.857655747935649], - [120.679383579593832, 14.271015529838319], - [120.99181928923052, 14.525392767795079], - [120.693336216312687, 14.756670640517282], - [120.564145135582976, 14.396279201713821], - [120.070428501466367, 14.970869452367094], - [119.920928582846102, 15.406346747290735], - [119.883773228028247, 16.363704331929963], - [120.286487664878791, 16.034628811095327], - [120.39004723519173, 17.599081122299506], - [120.7158671407919, 18.505227362537536], - [121.321308221523566, 18.504064642811013] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Papua New Guinea", - "name": "Papua New Guinea", - "continent": "Australia" - }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [155.880025669578401, -6.819996840037758], - [155.599991082988765, -6.919990736522491], - [155.166994256815087, -6.535931491729299], - [154.729191522438327, -5.900828138862208], - [154.514114211239644, -5.139117526880012], - [154.652503696917336, -5.042430922061839], - [154.759990676084357, -5.339983819198493], - [155.062917922179338, -5.566791680527486], - [155.547746209941693, -6.200654799019658], - [156.019965448224752, -6.540013929880386], - [155.880025669578401, -6.819996840037758] - ] - ], - [ - [ - [151.982795851854462, -5.478063246282344], - [151.459106887008659, -5.560280450058739], - [151.301390415653884, -5.840728448106701], - [150.754447056276661, -6.083762709175387], - [150.241196730753813, -6.317753594592984], - [149.709963006793316, -6.316513360218051], - [148.890064732050462, -6.026040134305432], - [148.318936802360696, -5.74714242922613], - [148.401825799756864, -5.437755629094722], - [149.298411900020824, -5.583741550319216], - [149.845561965127217, -5.505503431829339], - [149.996250441690279, -5.026101169457674], - [150.139755894164921, -5.001348158389788], - [150.236907586873485, -5.53222014732428], - [150.807467075808063, -5.455842380396886], - [151.089672072553981, -5.113692722192368], - [151.647880894170811, -4.757073662946168], - [151.537861769821518, -4.167807305521889], - [152.136791620084352, -4.148790378438519], - [152.338743117480988, -4.31296640382976], - [152.318692661751754, -4.867661228050748], - [151.982795851854462, -5.478063246282344] - ] - ], - [ - [ - [147.191873814074938, -7.388024183789978], - [148.084635858349372, -8.044108168167609], - [148.734105259393573, -9.104663588093755], - [149.306835158484432, -9.071435642130067], - [149.266630894161324, -9.514406019736027], - [150.038728469034311, -9.684318129111698], - [149.738798456012262, -9.872937106977002], - [150.801627638959133, -10.29368661869742], - [150.690574985963849, -10.582712904505865], - [150.028393182575826, -10.652476088099929], - [149.782310012001972, -10.393267103723941], - [148.923137648717216, -10.28092253992136], - [147.913018426707993, -10.130440769087469], - [147.135443150012236, -9.492443536012017], - [146.567880894150619, -8.942554619994153], - [146.048481073184917, -8.067414239131308], - [144.74416792213799, -7.630128269077473], - [143.897087844009661, -7.915330498896279], - [143.286375767184268, -8.245491224809056], - [143.413913202080664, -8.983068942910945], - [142.628431431244223, -9.326820570516501], - [142.068258905200196, -9.159595635620034], - [141.033851760013874, -9.117892754760417], - [141.017056919519007, -5.85902190513802], - [141.000210402591847, -2.600151055515624], - [142.735246616791443, -3.289152927263216], - [144.583970982033236, -3.861417738463401], - [145.27317955950997, -4.373737888205027], - [145.829786411725649, -4.876497897972683], - [145.981921828392956, -5.465609226100012], - [147.648073358347574, -6.083659356310803], - [147.891107619416175, -6.614014580922315], - [146.970905389594861, -6.721656589386255], - [147.191873814074938, -7.388024183789978] - ] - ], - [ - [ - [153.14003787659874, -4.499983412294113], - [152.827292108368255, -4.766427097190998], - [152.63867313050298, -4.176127211120927], - [152.406025832324929, -3.789742526874561], - [151.953236932583536, -3.462062269711821], - [151.384279413050024, -3.035421644710111], - [150.6620495953388, -2.741486097833956], - [150.939965448204532, -2.500002129734028], - [151.479984165654514, -2.779985039891386], - [151.820015090135087, -2.999971612157907], - [152.239989455371074, -3.24000864015366], - [152.640016717742526, -3.659983005389647], - [153.019993524384631, -3.980015150573293], - [153.14003787659874, -4.499983412294113] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Poland", "name": "Poland", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [15.016995883858666, 51.106674099321566], - [14.607098422919531, 51.745188096719964], - [14.685026482815685, 52.089947414755187], - [14.437599725002197, 52.624850165408382], - [14.074521111719488, 52.981262518925426], - [14.353315463934136, 53.248171291712957], - [14.119686313542584, 53.757029120491026], - [14.802900424873455, 54.050706285205735], - [16.363477003655728, 54.513158677785711], - [17.622831658608671, 54.851535956432897], - [18.620858595461637, 54.682605699270766], - [18.696254510175461, 54.438718777069276], - [19.6606400896064, 54.426083889373913], - [20.89224450041862, 54.312524929412518], - [22.731098667092649, 54.327536932993311], - [23.243987257589506, 54.220566718149129], - [23.484127638449841, 53.912497667041123], - [23.527535841574995, 53.47012156840654], - [23.804934930117774, 53.08973135030606], - [23.799198846133375, 52.691099351606553], - [23.19949384938618, 52.486977444053664], - [23.508002150168689, 52.023646552124717], - [23.52707075368437, 51.578454087930233], - [24.029985792748899, 50.705406602575174], - [23.922757195743259, 50.424881089878738], - [23.426508416444388, 50.308505764357449], - [22.518450148211596, 49.476773586619736], - [22.776418898212619, 49.027395331409608], - [22.558137648211751, 49.08573802346713], - [21.607808058364206, 49.470107326854077], - [20.887955356538406, 49.328772284535823], - [20.415839471119849, 49.431453355499755], - [19.825022820726865, 49.217125352569219], - [19.320712517990469, 49.571574001659179], - [18.909574822676316, 49.435845852244562], - [18.85314415861361, 49.496229763377634], - [18.392913852622168, 49.988628648470737], - [17.649445021238986, 50.049038397819942], - [17.554567091551117, 50.36214590107641], - [16.868769158605655, 50.473973700556016], - [16.719475945714429, 50.215746568393527], - [16.176253289462263, 50.4226073268579], - [16.238626743238566, 50.697732652379827], - [15.490972120839725, 50.7847299261432], - [15.016995883858666, 51.106674099321566] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Puerto Rico", "name": "Puerto Rico", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-66.2824344550082, 18.51476166429536], - [-65.771302863209286, 18.426679185453875], - [-65.591003790942935, 18.228034979723912], - [-65.847163865813755, 17.975905666571855], - [-66.599934455009475, 17.98182261806927], - [-67.184162360285256, 17.946553453030074], - [-67.24242753769434, 18.374460150622934], - [-67.100679083917726, 18.520601101144347], - [-66.2824344550082, 18.51476166429536] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "North Korea", "name": "Dem. Rep. Korea", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [130.640015903852401, 42.39500946712527], - [130.780007358931101, 42.220007229168843], - [130.400030552288996, 42.280003567059701], - [129.965948521037234, 41.941367906251052], - [129.667362095254788, 41.601104437825221], - [129.705189243692445, 40.882827867184318], - [129.188114862179958, 40.661807766271984], - [129.010399611528186, 40.485436102859801], - [128.633368361526692, 40.189846910150301], - [127.967414178581322, 40.025412502597547], - [127.533435500194145, 39.756850083976694], - [127.502119582225276, 39.323930772451526], - [127.385434198110261, 39.213472398427648], - [127.783342726757709, 39.050898342437414], - [128.349716424676586, 38.612242946927843], - [128.205745884311426, 38.370397243801882], - [127.780035435090966, 38.304535630845884], - [127.073308547067342, 38.256114813788393], - [126.683719924018888, 37.804772854151174], - [126.237338901881742, 37.840377916000271], - [126.174758742376213, 37.749685777328033], - [125.689103631697165, 37.940010077459014], - [125.568439162295675, 37.752088731429616], - [125.275330438336184, 37.66907054295271], - [125.24008711151312, 37.857224432927424], - [124.981033156433952, 37.948820909164773], - [124.712160679219352, 38.108346055649783], - [124.985994093933954, 38.548474229479673], - [125.221948683778677, 38.665857245430665], - [125.13285851450749, 38.848559271798578], - [125.386589797060566, 39.387957872061158], - [125.321115757346774, 39.551384589184202], - [124.737482131042384, 39.660344346671614], - [124.265624627785286, 39.928493353834149], - [125.079941847840615, 40.569823716792442], - [126.182045119329402, 41.107336127276362], - [126.86908328664984, 41.816569322266176], - [127.343782993682993, 41.50315176041596], - [128.208433058790632, 41.466771552082477], - [128.052215203972281, 41.994284572917934], - [129.59666873587949, 42.424981797854542], - [129.994267205933198, 42.985386867843779], - [130.640015903852401, 42.39500946712527] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Portugal", "name": "Portugal", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-9.034817674180244, 41.880570583659669], - [-8.671945766626719, 42.134689439454952], - [-8.26385698081779, 42.280468654950326], - [-8.01317460776991, 41.790886135417118], - [-7.422512986673794, 41.792074693359822], - [-7.251308966490822, 41.91834605566504], - [-6.668605515967655, 41.883386949219577], - [-6.389087693700914, 41.381815497394641], - [-6.851126674822551, 41.111082668617513], - [-6.864019944679383, 40.330871893874821], - [-7.026413133156593, 40.184524237624238], - [-7.066591559263527, 39.711891587882768], - [-7.498632371439724, 39.629571031241802], - [-7.098036668313126, 39.03007274022378], - [-7.374092169616317, 38.373058580064914], - [-7.029281175148794, 38.075764065089757], - [-7.166507941099863, 37.803894354802217], - [-7.537105475281022, 37.428904323876232], - [-7.45372555177809, 37.097787583966053], - [-7.855613165711985, 36.838268540996253], - [-8.382816127953687, 36.978880113262449], - [-8.898856980820325, 36.868809312480771], - [-8.746101446965552, 37.6513455266766], - [-8.839997524439879, 38.266243394517609], - [-9.287463751655221, 38.358485826158592], - [-9.526570603869713, 38.737429104154906], - [-9.44698889814023, 39.392066148428363], - [-9.048305223008425, 39.755093085278766], - [-8.977353481471679, 40.159306138665798], - [-8.7686840478771, 40.76063894303018], - [-8.790853237330309, 41.18433401139125], - [-8.990789353867568, 41.543459377603625], - [-9.034817674180244, 41.880570583659669] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Paraguay", "name": "Paraguay", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-62.685057135657871, -22.24902922942238], - [-62.291179368729203, -21.051634616787389], - [-62.265961269770784, -20.513734633061272], - [-61.786326463453761, -19.633736667562957], - [-60.043564622626477, -19.342746677327419], - [-59.11504248720609, -19.356906019775398], - [-58.183471442280492, -19.868399346600359], - [-58.166392381408038, -20.176700941653674], - [-57.870673997617786, -20.732687676681948], - [-57.937155727761287, -22.090175876557169], - [-56.881509568902885, -22.282153822521476], - [-56.473317430229379, -22.086300144135279], - [-55.797958136606894, -22.356929620047815], - [-55.61068274598113, -22.655619398694839], - [-55.517639329639621, -23.57199757252663], - [-55.400747239795407, -23.956935316668797], - [-55.027901780809543, -24.001273695575225], - [-54.652834235235119, -23.839578138933955], - [-54.292959560754511, -24.021014092710722], - [-54.293476325077435, -24.570799655863958], - [-54.428946092330577, -25.162184747012162], - [-54.625290696823562, -25.739255466415507], - [-54.788794928595038, -26.621785577096126], - [-55.695845506398143, -27.387837009390857], - [-56.486701626192989, -27.548499037386286], - [-57.609759690976134, -27.395898532828383], - [-58.618173590719735, -27.123718763947089], - [-57.633660040911117, -25.603656508081638], - [-57.777217169817924, -25.162339776309032], - [-58.807128465394968, -24.771459242453307], - [-60.028966030504016, -24.032796319273267], - [-60.846564704009907, -23.880712579038288], - [-62.685057135657871, -22.24902922942238] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Palestine", "name": "Palestine", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.545665317534535, 32.393992011030569], - [35.545251906076196, 31.782504787720832], - [35.397560662586038, 31.489086005167572], - [34.927408481594554, 31.35343537040141], - [34.970506626125989, 31.616778469360803], - [35.225891554512422, 31.754341132121759], - [34.974640740709319, 31.866582343059715], - [35.183930291491428, 32.532510687788935], - [35.545665317534535, 32.393992011030569] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Qatar", "name": "Qatar", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [50.810108270069563, 24.754742539971371], - [50.743910760303677, 25.482424221289389], - [51.01335167827348, 26.006991685484191], - [51.286461622936045, 26.114582017515865], - [51.589078810437243, 25.801112779233375], - [51.606700473848804, 25.215670477798735], - [51.389607781790623, 24.627385972588051], - [51.112415398977006, 24.556330878186721], - [50.810108270069563, 24.754742539971371] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Romania", "name": "Romania", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.710531447040488, 47.882193915389394], - [23.142236362406798, 48.096341050806942], - [23.760958286237404, 47.985598456405448], - [24.402056105250374, 47.981877753280422], - [24.866317172960571, 47.737525743188307], - [25.207743361112986, 47.891056423527459], - [25.945941196402394, 47.987148749374207], - [26.197450392366925, 48.220881252630342], - [26.619336785597788, 48.220726223333457], - [26.924176059687561, 48.123264472030982], - [27.233872918412736, 47.826770941756365], - [27.551166212684841, 47.405117092470817], - [28.128030226359037, 46.81047638608824], - [28.160017937947707, 46.371562608417207], - [28.054442986775392, 45.944586086605618], - [28.233553501099035, 45.488283189468369], - [28.679779493939371, 45.30403087013169], - [29.149724969201646, 45.464925442072442], - [29.603289015427425, 45.293308010431119], - [29.62654340995876, 45.035390936862392], - [29.141611769331831, 44.820210272799038], - [28.837857700320196, 44.913873806328041], - [28.55808149589199, 43.707461656258118], - [27.970107049275068, 43.812468166675202], - [27.242399529740904, 44.175986029632398], - [26.065158725699739, 43.943493760751259], - [25.569271681426923, 43.688444729174712], - [24.100679152124169, 43.741051337247846], - [23.332302280376322, 43.897010809904707], - [22.94483239105184, 43.823785305347123], - [22.657149692482985, 44.234923000661276], - [22.474008416440594, 44.409227606781762], - [22.705725538837349, 44.578002834647016], - [22.459022251075933, 44.702517198254291], - [22.145087924902807, 44.478422349620573], - [21.562022739353605, 44.768947251965486], - [21.483526238702233, 45.181170152357772], - [20.874312778413351, 45.416375433934228], - [20.76217492033998, 45.734573065771428], - [20.220192498462833, 46.127468980486547], - [21.021952345471245, 46.316087958351886], - [21.626514926853869, 46.994237779318148], - [22.09976769378283, 47.672439276716695], - [22.710531447040488, 47.882193915389394] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Russia", "name": "Russia", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [143.648007440362846, 50.747600409541512], - [144.65414757708561, 48.976390692737581], - [143.173927850517174, 49.306551418650365], - [142.558668247650076, 47.861575018904908], - [143.533492466404027, 46.836728013692479], - [143.505277134372591, 46.137907619809475], - [142.747700636973889, 46.740764878926562], - [142.092030064054484, 45.966755276058777], - [141.906925083585008, 46.805928860046535], - [142.018442824470867, 47.780132961612921], - [141.904444614835029, 48.859188544299563], - [142.135800002205656, 49.615163072297449], - [142.179983351815281, 50.952342434281903], - [141.594075962490024, 51.935434882202529], - [141.682546014573632, 53.301966457728767], - [142.606934035410745, 53.762145087287891], - [142.209748976815376, 54.225475979216853], - [142.654786411712934, 54.365880845753864], - [142.914615513276544, 53.704577541714734], - [143.260847609632037, 52.740760403039033], - [143.235267775647628, 51.756660264688733], - [143.648007440362846, 50.747600409541512] - ] - ], - [ - [ - [22.731098667092649, 54.327536932993311], - [20.892244500418652, 54.312524929412568], - [19.6606400896064, 54.42608388937397], - [19.88848147958134, 54.866160386771483], - [21.268448927503492, 55.190481675835279], - [22.315723504330599, 55.015298570365886], - [22.757763706155281, 54.856574408581416], - [22.651051873472564, 54.582740993866693], - [22.731098667092649, 54.327536932993311] - ] - ], - [ - [ - [180.000000000000114, 70.832199208546669], - [178.903425, 70.78114], - [178.7253, 71.0988], - [180.000000000000114, 71.515714336428246], - [180.000000000000114, 70.832199208546669] - ] - ], - [ - [ - [143.60385, 73.21244], - [142.08763, 73.20544], - [140.038155, 73.31692], - [139.86312, 73.36983], - [140.81171, 73.76506], - [142.06207, 73.85758], - [143.48283, 73.47525], - [143.60385, 73.21244] - ] - ], - [ - [ - [150.73167, 75.08406], - [149.575925, 74.68892], - [147.977465, 74.778355], - [146.11919, 75.17298], - [146.358485, 75.49682], - [148.22223, 75.345845], - [150.73167, 75.08406] - ] - ], - [ - [ - [145.086285, 75.562625], - [144.3, 74.82], - [140.61381, 74.84768], - [138.95544, 74.61148], - [136.97439, 75.26167], - [137.51176, 75.94917], - [138.831075, 76.13676], - [141.471615, 76.09289], - [145.086285, 75.562625] - ] - ], - [ - [ - [57.535692579992386, 70.720463975702145], - [56.944979282463933, 70.63274323188665], - [53.677375115784187, 70.762657782668455], - [53.412016635965372, 71.206661688920192], - [51.601894565645708, 71.474759019650477], - [51.455753615124209, 72.014881089965129], - [52.478275180883564, 72.229441636840946], - [52.444168735570841, 72.77473135038484], - [54.427613559797649, 73.627547512497571], - [53.508289829325136, 73.749813951300141], - [55.902458937407644, 74.627486477345329], - [55.631932814359701, 75.081412258597155], - [57.868643833248839, 75.609390367323186], - [61.170044386647497, 76.251883450008123], - [64.498368361270209, 76.439055487769267], - [66.210977003855092, 76.809782213031227], - [68.157059767534818, 76.939696763812904], - [68.852211134725124, 76.544811306454605], - [68.180572544227644, 76.233641669409096], - [64.637326287703004, 75.737754625136219], - [61.583507521414752, 75.260884507946784], - [58.477082147053366, 74.309056301562819], - [56.986785516187993, 73.333043524866227], - [55.41933597191094, 72.371267605265956], - [55.622837762276291, 71.540594794390316], - [57.535692579992386, 70.720463975702145] - ] - ], - [ - [ - [106.970130000000111, 76.97419], - [107.240000000000123, 76.48], - [108.1538, 76.723350000000138], - [111.077260000000138, 76.71], - [113.33151, 76.22224], - [114.13417, 75.84764], - [113.88539, 75.327790000000121], - [112.77918, 75.03186], - [110.151250000000175, 74.47673], - [109.4, 74.18], - [110.64, 74.04], - [112.11919, 73.787740000000113], - [113.019540000000234, 73.976930000000138], - [113.529580000000294, 73.33505], - [113.96881, 73.59488], - [115.56782, 73.75285], - [118.776330000000215, 73.58772], - [119.02, 73.12], - [123.20066, 72.97122], - [123.257770000000178, 73.73503], - [125.380000000000166, 73.56], - [126.97644, 73.56549], - [128.59126, 73.03871], - [129.05157, 72.39872], - [128.46, 71.98], - [129.715990000000204, 71.19304], - [131.288580000000252, 70.786990000000102], - [132.253500000000145, 71.8363], - [133.857660000000294, 71.386420000000143], - [135.56193, 71.655250000000123], - [137.49755, 71.34763], - [138.234090000000123, 71.62803], - [139.86983, 71.487830000000116], - [139.14791, 72.4161900000001], - [140.46817, 72.849410000000134], - [149.5, 72.2], - [150.35118000000017, 71.60643], - [152.96890000000019, 70.84222], - [157.00688, 71.03141], - [158.99779, 70.86672], - [159.830310000000225, 70.45324], - [159.70866, 69.72198], - [160.94053000000028, 69.43728], - [162.279070000000104, 69.64204], - [164.05248, 69.66823], - [165.940370000000172, 69.47199], - [167.83567, 69.58269], - [169.57763000000017, 68.6938], - [170.816880000000253, 69.01363], - [170.008200000000159, 69.65276], - [170.453450000000259, 70.09703], - [173.643910000000204, 69.81743], - [175.72403000000017, 69.877250000000217], - [178.6, 69.4], - [180.000000000000114, 68.963636363636553], - [180.000000000000114, 64.979708702198465], - [179.99281, 64.97433], - [178.707200000000199, 64.53493], - [177.411280000000147, 64.60821], - [178.313000000000187, 64.07593], - [178.90825000000018, 63.251970000000128], - [179.37034, 62.98262], - [179.48636, 62.56894], - [179.228250000000116, 62.304100000000133], - [177.3643, 62.5219], - [174.569290000000194, 61.76915], - [173.68013, 61.65261], - [172.15, 60.95], - [170.6985, 60.33618], - [170.330850000000282, 59.88177], - [168.90046, 60.57355], - [166.294980000000265, 59.7885500000002], - [165.840000000000202, 60.16], - [164.87674, 59.7316], - [163.539290000000108, 59.86871], - [163.217110000000218, 59.21101], - [162.01733, 58.24328], - [162.05297, 57.83912], - [163.19191, 57.61503], - [163.057940000000144, 56.159240000000111], - [162.129580000000203, 56.12219], - [161.70146, 55.285680000000148], - [162.117490000000117, 54.85514], - [160.368770000000325, 54.34433], - [160.021730000000218, 53.20257], - [158.530940000000157, 52.958680000000236], - [158.23118, 51.94269], - [156.789790000000266, 51.01105], - [156.42000000000013, 51.7], - [155.99182, 53.15895], - [155.43366, 55.381030000000109], - [155.914420000000291, 56.767920000000132], - [156.75815, 57.3647], - [156.81035, 57.83204], - [158.364330000000166, 58.05575], - [160.150640000000124, 59.314770000000109], - [161.87204, 60.343000000000117], - [163.66969, 61.1409], - [164.473550000000103, 62.55061], - [163.258420000000172, 62.46627], - [162.65791, 61.6425], - [160.12148, 60.54423], - [159.30232, 61.77396], - [156.72068, 61.43442], - [154.218060000000293, 59.758180000000117], - [155.04375, 59.14495], - [152.81185, 58.88385], - [151.265730000000246, 58.78089], - [151.33815, 59.50396], - [149.78371, 59.655730000000126], - [148.54481, 59.16448], - [145.48722, 59.33637], - [142.197820000000121, 59.03998], - [138.958480000000293, 57.08805], - [135.12619, 54.72959], - [136.70171, 54.603550000000112], - [137.19342, 53.97732], - [138.1647, 53.755010000000247], - [138.80463, 54.25455], - [139.90151, 54.189680000000166], - [141.34531, 53.089570000000109], - [141.37923, 52.23877], - [140.59742000000017, 51.23967], - [140.51308, 50.045530000000113], - [140.061930000000189, 48.446710000000152], - [138.554720000000202, 46.99965], - [138.21971, 46.30795], - [136.86232, 45.143500000000174], - [135.515350000000183, 43.989], - [134.869390000000237, 43.39821], - [133.536870000000249, 42.81147], - [132.90627, 42.79849], - [132.278070000000241, 43.284560000000106], - [130.935870000000136, 42.55274], - [130.78, 42.220000000000191], - [130.640000000000157, 42.395], - [130.633866408409801, 42.903014634770543], - [131.144687941614961, 42.929989732426932], - [131.288555129115593, 44.111519680348252], - [131.025190000000237, 44.96796], - [131.883454217659562, 45.321161607436508], - [133.097120000000189, 45.14409], - [133.769643996313164, 46.116926988299149], - [134.112350000000163, 47.212480000000127], - [134.50081, 47.578450000000139], - [135.026311476786759, 48.478229885443902], - [133.373595819228001, 48.183441677434836], - [132.506690000000106, 47.78896], - [130.987260000000106, 47.79013], - [130.582293328982644, 48.72968740497619], - [129.397817824420486, 49.4406000840156], - [127.657400000000351, 49.76027], - [127.287455682484904, 50.739797268265434], - [126.939156528837827, 51.353894151405896], - [126.564399041856959, 51.784255479532689], - [125.946348911646439, 52.792798570356936], - [125.068211297710434, 53.161044826868924], - [123.57147, 53.4588], - [122.245747918793043, 53.431725979213681], - [121.003084751470354, 53.251401068731226], - [120.177088657716865, 52.753886216841195], - [120.725789015791975, 52.516226304730893], - [120.7382, 51.96411], - [120.182080000000155, 51.64355], - [119.27939, 50.58292], - [119.288460728025839, 50.142882798861947], - [117.87924441942647, 49.510983384797036], - [116.67880089728618, 49.888531399121398], - [115.485695428531415, 49.805177313834733], - [114.962109816550353, 50.140247300815119], - [114.362456496235325, 50.24830272073747], - [112.897739699354361, 49.543565375356984], - [111.581230910286649, 49.377968248077671], - [110.662010532678835, 49.130128078805846], - [109.402449171996707, 49.292960516957685], - [108.475167270951275, 49.282547715850704], - [107.868175897251092, 49.793705145865871], - [106.888804152455293, 50.274295966180276], - [105.886591424586868, 50.40601919209216], - [104.62158, 50.275320000000157], - [103.676545444760336, 50.08996613219513], - [102.25589, 50.510560000000105], - [102.06521, 51.25991], - [100.889480421962631, 51.516855780638409], - [99.981732212323564, 51.63400625264395], - [98.861490513100492, 52.047366034546698], - [97.82573978067451, 51.010995184933236], - [98.231761509191699, 50.422400621128716], - [97.259760000000199, 49.72605], - [95.814020000000156, 49.977460000000114], - [94.815949334698757, 50.01343333597088], - [94.147566359435601, 50.480536607457161], - [93.10421, 50.49529], - [92.234711541719676, 50.802170722041737], - [90.713667433640765, 50.331811835321098], - [88.805566847695573, 49.470520738312459], - [87.751264276076824, 49.297197984405543], - [87.359970330762692, 49.214980780629148], - [86.829356723989648, 49.826674709668133], - [85.541269972682485, 49.69285858824815], - [85.115559523462082, 50.117302964877631], - [84.416377394553038, 50.311399644565817], - [83.935114780618903, 50.889245510453563], - [83.383003778012451, 51.069182847693881], - [81.945985548839943, 50.812195949906325], - [80.568446893235446, 51.388336493528435], - [80.035559523441705, 50.864750881547209], - [77.80091556184432, 53.404414984747532], - [76.525179477854749, 54.177003485727127], - [76.891100294913443, 54.490524400441913], - [74.384820000000119, 53.546850000000113], - [73.425678745420512, 53.489810289109741], - [73.50851606638436, 54.035616766976588], - [72.224150018202195, 54.376655381886778], - [71.180131056609468, 54.133285224008247], - [70.86526655465515, 55.169733588270091], - [69.068166945272893, 55.385250149143488], - [68.169100376258896, 54.970391750704366], - [65.66687, 54.601250000000149], - [65.178533563095939, 54.354227810272064], - [61.436600000000126, 54.00625], - [60.978066440683236, 53.664993394579128], - [61.69998619980062, 52.979996446334255], - [60.73999311711453, 52.719986477257734], - [60.927268507740237, 52.447548326214999], - [59.967533807215567, 51.96042043721566], - [61.588003371024136, 51.272658799843171], - [61.337424350840998, 50.799070136104248], - [59.932807244715555, 50.842194118851822], - [59.642282342370564, 50.545442206415707], - [58.363320000000122, 51.06364], - [56.77798, 51.04355], - [55.71694, 50.621710000000142], - [54.532878452376181, 51.026239732459359], - [52.328723585831042, 51.718652248738088], - [50.766648390512174, 51.692762356159861], - [48.702381626181044, 50.605128485712825], - [48.577841424357601, 49.87475962991563], - [47.549480421749379, 50.454698391311119], - [46.751596307162764, 49.356005764353725], - [47.043671502476585, 49.152038886097571], - [46.466445753776291, 48.394152330104923], - [47.315240000000152, 47.71585], - [48.05725, 47.74377], - [48.694733514201872, 47.075628160177885], - [48.59325000000014, 46.56104], - [49.101160000000121, 46.39933], - [48.645410000000105, 45.80629], - [47.67591, 45.641490000000111], - [46.68201, 44.6092], - [47.59094, 43.660160000000118], - [47.49252, 42.98658], - [48.58437000000017, 41.80888], - [47.987283156126033, 41.405819200194387], - [47.815665724484653, 41.151416124021338], - [47.373315464066387, 41.219732367511135], - [46.686070591016708, 41.827137152669899], - [46.404950799348924, 41.860675157227426], - [45.7764, 42.092440000000224], - [45.470279168485909, 42.502780666670041], - [44.537622918482057, 42.711992702803677], - [43.93121, 42.554960000000101], - [43.755990000000182, 42.74083], - [42.394400000000154, 43.2203], - [40.922190000000128, 43.382150000000131], - [40.076964959479838, 43.553104153002486], - [39.95500857927108, 43.434997666999287], - [38.68, 44.28], - [37.539120000000104, 44.65721], - [36.675460000000122, 45.24469], - [37.40317, 45.40451], - [38.23295, 46.24087], - [37.67372, 46.63657], - [39.14767, 47.044750000000128], - [39.121200000000123, 47.26336], - [38.22353803889947, 47.102189846375971], - [38.2551123390298, 47.546400458356956], - [38.77057, 47.825620000000228], - [39.738277622238982, 47.898937079452068], - [39.895620000000136, 48.23241], - [39.67465, 48.783820000000127], - [40.080789015469477, 49.307429917999364], - [40.069040000000108, 49.60105], - [38.594988234213552, 49.926461900423718], - [38.010631137857068, 49.915661526074715], - [37.393459506995228, 50.383953355503664], - [36.626167840325387, 50.225590928745127], - [35.35611616388811, 50.577197374059139], - [35.37791, 50.77394], - [35.02218305841793, 51.207572333371495], - [34.224815708154402, 51.255993150428921], - [34.141978387190612, 51.56641347920619], - [34.391730584457228, 51.768881740925892], - [33.75269982273587, 52.335074571331646], - [32.715760532367163, 52.238465481162159], - [32.412058139787767, 52.288694973349763], - [32.15944000000021, 52.061250000000101], - [31.78597, 52.10168], - [31.540018344862254, 52.742052313846429], - [31.305200636527978, 53.073995876673301], - [31.49764, 53.167430000000124], - [32.304519484188368, 53.132726141972839], - [32.693643019346119, 53.351420803432141], - [32.405598585751157, 53.618045355842], - [31.731272820774585, 53.794029446012011], - [31.791424187962399, 53.974638576872181], - [31.384472283663818, 54.157056382862365], - [30.757533807098774, 54.811770941784388], - [30.971835971813245, 55.08154775656412], - [30.873909132620064, 55.55097646750351], - [29.896294386522435, 55.789463202530484], - [29.371571893030783, 55.670090643936263], - [29.229513380660389, 55.918344224666399], - [28.176709425577933, 56.169129950578778], - [27.855282016722519, 56.759326483784363], - [27.770015903440985, 57.244258124411189], - [27.288184848751648, 57.474528306703903], - [27.716685825315771, 57.791899115624439], - [27.420150000000202, 58.724570000000128], - [28.131699253051856, 59.300825100330982], - [27.98112, 59.47537], - [29.1177, 60.028050000000107], - [28.07, 60.503520000000137], - [30.211107212044645, 61.780027777749673], - [31.139991082491029, 62.357692776124431], - [31.516092156711263, 62.867687486412898], - [30.035872430142796, 63.552813625738551], - [30.444684686003736, 64.204453436939062], - [29.544429559047014, 64.948671576590542], - [30.21765, 65.80598], - [29.054588657352376, 66.944286200622017], - [29.977426385220689, 67.69829702419274], - [28.445943637818765, 68.364612942163987], - [28.591929559043358, 69.064776923286686], - [29.39955, 69.15692000000017], - [31.101080000000103, 69.55811], - [32.132720000000255, 69.905950000000232], - [33.77547, 69.301420000000107], - [36.51396, 69.06342], - [40.292340000000159, 67.9324], - [41.059870000000124, 67.457130000000106], - [41.125950000000174, 66.79158000000011], - [40.01583, 66.266180000000119], - [38.38295, 65.99953], - [33.918710000000168, 66.75961], - [33.18444, 66.63253], - [34.81477, 65.900150000000124], - [34.87857425307876, 65.436212877048192], - [34.943910000000152, 64.414370000000147], - [36.23129, 64.10945], - [37.012730000000111, 63.84983], - [37.141970000000143, 64.33471], - [36.539579035089801, 64.76446], - [37.176040000000135, 65.143220000000113], - [39.59345, 64.520790000000162], - [40.4356, 64.76446], - [39.762600000000148, 65.49682], - [42.09309, 66.47623], - [43.01604000000011, 66.41858], - [43.94975000000013, 66.06908], - [44.53226, 66.756340000000122], - [43.69839, 67.35245], - [44.187950000000136, 67.95051], - [43.45282, 68.57079], - [46.250000000000135, 68.25], - [46.821340000000156, 67.68997], - [45.55517, 67.56652], - [45.56202, 67.010050000000192], - [46.349150000000137, 66.66767], - [47.894160000000248, 66.884550000000146], - [48.13876, 67.52238], - [50.227660000000142, 67.998670000000132], - [53.717430000000164, 68.85738], - [54.47171, 68.80815], - [53.485820000000118, 68.20131], - [54.72628, 68.09702], - [55.442680000000124, 68.43866], - [57.317020000000149, 68.46628], - [58.802000000000206, 68.88082], - [59.941420000000178, 68.27844], - [61.077840000000165, 68.94069], - [60.03, 69.52], - [60.55, 69.85], - [63.504000000000147, 69.54739], - [64.888115, 69.234835000000132], - [68.512160000000108, 68.09233000000016], - [69.18068, 68.61563000000011], - [68.16444, 69.14436], - [68.13522, 69.35649], - [66.930080000000103, 69.454610000000102], - [67.25976, 69.92873], - [66.724920000000125, 70.708890000000125], - [66.69466, 71.028970000000228], - [68.540060000000111, 71.934500000000227], - [69.19636, 72.843360000000146], - [69.94, 73.04000000000012], - [72.58754, 72.77629], - [72.79603, 72.22006], - [71.84811, 71.40898], - [72.47011, 71.09019], - [72.79188, 70.39114], - [72.564700000000201, 69.02085], - [73.66787, 68.4079], - [73.2387, 67.7404], - [71.280000000000101, 66.320000000000149], - [72.423010000000147, 66.172670000000167], - [72.82077, 66.53267], - [73.920990000000131, 66.789460000000119], - [74.186510000000183, 67.28429], - [75.052, 67.760470000000154], - [74.469260000000148, 68.32899], - [74.93584, 68.98918], - [73.84236, 69.07146], - [73.601870000000204, 69.62763], - [74.3998, 70.63175], - [73.1011, 71.447170000000241], - [74.890820000000204, 72.12119], - [74.65926, 72.83227], - [75.158010000000175, 72.854970000000108], - [75.68351, 72.300560000000118], - [75.288980000000109, 71.33556], - [76.35911, 71.152870000000135], - [75.903130000000161, 71.87401], - [77.5766500000001, 72.26717], - [79.652020000000107, 72.32011], - [81.5, 71.75], - [80.61071, 72.582850000000107], - [80.51109, 73.6482], - [82.25, 73.85], - [84.65526, 73.805910000000154], - [86.822300000000226, 73.93688], - [86.00956, 74.459670000000145], - [87.166820000000143, 75.11643], - [88.31571, 75.14393], - [90.26, 75.64], - [92.90058, 75.77333], - [93.234210000000132, 76.0472], - [95.860000000000127, 76.14], - [96.67821, 75.91548], - [98.922540000000197, 76.44689], - [100.759670000000199, 76.43028], - [101.03532, 76.86189], - [101.990840000000105, 77.287540000000192], - [104.3516, 77.69792], - [106.066640000000135, 77.37389], - [104.705000000000211, 77.1274], - [106.970130000000111, 76.97419] - ] - ], - [ - [ - [105.07547, 78.30689], - [99.43814, 77.921], - [101.2649, 79.23399], - [102.08635, 79.34641], - [102.837815, 79.28129], - [105.37243, 78.71334], - [105.07547, 78.30689] - ] - ], - [ - [ - [51.136186557831266, 80.54728017854093], - [49.793684523320692, 80.415427761548202], - [48.894411248577526, 80.33956675894369], - [48.75493655782175, 80.175468248200829], - [47.586119012244147, 80.010181179515328], - [46.502825962109647, 80.247246812654339], - [47.072455275262897, 80.559424140129451], - [44.846958042181107, 80.589809882317169], - [46.799138624871226, 80.771917629713627], - [48.31847741068465, 80.784009914869927], - [48.52280602396668, 80.514568996900138], - [49.097189568890897, 80.753985907708412], - [50.039767693894603, 80.918885403151791], - [51.522932977103679, 80.699725653801906], - [51.136186557831266, 80.54728017854093] - ] - ], - [ - [ - [99.93976, 78.88094], - [97.75794, 78.7562], - [94.97259, 79.044745], - [93.31288, 79.4265], - [92.5454, 80.14379], - [91.18107, 80.34146], - [93.77766, 81.0246], - [95.940895, 81.2504], - [97.88385, 80.746975], - [100.186655, 79.780135], - [99.93976, 78.88094] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Rwanda", "name": "Rwanda", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [30.419104852019235, -1.134659112150416], - [30.816134881317705, -1.698914076345388], - [30.758308953583104, -2.287250257988368], - [30.469696079232978, -2.413857517103458], - [29.938359002407935, -2.348486830254238], - [29.632176141078585, -2.917857761246096], - [29.02492638521678, -2.839257907730157], - [29.117478875451546, -2.292211195488384], - [29.254834832483336, -2.215109958508911], - [29.29188683443661, -1.620055840667987], - [29.579466180140876, -1.341313164885626], - [29.821518588996003, -1.443322442229785], - [30.419104852019235, -1.134659112150416] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Western Sahara", "name": "W. Sahara", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-8.794883999049075, 27.120696316022503], - [-8.81782833498667, 27.656425889592349], - [-8.665589565454805, 27.656425889592349], - [-8.66512447756419, 27.58947907155822], - [-8.684399786809051, 27.395744126895998], - [-8.687293667017398, 25.881056219988899], - [-11.969418911171159, 25.933352769468261], - [-11.93722449385332, 23.374594224536164], - [-12.874221564169574, 23.284832261645171], - [-13.118754441774708, 22.771220201096249], - [-12.929101935263528, 21.327070624267559], - [-16.845193650773989, 21.333323472574875], - [-17.063423224342568, 20.99975210213082], - [-17.020428432675736, 21.422310288981475], - [-17.002961798561085, 21.420734157796574], - [-14.750954555713532, 21.50060008390366], - [-14.630832688851068, 21.860939846274899], - [-14.221167771857251, 22.310163072188153], - [-13.891110398809044, 23.691009019459297], - [-12.500962693725368, 24.770116278578193], - [-12.030758836301613, 26.030866197203036], - [-11.718219773800353, 26.104091701760616], - [-11.392554897496977, 26.883423977154358], - [-10.551262579785272, 26.990807603456879], - [-10.18942420087758, 26.860944729107398], - [-9.735343390328877, 26.860944729107398], - [-9.413037482124464, 27.088476060488514], - [-8.794883999049075, 27.120696316022503] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Saudi Arabia", "name": "Saudi Arabia", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [42.779332309750963, 16.34789134364868], - [42.64957278826607, 16.77463532151496], - [42.347989129410706, 17.075805568911996], - [42.270887892431219, 17.474721787989122], - [41.754381951673949, 17.833046169500971], - [41.221391229015573, 18.671599636301206], - [40.939341261566533, 19.486485297111752], - [40.247652215339819, 20.174634507726488], - [39.801684604660934, 20.338862209550054], - [39.139399448408277, 21.29190481209293], - [39.023695916506782, 21.986875311770191], - [39.066328973147577, 22.579655666590263], - [38.492772251140075, 23.688451036060851], - [38.023860304523616, 24.078685614512928], - [37.483634881344379, 24.285494696545008], - [37.154817742671177, 24.858482977797301], - [37.209491408035994, 25.084541530858104], - [36.931627231602583, 25.602959499610172], - [36.639603712721218, 25.826227525327219], - [36.249136590323808, 26.570135606384873], - [35.640181512196385, 27.376520494083415], - [35.130186801907875, 28.063351955674712], - [34.632336053207972, 28.058546047471559], - [34.787778761541936, 28.607427273059692], - [34.832220493312938, 28.957483425404838], - [34.956037225084252, 29.356554673778835], - [36.068940870922049, 29.19749461518445], - [36.501214227043583, 29.505253607698702], - [36.740527784987243, 29.865283311476183], - [37.503581984209028, 30.003776150018396], - [37.668119744626374, 30.338665269485894], - [37.998848911294367, 30.508499864213128], - [37.002165561681004, 31.508412990844736], - [39.004885695152545, 32.010216986614971], - [39.195468377444961, 32.16100881604266], - [40.399994337736238, 31.889991766887931], - [41.889980910007829, 31.190008653278362], - [44.709498732284736, 29.178891099559376], - [46.568713413281742, 29.099025173452283], - [47.459821811722819, 29.002519436147217], - [47.708850538937376, 28.526062730416136], - [48.416094191283939, 28.552004299426663], - [48.807594842327163, 27.689627997339876], - [49.299554477745815, 27.461218166609804], - [49.470913527225647, 27.109999294538078], - [50.152422316290874, 26.689663194275994], - [50.212935418504671, 26.277026882425371], - [50.113303257045928, 25.943972276304248], - [50.23985883972874, 25.608049628190923], - [50.527386509000728, 25.327808335872099], - [50.660556675016885, 24.999895534764018], - [50.810108270069563, 24.754742539971371], - [51.112415398977006, 24.556330878186721], - [51.389607781790623, 24.627385972588051], - [51.579518670463258, 24.245497137951102], - [51.617707553926969, 24.014219265228824], - [52.000733270074321, 23.001154486578937], - [55.006803012924898, 22.496947536707129], - [55.208341098863187, 22.708329982997039], - [55.666659376859812, 22.000001125572336], - [54.999981723862355, 19.999994004796104], - [52.000009800022227, 19.000003363516054], - [49.116671583864857, 18.616667588774941], - [48.183343540241324, 18.166669216377311], - [47.466694777217626, 17.116681626854877], - [47.000004917189749, 16.949999294497438], - [46.749994337761642, 17.283338120996174], - [46.366658563020529, 17.233315334537632], - [45.399999220568752, 17.333335069238554], - [45.216651238797184, 17.43332896572333], - [44.062613152855072, 17.410358791569589], - [43.791518589051904, 17.319976711491105], - [43.380794305196098, 17.579986680567668], - [43.115797560403351, 17.088440456607369], - [43.218375278502734, 16.666889960186406], - [42.779332309750963, 16.34789134364868] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Sudan", "name": "Sudan", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.963392794971178, 9.464285229420623], - [33.824963480907506, 9.48406084571536], - [33.842130853028145, 9.981914637215992], - [33.721959248183097, 10.325262079630191], - [33.206938084561777, 10.720111638406591], - [33.086766479716729, 11.441141267476493], - [33.206938084561777, 12.179338268667093], - [32.743419037302537, 12.24800775714999], - [32.674749548819641, 12.024831919580716], - [32.073891524594778, 11.973329803218517], - [32.314234734284746, 11.681484477166519], - [32.400071594888338, 11.080626452941486], - [31.850715687025509, 10.531270545078822], - [31.352861895524875, 9.810240916008693], - [30.837840731903377, 9.707236683284519], - [29.996639497988546, 10.290927335388684], - [29.618957311332842, 10.084918869940223], - [29.515953078608607, 9.793073543888053], - [29.000931914987166, 9.604232450560287], - [28.966597170745779, 9.398223985111654], - [27.970889587744345, 9.398223985111654], - [27.833550610778783, 9.604232450560287], - [27.112520981708876, 9.638567194801622], - [26.752006167173811, 9.466893473594492], - [26.477328213242508, 9.552730334198086], - [25.96230704962101, 10.136420986302422], - [25.790633328413943, 10.411098940233726], - [25.069603699343979, 10.27375996326799], - [24.79492574541268, 9.810240916008693], - [24.537415163602017, 8.917537565731719], - [24.194067721187643, 8.728696472403895], - [23.886979580860665, 8.619729712933063], - [23.805813429466745, 8.666318874542522], - [23.459012892355979, 8.954285793489019], - [23.394779087017291, 9.26506785729225], - [23.557249790142915, 9.681218166538766], - [23.554304233502187, 10.089255275915319], - [22.977543572692749, 10.714462591998538], - [22.864165480244246, 11.142395127807616], - [22.87622, 11.384610000000119], - [22.50869, 11.67936], - [22.49762, 12.26024], - [22.28801, 12.64605], - [21.93681, 12.588180000000133], - [22.03759, 12.95546], - [22.29658, 13.37232], - [22.18329, 13.78648], - [22.51202, 14.09318], - [22.30351, 14.32682], - [22.567950000000106, 14.944290000000134], - [23.02459, 15.68072], - [23.886890000000101, 15.61084], - [23.837660000000135, 19.580470000000101], - [23.850000000000129, 20.0], - [25.00000000000011, 20.00304], - [25.00000000000011, 22.0], - [29.02, 22.0], - [32.9, 22.0], - [36.86623, 22.0], - [37.18872, 21.01885], - [36.96941, 20.837440000000125], - [37.114700000000134, 19.80796], - [37.48179, 18.61409], - [37.86276, 18.36786], - [38.410089959473218, 17.998307399970312], - [37.904000000000103, 17.42754], - [37.16747, 17.263140000000128], - [36.852530000000108, 16.95655], - [36.75389, 16.29186], - [36.32322, 14.82249], - [36.42951, 14.42211], - [36.27022, 13.563330000000118], - [35.86363, 12.57828], - [35.26049, 12.08286], - [34.831630000000125, 11.318960000000116], - [34.73115000000012, 10.910170000000106], - [34.25745, 10.63009], - [33.96162, 9.58358], - [33.963392794971178, 9.464285229420623] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "South Sudan", "name": "S. Sudan", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.963392794971178, 9.464285229420623], - [33.97498, 8.68456], - [33.82550000000014, 8.37916], - [33.294800000000116, 8.35458], - [32.95418, 7.7849700000001], - [33.56829, 7.71334], - [34.0751, 7.22595], - [34.25032, 6.82607], - [34.70702, 6.59422000000012], - [35.298007118233095, 5.506], - [34.620196267853935, 4.847122742082034], - [34.005, 4.249884947362147], - [33.39, 3.79], - [32.68642, 3.79232], - [31.881450000000136, 3.55827], - [31.24556, 3.7819], - [30.83385, 3.50917], - [29.95349, 4.1737], - [29.715995314256013, 4.600804755060152], - [29.159078403446635, 4.389267279473244], - [28.696677687298795, 4.455077215996993], - [28.428993768026992, 4.287154649264607], - [27.979977247842946, 4.408413397637388], - [27.374226108517625, 5.233944403500173], - [27.213409051225248, 5.550953477394613], - [26.465909458123289, 5.946717434101855], - [26.213418409945113, 6.546603298362127], - [25.796647983511257, 6.979315904158169], - [25.124130893664805, 7.500085150579422], - [25.114932488716867, 7.825104071479244], - [24.567369012152191, 8.229187933785452], - [23.886979580860665, 8.619729712933063], - [24.194067721187643, 8.728696472403895], - [24.537415163602017, 8.917537565731719], - [24.79492574541268, 9.810240916008693], - [25.069603699343979, 10.27375996326799], - [25.790633328413943, 10.411098940233726], - [25.96230704962101, 10.136420986302422], - [26.477328213242508, 9.552730334198086], - [26.752006167173811, 9.466893473594492], - [27.112520981708876, 9.638567194801622], - [27.833550610778783, 9.604232450560287], - [27.970889587744345, 9.398223985111654], - [28.966597170745779, 9.398223985111654], - [29.000931914987166, 9.604232450560287], - [29.515953078608607, 9.793073543888053], - [29.618957311332842, 10.084918869940223], - [29.996639497988546, 10.290927335388684], - [30.837840731903377, 9.707236683284519], - [31.352861895524875, 9.810240916008693], - [31.850715687025509, 10.531270545078822], - [32.400071594888338, 11.080626452941486], - [32.314234734284746, 11.681484477166519], - [32.073891524594778, 11.973329803218517], - [32.674749548819641, 12.024831919580716], - [32.743419037302537, 12.24800775714999], - [33.206938084561777, 12.179338268667093], - [33.086766479716729, 11.441141267476493], - [33.206938084561777, 10.720111638406591], - [33.721959248183097, 10.325262079630191], - [33.842130853028145, 9.981914637215992], - [33.824963480907506, 9.48406084571536], - [33.963392794971178, 9.464285229420623] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Senegal", "name": "Senegal", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-16.713728807023468, 13.594958604379853], - [-17.126106736712611, 14.373515733289221], - [-17.625042690490655, 14.72954051356407], - [-17.185172898822227, 14.91947724045286], - [-16.700706346085919, 15.621527411354107], - [-16.463098110407881, 16.135036119038457], - [-16.120690070041928, 16.45566254319338], - [-15.623666144258689, 16.369337063049809], - [-15.135737270558813, 16.587282416240779], - [-14.577347581428977, 16.598263658102805], - [-14.099521450242175, 16.304302273010489], - [-13.43573767745306, 16.039383042866188], - [-12.830658331747513, 15.303691514542942], - [-12.170750291380299, 14.616834214735503], - [-12.124887457721256, 13.994727484589784], - [-11.927716030311613, 13.422075100147392], - [-11.553397793005427, 13.141213690641063], - [-11.467899135778522, 12.754518947800973], - [-11.513942836950587, 12.442987575729415], - [-11.658300950557928, 12.386582749882834], - [-12.20356482588563, 12.465647691289401], - [-12.278599005573438, 12.354440008997285], - [-12.499050665730561, 12.332089952031053], - [-13.217818162478235, 12.575873521367964], - [-13.700476040084322, 12.586182969610192], - [-15.548476935274005, 12.628170070847343], - [-15.816574266004251, 12.515567124883345], - [-16.147716844130581, 12.547761542201185], - [-16.67745195155457, 12.38485158940105], - [-16.84152462408127, 13.151393947802557], - [-15.931295945692208, 13.130284125211331], - [-15.691000535534991, 13.270353094938455], - [-15.511812506562931, 13.278569647672864], - [-15.141163295949463, 13.509511623585235], - [-14.712197231494626, 13.298206691943774], - [-14.277701788784553, 13.28058502853224], - [-13.844963344772404, 13.505041612191999], - [-14.046992356817478, 13.794067898000446], - [-14.376713833055785, 13.625680243377371], - [-14.687030808968483, 13.63035696049978], - [-15.081735398813816, 13.876491807505982], - [-15.398770310924457, 13.860368760630916], - [-15.624596320039936, 13.623587347869556], - [-16.713728807023468, 13.594958604379853] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Solomon Islands", "name": "Solomon Is.", "continent": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [162.119024693040842, -10.482719008021133], - [162.398645868172196, -10.826367282762119], - [161.700032180018354, -10.820011081590222], - [161.319796991214702, -10.204751478723123], - [161.917383254237933, -10.446700534713653], - [162.119024693040842, -10.482719008021133] - ] - ], - [ - [ - [160.852228631837903, -9.872937106977002], - [160.462588332357228, -9.89520964929484], - [159.849447463214176, -9.794027194867367], - [159.640002883135139, -9.639979750205269], - [159.70294477766663, -9.242949720906777], - [160.362956170898428, -9.400304457235533], - [160.688517694337179, -9.610162448772808], - [160.852228631837903, -9.872937106977002] - ] - ], - [ - [ - [161.679981724289121, -9.599982191611373], - [161.52939660059053, -9.784312025596433], - [160.788253208660507, -8.917543226764918], - [160.579997186524338, -8.320008640173965], - [160.92002811100491, -8.320008640173965], - [161.280006138349961, -9.120011488484449], - [161.679981724289121, -9.599982191611373] - ] - ], - [ - [ - [159.875027297198585, -8.337320244991714], - [159.917401971677975, -8.538289890174864], - [159.133677199539335, -8.114181410355398], - [158.586113722974687, -7.754823500197713], - [158.211149530264834, -7.421872246941147], - [158.359977655265425, -7.320017998893915], - [158.820001255527671, -7.56000335045739], - [159.640002883135139, -8.020026950719567], - [159.875027297198585, -8.337320244991714] - ] - ], - [ - [ - [157.53842573468927, -7.347819919466928], - [157.339419793933217, -7.404767347852554], - [156.902030471014768, -7.176874281445391], - [156.491357863591304, -6.765943291860394], - [156.542827590153934, -6.599338474151478], - [157.140000441718882, -7.021638278840653], - [157.53842573468927, -7.347819919466928] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Sierra Leone", "name": "Sierra Leone", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-11.438779466182053, 6.785916856305746], - [-11.708194545935736, 6.860098374860724], - [-12.428098924193815, 7.262942002792029], - [-12.949049038128193, 7.798645738145736], - [-13.124025437868479, 8.163946438016977], - [-13.246550258832512, 8.903048610871506], - [-12.711957566773076, 9.342711696810765], - [-12.596719122762206, 9.620188300001969], - [-12.425928514037562, 9.835834051955953], - [-12.150338100625003, 9.858571682164378], - [-11.917277390988655, 10.046983954300556], - [-11.117481248407328, 10.045872911006283], - [-10.839151984083299, 9.688246161330367], - [-10.622395188835037, 9.267910061068276], - [-10.65477047366589, 8.977178452994194], - [-10.494315151399629, 8.715540676300433], - [-10.505477260774667, 8.348896389189603], - [-10.230093553091276, 8.406205552601291], - [-10.695594855176477, 7.939464016141085], - [-11.14670427086838, 7.396706447779534], - [-11.199801805048278, 7.105845648624735], - [-11.438779466182053, 6.785916856305746] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "El Salvador", "name": "El Salvador", "continent": "North America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-87.793111131526558, 13.384480495655051], - [-87.904112108089507, 13.149016831917134], - [-88.483301561216791, 13.163951320849488], - [-88.843227912129692, 13.259733588102474], - [-89.256742723329282, 13.4585328231293], - [-89.812393561547637, 13.520622056527994], - [-90.095554572290951, 13.73533763270073], - [-90.064677903996568, 13.881969509328924], - [-89.7219339668207, 14.134228013561694], - [-89.5342193265205, 14.244815578666302], - [-89.587342698916544, 14.362586167859485], - [-89.353325975282772, 14.424132798719112], - [-89.058511929057644, 14.340029405164085], - [-88.843072882832814, 14.140506700085169], - [-88.541230841815974, 13.980154730683475], - [-88.50399797234968, 13.845485948130854], - [-88.065342576840123, 13.964625962779774], - [-87.859515347021585, 13.893312486216979], - [-87.723502977229387, 13.785050360565503], - [-87.793111131526558, 13.384480495655051] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Somaliland", "name": "Somaliland", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [48.938129510296491, 9.451748968946672], - [48.486735874226994, 8.837626247589979], - [47.78942, 8.003], - [46.948328484897942, 7.996876532417386], - [43.67875, 9.183580000000116], - [43.296975132018744, 9.540477403191742], - [42.92812, 10.021940000000139], - [42.55876, 10.572580000000126], - [42.776851841000948, 10.926878566934416], - [43.145304803242126, 11.462039699748853], - [43.470659620951658, 11.27770986576388], - [43.666668328634834, 10.864169216348158], - [44.117803582542805, 10.445538438351603], - [44.614259067570849, 10.442205308468941], - [45.556940545439133, 10.698029486529775], - [46.645401238802997, 10.816549383991171], - [47.525657586462778, 11.127228094929986], - [48.021596307167769, 11.193063869669741], - [48.378783807169263, 11.375481675660122], - [48.948206414593457, 11.410621649618516], - [48.942005242718423, 11.394266058798163], - [48.938491245322595, 10.982327378783451], - [48.938232863161076, 9.973500067581481], - [48.938129510296491, 9.451748968946672] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Somalia", "name": "Somalia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [49.72862, 11.5789], - [50.25878, 11.67957], - [50.73202, 12.0219], - [51.1112, 12.02464], - [51.13387, 11.74815], - [51.04153, 11.16651], - [51.04531, 10.6409], - [50.83418, 10.27972], - [50.55239, 9.19874], - [50.07092, 8.08173], - [49.4527, 6.80466], - [48.59455, 5.33911], - [47.74079, 4.2194], - [46.56476, 2.85529], - [45.56399, 2.04576], - [44.06815, 1.05283], - [43.13597, 0.2922], - [42.04157, -0.91916], - [41.81095, -1.44647], - [41.58513, -1.68325], - [40.993, -0.85829], - [40.98105, 2.78452], - [41.855083092643966, 3.918911920483726], - [42.12861, 4.23413], - [42.76967, 4.25259], - [43.66087, 4.95755], - [44.9636, 5.00162], - [47.78942, 8.003], - [48.486735874226937, 8.837626247589993], - [48.938129510296442, 9.451748968946616], - [48.938232863161026, 9.973500067581508], - [48.938491245322481, 10.982327378783465], - [48.942005242718345, 11.394266058798136], - [48.948204758509732, 11.410617281697961], - [49.26776, 11.43033], - [49.72862, 11.5789] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Republic of Serbia", "name": "Serbia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.874312778413408, 45.416375433934306], - [21.483526238702204, 45.181170152357865], - [21.562022739353718, 44.768947251965635], - [22.145087924902892, 44.478422349620573], - [22.459022251075961, 44.702517198254426], - [22.705725538837434, 44.578002834647002], - [22.47400841644065, 44.409227606781762], - [22.657149692483067, 44.234923000661347], - [22.410446404721593, 44.008063462900047], - [22.500156691180219, 43.642814439460999], - [22.986018507588479, 43.211161200527094], - [22.604801466571352, 42.898518785161109], - [22.43659467946139, 42.580321153323943], - [22.545011834409642, 42.461362006188025], - [22.380525750424674, 42.320259507815074], - [21.917080000000105, 42.30364], - [21.576635989402117, 42.245224397061847], - [21.54332, 42.32025], - [21.66292, 42.43922], - [21.77505, 42.6827], - [21.63302, 42.67717], - [21.43866, 42.86255], - [21.27421, 42.90959], - [21.143395, 43.068685000000123], - [20.95651, 43.13094], - [20.81448, 43.27205], - [20.63508, 43.21671], - [20.49679, 42.88469], - [20.25758, 42.81275], - [20.3398, 42.89852], - [19.95857, 43.10604], - [19.63, 43.213779970270522], - [19.48389, 43.35229], - [19.21852, 43.52384], - [19.454, 43.568100000000115], - [19.59976, 44.03847], - [19.11761, 44.42307], - [19.36803, 44.863], - [19.00548, 44.86023], - [19.390475701584588, 45.236515611342369], - [19.072768995854172, 45.521511135432078], - [18.82982, 45.90888], - [19.596044549241636, 46.171729844744547], - [20.22019249846289, 46.127468980486569], - [20.76217492033998, 45.734573065771478], - [20.874312778413408, 45.416375433934306] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Suriname", "name": "Suriname", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.147436489476874, 5.973149929219161], - [-55.949318406789786, 5.772877915872], - [-55.841779751190408, 5.953125311706059], - [-55.033250291551759, 6.025291449401662], - [-53.958044603070888, 5.756548163267764], - [-54.478632981979224, 4.896755682795585], - [-54.3995422023565, 4.212611395683466], - [-54.006930508018996, 3.620037746592558], - [-54.181726040246261, 3.189779771330421], - [-54.269705166223183, 2.732391669115046], - [-54.524754197799709, 2.311848863123785], - [-55.097587449755125, 2.523748073736612], - [-55.569755011605984, 2.42150625244713], - [-55.973322109589361, 2.510363877773016], - [-56.073341844290283, 2.220794989425499], - [-55.905600145070871, 2.021995754398659], - [-55.995698004771739, 1.817667141116601], - [-56.53938574891454, 1.89952260986692], - [-57.150097825739898, 2.768926906745406], - [-57.281433478409703, 3.333491929534119], - [-57.601568976457848, 3.334654649260684], - [-58.044694383360664, 4.060863552258382], - [-57.860209520078691, 4.576801052260449], - [-57.914288906472123, 4.812626451024413], - [-57.307245856339492, 5.073566595882225], - [-57.147436489476874, 5.973149929219161] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Slovakia", "name": "Slovakia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [18.85314415861361, 49.496229763377634], - [18.909574822676316, 49.435845852244562], - [19.320712517990469, 49.571574001659179], - [19.825022820726865, 49.217125352569219], - [20.415839471119849, 49.431453355499755], - [20.887955356538406, 49.328772284535823], - [21.607808058364206, 49.470107326854077], - [22.558137648211751, 49.08573802346713], - [22.280841912533553, 48.825392157580659], - [22.085608351334848, 48.422264309271782], - [21.872236362401729, 48.319970811550007], - [20.801293979584919, 48.62385407164237], - [20.473562045989862, 48.562850043321809], - [20.239054396249344, 48.327567247096916], - [19.769470656013109, 48.2026911484636], - [19.66136355965849, 48.266614895208647], - [19.174364861739885, 48.111378892603859], - [18.777024773847668, 48.081768296900627], - [18.696512892336923, 47.88095368101439], - [17.857132602620023, 47.758428860050365], - [17.488472934649813, 47.867466132186209], - [16.979666782304033, 48.123497015976298], - [16.879982944412998, 48.470013332709463], - [16.960288120194573, 48.596982326850593], - [17.101984897538895, 48.8169688991171], - [17.545006951577101, 48.800019029325362], - [17.886484816161808, 48.903475246773695], - [17.913511590250462, 48.996492824899072], - [18.104972771891848, 49.043983466175298], - [18.170498488037961, 49.271514797556421], - [18.399993523846174, 49.315000515330034], - [18.554971144289478, 49.495015367218777], - [18.85314415861361, 49.496229763377634] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Slovenia", "name": "Slovenia", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [13.806475457421524, 46.509306138691201], - [14.632471551174827, 46.431817328469535], - [15.137091912504982, 46.658702704447016], - [16.011663852612653, 46.683610744811688], - [16.202298211337361, 46.852385972676949], - [16.370504998447412, 46.841327216166498], - [16.564808383864854, 46.503750922219822], - [15.768732944408548, 46.238108222023442], - [15.671529575267552, 45.834153550797865], - [15.323953891672403, 45.731782538427673], - [15.327674594797424, 45.452316392593218], - [14.935243767972931, 45.471695054702671], - [14.595109490627804, 45.6349409043127], - [14.411968214585411, 45.466165676447446], - [13.715059848697221, 45.500323798192369], - [13.937630242578305, 45.591015936864608], - [13.698109978905475, 46.016778062517339], - [13.806475457421524, 46.509306138691201] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Sweden", "name": "Sweden", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.183173455501922, 65.723740546320158], - [21.213516879977213, 65.02600535751526], - [21.369631381930954, 64.413587958424273], - [19.778875766690216, 63.609554348395022], - [17.847779168375208, 62.749400132896803], - [17.11955488451812, 61.341165676510954], - [17.831346062906388, 60.636583360427394], - [18.787721795332086, 60.081914374422581], - [17.869224887776337, 58.95376618105869], - [16.829185011470084, 58.719826972073385], - [16.44770958829147, 57.041118069071871], - [15.87978559740378, 56.104301866268649], - [14.666681349352071, 56.20088511822216], - [14.100721062891461, 55.407781073622637], - [12.942910597392054, 55.361737372450563], - [12.625100538797025, 56.307080186581956], - [11.787942335668671, 57.441817125063061], - [11.027368605196866, 58.856149400459344], - [11.468271925511145, 59.432393296946024], - [12.300365838274896, 60.117932847730025], - [12.631146681375181, 61.293571682370121], - [11.992064243221559, 61.800362453856543], - [11.930569288794228, 63.128317572676963], - [12.57993533697393, 64.066218980558318], - [13.571916131248711, 64.049114081469696], - [13.9199052263022, 64.445420640716065], - [13.555689731509087, 64.7870276963815], - [15.108411492582999, 66.19386688909546], - [16.108712192456775, 67.302455552836875], - [16.768878614985478, 68.013936672631388], - [17.729181756265344, 68.010551866316263], - [17.993868442464329, 68.567391262477344], - [19.878559604581248, 68.407194322372561], - [20.025268995857882, 69.065138658312691], - [20.645592889089521, 69.106247260200846], - [21.978534783626113, 68.616845608180682], - [23.539473097434435, 67.936008612735236], - [23.565879754335576, 66.396050930437411], - [23.903378533633795, 66.006927395279604], - [22.183173455501922, 65.723740546320158] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Swaziland", "name": "Swaziland", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.071665480281062, -26.733820082304902], - [31.868060337051073, -27.17792734142127], - [31.282773064913325, -27.285879408478991], - [30.685961948374477, -26.743845310169526], - [30.676608514129633, -26.398078301704604], - [30.949666782359905, -26.022649021104144], - [31.044079624157146, -25.731452325139436], - [31.333157586397899, -25.660190525008943], - [31.837777947728057, -25.843331801051342], - [31.985779249811962, -26.29177988048022], - [32.071665480281062, -26.733820082304902] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Syria", "name": "Syria", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [38.792340529136077, 33.378686428352218], - [36.834062127435537, 32.312937526980768], - [35.719918247222743, 32.709192409794859], - [35.700797967274745, 32.716013698857374], - [35.836396925608618, 32.868123277308506], - [35.821100701650231, 33.277426459276292], - [36.066460402172048, 33.824912421192543], - [36.611750115715886, 34.201788641897174], - [36.448194207512095, 34.59393524834406], - [35.998402540843628, 34.644914048799997], - [35.905023227692219, 35.410009467097318], - [36.149762811026527, 35.821534735653664], - [36.417550083163029, 36.040616970355053], - [36.685389031731795, 36.259699205056457], - [36.739494256341395, 36.817520453431079], - [37.066761102045824, 36.623036200500614], - [38.167727492024191, 36.901210435527766], - [38.699891391765895, 36.712927354472335], - [39.522580193852541, 36.716053778625984], - [40.673259311695681, 37.091276353497285], - [41.212089471203043, 37.074352321921687], - [42.349591098811764, 37.22987254490409], - [41.837064243340954, 36.605853786763568], - [41.289707472505448, 36.358814602192261], - [41.383965285005807, 35.628316555314349], - [41.00615888851992, 34.419372260062111], - [38.792340529136077, 33.378686428352218] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Chad", "name": "Chad", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [14.495787387762899, 12.859396267137353], - [14.595781284247604, 13.330426947477859], - [13.954476759505607, 13.353448798063765], - [13.956698846094124, 13.996691189016925], - [13.540393507550785, 14.36713369390122], - [13.97217, 15.68437], - [15.247731154041842, 16.627305813050778], - [15.300441114979716, 17.927949937405], - [15.68574059414777, 19.957180080642384], - [15.90324669766431, 20.387618923417499], - [15.487148064850143, 20.730414537025634], - [15.47106, 21.04845], - [15.096887648181847, 21.308518785074902], - [14.8513, 22.862950000000119], - [15.86085, 23.40972], - [19.84926, 21.49509], - [23.837660000000135, 19.580470000000101], - [23.886890000000101, 15.61084], - [23.02459, 15.68072], - [22.567950000000106, 14.944290000000134], - [22.30351, 14.32682], - [22.51202, 14.09318], - [22.18329, 13.78648], - [22.29658, 13.37232], - [22.03759, 12.95546], - [21.93681, 12.588180000000133], - [22.28801, 12.64605], - [22.49762, 12.26024], - [22.50869, 11.67936], - [22.87622, 11.384610000000119], - [22.864165480244246, 11.142395127807616], - [22.231129184668756, 10.971888739460608], - [21.723821648859538, 10.567055568885959], - [21.000868361096305, 9.475985215691479], - [20.059685499764267, 9.012706000194838], - [19.094008009526071, 9.074846910025768], - [18.81200971850927, 8.982914536978623], - [18.911021762780589, 8.630894680206435], - [18.389554884523303, 8.281303615751879], - [17.964929640380884, 7.890914008002992], - [16.705988396886365, 7.508327541529978], - [16.4561845231874, 7.734773667832938], - [16.290561557691884, 7.754307359239417], - [16.106231723706738, 7.497087917506461], - [15.279460483469164, 7.42192454673801], - [15.436091749745737, 7.692812404811887], - [15.120865512765302, 8.382150173369437], - [14.979995558337688, 8.796104234243442], - [14.544466586981851, 8.965861314322238], - [13.954218377344088, 9.549494940626685], - [14.17146609869911, 10.021378282100043], - [14.627200555081057, 9.920919297724591], - [14.909353875394796, 9.992129421422758], - [15.46787275560524, 9.982336737503543], - [14.923564894275042, 10.891325181517514], - [14.960151808337679, 11.555574042197234], - [14.89336, 12.21905], - [14.495787387762899, 12.859396267137353] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Togo", "name": "Togo", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [1.865240512712318, 6.14215770102973], - [1.060121697604927, 5.928837388528875], - [0.836931186536333, 6.279978745952147], - [0.570384148774849, 6.914358628767188], - [0.490957472342245, 7.411744289576474], - [0.712029249686878, 8.312464504423827], - [0.461191847342121, 8.677222601756013], - [0.365900506195885, 9.46500397382948], - [0.367579990245389, 10.191212876827176], - [-0.049784715159944, 10.706917832883928], - [0.023802524423701, 11.018681748900802], - [0.899563022474069, 10.997339382364258], - [0.772335646171484, 10.470808213742357], - [1.077795037448737, 10.175606594275022], - [1.425060662450136, 9.825395412632998], - [1.46304284018467, 9.334624335157086], - [1.664477573258381, 9.128590399609378], - [1.618950636409238, 6.832038072126236], - [1.865240512712318, 6.14215770102973] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Thailand", "name": "Thailand", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [102.58493248902667, 12.186594956913279], - [101.687157830819928, 12.645740057826568], - [100.831809523524839, 12.627084865769204], - [100.978467238369191, 13.412721665902563], - [100.097797479251099, 13.406856390837429], - [100.018732537844528, 12.307001044153353], - [99.478920526123602, 10.846366685423545], - [99.153772414143134, 9.963061428258554], - [99.222398716226749, 9.239255479362425], - [99.873831821698118, 9.207862046745118], - [100.279646844486194, 8.29515289960605], - [100.45927412313273, 7.429572658717175], - [101.017327915452697, 6.856868597842476], - [101.623079054778032, 6.740622463401918], - [102.141186964936367, 6.221636053894626], - [101.81428185425797, 5.810808417174242], - [101.154218784593837, 5.691384182147713], - [101.075515578213327, 6.20486705161592], - [100.259596388756933, 6.642824815289542], - [100.085756870527092, 6.46448944745029], - [99.690690545655727, 6.848212795433595], - [99.519641554769606, 7.343453884302759], - [98.988252801512289, 7.907993068875325], - [98.503786248775967, 8.382305202666286], - [98.339661899816988, 7.794511623562384], - [98.150009393305808, 8.350007432483876], - [98.259150018306229, 8.973922837759799], - [98.553550653073017, 9.932959906448543], - [99.038120558673953, 10.960545762572435], - [99.587286004639694, 11.892762762901695], - [99.196353794351637, 12.804748439988666], - [99.212011753336071, 13.269293728076462], - [99.097755161538728, 13.827502549693275], - [98.430819126379859, 14.622027696180831], - [98.192074009191373, 15.123702500870349], - [98.537375929765687, 15.308497422746081], - [98.90334842325673, 16.177824204976115], - [98.493761020911322, 16.837835598207928], - [97.859122755934848, 17.567946071843657], - [97.375896437573516, 18.445437730375811], - [97.797782830804394, 18.627080389881751], - [98.253723992915582, 19.708203029860041], - [98.959675734454848, 19.752980658440944], - [99.543309360759281, 20.186597601802056], - [100.115987583417819, 20.41784963630818], - [100.548881056726856, 20.109237982661124], - [100.606293573003128, 19.508344427971217], - [101.282014601651667, 19.462584947176762], - [101.035931431077742, 18.408928330961611], - [101.059547560635139, 17.512497259994486], - [102.113591750092453, 18.109101670804161], - [102.413004998791592, 17.932781683824281], - [102.998705682387694, 17.961694647691598], - [103.200192091893726, 18.309632066312769], - [103.956476678485288, 18.240954087796872], - [104.716947056092465, 17.428858954330078], - [104.779320509868768, 16.441864935771445], - [105.589038527450128, 15.570316066952856], - [105.544338413517664, 14.723933620660414], - [105.218776890078871, 14.27321177821069], - [104.281418084736586, 14.416743068901363], - [102.988422072361601, 14.225721136934464], - [102.348099399833004, 13.39424734135822], - [102.58493248902667, 12.186594956913279] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Tajikistan", "name": "Tajikistan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [71.014198032520156, 40.244365546218226], - [70.648018833299957, 39.935753892571157], - [69.559609816368507, 40.103211371412968], - [69.464886915977516, 39.526683254548693], - [70.549161818325601, 39.604197902986492], - [71.784693637991992, 39.279463202464363], - [73.67537926625478, 39.431236884105594], - [73.928852166646408, 38.505815334622724], - [74.257514276022718, 38.606506862943441], - [74.864815708316812, 38.378846340481587], - [74.829985792952087, 37.990007025701388], - [74.980002475895404, 37.419990139305888], - [73.948695916646486, 37.421566270490786], - [73.260055779924983, 37.495256862938994], - [72.636889682917271, 37.047558091778349], - [72.193040805962383, 36.94828766534566], - [71.84463829945058, 36.738171291646914], - [71.448693475230229, 37.065644843080513], - [71.541917759084768, 37.905774441065631], - [71.239403924448155, 37.953265082341879], - [71.348131137990251, 38.258905341132156], - [70.806820509732873, 38.486281643216408], - [70.376304152309274, 38.138395901027515], - [70.270574171840124, 37.73516469985401], - [70.116578403610319, 37.588222764632086], - [69.518785434857946, 37.608996690413413], - [69.196272820924364, 37.15114350030742], - [68.859445835245921, 37.344335842430588], - [68.135562371701369, 37.023115139304302], - [67.829999627559502, 37.144994004864678], - [68.392032505165943, 38.157025254868728], - [68.176025018185911, 38.901553453113898], - [67.442219679641298, 39.140143541005479], - [67.701428664017342, 39.580478420564518], - [68.536416456989414, 39.533452867178923], - [69.011632928345477, 40.086158148756653], - [69.329494663372813, 40.727824408524839], - [70.666622348925031, 40.960213324541407], - [70.458159621059608, 40.49649485937028], - [70.601406691372674, 40.218527330072284], - [71.014198032520156, 40.244365546218226] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Turkmenistan", "name": "Turkmenistan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [61.21081709172573, 35.650072333309218], - [61.123070509694131, 36.491597194966239], - [60.377637973883864, 36.52738312432836], - [59.234761997316795, 37.412987982730336], - [58.436154412678192, 37.522309475243794], - [57.330433790928964, 38.029229437810933], - [56.619366082592805, 38.121394354803478], - [56.180374790273319, 37.935126654607423], - [55.511578403551894, 37.964117133123153], - [54.800303989486558, 37.392420762678178], - [53.921597934795543, 37.198918361961255], - [53.735511102112504, 37.906136176091685], - [53.880928582581831, 38.952093003895349], - [53.101027866432894, 39.290573635407121], - [53.357808058491216, 39.975286363274442], - [52.693972609269807, 40.033629055331964], - [52.91525109234361, 40.87652334244472], - [53.85813927594112, 40.631034450842165], - [54.736845330632136, 40.951014919593455], - [54.0083109881813, 41.551210842447404], - [53.721713494690576, 42.123191433270016], - [52.916749708880069, 41.868116563477322], - [52.81468875510361, 41.135370591794704], - [52.502459751196135, 41.783315538086356], - [52.94429324729164, 42.116034247397586], - [54.079417759014937, 42.324109402020817], - [54.755345493392625, 42.04397146256656], - [55.455251092353755, 41.259859117185826], - [55.968191359282898, 41.308641669269356], - [57.096391229079089, 41.32231008561056], - [56.93221520368779, 41.82602610937559], - [57.786529982337065, 42.170552883465511], - [58.629010857991453, 42.751551011723045], - [59.976422153569771, 42.223081976890199], - [60.083340691981654, 41.425146185871391], - [60.46595299667068, 41.22032664648254], - [61.547178989513547, 41.2663703476546], - [61.882714064384679, 41.084856879229392], - [62.374260288344992, 40.053886216790382], - [63.518014764261018, 39.363256537425627], - [64.170223016216752, 38.892406724598231], - [65.215998976507379, 38.402695013984292], - [66.546150343700205, 37.974684963526855], - [66.518606805288655, 37.362784328758785], - [66.217384881459324, 37.393790188133913], - [65.745630731066811, 37.661164048812061], - [65.588947788357828, 37.305216783185628], - [64.746105177677393, 37.111817735333297], - [64.546479119733888, 36.31207326918426], - [63.982895949158696, 36.007957465146596], - [63.193538445900337, 35.857165635718907], - [62.984662306576588, 35.404040839167614], - [62.230651483005879, 35.270663967422287], - [61.21081709172573, 35.650072333309218] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "East Timor", "name": "Timor-Leste", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [124.96868248911619, -8.892790215697081], - [125.086246372580248, -8.656887302284678], - [125.947072381698234, -8.432094821815033], - [126.64470421763852, -8.39824675866385], - [126.957243280139792, -8.273344821814396], - [127.335928175974615, -8.397316582882601], - [126.967991978056517, -8.668256117388891], - [125.925885044458568, -9.106007175333351], - [125.088520135601073, -9.393173109579292], - [125.070019972840583, -9.08998748132287], - [124.96868248911619, -8.892790215697081] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "Trinidad and Tobago", - "name": "Trinidad and Tobago", - "continent": "North America" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-61.68, 10.76], - [-61.105, 10.89], - [-60.895, 10.855], - [-60.935, 10.11], - [-61.77, 10.0], - [-61.95, 10.09], - [-61.66, 10.365], - [-61.68, 10.76] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Tunisia", "name": "Tunisia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.482139926805273, 30.307556057246181], - [9.055602654668148, 32.102691962201284], - [8.439102817426116, 32.506284898400814], - [8.430472853233367, 32.748337307255944], - [7.612641635782181, 33.344114895148955], - [7.524481642292242, 34.097376410451453], - [8.140981479534302, 34.655145982393783], - [8.376367628623766, 35.479876003555937], - [8.217824334352313, 36.433176988260271], - [8.420964389691674, 36.946427313783154], - [9.509993523810605, 37.349994411766531], - [10.210002475636315, 37.230001735984807], - [10.180650262094529, 36.724037787415071], - [11.028867221733348, 37.09210317641395], - [11.100025668999249, 36.899996039368908], - [10.600004510143092, 36.410000108377368], - [10.593286573945134, 35.947444362932806], - [10.939518670300686, 35.698984076473486], - [10.807847120821007, 34.833507188449182], - [10.149592726287123, 34.330773016897702], - [10.339658644256613, 33.785741685515312], - [10.856836378633684, 33.768740139291275], - [11.108500603895118, 33.293342800422188], - [11.488787469131008, 33.136995754523134], - [11.432253452203692, 32.368903103152867], - [10.944789666394453, 32.081814683555358], - [10.636901482799484, 31.761420803345747], - [9.950225050505081, 31.376069647745251], - [10.056575148161752, 30.961831366493595], - [9.97001712407285, 30.539324856075236], - [9.482139926805273, 30.307556057246181] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Turkey", "name": "Turkey", "continent": "Asia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [36.913127068842151, 41.335358384764291], - [38.347664829264502, 40.948586127275711], - [39.512606642420238, 41.102762763018561], - [40.373432651538245, 41.013672593747337], - [41.554084100110707, 41.535656236327604], - [42.619548781104548, 41.58317271581992], - [43.582745802592704, 41.09214325618256], - [43.752657911968491, 40.740200914058811], - [43.656436395040963, 40.253563951166157], - [44.400008579288759, 40.005000311842302], - [44.79398969908199, 39.713002631177027], - [44.109225294782355, 39.428136298168049], - [44.421402622257595, 38.281281236314513], - [44.225755649600522, 37.971584377589345], - [44.772699008977739, 37.170444647768441], - [44.293451775902852, 37.001514390606353], - [43.942258742047343, 37.256227525372928], - [42.77912560402185, 37.385263576805798], - [42.349591098811764, 37.229872544904104], - [41.212089471203015, 37.074352321921729], - [40.673259311695702, 37.091276353497356], - [39.522580193852512, 36.716053778626012], - [38.699891391765917, 36.712927354472313], - [38.167727492024156, 36.90121043552778], - [37.066761102045824, 36.623036200500614], - [36.739494256341366, 36.817520453431108], - [36.685389031731816, 36.259699205056499], - [36.417550083163086, 36.040616970355096], - [36.149762811026584, 35.821534735653664], - [35.782084995269848, 36.274995429014915], - [36.160821567537049, 36.650605577128367], - [35.550936313628334, 36.565442816711325], - [34.714553256984367, 36.795532131490909], - [34.026894972476455, 36.219960028623966], - [32.509158156064096, 36.107563788389193], - [31.69959516777956, 36.644275214172602], - [30.621624790171062, 36.677864895162308], - [30.391096225717114, 36.262980658506983], - [29.69997562024556, 36.144357408181001], - [28.732902866335387, 36.676831366516431], - [27.641186557737363, 36.658822129862749], - [27.048767937943289, 37.653360907536005], - [26.318218214633042, 38.208133246405382], - [26.804700148228726, 38.985760199533551], - [26.170785353304375, 39.463612168936457], - [27.280019972449388, 40.420013739578302], - [28.819977654747209, 40.460011298172212], - [29.240003696415574, 41.219990749672682], - [31.145933872204434, 41.087621568357058], - [32.347979363745786, 41.736264146484629], - [33.513282911927512, 42.018960069337304], - [35.167703891751863, 42.040224921225438], - [36.913127068842151, 41.335358384764291] - ] - ], - [ - [ - [27.192376743282406, 40.690565700842448], - [26.358009067497782, 40.151993923496477], - [26.043351271272535, 40.617753607743161], - [26.056942172965332, 40.824123440100735], - [26.294602085075692, 40.936261298174166], - [26.604195590936282, 41.562114569661013], - [26.117041863720825, 41.826904608724554], - [27.135739373490505, 42.141484890301307], - [27.996720411905407, 42.007358710287768], - [28.115524529744441, 41.622886054036279], - [28.988442824018779, 41.299934190428175], - [28.806438429486743, 41.05496206314853], - [27.619017368284112, 40.999823309893102], - [27.192376743282406, 40.690565700842448] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Taiwan", "name": "Taiwan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [121.777817824389899, 24.394273586519393], - [121.175632358892713, 22.790857245367164], - [120.747079705896198, 21.970571397382106], - [120.220083449383651, 22.814860948166732], - [120.106188592612369, 23.556262722258229], - [120.694679803552233, 24.53845083261373], - [121.49504438688875, 25.295458889257379], - [121.951243931161429, 24.997595933527034], - [121.777817824389899, 24.394273586519393] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "United Republic of Tanzania", - "name": "Tanzania", - "continent": "Africa" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.903711197104592, -0.95], - [34.07262, -1.05982], - [37.69869, -3.09699], - [37.7669, -3.67712], - [39.20222, -4.67677], - [38.74054, -5.90895], - [38.79977, -6.47566], - [39.44, -6.84], - [39.470000000000134, -7.1], - [39.19469, -7.7039], - [39.25203, -8.00781], - [39.18652, -8.48551], - [39.53574, -9.112369999999883], - [39.9496, -10.0984], - [40.31659, -10.317099999999867], - [39.521, -10.89688], - [38.427556593587767, -11.285202325081626], - [37.82764, -11.26879], - [37.47129, -11.56876], - [36.775150994622884, -11.59453744878078], - [36.514081658684397, -11.720938002166745], - [35.312397902169145, -11.439146416879165], - [34.559989047999451, -11.520020033415845], - [34.28, -10.16], - [33.940837724096518, -9.693673841980283], - [33.73972, -9.41715], - [32.759375441221373, -9.230599053589001], - [32.191864861791935, -8.930358981973255], - [31.556348097466628, -8.762048841998647], - [31.157751336950064, -8.594578747317312], - [30.74, -8.34], - [30.2, -7.08], - [29.62, -6.52], - [29.419992710088305, -5.939998874539297], - [29.519986606573063, -5.419978936386257], - [29.339997592900367, -4.499983412294113], - [29.753512404099858, -4.452389418153301], - [30.11632, -4.09012], - [30.50554, -3.56858], - [30.75224, -3.35931], - [30.74301, -3.03431], - [30.52766, -2.80762], - [30.46967, -2.41383], - [30.758308953583132, -2.287250257988375], - [30.816134881317844, -1.698914076345374], - [30.419104852019291, -1.134659112150416], - [30.769860000000101, -1.01455], - [31.86617, -1.02736], - [33.903711197104592, -0.95] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Uganda", "name": "Uganda", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.86617, -1.02736], - [30.769860000000101, -1.01455], - [30.419104852019291, -1.134659112150416], - [29.821518588996121, -1.443322442229771], - [29.579466180141019, -1.341313164885605], - [29.587837762172164, -0.587405694179381], - [29.8195, -0.2053], - [29.875778842902431, 0.597379868976361], - [30.086153598762785, 1.062312730306416], - [30.468507521290285, 1.583805446779706], - [30.852670118948133, 1.849396470543752], - [31.174149204235952, 2.204465236821306], - [30.77332, 2.339890000000139], - [30.83385, 3.50917], - [31.24556, 3.7819], - [31.88145, 3.55827], - [32.68642, 3.79232], - [33.39, 3.79], - [34.005, 4.249884947362147], - [34.47913, 3.5556], - [34.59607, 3.053740000000118], - [35.03599, 1.90584], - [34.6721, 1.17694], - [34.18, 0.515], - [33.893568969666994, 0.109813537861839], - [33.903711197104592, -0.95], - [31.86617, -1.02736] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Ukraine", "name": "Ukraine", "continent": "Europe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.78599816257158, 52.10167796488544], - [32.159412062312661, 52.061266994833204], - [32.412058139787625, 52.288694973349735], - [32.715760532366964, 52.238465481162038], - [33.7526998227357, 52.335074571331681], - [34.391730584457001, 51.768881740925778], - [34.141978387190385, 51.566413479206226], - [34.22481570815426, 51.255993150428942], - [35.022183058417873, 51.207572333371445], - [35.377923618315116, 50.773955390010343], - [35.35611616388794, 50.577197374059054], - [36.62616784032533, 50.225590928745127], - [37.393459506995065, 50.383953355503586], - [38.01063113785689, 49.915661526074622], - [38.59498823421341, 49.926461900423618], - [40.069058465339097, 49.601055406281688], - [40.080789015469342, 49.307429917999272], - [39.674663934087526, 48.783818467801872], - [39.895632358567575, 48.232405097031425], - [39.738277622238819, 47.898937079451983], - [38.770584751141186, 47.825608222029807], - [38.255112339029743, 47.546400458356807], - [38.223538038899413, 47.102189846375872], - [37.42513715998998, 47.022220567404197], - [36.759854770664383, 46.698700263040919], - [35.823684523264816, 46.645964463887054], - [34.962341749823871, 46.273196519549636], - [35.020787794745978, 45.65121898048465], - [35.51000857925316, 45.409993394546177], - [36.529997999830151, 45.46998973243705], - [36.334712762199146, 45.113215643893952], - [35.239999220528112, 44.939996242851599], - [33.882511020652878, 44.361478583344066], - [33.326420932760037, 44.564877020844875], - [33.546924269349446, 45.034770819674883], - [32.454174432105496, 45.327466132176063], - [32.630804477679128, 45.519185695978905], - [33.588162062318382, 45.851568508480227], - [33.298567335754704, 46.08059845639783], - [31.744140252415171, 46.333347886737378], - [31.675307244602401, 46.706245022155528], - [30.748748813609094, 46.583100084003995], - [30.37760867688888, 46.032410183285663], - [29.603289015427425, 45.293308010431119], - [29.149724969201646, 45.464925442072442], - [28.679779493939371, 45.30403087013169], - [28.233553501099035, 45.488283189468369], - [28.48526940279276, 45.596907050145887], - [28.659987420371575, 45.939986884131628], - [28.933717482221621, 46.258830471372491], - [28.862972446414055, 46.437889309263824], - [29.072106967899288, 46.517677720722482], - [29.170653924279879, 46.379262396828693], - [29.759971958136383, 46.349987697935354], - [30.024658644335364, 46.423936672545032], - [29.838210076626289, 46.525325832701675], - [29.908851759569295, 46.67436066343145], - [29.559674106573105, 46.928582872091312], - [29.415135125452732, 47.346645209332571], - [29.050867954227321, 47.510226955752493], - [29.122698195113024, 47.849095160506458], - [28.670891147585163, 48.118148505234089], - [28.259546746541837, 48.155562242213406], - [27.52253746919515, 48.467119452501102], - [26.857823520624798, 48.368210761094488], - [26.619336785597788, 48.220726223333457], - [26.197450392366925, 48.220881252630342], - [25.945941196402394, 47.987148749374207], - [25.207743361112986, 47.891056423527459], - [24.866317172960571, 47.737525743188307], - [24.402056105250374, 47.981877753280422], - [23.760958286237404, 47.985598456405448], - [23.142236362406798, 48.096341050806942], - [22.710531447040488, 47.882193915389394], - [22.640819939878746, 48.150239569687351], - [22.085608351334848, 48.422264309271782], - [22.280841912533553, 48.825392157580659], - [22.558137648211751, 49.08573802346713], - [22.776418898212619, 49.027395331409608], - [22.518450148211596, 49.476773586619736], - [23.426508416444388, 50.308505764357449], - [23.922757195743259, 50.424881089878738], - [24.029985792748899, 50.705406602575174], - [23.52707075368437, 51.578454087930233], - [24.005077752384206, 51.617443956094448], - [24.553106316839511, 51.888461005249177], - [25.327787713327005, 51.910656032918538], - [26.337958611768549, 51.832288723347915], - [27.454066196408426, 51.59230337178446], - [28.241615024536564, 51.572227077839059], - [28.617612745892242, 51.427713934934836], - [28.992835320763522, 51.602044379271462], - [29.254938185347921, 51.368234361366881], - [30.157363722460889, 51.416138414101454], - [30.55511722181145, 51.319503485715643], - [30.619454380014837, 51.822806098022362], - [30.927549269338975, 52.042353420614383], - [31.78599816257158, 52.10167796488544] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Uruguay", "name": "Uruguay", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.625133429582945, -30.216294854454258], - [-56.976025763564721, -30.109686374636119], - [-55.97324459494093, -30.883075860316296], - [-55.601510179249331, -30.853878676071385], - [-54.572451544805105, -31.494511407193745], - [-53.787951626182185, -32.047242526987617], - [-53.209588995971529, -32.727666110974717], - [-53.650543992718084, -33.202004082981823], - [-53.373661668498229, -33.768377780900757], - [-53.806425950726521, -34.396814874002224], - [-54.935866054897716, -34.952646579733617], - [-55.674089728403274, -34.752658786764066], - [-56.215297003796053, -34.85983570733741], - [-57.139685024633096, -34.430456231424238], - [-57.817860683815489, -34.462547295877492], - [-58.427074144104381, -33.909454441057569], - [-58.349611172098854, -33.2631889788154], - [-58.132647671121433, -33.040566908502008], - [-58.142440355040748, -32.044503676076147], - [-57.874937303281875, -31.016556084926201], - [-57.625133429582945, -30.216294854454258] - ] - ] - } - }, - { - "type": "Feature", - "properties": { - "admin": "United States of America", - "name": "United States", - "continent": "North America" - }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-155.54211, 19.08348], - [-155.68817, 18.91619], - [-155.93665, 19.05939], - [-155.90806, 19.33888], - [-156.07347, 19.70294], - [-156.02368, 19.81422], - [-155.85008, 19.97729], - [-155.91907, 20.17395], - [-155.86108, 20.26721], - [-155.78505, 20.2487], - [-155.40214, 20.07975], - [-155.22452, 19.99302], - [-155.06226, 19.8591], - [-154.80741, 19.50871], - [-154.83147, 19.45328], - [-155.222169999999892, 19.23972], - [-155.54211, 19.08348] - ] - ], - [ - [ - [-156.07926, 20.64397], - [-156.41445, 20.57241], - [-156.58673, 20.783], - [-156.70167, 20.8643], - [-156.71055, 20.92676], - [-156.61258, 21.01249], - [-156.25711, 20.91745], - [-155.99566, 20.76404], - [-156.07926, 20.64397] - ] - ], - [ - [ - [-156.75824, 21.17684], - [-156.78933, 21.06873], - [-157.32521, 21.09777], - [-157.25027, 21.21958], - [-156.75824, 21.17684] - ] - ], - [ - [ - [-157.65283, 21.32217], - [-157.70703, 21.26442], - [-157.7786, 21.27729], - [-158.12667, 21.31244], - [-158.2538, 21.53919], - [-158.29265, 21.57912], - [-158.0252, 21.71696], - [-157.94161, 21.65272], - [-157.65283, 21.32217] - ] - ], - [ - [ - [-159.34512, 21.982], - [-159.46372, 21.88299], - [-159.80051, 22.06533], - [-159.74877, 22.1382], - [-159.5962, 22.23618], - [-159.36569, 22.21494], - [-159.34512, 21.982] - ] - ], - [ - [ - [-94.81758, 49.38905], - [-94.639999999999858, 48.840000000000103], - [-94.32914, 48.67074], - [-93.63087, 48.60926], - [-92.61, 48.45], - [-91.64, 48.14], - [-90.829999999999856, 48.27], - [-89.6, 48.01], - [-89.272917446636654, 48.019808254582834], - [-88.378114183286513, 48.302917588893806], - [-87.439792623300207, 47.94], - [-86.461990831228135, 47.553338019392037], - [-85.652363247403215, 47.220218817730498], - [-84.876079881514855, 46.900083319682366], - [-84.779238247399817, 46.637101955749117], - [-84.54374874544564, 46.538684190449224], - [-84.6049, 46.4396], - [-84.3367, 46.408770000000104], - [-84.142119513673279, 46.512225857115723], - [-84.091851264161463, 46.275418606138253], - [-83.890765347005654, 46.116926988299149], - [-83.616130947590491, 46.116926988299149], - [-83.469550747394621, 45.994686387712584], - [-83.592850714843067, 45.816893622412543], - [-82.550924648758169, 45.347516587905446], - [-82.337763125431053, 44.44], - [-82.137642381503952, 43.571087551439987], - [-82.43, 42.98], - [-82.899999999999878, 42.430000000000135], - [-83.119999999999877, 42.08], - [-83.141999681312555, 41.975681057292995], - [-83.029810146806909, 41.832795722005997], - [-82.690089280920162, 41.675105088867319], - [-82.439277716791608, 41.675105088867319], - [-81.277746548167059, 42.209025987306845], - [-80.247447679347843, 42.36619985612267], - [-78.939362148743683, 42.863611355148116], - [-78.92, 42.965], - [-79.009999999999863, 43.27], - [-79.171673550111862, 43.466339423184301], - [-78.720279914042365, 43.625089423184953], - [-77.737885097957601, 43.629055589363382], - [-76.820034145805565, 43.628784288093748], - [-76.5, 44.018458893758599], - [-76.375, 44.09631], - [-75.31821, 44.81645000000016], - [-74.867, 45.00048000000011], - [-73.347829999999874, 45.00738], - [-71.505059999999858, 45.0082], - [-71.405, 45.255000000000123], - [-71.08482, 45.305240000000154], - [-70.659999999999783, 45.46], - [-70.305, 45.915], - [-69.99997, 46.69307], - [-69.237216, 47.447781], - [-68.905, 47.185], - [-68.23444, 47.35486], - [-67.79046, 47.06636], - [-67.79134, 45.702810000000134], - [-67.13741, 45.13753], - [-66.96466, 44.809700000000149], - [-68.03252, 44.3252], - [-69.059999999999874, 43.98], - [-70.116169999999897, 43.684050000000141], - [-70.645475633410967, 43.090238348964043], - [-70.81489, 42.8653], - [-70.825, 42.335], - [-70.494999999999891, 41.805], - [-70.08, 41.78], - [-70.185, 42.145], - [-69.88497, 41.922830000000111], - [-69.96503, 41.637170000000161], - [-70.64, 41.475], - [-71.12039, 41.494450000000164], - [-71.859999999999829, 41.32], - [-72.295, 41.27], - [-72.87643, 41.22065], - [-73.71, 40.931102351654481], - [-72.24126, 41.119480000000138], - [-71.944999999999808, 40.93], - [-73.345, 40.63], - [-73.982, 40.628], - [-73.952325, 40.75075], - [-74.25671, 40.47351], - [-73.96244, 40.42763], - [-74.17838, 39.70926], - [-74.90604, 38.93954], - [-74.98041, 39.1964], - [-75.20002, 39.24845], - [-75.52805, 39.4985], - [-75.32, 38.96], - [-75.071834764789784, 38.782032230179276], - [-75.05673, 38.404120000000106], - [-75.37747, 38.01551], - [-75.94023, 37.21689], - [-76.03127, 37.2566], - [-75.722049999999783, 37.937050000000106], - [-76.23287, 38.319215], - [-76.35, 39.15], - [-76.542725, 38.717615], - [-76.32933, 38.08326], - [-76.98999793161353, 38.239991766913384], - [-76.301619999999886, 37.917945], - [-76.25874, 36.9664000000001], - [-75.9718, 36.89726], - [-75.868039999999809, 36.55125], - [-75.72749, 35.550740000000125], - [-76.36318, 34.808540000000129], - [-77.39763499999988, 34.51201], - [-78.05496, 33.92547], - [-78.554349999999815, 33.861330000000116], - [-79.06067, 33.49395], - [-79.20357, 33.15839], - [-80.301325, 32.509355], - [-80.86498, 32.0333], - [-81.33629, 31.44049], - [-81.49042, 30.729990000000122], - [-81.31371, 30.03552], - [-80.98, 29.18000000000011], - [-80.53558499999987, 28.47213], - [-80.529999999999774, 28.04], - [-80.056539284977532, 26.88000000000013], - [-80.088015, 26.205765], - [-80.131559999999837, 25.816775], - [-80.38103, 25.20616], - [-80.679999999999879, 25.08], - [-81.17213, 25.201260000000126], - [-81.33, 25.64], - [-81.709999999999795, 25.87], - [-82.239999999999895, 26.730000000000125], - [-82.70515, 27.49504], - [-82.85526, 27.88624], - [-82.65, 28.550000000000146], - [-82.929999999999865, 29.100000000000129], - [-83.70959, 29.93656], - [-84.1, 30.090000000000114], - [-85.10882, 29.63615], - [-85.28784, 29.686120000000127], - [-85.7731, 30.152610000000116], - [-86.399999999999878, 30.400000000000112], - [-87.530359999999831, 30.27433], - [-88.41782, 30.3849], - [-89.180489999999836, 30.31598], - [-89.593831178419748, 30.159994004836843], - [-89.413735, 29.89419], - [-89.43, 29.48864], - [-89.21767, 29.29108], - [-89.40823, 29.15961], - [-89.77928, 29.307140000000135], - [-90.15463, 29.11743], - [-90.880224999999896, 29.148535000000116], - [-91.626784999999842, 29.677000000000127], - [-92.49906, 29.5523], - [-93.22637, 29.78375], - [-93.84842, 29.71363], - [-94.69, 29.480000000000125], - [-95.60026, 28.73863], - [-96.59404, 28.30748], - [-97.139999999999802, 27.83], - [-97.37, 27.38], - [-97.379999999999853, 26.69], - [-97.33, 26.210000000000115], - [-97.139999999999802, 25.87], - [-97.529999999999859, 25.84], - [-98.239999999999895, 26.060000000000109], - [-99.019999999999854, 26.37], - [-99.3, 26.84], - [-99.52, 27.54], - [-100.11, 28.11000000000012], - [-100.45584, 28.696120000000118], - [-100.957599999999886, 29.380710000000125], - [-101.6624, 29.779300000000113], - [-102.48, 29.76], - [-103.11, 28.97], - [-103.94, 29.27], - [-104.456969999999814, 29.57196], - [-104.705749999999895, 30.12173], - [-105.03737, 30.64402], - [-105.63159, 31.083830000000113], - [-106.1429, 31.39995], - [-106.507589999999794, 31.75452], - [-108.24, 31.754853718166398], - [-108.24194, 31.34222], - [-109.035, 31.341940000000161], - [-111.02361, 31.33472], - [-113.30498, 32.03914], - [-114.815, 32.52528], - [-114.721389999999829, 32.72083], - [-115.991349999999869, 32.61239000000014], - [-117.127759999999753, 32.53534], - [-117.295937691273863, 33.04622461520389], - [-117.944, 33.621236431201389], - [-118.410602275897475, 33.740909223124497], - [-118.519894822799685, 34.027781577575745], - [-119.081, 34.078], - [-119.438840642016658, 34.348477178284291], - [-120.36778, 34.44711], - [-120.62286, 34.60855], - [-120.74433, 35.156860000000101], - [-121.714569999999853, 36.16153], - [-122.54747, 37.551760000000101], - [-122.51201, 37.783390000000132], - [-122.95319, 38.113710000000104], - [-123.7272, 38.951660000000111], - [-123.865169999999878, 39.766990000000128], - [-124.39807, 40.3132], - [-124.17886, 41.142020000000109], - [-124.2137, 41.999640000000134], - [-124.532839999999894, 42.76599], - [-124.14214, 43.70838], - [-124.020535, 44.615895], - [-123.898929999999893, 45.52341], - [-124.079635, 46.86475], - [-124.395669999999896, 47.72017], - [-124.687210083007812, 48.184432983398537], - [-124.566101074218736, 48.379714965820384], - [-123.12, 48.04], - [-122.587359999999876, 47.096], - [-122.34, 47.36], - [-122.5, 48.18], - [-122.84, 49.0], - [-120.0, 49.0], - [-117.03121, 49.0], - [-116.04818, 49.0], - [-112.999999999999872, 49.0], - [-110.049999999999812, 49.0], - [-107.049999999999898, 49.0], - [-104.04826, 48.99986], - [-100.65, 49.0], - [-97.228720000004699, 49.0007], - [-95.159069509171943, 49.0], - [-95.15609, 49.38425], - [-94.81758, 49.38905] - ] - ], - [ - [ - [-153.006314053336837, 57.115842190165878], - [-154.0050902984581, 56.734676825581047], - [-154.516402757770067, 56.992748928446687], - [-154.670992804971092, 57.461195787172493], - [-153.762779507441451, 57.816574612043773], - [-153.228729417921073, 57.968968410872421], - [-152.564790615835108, 57.901427313866961], - [-152.141147223906273, 57.591058661521977], - [-153.006314053336837, 57.115842190165878] - ] - ], - [ - [ - [-165.579164191733554, 59.909986884187539], - [-166.192770148767238, 59.754440822988961], - [-166.848337368821944, 59.941406155020942], - [-167.455277066090048, 60.213069159579376], - [-166.467792121424566, 60.384169826897775], - [-165.674429694663644, 60.293606879306232], - [-165.579164191733554, 59.909986884187539] - ] - ], - [ - [ - [-171.731656867539357, 63.782515367275906], - [-171.114433560245175, 63.592191067144981], - [-170.491112433940657, 63.694975490973505], - [-169.682505459653555, 63.431115627691142], - [-168.689439460300662, 63.297506212000584], - [-168.77194088445458, 63.188598130945437], - [-169.529439867204985, 62.976931464277882], - [-170.290556200215917, 63.194437567794452], - [-170.671385667990847, 63.375821845138965], - [-171.553063117538642, 63.317789211675077], - [-171.791110602891166, 63.40584585230048], - [-171.731656867539357, 63.782515367275906] - ] - ], - [ - [ - [-155.067790290324211, 71.147776394323685], - [-154.344165208941206, 70.696408596470192], - [-153.900006273392563, 70.889988511835682], - [-152.210006069935275, 70.829992173944831], - [-152.270002407826127, 70.60000621202984], - [-150.739992438744508, 70.430016588005699], - [-149.720003018167489, 70.530010484490433], - [-147.613361579357047, 70.214034939241785], - [-145.689989800225248, 70.120009670686741], - [-144.920010959076393, 69.989991767040479], - [-143.58944618042517, 70.152514146598307], - [-142.072510348713365, 69.851938178172631], - [-140.985987521560702, 69.711998399526365], - [-140.985988329004869, 69.711998399526365], - [-140.992498752029377, 66.000028591568665], - [-140.997769748123119, 60.306396796298593], - [-140.012997816153074, 60.276837877027575], - [-139.03900042031583, 60.000007229240012], - [-138.340889999999888, 59.562110000000146], - [-137.4525, 58.905000000000101], - [-136.47972, 59.46389], - [-135.47583, 59.78778], - [-134.945, 59.270560000000117], - [-134.27111, 58.86111], - [-133.355548882207188, 58.410285142645151], - [-132.73042, 57.692890000000105], - [-131.707809999999853, 56.55212], - [-130.00778, 55.91583], - [-129.979994263358265, 55.284997870497207], - [-130.536110189467223, 54.802753404349389], - [-131.08581823797212, 55.178906155002025], - [-131.967211467142278, 55.497775580459049], - [-132.250010742859445, 56.369996242897443], - [-133.539181084356386, 57.178887437562125], - [-134.07806292029602, 58.123067531966889], - [-135.038211032279037, 58.187714748763931], - [-136.628062309954629, 58.212209377670447], - [-137.800006279686016, 58.499995429103777], - [-139.867787041412981, 59.537761542389134], - [-140.825273817133024, 59.72751740176507], - [-142.574443535564427, 60.084446519604981], - [-143.958880994879848, 59.99918040632339], - [-145.925556816827822, 60.458609727614274], - [-147.114373949146625, 60.884656073644628], - [-148.224306200127643, 60.672989406977152], - [-148.018065558850736, 59.978328965893631], - [-148.570822516860858, 59.914172675203297], - [-149.727857835875824, 59.705658270905545], - [-150.608243374616421, 59.368211168039487], - [-151.716392788683294, 59.155821031319974], - [-151.859433153267105, 59.74498403587959], - [-151.40971900124714, 60.725802720779392], - [-150.346941494732505, 61.033587551509854], - [-150.621110806256951, 61.284424953854447], - [-151.895839199816834, 60.727197984451273], - [-152.578329841095581, 60.061657212964285], - [-154.019172126257558, 59.350279446034264], - [-153.287511359653166, 58.864727688219787], - [-154.232492438758442, 58.146373602930531], - [-155.307491421510207, 57.727794501366319], - [-156.308334723923082, 57.422774359763636], - [-156.556097378546298, 56.979984849670636], - [-158.117216559867728, 56.463608099994175], - [-158.433321296197136, 55.994153550838533], - [-159.603327399717415, 55.566686102920116], - [-160.289719611634183, 55.643580634170561], - [-161.223047655257773, 55.364734605523481], - [-162.23776607974105, 55.024186916720097], - [-163.069446581046378, 54.689737046927171], - [-164.785569221027174, 54.40417308208216], - [-164.942226325520011, 54.572224839895327], - [-163.84833960676562, 55.039431464246107], - [-162.870001390615897, 55.348043117893198], - [-161.804174974596009, 55.894986477270429], - [-160.563604702781134, 56.008054511125025], - [-160.070559862284483, 56.418055324928744], - [-158.684442918919416, 57.016675116597852], - [-158.461097378553944, 57.216921291728866], - [-157.722770352183858, 57.570000515363056], - [-157.550274421193564, 58.328326321030218], - [-157.041674974576949, 58.918884589261708], - [-158.194731208305427, 58.615802313869828], - [-158.517217984023034, 58.787781480537305], - [-159.058606126928709, 58.424186102931671], - [-159.711667040017318, 58.931390285876333], - [-159.981288825500144, 58.572549140041623], - [-160.355271165996498, 59.071123358793628], - [-161.355003425115001, 58.670837714260742], - [-161.968893602526293, 58.671664537177371], - [-162.054986538724648, 59.266925360747436], - [-161.874170702135331, 59.633621324290587], - [-162.518059048492034, 59.989723619213905], - [-163.818341437820123, 59.798055731843377], - [-164.662217577146407, 60.267484442782639], - [-165.346387702474772, 60.507495632562396], - [-165.350831875651835, 61.073895168697497], - [-166.121379157555907, 61.500019029376212], - [-165.734451870770471, 62.074996853271792], - [-164.919178636717788, 62.633076483807919], - [-164.562507901039339, 63.146378485763044], - [-163.753332485996964, 63.219448961023758], - [-163.067224494457832, 63.05945872664801], - [-162.260555386381697, 63.541935736741159], - [-161.534449836248569, 63.455816962326757], - [-160.772506680321101, 63.76610810002326], - [-160.958335130842528, 64.222798570402759], - [-161.518068407212184, 64.402787584075313], - [-160.777777676414729, 64.788603827566405], - [-161.391926235987597, 64.777235012462327], - [-162.453050096668818, 64.559444688568206], - [-162.757786017894034, 64.338605455168803], - [-163.54639421288428, 64.559160468190484], - [-164.960829841145141, 64.446945095468848], - [-166.425288255864473, 64.686672064870706], - [-166.845004238939026, 65.088895575614529], - [-168.110560065767146, 65.669997056736733], - [-166.70527116602193, 66.088317776139391], - [-164.474709642575448, 66.576660061297488], - [-163.652511766595637, 66.576660061297488], - [-163.788601651036117, 66.077207343196662], - [-161.677774421210131, 66.116119696712403], - [-162.489714525379981, 66.735565090595102], - [-163.719716966791083, 67.116394558370089], - [-164.430991380856511, 67.616338202577779], - [-165.390286831706703, 68.042772121850234], - [-166.764440680995989, 68.35887685817967], - [-166.204707404626561, 68.883030910916162], - [-164.430810513343431, 68.915535386827727], - [-163.168613654614489, 69.371114813912882], - [-162.930566169261965, 69.858061835399255], - [-161.908897264635499, 70.333329983187625], - [-160.93479651593367, 70.447689927849567], - [-159.039175788387126, 70.891642157668926], - [-158.119722866833939, 70.824721177851032], - [-156.580824551398024, 71.357763576941736], - [-155.067790290324211, 71.147776394323685] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Uzbekistan", "name": "Uzbekistan", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [66.518606805288655, 37.362784328758785], - [66.546150343700205, 37.974684963526855], - [65.215998976507379, 38.402695013984292], - [64.170223016216752, 38.892406724598231], - [63.518014764261018, 39.363256537425627], - [62.374260288344992, 40.053886216790382], - [61.882714064384679, 41.084856879229392], - [61.547178989513547, 41.2663703476546], - [60.46595299667068, 41.22032664648254], - [60.083340691981654, 41.425146185871391], - [59.976422153569771, 42.223081976890199], - [58.629010857991453, 42.751551011723045], - [57.786529982337065, 42.170552883465511], - [56.93221520368779, 41.82602610937559], - [57.096391229079089, 41.32231008561056], - [55.968191359282898, 41.308641669269356], - [55.928917270741081, 44.995858466159099], - [58.503127068928457, 45.586804307632818], - [58.689989048095882, 45.500013739598621], - [60.239971958258316, 44.784036770194717], - [61.05831994003244, 44.405816962250505], - [62.013300408786236, 43.504476630215642], - [63.185786981056559, 43.650074978197999], - [64.900824415959264, 43.728080552742576], - [66.098012322865074, 42.997660020513088], - [66.023391554635609, 41.994646307943974], - [66.510648634715707, 41.987644151368436], - [66.714047072216502, 41.168443508461493], - [67.985855747351806, 41.135990708982213], - [68.259895867795606, 40.662324530594894], - [68.632482944620008, 40.668680731766798], - [69.070027296835306, 41.384244289712363], - [70.388964878220776, 42.081307684897439], - [70.96231489449913, 42.266154283205481], - [71.259247674448218, 42.167710679689456], - [70.420022414028196, 41.519998277343134], - [71.157858514291576, 41.143587144529107], - [71.870114780570447, 41.392900092121259], - [73.055417108049156, 40.86603302668945], - [71.774875115856545, 40.145844428053763], - [71.014198032520156, 40.244365546218226], - [70.601406691372674, 40.218527330072284], - [70.458159621059608, 40.49649485937028], - [70.666622348925031, 40.960213324541407], - [69.329494663372813, 40.727824408524839], - [69.011632928345477, 40.086158148756653], - [68.536416456989414, 39.533452867178923], - [67.701428664017342, 39.580478420564518], - [67.442219679641298, 39.140143541005479], - [68.176025018185911, 38.901553453113898], - [68.392032505165943, 38.157025254868728], - [67.829999627559502, 37.144994004864678], - [67.075782098259609, 37.35614390720928], - [66.518606805288655, 37.362784328758785] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Venezuela", "name": "Venezuela", "continent": "South America" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-71.331583624950284, 11.776284084515805], - [-71.36000566271079, 11.53999359786121], - [-71.947049933546495, 11.423282375530018], - [-71.620868292920164, 10.969459947142791], - [-71.633063930941063, 10.446494452349027], - [-72.074173956984495, 9.865651353388369], - [-71.695644090446521, 9.072263088411246], - [-71.26455929226772, 9.137194525585981], - [-71.039999355743376, 9.859992784052407], - [-71.350083787710773, 10.211935126176213], - [-71.400623338492224, 10.968969021036013], - [-70.155298834906503, 11.375481675660039], - [-70.293843349881016, 11.846822414594211], - [-69.943244594996813, 12.162307033736095], - [-69.584300096297454, 11.459610907431211], - [-68.882999233664435, 11.44338450769156], - [-68.233271450458716, 10.885744126829945], - [-68.194126552997616, 10.554653225135921], - [-67.296248541926317, 10.545868231646306], - [-66.227864142507983, 10.648626817258684], - [-65.655237596281737, 10.20079885501732], - [-64.890452236578156, 10.077214667191296], - [-64.329478725833724, 10.389598700395679], - [-64.318006557864933, 10.641417954953978], - [-63.079322475828725, 10.701724351438598], - [-61.880946010980182, 10.7156253117251], - [-62.730118984616396, 10.420268662960904], - [-62.388511928950969, 9.948204453974636], - [-61.588767462801918, 9.873066921422263], - [-60.830596686431711, 9.38133982994894], - [-60.671252407459718, 8.580174261911877], - [-60.150095587796166, 8.602756862823425], - [-59.758284878159181, 8.367034816924045], - [-60.550587938058186, 7.779602972846178], - [-60.637972785063752, 7.414999904810853], - [-60.295668097562377, 7.043911444522918], - [-60.543999192940966, 6.856584377464881], - [-61.159336310456467, 6.696077378766317], - [-61.139415045807937, 6.234296779806142], - [-61.410302903881941, 5.959068101419616], - [-60.733574184803707, 5.2002772078619], - [-60.601179165271922, 4.918098049332129], - [-60.966893276601517, 4.536467596856638], - [-62.085429653559125, 4.162123521334308], - [-62.804533047116692, 4.006965033377951], - [-63.093197597899092, 3.770571193858784], - [-63.888342861574145, 4.020530096854571], - [-64.628659430587533, 4.14848094320925], - [-64.816064012294007, 4.056445217297422], - [-64.368494432214092, 3.797210394705246], - [-64.408827887617903, 3.126786200366623], - [-64.269999152265783, 2.497005520025566], - [-63.422867397705105, 2.411067613124174], - [-63.368788011311644, 2.200899562993129], - [-64.083085496666072, 1.91636912679408], - [-64.199305792890499, 1.49285492594602], - [-64.611011928959854, 1.328730576987041], - [-65.354713304288353, 1.0952822941085], - [-65.548267381437554, 0.78925446207603], - [-66.325765143484944, 0.724452215982012], - [-66.876325853122566, 1.253360500489336], - [-67.181294318293041, 2.250638129074062], - [-67.447092047786299, 2.600280869960869], - [-67.809938117123693, 2.820655015469569], - [-67.303173183853417, 3.31845408773718], - [-67.33756384954367, 3.542342230641721], - [-67.621835903581271, 3.839481716319994], - [-67.823012254493534, 4.503937282728898], - [-67.744696621355203, 5.221128648291667], - [-67.521531948502741, 5.556870428891968], - [-67.34143958196556, 6.095468044454021], - [-67.695087246355001, 6.267318020040645], - [-68.265052456318216, 6.153268133972473], - [-68.985318569602327, 6.206804917826856], - [-69.389479946557103, 6.099860541198835], - [-70.093312954372408, 6.960376491723109], - [-70.674233567981503, 7.087784735538717], - [-71.960175747348629, 6.991614895043538], - [-72.19835242378187, 7.340430813013682], - [-72.444487270788059, 7.42378489830048], - [-72.479678921178831, 7.632506008327352], - [-72.360900641555958, 8.002638454617893], - [-72.439862230097944, 8.405275376820027], - [-72.660494757768092, 8.62528778730268], - [-72.788729824500379, 9.085027167187331], - [-73.304951544880026, 9.151999823437604], - [-73.027604132769554, 9.736770331252441], - [-72.905286017534692, 10.45034434655477], - [-72.614657762325194, 10.821975409381777], - [-72.227575446242923, 11.108702093953237], - [-71.973921678338272, 11.608671576377116], - [-71.331583624950284, 11.776284084515805] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Vietnam", "name": "Vietnam", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [108.050180291782908, 21.552379869060111], - [106.715067987090066, 20.696850694252014], - [105.881682163519002, 19.752050482659694], - [105.662005649846279, 19.058165188060567], - [106.426816847765991, 18.004120998603224], - [107.36195356651973, 16.697456569887049], - [108.269495070429599, 16.079742336486145], - [108.877106561317447, 15.276690578670436], - [109.335269810017209, 13.42602834721772], - [109.200135939573954, 11.666859239137761], - [108.366129998815424, 11.00832062422627], - [107.22092858279521, 10.36448395430183], - [106.4051127462034, 9.530839748569317], - [105.158263787865081, 8.599759629750492], - [104.795185174582372, 9.2410383162765], - [105.076201613385592, 9.918490505406806], - [104.334334751403446, 10.486543687375228], - [105.199914992292321, 10.889309800658094], - [106.249670037869436, 10.961811835163585], - [105.810523716253101, 11.567614650921225], - [107.491403029410861, 12.337205918827944], - [107.614547967562402, 13.535530707244202], - [107.382727492301058, 14.202440904186968], - [107.564525181103875, 15.202173163305554], - [107.312705926545576, 15.908538316303177], - [106.55600792849566, 16.604283962464802], - [105.925762160264, 17.485315456608955], - [105.094598423281496, 18.666974595611073], - [103.896532017026701, 19.265180975821799], - [104.183387892678908, 19.624668077060214], - [104.822573683697073, 19.886641750563879], - [104.435000441508024, 20.758733221921528], - [103.203861118586431, 20.766562201413745], - [102.754896274834636, 21.675137233969462], - [102.170435825613552, 22.464753119389297], - [102.706992222100084, 22.708795070887668], - [103.504514601660546, 22.703756618739202], - [104.476858351664447, 22.819150092046961], - [105.329209425886603, 23.352063300056908], - [105.811247186305209, 22.976892401617899], - [106.725403273548451, 22.794267889898414], - [106.567273390735295, 22.218204860924768], - [107.043420037872608, 21.811898912029907], - [108.050180291782908, 21.552379869060111] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Vanuatu", "name": "Vanuatu", "continent": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [167.844876743845077, -16.466333103097153], - [167.515181105822847, -16.597849623279966], - [167.180007765977791, -16.159995212470957], - [167.2168013857696, -15.891846205308449], - [167.844876743845077, -16.466333103097153] - ] - ], - [ - [ - [167.107712437201485, -14.933920179913951], - [167.2700281110302, -15.74002084723487], - [167.001207310247935, -15.614602146062492], - [166.79315799384085, -15.668810723536719], - [166.649859247095549, -15.392703545801192], - [166.629136997746429, -14.6264970842096], - [167.107712437201485, -14.933920179913951] - ] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Yemen", "name": "Yemen", "continent": "Asia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [53.108572625547502, 16.651051133688949], - [52.385205926325874, 16.38241120041965], - [52.191729363825075, 15.938433132384018], - [52.168164910699986, 15.597420355689945], - [51.172515089732471, 15.175249742081489], - [49.574576450403136, 14.708766587782746], - [48.679230584514151, 14.003202419485657], - [48.238947381387412, 13.948089504446369], - [47.938914015500771, 14.007233181204423], - [47.354453566279702, 13.592219753468379], - [46.71707645039173, 13.399699204965016], - [45.877592807810252, 13.347764390511681], - [45.625050083199874, 13.290946153206759], - [45.406458774605241, 13.02690542241143], - [45.144355910020849, 12.953938300015306], - [44.9895333188744, 12.699586900274708], - [44.494576450382844, 12.721652736863344], - [44.175112745954486, 12.585950425664873], - [43.48295861183712, 12.63680003504008], - [43.222871128112118, 13.220950425667422], - [43.251448195169516, 13.767583726450848], - [43.087943963398047, 14.062630316621306], - [42.892245314308717, 14.802249253798745], - [42.604872674333606, 15.213335272680592], - [42.805015496600042, 15.261962795467252], - [42.702437778500652, 15.718885809791995], - [42.823670688657408, 15.911742255105263], - [42.779332309750963, 16.34789134364868], - [43.218375278502734, 16.666889960186406], - [43.115797560403351, 17.088440456607369], - [43.380794305196098, 17.579986680567668], - [43.791518589051904, 17.319976711491105], - [44.062613152855072, 17.410358791569589], - [45.216651238797184, 17.43332896572333], - [45.399999220568752, 17.333335069238554], - [46.366658563020529, 17.233315334537632], - [46.749994337761642, 17.283338120996174], - [47.000004917189749, 16.949999294497438], - [47.466694777217626, 17.116681626854877], - [48.183343540241324, 18.166669216377311], - [49.116671583864857, 18.616667588774941], - [52.000009800022227, 19.000003363516054], - [52.782184279192037, 17.349742336491229], - [53.108572625547502, 16.651051133688949] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "South Africa", "name": "South Africa", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.521001417778869, -29.257386976846245], - [31.325561150850994, -29.401977634398907], - [30.901762729625336, -29.909956963828034], - [30.622813348113816, -30.423775730106122], - [30.055716180142774, -31.140269463832951], - [28.925552605919535, -32.172041110972494], - [28.219755893677092, -32.771952813448848], - [27.464608188595967, -33.226963799778794], - [26.419452345492818, -33.614950453426175], - [25.909664340933482, -33.667040297176392], - [25.78062828950069, -33.944646091448334], - [25.172861769315965, -33.796851495093577], - [24.67785322439212, -33.987175795224537], - [23.594043409934635, -33.794474379208147], - [22.988188917744729, -33.916430759416976], - [22.574157342222232, -33.864082533505304], - [21.542799106541022, -34.258838799782922], - [20.689052768646999, -34.417175388325226], - [20.071261020597628, -34.795136814107984], - [19.616405063564567, -34.819166355123706], - [19.193278435958714, -34.462598972309777], - [18.855314568769867, -34.444305515278458], - [18.424643182049376, -33.997872816708963], - [18.377410922934612, -34.13652068454806], - [18.244499139079917, -33.867751560198023], - [18.250080193767442, -33.281430759414434], - [17.925190463948436, -32.61129078545342], - [18.247909783611185, -32.429131361624563], - [18.221761508871477, -31.661632989225662], - [17.566917758868861, -30.72572112398754], - [17.0644161312627, -29.878641045859158], - [17.06291751472622, -29.875953871379977], - [16.344976840895239, -28.576705010697697], - [16.824017368240899, -28.082161553664466], - [17.218928663815401, -28.355943291946804], - [17.387497185951499, -28.783514092729774], - [17.836151971109526, -28.856377862261311], - [18.464899122804745, -29.045461928017271], - [19.002127312911082, -28.972443129188857], - [19.89473432788861, -28.461104831660769], - [19.895767856534427, -24.767790215760588], - [20.165725538827186, -24.917961928000768], - [20.758609246511831, -25.868136488551446], - [20.666470167735437, -26.477453301704916], - [20.889609002371731, -26.828542982695907], - [21.60589603036939, -26.726533705351748], - [22.105968865657864, -26.28025603607913], - [22.579531691180584, -25.979447523708142], - [22.824271274514896, -25.500458672794768], - [23.312096795350179, -25.268689873965712], - [23.733569777122703, -25.39012948985161], - [24.211266717228792, -25.670215752873567], - [25.025170525825782, -25.719670098576891], - [25.664666375437712, -25.486816094669706], - [25.765848829865206, -25.174845472923671], - [25.941652052522151, -24.696373386333214], - [26.485753208123292, -24.616326592713097], - [26.78640669119741, -24.240690606383478], - [27.119409620886238, -23.574323011979772], - [28.017235955525244, -22.827753594659072], - [29.432188348109033, -22.091312758067584], - [29.839036899542965, -22.102216485281172], - [30.322883335091767, -22.271611830333931], - [30.659865350067083, -22.151567478119912], - [31.191409132621278, -22.251509698172395], - [31.670397983534645, -23.658969008073861], - [31.930588820124242, -24.369416599222532], - [31.752408481581874, -25.484283949487406], - [31.837777947728057, -25.843331801051342], - [31.333157586397899, -25.660190525008943], - [31.044079624157146, -25.731452325139436], - [30.949666782359905, -26.022649021104144], - [30.676608514129633, -26.398078301704604], - [30.685961948374477, -26.743845310169526], - [31.282773064913325, -27.285879408478991], - [31.868060337051073, -27.17792734142127], - [32.071665480281062, -26.733820082304902], - [32.830120477028878, -26.74219166433619], - [32.580264926897677, -27.470157566031808], - [32.462132602678444, -28.30101124442055], - [32.203388706193032, -28.752404880490065], - [31.521001417778869, -29.257386976846245] - ], - [ - [28.978262566857236, -28.955596612261708], - [28.541700066855491, -28.647501722937562], - [28.07433841320778, -28.851468601193581], - [27.532511020627471, -29.242710870075353], - [26.999261915807629, -29.875953871379977], - [27.749397006956478, -30.645105889612214], - [28.107204624145421, -30.545732110314944], - [28.291069370239903, -30.226216729454293], - [28.848399692507734, -30.070050551068245], - [29.018415154748016, -29.743765557577362], - [29.325166456832587, -29.257386976846245], - [28.978262566857236, -28.955596612261708] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Zambia", "name": "Zambia", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.759375441221316, -9.230599053589058], - [33.231387973775291, -9.676721693564799], - [33.485687697083584, -10.525558770391111], - [33.315310499817279, -10.796549981329695], - [33.114289178201908, -11.607198174692311], - [33.306422153463068, -12.435778090060214], - [32.991764357237876, -12.783870537978272], - [32.688165317523122, -13.712857761289273], - [33.214024692525207, -13.97186003993615], - [30.179481235481827, -14.796099134991525], - [30.274255812305103, -15.507786960515208], - [29.51683434420314, -15.644677829656386], - [28.947463413211256, -16.043051446194436], - [28.825868768028492, -16.389748630440611], - [28.467906121542676, -16.468400160388843], - [27.598243442502753, -17.290830580314005], - [27.044427117630729, -17.938026218337427], - [26.706773309035633, -17.961228936436477], - [26.381935255648919, -17.846042168857892], - [25.264225701608005, -17.736539808831413], - [25.084443393664564, -17.661815687737366], - [25.076950310982255, -17.578823337476617], - [24.6823490740015, -17.35341073981947], - [24.033861525170771, -17.29584319424632], - [23.215048455506057, -17.52311614346598], - [22.562478468524255, -16.89845142992181], - [21.887842644953867, -16.080310153876876], - [21.933886346125913, -12.898437188369357], - [24.016136508894672, -12.91104623784857], - [23.930922072045373, -12.565847670138854], - [24.079905226342838, -12.191296888887361], - [23.904153680118181, -11.722281589406318], - [24.017893507592586, -11.237298272347088], - [23.912215203555714, -10.926826267137512], - [24.257155389103982, -10.951992689663655], - [24.314516228947948, -11.262826429899269], - [24.783169793402948, -11.238693536018962], - [25.418118116973197, -11.330935967659958], - [25.752309604604726, -11.784965101776356], - [26.55308759939961, -11.924439792532125], - [27.164419793412456, -11.608748467661071], - [27.38879886242378, -12.132747491100663], - [28.15510867687998, -12.272480564017894], - [28.52356163912102, -12.698604424696679], - [28.934285922976834, -13.248958428605132], - [29.699613885219485, -13.257226657771827], - [29.616001417771223, -12.178894545137307], - [29.341547885869087, -12.36074391037241], - [28.642417433392346, -11.971568698782312], - [28.372253045370421, -11.793646742401389], - [28.496069777141763, -10.789883721564044], - [28.673681674928922, -9.605924981324931], - [28.449871046672818, -9.164918308146083], - [28.734866570762495, -8.526559340044576], - [29.002912225060467, -8.40703175215347], - [30.34608605319081, -8.238256524288216], - [30.740015496551781, -8.340007419470913], - [31.157751336950042, -8.594578747317362], - [31.55634809746649, -8.76204884199864], - [32.191864861791963, -8.930358981973276], - [32.759375441221316, -9.230599053589058] - ] - ] - } - }, - { - "type": "Feature", - "properties": { "admin": "Zimbabwe", "name": "Zimbabwe", "continent": "Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.191409132621278, -22.251509698172395], - [30.659865350067083, -22.151567478119912], - [30.322883335091767, -22.271611830333931], - [29.839036899542965, -22.102216485281172], - [29.432188348109033, -22.091312758067584], - [28.794656202924209, -21.639454034107445], - [28.02137007010861, -21.485975030200578], - [27.727227817503252, -20.851801853114711], - [27.724747348753247, -20.499058526290387], - [27.296504754350501, -20.391519870690995], - [26.164790887158478, -19.293085625894935], - [25.850391473094724, -18.714412937090533], - [25.649163445750155, -18.536025892818987], - [25.264225701608005, -17.736539808831413], - [26.381935255648919, -17.846042168857892], - [26.706773309035633, -17.961228936436477], - [27.044427117630729, -17.938026218337427], - [27.598243442502753, -17.290830580314005], - [28.467906121542676, -16.468400160388843], - [28.825868768028492, -16.389748630440611], - [28.947463413211256, -16.043051446194436], - [29.51683434420314, -15.644677829656386], - [30.274255812305103, -15.507786960515208], - [30.338954705534537, -15.880839125230242], - [31.173063999157673, -15.860943698797868], - [31.636498243951188, -16.071990248277881], - [31.852040643040592, -16.319417006091374], - [32.328238966610222, -16.392074069893749], - [32.847638787575839, -16.713398125884613], - [32.849860874164385, -17.979057305577175], - [32.654885695127142, -18.672089939043492], - [32.611994256324884, -19.419382826416268], - [32.772707960752619, -19.715592136313294], - [32.659743279762573, -20.30429005298231], - [32.508693068173436, -20.395292250248303], - [32.244988234188007, -21.116488539313689], - [31.191409132621278, -22.251509698172395] - ] - ] - } - } - ], - "type": "FeatureCollection" -} diff --git a/packages/shadcn/src/lib/class-variance-authority.ts b/packages/shadcn/src/lib/class-variance-authority.ts deleted file mode 100644 index 85133ac..0000000 --- a/packages/shadcn/src/lib/class-variance-authority.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'class-variance-authority'; diff --git a/packages/shadcn/src/lib/date-fns.ts b/packages/shadcn/src/lib/date-fns.ts deleted file mode 100644 index a7064fa..0000000 --- a/packages/shadcn/src/lib/date-fns.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'date-fns'; diff --git a/packages/shadcn/src/lib/react-hook-form.ts b/packages/shadcn/src/lib/react-hook-form.ts deleted file mode 100644 index 9ee888e..0000000 --- a/packages/shadcn/src/lib/react-hook-form.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'react-hook-form'; diff --git a/packages/shadcn/src/lib/recharts.ts b/packages/shadcn/src/lib/recharts.ts deleted file mode 100644 index 2e7ee20..0000000 --- a/packages/shadcn/src/lib/recharts.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'recharts'; diff --git a/packages/shadcn/src/lib/sonner.ts b/packages/shadcn/src/lib/sonner.ts deleted file mode 100644 index 1287e8e..0000000 --- a/packages/shadcn/src/lib/sonner.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'sonner'; diff --git a/packages/shadcn/src/lib/types.ts b/packages/shadcn/src/lib/types.ts deleted file mode 100644 index 8ce505f..0000000 --- a/packages/shadcn/src/lib/types.ts +++ /dev/null @@ -1 +0,0 @@ -export type { TooltipContentProps } from '@radix-ui/react-tooltip'; diff --git a/packages/shadcn/src/lib/zod.ts b/packages/shadcn/src/lib/zod.ts deleted file mode 100644 index 2502b03..0000000 --- a/packages/shadcn/src/lib/zod.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { zodResolver } from '@hookform/resolvers/zod'; -export * as z from 'zod'; diff --git a/packages/shadcn/tailwind.config.ts b/packages/shadcn/tailwind.config.ts deleted file mode 100644 index 0bd9a41..0000000 --- a/packages/shadcn/tailwind.config.ts +++ /dev/null @@ -1,121 +0,0 @@ -import type { Config } from 'tailwindcss'; -import Animate from 'tailwindcss-animate'; - -const config = { - darkMode: ['class'], - content: [ - './pages/**/*.{ts,tsx}', - './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', - '../../packages/shadcn/src/components/**/*.{ts,tsx}', - '../../packages/ui/src/**/*.{ts,tsx}', - ], - theme: { - container: { - center: true, - padding: { - 'DEFAULT': '1rem', - 'sm': '2rem', - 'lg': '4rem', - 'xl': '5rem', - '2xl': '6rem', - }, - screens: { - 'sm': '640px', - 'md': '768px', - 'lg': '1024px', - 'xl': '1280px', - '2xl': '1536px', - }, - }, - extend: { - colors: { - 'border': 'hsl(var(--border))', - 'input': 'hsl(var(--input))', - 'ring': 'hsl(var(--ring))', - 'background': 'hsl(var(--background))', - 'foreground': 'hsl(var(--foreground))', - 'primary': { - DEFAULT: 'hsl(var(--primary))', - foreground: 'hsl(var(--primary-foreground))', - }, - 'secondary': { - DEFAULT: 'hsl(var(--secondary))', - foreground: 'hsl(var(--secondary-foreground))', - }, - 'destructive': { - DEFAULT: 'hsl(var(--destructive))', - foreground: 'hsl(var(--destructive-foreground))', - }, - 'muted': { - DEFAULT: 'hsl(var(--muted))', - foreground: 'hsl(var(--muted-foreground))', - }, - 'accent': { - DEFAULT: 'hsl(var(--accent))', - foreground: 'hsl(var(--accent-foreground))', - }, - 'popover': { - DEFAULT: 'hsl(var(--popover))', - foreground: 'hsl(var(--popover-foreground))', - }, - 'card': { - DEFAULT: 'hsl(var(--card))', - foreground: 'hsl(var(--card-foreground))', - }, - 'sidebar': { - 'DEFAULT': 'hsl(var(--sidebar-background))', - 'foreground': 'hsl(var(--sidebar-foreground))', - 'primary': 'hsl(var(--sidebar-primary))', - 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))', - 'accent': 'hsl(var(--sidebar-accent))', - 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))', - 'border': 'hsl(var(--sidebar-border))', - 'ring': 'hsl(var(--sidebar-ring))', - }, - 'color-1': 'hsl(var(--color-1))', - 'color-2': 'hsl(var(--color-2))', - 'color-3': 'hsl(var(--color-3))', - 'color-4': 'hsl(var(--color-4))', - 'color-5': 'hsl(var(--color-5))', - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)', - }, - keyframes: { - 'accordion-down': { - from: { - height: '0', - }, - to: { - height: 'var(--radix-accordion-content-height)', - }, - }, - 'accordion-up': { - from: { - height: 'var(--radix-accordion-content-height)', - }, - to: { - height: '0', - }, - }, - 'scroll': { - to: { - transform: 'translate(calc(-50% - 0.5rem))', - }, - }, - }, - animation: { - 'accordion-down': 'accordion-down 0.2s ease-out', - 'accordion-up': 'accordion-up 0.2s ease-out', - 'scroll': - 'scroll var(--animation-duration, 40s) var(--animation-direction, forwards) linear infinite', - }, - }, - }, - plugins: [Animate], -} satisfies Config; - -export default config; diff --git a/packages/shadcn/tsconfig.json b/packages/shadcn/tsconfig.json deleted file mode 100644 index 798dcdb..0000000 --- a/packages/shadcn/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - // "outDir": "dist", - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - }, - "exclude": ["node_modules", "dist"], - "extends": "@repo/typescript-config/react-library.json", - "include": ["."] -} diff --git a/packages/typescript-config/README.md b/packages/typescript-config/README.md new file mode 100644 index 0000000..e5f0c93 --- /dev/null +++ b/packages/typescript-config/README.md @@ -0,0 +1,3 @@ +# `@workspace/typescript-config` + +Shared typescript configuration for the workspace. diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json index 5117f2a..5c7e6cb 100644 --- a/packages/typescript-config/base.json +++ b/packages/typescript-config/base.json @@ -15,5 +15,6 @@ "skipLibCheck": true, "strict": true, "target": "ES2022" - } + }, + "display": "Default" } diff --git a/packages/typescript-config/nextjs.json b/packages/typescript-config/nextjs.json index dbd54e4..ca97c7d 100644 --- a/packages/typescript-config/nextjs.json +++ b/packages/typescript-config/nextjs.json @@ -6,8 +6,8 @@ "moduleResolution": "Bundler", "allowJs": true, "jsx": "preserve", - "noEmit": true, - "noImplicitAny": false + "noEmit": true }, + "display": "Next.js", "extends": "./base.json" } diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index 7731736..9450116 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,9 +1,9 @@ { - "name": "@repo/typescript-config", + "name": "@workspace/typescript-config", + "version": "0.0.0", "private": true, - "files": [ - "base.json", - "next.json", - "react-library.json" - ] + "license": "PROPRIETARY", + "publishConfig": { + "access": "public" + } } diff --git a/packages/typescript-config/react-library.json b/packages/typescript-config/react-library.json index 8d2bd5b..3df370d 100644 --- a/packages/typescript-config/react-library.json +++ b/packages/typescript-config/react-library.json @@ -3,5 +3,6 @@ "compilerOptions": { "jsx": "react-jsx" }, + "display": "React Library", "extends": "./base.json" } diff --git a/packages/shadcn/components.json b/packages/ui/components.json similarity index 50% rename from packages/shadcn/components.json rename to packages/ui/components.json index f332ef6..e5c6df7 100644 --- a/packages/shadcn/components.json +++ b/packages/ui/components.json @@ -1,20 +1,20 @@ { "$schema": "https://ui.shadcn.com/schema.json", "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" + "components": "@workspace/ui/components", + "utils": "@workspace/ui/lib/utils", + "hooks": "@workspace/ui/hooks", + "lib": "@workspace/ui/lib", + "ui": "@workspace/ui/components" }, + "iconLibrary": "lucide", "rsc": true, "style": "new-york", "tailwind": { "config": "tailwind.config.ts", "css": "src/styles/globals.css", "baseColor": "zinc", - "cssVariables": true, - "prefix": "" + "cssVariables": true }, "tsx": true } diff --git a/packages/ui/eslint.config.js b/packages/ui/eslint.config.js index 4f4e6bc..0ed553d 100644 --- a/packages/ui/eslint.config.js +++ b/packages/ui/eslint.config.js @@ -1,23 +1,4 @@ -import { config } from '@repo/eslint-config/react-internal'; +import { config } from '@workspace/eslint-config/react-internal'; /** @type {import("eslint").Linter.Config} */ -export default [ - ...config, - { - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-unsafe-function-type': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/no-explicit-any': 'off', - 'react/prop-types': 'off', - 'react/no-unknown-property': 'off', - 'react-hooks/exhaustive-deps': 'off', - 'react/jsx-no-target-blank': 'off', - 'prefer-const': 'off', - 'no-var': 'off', - 'no-dupe-keys': 'off', - }, - }, -]; +export default config; diff --git a/packages/ui/package.json b/packages/ui/package.json index f84580b..fe17056 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,54 +1,97 @@ { - "name": "@repo/ui", + "name": "@workspace/ui", + "version": "0.0.0", "private": true, + "type": "module", "exports": { + "./globals.css": "./src/styles/globals.css", + "./postcss.config": "./postcss.config.mjs", "./tailwind.config": "./tailwind.config.ts", - "./utils": "./src/utils/index.ts", - "./lotties": "./src/lotties/index.tsx", - "./pro-table": "./src/pro-table/index.tsx", - "./pro-list": "./src/pro-list/index.tsx", - "./editor": "./src/editor/index.tsx", - "./*": "./src/*.tsx" + "./lib/*": "./src/lib/*.ts", + "./lotties/*": "./src/lotties/*.json", + "./components/*": "./src/components/*.tsx", + "./custom-components/*": "./src/custom-components/*.tsx", + "./hooks/*": "./src/hooks/*.ts", + "./utils/*": "./src/utils/*.ts" }, "scripts": { - "generate:component": "turbo gen react-component", "lint": "eslint . --max-warnings 0" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", + "@hookform/resolvers": "^3.9.1", "@monaco-editor/react": "^4.6.0", - "@radix-ui/react-icons": "^1.3.2", - "@shadcn/ui": "workspace:*", + "@radix-ui/react-accordion": "^1.2.2", + "@radix-ui/react-alert-dialog": "^1.1.4", + "@radix-ui/react-aspect-ratio": "^1.1.1", + "@radix-ui/react-avatar": "^1.1.2", + "@radix-ui/react-checkbox": "^1.1.3", + "@radix-ui/react-collapsible": "^1.1.2", + "@radix-ui/react-context-menu": "^2.2.4", + "@radix-ui/react-dialog": "^1.1.4", + "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-hover-card": "^1.1.4", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-menubar": "^1.1.4", + "@radix-ui/react-navigation-menu": "^1.2.3", + "@radix-ui/react-popover": "^1.1.4", + "@radix-ui/react-progress": "^1.1.1", + "@radix-ui/react-radio-group": "^1.2.2", + "@radix-ui/react-scroll-area": "^1.2.2", + "@radix-ui/react-select": "^2.1.4", + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slider": "^1.2.2", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-switch": "^1.1.2", + "@radix-ui/react-tabs": "^1.1.2", + "@radix-ui/react-toast": "^1.2.4", + "@radix-ui/react-toggle": "^1.1.1", + "@radix-ui/react-toggle-group": "^1.1.1", + "@radix-ui/react-tooltip": "^1.1.6", "@tanstack/react-table": "^8.20.6", - "@types/react-syntax-highlighter": "^15.5.13", - "ahooks": "^3.8.4", - "katex": "^0.16.15", - "lottie-react": "^2.4.0", - "lucide-react": "^0.468.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "1.0.4", + "date-fns": "^4.1.0", + "embla-carousel-react": "^8.5.1", + "framer-motion": "^11.15.0", + "input-otp": "^1.4.1", + "lucide-react": "^0.469.0", "mathjs": "^14.0.1", - "react": "^19.0.0", + "next-themes": "^0.4.4", + "react-day-picker": "8.10.1", + "react-hook-form": "^7.54.2", "react-markdown": "^9.0.1", + "react-resizable-panels": "^2.1.7", "react-syntax-highlighter": "^15.6.1", + "recharts": "^2.15.0", "rehype-katex": "^7.0.1", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", - "remark-toc": "^9.0.0" + "remark-toc": "^9.0.0", + "rtl-detect": "^1.1.2", + "sonner": "^1.7.1", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7", + "vaul": "^1.1.2", + "zod": "^3.24.1" }, "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/typescript-config": "workspace:*", "@turbo/gen": "^2.3.3", "@types/node": "^22.10.2", - "@types/react": "^19.0.1", + "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", + "@types/react-syntax-highlighter": "^15.5.13", + "@types/rtl-detect": "^1.0.3", + "@workspace/eslint-config": "workspace:*", + "@workspace/typescript-config": "workspace:*", "autoprefixer": "^10.4.20", - "next": "^15.1.0", "postcss": "^8.4.49", - "react": "^18.3.1", - "tailwindcss": "^3.4.16", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwindcss": "^3.4.17", "typescript": "^5.7.2" } } diff --git a/packages/ui/src/components/.gitkeep b/packages/ui/src/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/shadcn/src/components/ui/accordion.tsx b/packages/ui/src/components/accordion.tsx similarity index 89% rename from packages/shadcn/src/components/ui/accordion.tsx rename to packages/ui/src/components/accordion.tsx index 0980cdd..e1d6fcd 100644 --- a/packages/shadcn/src/components/ui/accordion.tsx +++ b/packages/ui/src/components/accordion.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; import * as AccordionPrimitive from '@radix-ui/react-accordion'; -import { ChevronDownIcon } from '@radix-ui/react-icons'; +import { ChevronDown } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const Accordion = AccordionPrimitive.Root; @@ -30,7 +30,7 @@ const AccordionTrigger = React.forwardRef< {...props} > {children} - + )); diff --git a/packages/shadcn/src/components/ui/alert-dialog.tsx b/packages/ui/src/components/alert-dialog.tsx similarity index 97% rename from packages/shadcn/src/components/ui/alert-dialog.tsx rename to packages/ui/src/components/alert-dialog.tsx index 5f29896..57c3ef5 100644 --- a/packages/shadcn/src/components/ui/alert-dialog.tsx +++ b/packages/ui/src/components/alert-dialog.tsx @@ -1,11 +1,10 @@ -// @ts-nocheck 'use client'; import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; import * as React from 'react'; -import { cn } from '../../lib/utils'; -import { buttonVariants } from './button'; +import { buttonVariants } from '@workspace/ui/components/button'; +import { cn } from '@workspace/ui/lib/utils'; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/packages/shadcn/src/components/ui/alert.tsx b/packages/ui/src/components/alert.tsx similarity index 96% rename from packages/shadcn/src/components/ui/alert.tsx rename to packages/ui/src/components/alert.tsx index e5e998b..cbc1db3 100644 --- a/packages/shadcn/src/components/ui/alert.tsx +++ b/packages/ui/src/components/alert.tsx @@ -1,8 +1,7 @@ -// @ts-nocheck import { cva, type VariantProps } from 'class-variance-authority'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const alertVariants = cva( 'relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7', diff --git a/packages/shadcn/src/components/ui/aspect-ratio.tsx b/packages/ui/src/components/aspect-ratio.tsx similarity index 100% rename from packages/shadcn/src/components/ui/aspect-ratio.tsx rename to packages/ui/src/components/aspect-ratio.tsx diff --git a/packages/shadcn/src/components/ui/avatar.tsx b/packages/ui/src/components/avatar.tsx similarity index 96% rename from packages/shadcn/src/components/ui/avatar.tsx rename to packages/ui/src/components/avatar.tsx index 6ec7d86..163a424 100644 --- a/packages/shadcn/src/components/ui/avatar.tsx +++ b/packages/ui/src/components/avatar.tsx @@ -1,10 +1,9 @@ -// @ts-nocheck 'use client'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const Avatar = React.forwardRef< React.ElementRef, diff --git a/packages/shadcn/src/components/ui/badge.tsx b/packages/ui/src/components/badge.tsx similarity index 95% rename from packages/shadcn/src/components/ui/badge.tsx rename to packages/ui/src/components/badge.tsx index 3e34bc7..fe69568 100644 --- a/packages/shadcn/src/components/ui/badge.tsx +++ b/packages/ui/src/components/badge.tsx @@ -1,8 +1,7 @@ -// @ts-nocheck import { cva, type VariantProps } from 'class-variance-authority'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const badgeVariants = cva( 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', diff --git a/packages/shadcn/src/components/ui/breadcrumb.tsx b/packages/ui/src/components/breadcrumb.tsx similarity index 92% rename from packages/shadcn/src/components/ui/breadcrumb.tsx rename to packages/ui/src/components/breadcrumb.tsx index e137796..f8b0392 100644 --- a/packages/shadcn/src/components/ui/breadcrumb.tsx +++ b/packages/ui/src/components/breadcrumb.tsx @@ -1,8 +1,8 @@ -// @ts-nocheck -import { ChevronRightIcon, DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Slot } from '@radix-ui/react-slot'; +import { ChevronRight, MoreHorizontal } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const Breadcrumb = React.forwardRef< HTMLElement, @@ -72,7 +72,7 @@ const BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentP className={cn('[&>svg]:h-3.5 [&>svg]:w-3.5', className)} {...props} > - {children ?? } + {children ?? } ); BreadcrumbSeparator.displayName = 'BreadcrumbSeparator'; @@ -84,7 +84,7 @@ const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span' className={cn('flex h-9 w-9 items-center justify-center', className)} {...props} > - + More ); diff --git a/packages/shadcn/src/components/ui/button.tsx b/packages/ui/src/components/button.tsx similarity index 97% rename from packages/shadcn/src/components/ui/button.tsx rename to packages/ui/src/components/button.tsx index 1891099..0b8a620 100644 --- a/packages/shadcn/src/components/ui/button.tsx +++ b/packages/ui/src/components/button.tsx @@ -1,9 +1,8 @@ -// @ts-nocheck import { Slot } from '@radix-ui/react-slot'; import { cva, type VariantProps } from 'class-variance-authority'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const buttonVariants = cva( 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', diff --git a/packages/shadcn/src/components/ui/calendar.tsx b/packages/ui/src/components/calendar.tsx similarity index 85% rename from packages/shadcn/src/components/ui/calendar.tsx rename to packages/ui/src/components/calendar.tsx index de65810..019b6f5 100644 --- a/packages/shadcn/src/components/ui/calendar.tsx +++ b/packages/ui/src/components/calendar.tsx @@ -1,12 +1,11 @@ -// @ts-nocheck 'use client'; +import { ChevronLeft, ChevronRight } from 'lucide-react'; import * as React from 'react'; import { DayPicker } from 'react-day-picker'; -import { ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons'; -import { cn } from '../../lib/utils'; -import { buttonVariants } from './button'; +import { buttonVariants } from '@workspace/ui/components/button'; +import { cn } from '@workspace/ui/lib/utils'; export type CalendarProps = React.ComponentProps; @@ -54,8 +53,12 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }: C ...classNames, }} components={{ - IconLeft: ({ ...props }) => , - IconRight: ({ ...props }) => , + IconLeft: ({ className, ...props }) => ( + + ), + IconRight: ({ className, ...props }) => ( + + ), }} {...props} /> diff --git a/packages/shadcn/src/components/ui/card.tsx b/packages/ui/src/components/card.tsx similarity index 97% rename from packages/shadcn/src/components/ui/card.tsx rename to packages/ui/src/components/card.tsx index 666e925..0e3de5e 100644 --- a/packages/shadcn/src/components/ui/card.tsx +++ b/packages/ui/src/components/card.tsx @@ -1,7 +1,6 @@ -// @ts-nocheck import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const Card = React.forwardRef>( ({ className, ...props }, ref) => ( diff --git a/packages/shadcn/src/components/ui/carousel.tsx b/packages/ui/src/components/carousel.tsx similarity index 95% rename from packages/shadcn/src/components/ui/carousel.tsx rename to packages/ui/src/components/carousel.tsx index a376102..5c97941 100644 --- a/packages/shadcn/src/components/ui/carousel.tsx +++ b/packages/ui/src/components/carousel.tsx @@ -1,11 +1,11 @@ -// @ts-nocheck 'use client'; -import { ArrowLeftIcon, ArrowRightIcon } from '@radix-ui/react-icons'; import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'; +import { ArrowLeft, ArrowRight } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; -import { Button } from './button'; + +import { Button } from '@workspace/ui/components/button'; +import { cn } from '@workspace/ui/lib/utils'; type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters = Parameters; @@ -196,7 +196,7 @@ const CarouselPrevious = React.forwardRef - + Previous slide ); @@ -224,7 +224,7 @@ const CarouselNext = React.forwardRef - + Next slide ); diff --git a/packages/shadcn/src/components/ui/chart.tsx b/packages/ui/src/components/chart.tsx similarity index 97% rename from packages/shadcn/src/components/ui/chart.tsx rename to packages/ui/src/components/chart.tsx index 2b9eb3e..4f5c340 100644 --- a/packages/shadcn/src/components/ui/chart.tsx +++ b/packages/ui/src/components/chart.tsx @@ -1,10 +1,9 @@ -// @ts-nocheck 'use client'; import * as React from 'react'; import * as RechartsPrimitive from 'recharts'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; // Format: { THEME_NAME: CSS_SELECTOR } const THEMES = { light: '', dark: '.dark' } as const; @@ -65,7 +64,7 @@ const ChartContainer = React.forwardRef< ChartContainer.displayName = 'Chart'; const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { - const colorConfig = Object.entries(config).filter(([_, config]) => config.theme || config.color); + const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color); if (!colorConfig.length) { return null; @@ -132,7 +131,7 @@ const ChartTooltipContent = React.forwardRef< } const [item] = payload; - const key = `${labelKey || item.dataKey || item.name || 'value'}`; + const key = `${labelKey || item?.dataKey || item?.name || 'value'}`; const itemConfig = getPayloadConfigFromPayload(config, item, key); const value = !labelKey && typeof label === 'string' diff --git a/packages/shadcn/src/components/ui/checkbox.tsx b/packages/ui/src/components/checkbox.tsx similarity index 86% rename from packages/shadcn/src/components/ui/checkbox.tsx rename to packages/ui/src/components/checkbox.tsx index 375e154..7599650 100644 --- a/packages/shadcn/src/components/ui/checkbox.tsx +++ b/packages/ui/src/components/checkbox.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; import * as CheckboxPrimitive from '@radix-ui/react-checkbox'; -import { CheckIcon } from '@radix-ui/react-icons'; +import { Check } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const Checkbox = React.forwardRef< React.ElementRef, @@ -19,7 +19,7 @@ const Checkbox = React.forwardRef< {...props} > - + )); diff --git a/packages/shadcn/src/components/ui/collapsible.tsx b/packages/ui/src/components/collapsible.tsx similarity index 100% rename from packages/shadcn/src/components/ui/collapsible.tsx rename to packages/ui/src/components/collapsible.tsx diff --git a/packages/shadcn/src/components/ui/command.tsx b/packages/ui/src/components/command.tsx similarity index 94% rename from packages/shadcn/src/components/ui/command.tsx rename to packages/ui/src/components/command.tsx index d84ce86..977c139 100644 --- a/packages/shadcn/src/components/ui/command.tsx +++ b/packages/ui/src/components/command.tsx @@ -1,12 +1,12 @@ -// @ts-nocheck 'use client'; import { type DialogProps } from '@radix-ui/react-dialog'; -import { MagnifyingGlassIcon } from '@radix-ui/react-icons'; import { Command as CommandPrimitive } from 'cmdk'; +import { Search } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; -import { Dialog, DialogContent } from './dialog'; + +import { Dialog, DialogContent } from '@workspace/ui/components/dialog'; +import { cn } from '@workspace/ui/lib/utils'; const Command = React.forwardRef< React.ElementRef, @@ -39,8 +39,9 @@ const CommandInput = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( + // eslint-disable-next-line react/no-unknown-property
- + {children} - + )); ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; @@ -104,7 +104,7 @@ const ContextMenuCheckboxItem = React.forwardRef< > - + {children} @@ -126,7 +126,7 @@ const ContextMenuRadioItem = React.forwardRef< > - + {children} diff --git a/packages/shadcn/src/components/ui/dialog.tsx b/packages/ui/src/components/dialog.tsx similarity index 96% rename from packages/shadcn/src/components/ui/dialog.tsx rename to packages/ui/src/components/dialog.tsx index 5714f9a..9322af4 100644 --- a/packages/shadcn/src/components/ui/dialog.tsx +++ b/packages/ui/src/components/dialog.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; import * as DialogPrimitive from '@radix-ui/react-dialog'; -import { Cross2Icon } from '@radix-ui/react-icons'; +import { X } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const Dialog = DialogPrimitive.Root; @@ -45,7 +45,7 @@ const DialogContent = React.forwardRef< > {children} - + Close diff --git a/packages/shadcn/src/components/ui/drawer.tsx b/packages/ui/src/components/drawer.tsx similarity index 98% rename from packages/shadcn/src/components/ui/drawer.tsx rename to packages/ui/src/components/drawer.tsx index 34cf8d8..7491140 100644 --- a/packages/shadcn/src/components/ui/drawer.tsx +++ b/packages/ui/src/components/drawer.tsx @@ -1,10 +1,9 @@ -// @ts-nocheck 'use client'; import * as React from 'react'; import { Drawer as DrawerPrimitive } from 'vaul'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const Drawer = ({ shouldScaleBackground = true, diff --git a/packages/shadcn/src/components/ui/dropdown-menu.tsx b/packages/ui/src/components/dropdown-menu.tsx similarity index 96% rename from packages/shadcn/src/components/ui/dropdown-menu.tsx rename to packages/ui/src/components/dropdown-menu.tsx index 95003c7..00383f5 100644 --- a/packages/shadcn/src/components/ui/dropdown-menu.tsx +++ b/packages/ui/src/components/dropdown-menu.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; -import { CheckIcon, ChevronRightIcon, DotFilledIcon } from '@radix-ui/react-icons'; +import { Check, ChevronRight, Circle } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const DropdownMenu = DropdownMenuPrimitive.Root; @@ -34,7 +34,7 @@ const DropdownMenuSubTrigger = React.forwardRef< {...props} > {children} - + )); DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; @@ -106,7 +106,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< > - + {children} @@ -128,7 +128,7 @@ const DropdownMenuRadioItem = React.forwardRef< > - + {children} diff --git a/packages/shadcn/src/components/ui/form.tsx b/packages/ui/src/components/form.tsx similarity index 97% rename from packages/shadcn/src/components/ui/form.tsx rename to packages/ui/src/components/form.tsx index 7e5ebc3..ffdea4e 100644 --- a/packages/shadcn/src/components/ui/form.tsx +++ b/packages/ui/src/components/form.tsx @@ -1,4 +1,3 @@ -// @ts-nocheck 'use client'; import * as LabelPrimitive from '@radix-ui/react-label'; @@ -13,8 +12,8 @@ import { useFormContext, } from 'react-hook-form'; -import { cn } from '../../lib/utils'; -import { Label } from './label'; +import { Label } from '@workspace/ui/components/label'; +import { cn } from '@workspace/ui/lib/utils'; const Form = FormProvider; diff --git a/packages/shadcn/src/components/ui/hover-border-gradient.tsx b/packages/ui/src/components/hover-border-gradient.tsx similarity index 93% rename from packages/shadcn/src/components/ui/hover-border-gradient.tsx rename to packages/ui/src/components/hover-border-gradient.tsx index 9c490cb..d1b3ce2 100644 --- a/packages/shadcn/src/components/ui/hover-border-gradient.tsx +++ b/packages/ui/src/components/hover-border-gradient.tsx @@ -1,9 +1,8 @@ -// @ts-nocheck 'use client'; import React, { useEffect, useState } from 'react'; +import { cn } from '@workspace/ui/lib/utils'; import { motion } from 'framer-motion'; -import { cn } from '../../lib/utils'; type Direction = 'TOP' | 'LEFT' | 'BOTTOM' | 'RIGHT'; @@ -33,7 +32,7 @@ export function HoverBorderGradient({ const nextIndex = clockwise ? (currentIndex - 1 + directions.length) % directions.length : (currentIndex + 1) % directions.length; - return directions[nextIndex]; + return directions[nextIndex] as Direction; }; const movingMap: Record = { @@ -55,9 +54,11 @@ export function HoverBorderGradient({ }, duration * 1000); return () => clearInterval(interval); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [hovered]); return ( ) => { setHovered(true); }} diff --git a/packages/shadcn/src/components/ui/hover-card.tsx b/packages/ui/src/components/hover-card.tsx similarity index 95% rename from packages/shadcn/src/components/ui/hover-card.tsx rename to packages/ui/src/components/hover-card.tsx index fa6d061..14d2d7d 100644 --- a/packages/shadcn/src/components/ui/hover-card.tsx +++ b/packages/ui/src/components/hover-card.tsx @@ -1,10 +1,9 @@ -// @ts-nocheck 'use client'; import * as HoverCardPrimitive from '@radix-ui/react-hover-card'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const HoverCard = HoverCardPrimitive.Root; diff --git a/packages/shadcn/src/components/ui/input-otp.tsx b/packages/ui/src/components/input-otp.tsx similarity index 94% rename from packages/shadcn/src/components/ui/input-otp.tsx rename to packages/ui/src/components/input-otp.tsx index 07386bc..53363d0 100644 --- a/packages/shadcn/src/components/ui/input-otp.tsx +++ b/packages/ui/src/components/input-otp.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; -import { MinusIcon } from '@radix-ui/react-icons'; import { OTPInput, OTPInputContext } from 'input-otp'; +import { Minus } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const InputOTP = React.forwardRef< React.ElementRef, @@ -63,7 +63,7 @@ const InputOTPSeparator = React.forwardRef< React.ComponentPropsWithoutRef<'div'> >(({ ...props }, ref) => (
- +
)); InputOTPSeparator.displayName = 'InputOTPSeparator'; diff --git a/packages/shadcn/src/components/ui/input.tsx b/packages/ui/src/components/input.tsx similarity index 93% rename from packages/shadcn/src/components/ui/input.tsx rename to packages/ui/src/components/input.tsx index 2071397..bfab5b7 100644 --- a/packages/shadcn/src/components/ui/input.tsx +++ b/packages/ui/src/components/input.tsx @@ -1,7 +1,6 @@ -// @ts-nocheck import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const Input = React.forwardRef>( ({ className, type, ...props }, ref) => { diff --git a/packages/shadcn/src/components/ui/label.tsx b/packages/ui/src/components/label.tsx similarity index 92% rename from packages/shadcn/src/components/ui/label.tsx rename to packages/ui/src/components/label.tsx index fb1be0f..c55b085 100644 --- a/packages/shadcn/src/components/ui/label.tsx +++ b/packages/ui/src/components/label.tsx @@ -1,11 +1,10 @@ -// @ts-nocheck 'use client'; import * as LabelPrimitive from '@radix-ui/react-label'; import { cva, type VariantProps } from 'class-variance-authority'; import * as React from 'react'; -import { cn } from '../../lib/utils'; +import { cn } from '@workspace/ui/lib/utils'; const labelVariants = cva( 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', diff --git a/packages/shadcn/src/components/ui/menubar.tsx b/packages/ui/src/components/menubar.tsx similarity index 96% rename from packages/shadcn/src/components/ui/menubar.tsx rename to packages/ui/src/components/menubar.tsx index 0971fee..b8f43e6 100644 --- a/packages/shadcn/src/components/ui/menubar.tsx +++ b/packages/ui/src/components/menubar.tsx @@ -1,10 +1,10 @@ -// @ts-nocheck 'use client'; -import { CheckIcon, ChevronRightIcon, DotFilledIcon } from '@radix-ui/react-icons'; import * as MenubarPrimitive from '@radix-ui/react-menubar'; +import { Check, ChevronRight, Circle } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const MenubarMenu = MenubarPrimitive.Menu; @@ -62,7 +62,7 @@ const MenubarSubTrigger = React.forwardRef< {...props} > {children} - + )); MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName; @@ -135,7 +135,7 @@ const MenubarCheckboxItem = React.forwardRef< > - + {children} @@ -157,7 +157,7 @@ const MenubarRadioItem = React.forwardRef< > - + {children} diff --git a/packages/shadcn/src/components/ui/navigation-menu.tsx b/packages/ui/src/components/navigation-menu.tsx similarity index 97% rename from packages/shadcn/src/components/ui/navigation-menu.tsx rename to packages/ui/src/components/navigation-menu.tsx index 9e12c5b..dc9919d 100644 --- a/packages/shadcn/src/components/ui/navigation-menu.tsx +++ b/packages/ui/src/components/navigation-menu.tsx @@ -1,9 +1,9 @@ -// @ts-nocheck -import { ChevronDownIcon } from '@radix-ui/react-icons'; import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'; import { cva } from 'class-variance-authority'; +import { ChevronDown } from 'lucide-react'; import * as React from 'react'; -import { cn } from '../../lib/utils'; + +import { cn } from '@workspace/ui/lib/utils'; const NavigationMenu = React.forwardRef< React.ElementRef, @@ -48,7 +48,7 @@ const NavigationMenuTrigger = React.forwardRef< {...props} > {children}{' '} -
- - -
- <> - - - - -
- - <> - - - - - -