plotly-cloud 0.1.0rc5__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/PKG-INFO +6 -10
  2. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/README.md +3 -7
  3. plotly_cloud-0.2.0/plotly_cloud/__init__.py +3 -0
  4. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_api_types.py +22 -1
  5. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_cloud_env.py +2 -2
  6. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_commands.py +104 -7
  7. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_definitions.py +5 -3
  8. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_deploy.py +44 -3
  9. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_devtool_hooks.py +11 -1
  10. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_devtool_publish_rpc.py +20 -2
  11. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_oauth.py +3 -3
  12. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/cloud-env.toml +1 -1
  13. plotly_cloud-0.2.0/plotly_cloud/cloud_devtools.js +15 -0
  14. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/exceptions.py +2 -2
  15. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/pyproject.toml +5 -3
  16. plotly_cloud-0.1.0rc5/plotly_cloud/__init__.py +0 -3
  17. plotly_cloud-0.1.0rc5/plotly_cloud/cloud_devtools.js +0 -15
  18. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/.gitignore +0 -0
  19. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/LICENSE +0 -0
  20. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_changes.py +0 -0
  21. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/_parser.py +0 -0
  22. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/cli.py +0 -0
  23. {plotly_cloud-0.1.0rc5 → plotly_cloud-0.2.0}/plotly_cloud/cloud_devtools.css +0 -0
@@ -1,21 +1,21 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plotly-cloud
3
- Version: 0.1.0rc5
4
- Summary: CLI for interacting with Plotly Cloud to deploy Dash apps
3
+ Version: 0.2.0
4
+ Summary: Python extension for Plotly Cloud with CLI and Dash dev tools integration
5
+ Project-URL: Repository, https://github.com/plotly/plotly-cloud-extension
5
6
  License-File: LICENSE
6
7
  Requires-Python: >=3.9
7
8
  Requires-Dist: dash>=2.0.0
8
9
  Requires-Dist: httpx<1.0.0,>=0.24.0
9
10
  Requires-Dist: nest-asyncio>=1.6.0
10
- Requires-Dist: rich-argparse>=1.7.1
11
11
  Requires-Dist: rich>=10.0.0
12
12
  Requires-Dist: tomli-w>=1.2.0
13
13
  Requires-Dist: tomli>=2.2.1
14
14
  Description-Content-Type: text/markdown
15
15
 
16
- # Plotly Cloud CLI
16
+ # Plotly Cloud Extension
17
17
 
18
- A command-line interface for interacting with Plotly Cloud to publish and manage Dash applications.
18
+ A Python extension for [Plotly Cloud](https://cloud.plotly.com) that provides both a command-line interface and Dash dev tools integration for publishing and managing Dash applications.
19
19
 
20
20
  ## Features
21
21
 
@@ -67,10 +67,6 @@ plotly publish --poll-status=false
67
67
  plotly logout
68
68
  ```
69
69
 
70
- ## Environment Configuration
71
-
72
- The CLI uses a `cloud-env.toml` file for environment-specific configuration (OAuth client IDs, API URLs). This file is gitignored and should be created during development or at packaging time.
73
-
74
70
  ## Usage
75
71
 
76
72
  ### Authentication Commands
@@ -275,7 +271,7 @@ If you prefer not to use Just:
275
271
  ### Project Structure
276
272
 
277
273
  ```
278
- plotly-cloud-cli/
274
+ plotly-cloud-extension/
279
275
  ├── plotly_cloud/
280
276
  │ ├── __init__.py # Package initialization
281
277
  │ ├── cli.py # Main CLI entry point
@@ -1,6 +1,6 @@
1
- # Plotly Cloud CLI
1
+ # Plotly Cloud Extension
2
2
 
3
- A command-line interface for interacting with Plotly Cloud to publish and manage Dash applications.
3
+ A Python extension for [Plotly Cloud](https://cloud.plotly.com) that provides both a command-line interface and Dash dev tools integration for publishing and managing Dash applications.
4
4
 
5
5
  ## Features
6
6
 
@@ -52,10 +52,6 @@ plotly publish --poll-status=false
52
52
  plotly logout
53
53
  ```
54
54
 
55
- ## Environment Configuration
56
-
57
- The CLI uses a `cloud-env.toml` file for environment-specific configuration (OAuth client IDs, API URLs). This file is gitignored and should be created during development or at packaging time.
58
-
59
55
  ## Usage
60
56
 
61
57
  ### Authentication Commands
@@ -260,7 +256,7 @@ If you prefer not to use Just:
260
256
  ### Project Structure
261
257
 
262
258
  ```
263
- plotly-cloud-cli/
259
+ plotly-cloud-extension/
264
260
  ├── plotly_cloud/
265
261
  │ ├── __init__.py # Package initialization
266
262
  │ ├── cli.py # Main CLI entry point
@@ -0,0 +1,3 @@
1
+ """Plotly Cloud Extension package."""
2
+
3
+ __version__ = "0.2.0"
@@ -1,4 +1,4 @@
1
- """API type definitions for Plotly Cloud."""
1
+ """Autogenerated API type definitions for Plotly Cloud."""
2
2
 
3
3
  from typing import Any, Dict, List
4
4
 
@@ -11,16 +11,31 @@ class AppRequest(TypedDict):
11
11
  name: NotRequired[str]
12
12
  appUrl: NotRequired[str]
13
13
  description: NotRequired[str]
14
+ teamId: NotRequired[str]
14
15
  isViewPrivate: NotRequired[str]
16
+ watermarkEnabled: NotRequired[str]
15
17
  invitations: NotRequired[List[str]]
16
18
  environmentVariables: NotRequired[List[Dict[str, Any]]]
17
19
 
20
+
18
21
  EnvironmentVariables = Dict[str, Any]
19
22
 
23
+
20
24
  class ErrorResponse(TypedDict):
21
25
  error: NotRequired[str]
22
26
  error_description: NotRequired[str]
23
27
 
28
+
29
+ class Team(TypedDict):
30
+ id: str
31
+ schematic_company_id: NotRequired[str]
32
+ organization_id: NotRequired[str]
33
+ name: str
34
+ description: NotRequired[str]
35
+ created_at: NotRequired[str]
36
+ updated_at: NotRequired[str]
37
+
38
+
24
39
  class App(TypedDict):
25
40
  id: NotRequired[str]
26
41
  author_id: NotRequired[str]
@@ -28,6 +43,7 @@ class App(TypedDict):
28
43
  description: NotRequired[str]
29
44
  app_url: NotRequired[str]
30
45
  is_view_private: NotRequired[bool]
46
+ watermark_enabled: NotRequired[bool]
31
47
  created_with_desktop: NotRequired[bool]
32
48
  desktop_app_version: NotRequired[str]
33
49
  environment_variables: NotRequired[EnvironmentVariables]
@@ -35,3 +51,8 @@ class App(TypedDict):
35
51
  status: NotRequired[str]
36
52
  created_at: NotRequired[str]
37
53
  last_published: NotRequired[str]
54
+
55
+
56
+ class UserTeamMembership(TypedDict):
57
+ team: Team
58
+ role: str
@@ -1,4 +1,4 @@
1
- """Cloud environment configuration management for Plotly Cloud CLI."""
1
+ """Cloud environment configuration management for Plotly Cloud Extension."""
2
2
 
3
3
  import os
4
4
  from pathlib import Path
@@ -12,7 +12,7 @@ console = Console()
12
12
 
13
13
 
14
14
  class CloudConfig:
15
- """Manages cloud configuration for Plotly Cloud CLI."""
15
+ """Manages cloud configuration for Plotly Cloud Extension."""
16
16
 
17
17
  def __init__(self):
18
18
  self._config_cache = None
@@ -1,4 +1,4 @@
1
- """Command implementations for Plotly Cloud CLI."""
1
+ """Command implementations for Plotly Cloud Extension."""
2
2
 
3
3
  import asyncio
4
4
  import importlib
@@ -8,7 +8,7 @@ import sys
8
8
  import tempfile
9
9
  import time
10
10
  import webbrowser
11
- from typing import Dict, List, TypedDict, cast
11
+ from typing import Dict, List, TypedDict
12
12
 
13
13
  from rich.console import Console
14
14
  from rich.live import Live
@@ -20,7 +20,7 @@ from rich.text import Text
20
20
 
21
21
  from plotly_cloud._changes import collect_module_files, until_change
22
22
  from plotly_cloud._cloud_env import cloud_config
23
- from plotly_cloud._definitions import REVISION_STATUS_MAP, CommandArgument, RevisionStatusInfo
23
+ from plotly_cloud._definitions import REVISION_STATUS_MAP, CommandArgument
24
24
  from plotly_cloud._deploy import (
25
25
  DeploymentClient,
26
26
  create_deployment_zip,
@@ -442,6 +442,14 @@ class PublishCommand(BaseCommand):
442
442
  "name": "--entrypoint-module",
443
443
  "help": "Entrypoint module for the application in 'module:variable' format (e.g., 'app:app')",
444
444
  },
445
+ {
446
+ "name": "--team-id",
447
+ "help": "Team ID to assign the app to (uses user's default team if not specified)",
448
+ },
449
+ {
450
+ "name": "--team",
451
+ "help": "Team name or slug to assign the app to (alternative to --team-id)",
452
+ },
445
453
  {
446
454
  "name": "--output",
447
455
  "help": "Output path for zip file of the published app (default: temporary file)",
@@ -535,9 +543,7 @@ class PublishCommand(BaseCommand):
535
543
  status_text.append("Timeout", style="bold yellow")
536
544
  return Panel(status_text, title="🚀 Publish Status", border_style="yellow", padding=(0, 1))
537
545
 
538
- status_info = cast(
539
- RevisionStatusInfo, REVISION_STATUS_MAP.get(status, {"label": status, "emoji": "⏳", "color": "white"})
540
- )
546
+ status_info = REVISION_STATUS_MAP.get(status, {"label": status, "emoji": "⏳", "color": "white"})
541
547
 
542
548
  status_text = Text()
543
549
  status_text.append(f"{status_info['emoji']} ", style="bold")
@@ -625,6 +631,38 @@ class PublishCommand(BaseCommand):
625
631
 
626
632
  progress.remove_task(validate_task)
627
633
 
634
+ # Resolve team_id if --team argument is provided
635
+ team_id = getattr(args, "team_id", None)
636
+ team_name_or_slug = getattr(args, "team", None)
637
+
638
+ if team_name_or_slug and not team_id:
639
+ # Need to resolve team name/slug to team_id
640
+ team_resolve_task = progress.add_task(f"Resolving team '{team_name_or_slug}'...", total=None)
641
+ try:
642
+ teams = await deploy_client.list_teams()
643
+ matching_team = None
644
+ for team in teams:
645
+ if (
646
+ team.get("name", "").lower() == team_name_or_slug.lower()
647
+ or team.get("team_slug", "").lower() == team_name_or_slug.lower()
648
+ or team.get("id", "").lower() == team_name_or_slug.lower()
649
+ ):
650
+ matching_team = team
651
+ break
652
+
653
+ if matching_team:
654
+ team_id = matching_team.get("id")
655
+ progress.update(
656
+ team_resolve_task, description=f"✓ Resolved team to: {matching_team.get('name')}"
657
+ )
658
+ else:
659
+ progress.stop()
660
+ raise ApplicationError(
661
+ f"Team '{team_name_or_slug}' not found. Use 'plotly teams' to list available teams."
662
+ )
663
+ finally:
664
+ progress.remove_task(team_resolve_task)
665
+
628
666
  try:
629
667
  # Create deployment zip
630
668
  package_task = progress.add_task("Creating deployment package...", total=None)
@@ -647,7 +685,7 @@ class PublishCommand(BaseCommand):
647
685
  deploy_task = progress.add_task(f"Creating new app: {app_name}...", total=None)
648
686
 
649
687
  entrypoint_module = getattr(args, "entrypoint_module", None)
650
- app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module)
688
+ app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module, team_id)
651
689
 
652
690
  progress.update(
653
691
  deploy_task,
@@ -835,6 +873,65 @@ class StatusCommand(BaseCommand):
835
873
  console.print()
836
874
 
837
875
 
876
+ class TeamsCommand(BaseCommand):
877
+ """List all teams for the authenticated user."""
878
+
879
+ name = "teams"
880
+ group = "user"
881
+ short_description = "👥 List all teams you have access to"
882
+ description = "Display all teams that you are a member of."
883
+ arguments: List[CommandArgument] = []
884
+
885
+ @classmethod
886
+ async def execute(cls, args: ParsedArguments) -> None:
887
+ """Execute teams command."""
888
+ # Get OAuth client for authentication
889
+ client_id = cloud_config.get_oauth_client_id()
890
+ oauth_client = OAuthClient(client_id)
891
+
892
+ # Check if authenticated
893
+ if not await oauth_client.is_authenticated():
894
+ raise ApplicationError("Not authenticated. Please run 'plotly login' first.")
895
+
896
+ # Get access token
897
+ auth_token = await oauth_client.get_access_token()
898
+ if not auth_token:
899
+ raise ApplicationError("Unable to retrieve access token. Please try logging in again.")
900
+
901
+ # List teams
902
+ async with DeploymentClient(oauth_client) as deploy_client:
903
+ teams = await deploy_client.list_teams()
904
+
905
+ if not teams:
906
+ console.print(Panel("You are not a member of any teams.", title="👥 Teams", border_style="yellow"))
907
+ return
908
+
909
+ # Create a table for the teams
910
+ table = Table(show_header=True, header_style="bold blue")
911
+ table.add_column("Name", style="cyan", no_wrap=True)
912
+ table.add_column("Slug", style="green")
913
+ table.add_column("Team ID", style="white", overflow="fold")
914
+ table.add_column("Created", style="magenta")
915
+
916
+ # Add rows for each team
917
+ for team in teams:
918
+ table.add_row(
919
+ team.get("name", "—"),
920
+ team.get("team_slug", "—"),
921
+ team.get("id", "—"),
922
+ team.get("created_at", "—")[:10] if team.get("created_at") else "—", # Show only date
923
+ )
924
+
925
+ console.print()
926
+ console.print(Panel.fit(table, title="👥 Your Teams", border_style="bold blue"))
927
+ console.print()
928
+ console.print(
929
+ "💡 Use [cyan]--team <name>[/cyan] or [cyan]--team-id <id>[/cyan] "
930
+ "with 'plotly publish' to publish to a specific team"
931
+ )
932
+ console.print()
933
+
934
+
838
935
  class WhoamiCommand(BaseCommand):
839
936
  """Show current user information."""
840
937
 
@@ -1,6 +1,6 @@
1
- """Type definitions for Plotly Cloud CLI."""
1
+ """Type definitions for Plotly Cloud Extension."""
2
2
 
3
- from typing import Literal, Union
3
+ from typing import Callable, Literal, Union
4
4
 
5
5
  from typing_extensions import NotRequired, TypedDict
6
6
 
@@ -20,7 +20,7 @@ class CommandArgument(TypedDict):
20
20
  name: str
21
21
  help: str
22
22
  action: NotRequired[str]
23
- type: NotRequired[type]
23
+ type: NotRequired[Union[type, Callable[[str], object]]]
24
24
  default: NotRequired[Union[str, int, float, bool]]
25
25
  choices: NotRequired[list]
26
26
  required: NotRequired[bool]
@@ -35,6 +35,8 @@ class AppDeploymentConfig(TypedDict):
35
35
  description: NotRequired[str]
36
36
  app_id: NotRequired[str]
37
37
  app_url: NotRequired[str]
38
+ team_id: NotRequired[str]
39
+ team_name: NotRequired[str]
38
40
 
39
41
 
40
42
  # Revision status enum values
@@ -1,4 +1,4 @@
1
- """Deployment utilities for Plotly Cloud CLI."""
1
+ """Deployment utilities for Plotly Cloud Extension."""
2
2
 
3
3
  import json
4
4
  import os
@@ -11,7 +11,7 @@ import httpx
11
11
  import tomli
12
12
  import tomli_w
13
13
 
14
- from plotly_cloud._api_types import App, AppRequest
14
+ from plotly_cloud._api_types import App, AppRequest, Team
15
15
  from plotly_cloud._cloud_env import cloud_config
16
16
  from plotly_cloud._definitions import AppDeploymentConfig
17
17
  from plotly_cloud._oauth import OAuthClient
@@ -327,13 +327,16 @@ class DeploymentClient:
327
327
  pass
328
328
  return False
329
329
 
330
- async def create_app(self, name: str, zip_path: str = "", entrypoint_module: Optional[str] = None) -> App:
330
+ async def create_app(
331
+ self, name: str, zip_path: str = "", entrypoint_module: Optional[str] = None, team_id: Optional[str] = None
332
+ ) -> App:
331
333
  """Create a new application and upload deployment in same request.
332
334
 
333
335
  Args:
334
336
  name: Application name
335
337
  zip_path: Path to deployment zip file to upload
336
338
  entrypoint_module: Entrypoint module for the application (e.g., "app:app")
339
+ team_id: Team ID to assign the app to (uses user's default team if not specified)
337
340
 
338
341
  Returns:
339
342
  App response from the API
@@ -354,6 +357,8 @@ class DeploymentClient:
354
357
  app_request: AppRequest = {"name": name}
355
358
  if entrypoint_module:
356
359
  app_request["entrypointModule"] = entrypoint_module
360
+ if team_id:
361
+ app_request["teamId"] = team_id
357
362
 
358
363
  # Upload deployment in same request as app creation
359
364
  retry_count = 0
@@ -468,3 +473,39 @@ class DeploymentClient:
468
473
  raise _handle_error_response(response, "get app status")
469
474
  except httpx.RequestError as e:
470
475
  raise NetworkError("Failed to get app status", str(e)) from e
476
+
477
+ async def list_teams(self) -> list[Team]:
478
+ """List all teams for the authenticated user.
479
+
480
+ Returns:
481
+ List of Team objects
482
+
483
+ Raises:
484
+ DeploymentClientError: If client is not initialized
485
+ APIError: If API call fails
486
+ NetworkError: If network request fails
487
+ """
488
+ if not self._client:
489
+ raise DeploymentClientError("Client not initialized. Use within async context manager.")
490
+
491
+ url = f"https://{self.api_base_url}/api/teams"
492
+
493
+ try:
494
+ retry_count = 0
495
+ response = None
496
+ while retry_count <= 1:
497
+ response = await self._client.get(url)
498
+
499
+ if response.status_code == 200:
500
+ teams: list[Team] = response.json()
501
+ return teams
502
+
503
+ token_refreshed = await self._refresh_token_if_needed(response)
504
+ if token_refreshed:
505
+ retry_count += 1
506
+ else:
507
+ break
508
+
509
+ raise _handle_error_response(response, "list teams")
510
+ except httpx.RequestError as e:
511
+ raise NetworkError("Failed to list teams", str(e)) from e
@@ -10,7 +10,17 @@ dash_version = _parse_version(dash.__version__)
10
10
 
11
11
 
12
12
  def _run_sync(coro):
13
- loop = asyncio.get_event_loop()
13
+ """Run an async coroutine synchronously, handling event loop correctly for Python 3.10+."""
14
+ try:
15
+ # Check if there's already a running loop
16
+ loop = asyncio.get_running_loop()
17
+ except RuntimeError:
18
+ # No running loop, try to get or create one
19
+ loop = asyncio.get_event_loop()
20
+ if loop is None or loop.is_closed():
21
+ loop = asyncio.new_event_loop()
22
+ asyncio.set_event_loop(loop)
23
+
14
24
  return loop.run_until_complete(coro)
15
25
 
16
26
 
@@ -33,7 +33,7 @@ class PublishOperations:
33
33
  class PublishOperation(TypedDict):
34
34
  """RPC operation structure for dev tools publishing."""
35
35
 
36
- operation: Literal["initialize", "authenticate", "auth_poll", "publish", "status"]
36
+ operation: Literal["initialize", "authenticate", "auth_poll", "publish", "status", "fetch_teams"]
37
37
  data: Any
38
38
 
39
39
 
@@ -189,6 +189,8 @@ class PlotlyCloudPublishRPC:
189
189
  status = "new"
190
190
  app_name = config.get("name", os.path.basename(project_path))
191
191
  app_url = ""
192
+ team_id = config.get("team_id")
193
+ team_name = config.get("team_name")
192
194
 
193
195
  if app_id is not None and is_authenticated:
194
196
  async with DeploymentClient(self.oauth_client) as deploy_client:
@@ -208,6 +210,8 @@ class PlotlyCloudPublishRPC:
208
210
  "app_path": project_path,
209
211
  "app_id": app_id,
210
212
  "app_url": app_url,
213
+ "team_id": team_id,
214
+ "team_name": team_name,
211
215
  "size_error": size_error if exceeds_limit else None,
212
216
  }
213
217
  }
@@ -243,10 +247,18 @@ class PlotlyCloudPublishRPC:
243
247
  app_url = format_app_url(status_data.get("app_url", ""))
244
248
  return {"result": {"status": status_data.get("status", ""), "app_url": app_url}}
245
249
 
250
+ async def fetch_teams(self, data: Any) -> RPCResponse:
251
+ """Fetch all teams for the authenticated user."""
252
+ async with DeploymentClient(self.oauth_client) as deploy_client:
253
+ teams = await deploy_client.list_teams()
254
+ return {"result": teams}
255
+
246
256
  async def publish(self, data: Any) -> RPCResponse:
247
257
  app_path = data.get("app_path")
248
258
  app_id = data.get("app_id")
249
259
  app_name = data.get("app_name")
260
+ team_id = data.get("team_id")
261
+ team_name = data.get("team_name")
250
262
 
251
263
  config_path = get_config_path(app_path)
252
264
 
@@ -272,7 +284,7 @@ class PlotlyCloudPublishRPC:
272
284
  return {"result": {"app_id": app_id, "app_url": format_app_url(app_data.get("app_url"))}}
273
285
  else:
274
286
  # create new app
275
- app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module)
287
+ app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module, team_id)
276
288
 
277
289
  config: AppDeploymentConfig = {
278
290
  "name": app_name,
@@ -280,6 +292,12 @@ class PlotlyCloudPublishRPC:
280
292
  "app_url": app_data.get("app_url", ""),
281
293
  }
282
294
 
295
+ # Save team info if provided
296
+ if team_id:
297
+ config["team_id"] = team_id
298
+ if team_name:
299
+ config["team_name"] = team_name
300
+
283
301
  save_deployment_config(config, config_path)
284
302
 
285
303
  return {"result": {"app_id": app_data.get("id"), "app_url": format_app_url(app_data.get("app_url"))}}
@@ -1,4 +1,4 @@
1
- """OAuth client implementation for Plotly Cloud CLI using WorkOS CLI Auth."""
1
+ """OAuth client implementation for Plotly Cloud Extension using WorkOS CLI Auth."""
2
2
 
3
3
  import asyncio
4
4
  import json
@@ -214,11 +214,11 @@ class OAuthClient:
214
214
  raise
215
215
 
216
216
  # Step 4: Save credentials
217
- await self._save_credentials(dict(tokens))
217
+ await self._save_credentials(tokens)
218
218
 
219
219
  return tokens
220
220
 
221
- async def _save_credentials(self, credentials: Dict[str, Any]):
221
+ async def _save_credentials(self, credentials: Union[AuthTokenResponse, Dict[str, Any]]):
222
222
  """Save credentials to file."""
223
223
  try:
224
224
  # Ensure parent directory exists
@@ -1,4 +1,4 @@
1
- # Plotly Cloud CLI Configuration
1
+ # Plotly Cloud Extension Configuration
2
2
  # This file contains the configuration for Plotly Cloud.
3
3
  # Edit this file to configure your OAuth client ID and API endpoint.
4
4
 
@@ -0,0 +1,15 @@
1
+ const React = window.React; const ReactDOM = window.ReactDOM;
2
+ "use strict";var plotly_cloud_publish_component=(()=>{var ka=Object.create;var K=Object.defineProperty;var ya=Object.getOwnPropertyDescriptor;var Fa=Object.getOwnPropertyNames;var Ba=Object.getPrototypeOf,Da=Object.prototype.hasOwnProperty;var wo=(o,a)=>()=>(a||o((a={exports:{}}).exports,a),a.exports),Ha=(o,a)=>{for(var r in a)K(o,r,{get:a[r],enumerable:!0})},Zo=(o,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of Fa(a))!Da.call(o,i)&&i!==r&&K(o,i,{get:()=>a[i],enumerable:!(e=ya(a,i))||e.enumerable});return o};var s=(o,a,r)=>(r=o!=null?ka(Ba(o)):{},Zo(a||!o||!o.__esModule?K(r,"default",{value:o,enumerable:!0}):r,o)),Ma=o=>Zo(K({},"__esModule",{value:!0}),o);var c=wo((Ya,_o)=>{_o.exports=React});var Jo=wo(Q=>{"use strict";var Ra=c(),Na=Symbol.for("react.element"),xa=Symbol.for("react.fragment"),va=Object.prototype.hasOwnProperty,Ua=Ra.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Ea={key:!0,ref:!0,__self:!0,__source:!0};function Xo(o,a,r){var e,i={},m=null,k=null;r!==void 0&&(m=""+r),a.key!==void 0&&(m=""+a.key),a.ref!==void 0&&(k=a.ref);for(e in a)va.call(a,e)&&!Ea.hasOwnProperty(e)&&(i[e]=a[e]);if(o&&o.defaultProps)for(e in a=o.defaultProps,a)i[e]===void 0&&(i[e]=a[e]);return{$$typeof:Na,type:o,key:m,ref:k,props:i,_owner:Ua.current}}Q.Fragment=xa;Q.jsx=Xo;Q.jsxs=Xo});var L=wo((or,Ko)=>{"use strict";Ko.exports=Jo()});var Ka={};Ha(Ka,{PlotlyCloudPublishComponent:()=>Ao});var t=s(c());var E=s(L()),Ga=({title:o,onClose:a,children:r})=>(0,E.jsx)("div",{className:"plotly-cloud-publish-modal-overlay",children:(0,E.jsxs)("div",{className:"plotly-cloud-publish-modal-content",children:[(0,E.jsxs)("div",{className:"plotly-cloud-publish-modal-header",children:[(0,E.jsx)("h3",{children:o},"modal-title"),(0,E.jsx)("button",{className:"plotly-cloud-publish-modal-close",onClick:a,children:"\xD7"},"modal-close")]}),(0,E.jsx)("div",{className:"plotly-cloud-publish-modal-body",children:r},"modal-body")]})}),Qo=Ga;var jo=s(c()),F=s(L()),Oa=o=>{let[a,r]=(0,jo.useState)(o.waiting);return(0,F.jsx)("div",{className:"plotly-cloud-publish-signin",children:a?(0,F.jsxs)("div",{children:[o.verificationUrlComplete?(0,F.jsxs)("div",{children:["A browser window should open for sign-in."," ",(0,F.jsx)("a",{href:o.verificationUrlComplete,target:"_blank",rel:"noopener noreferrer",children:"Click here"})," ","if it doesn't open automatically."]}):(0,F.jsx)("div",{children:"Preparing sign-in..."}),o.userCode?(0,F.jsxs)("div",{className:"plotly-cloud-confirm-code",children:["Confirm your device code"," ",(0,F.jsx)("span",{className:"plotly-cloud-user-code",children:o.userCode})," ","when prompted."]}):null]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)("span",{children:"Sign in to publish your app to Plotly Cloud."}),(0,F.jsx)("button",{className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",onClick:()=>{r(!0),o.onSignIn()},children:"Sign In"})]})})},Yo=Oa;var qa=o=>{let a=async e=>await(await fetch(`${o}_plotly_cloud_publish`,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}})).json(),r=e=>i=>a({operation:e,data:i});return{initialize:r("initialize"),authenticate:r("authenticate"),auth_poll:r("auth_poll"),publish:r("publish"),status:r("status"),fetch_teams:r("fetch_teams"),wait_auth:r("wait_auth"),logout:r("logout")}},$o=qa;var oa=s(c()),N=s(L()),Wa=({initialAppName:o="",onCancel:a,onPublish:r,sizeError:e=""})=>{let[i,m]=(0,oa.useState)(o);return(0,N.jsxs)("div",{className:"plotly-cloud-name-input",children:[e&&(0,N.jsx)("div",{className:"plotly-cloud-size-error",children:e}),(0,N.jsx)("div",{className:"plotly-cloud-name-input-label",children:"App Name"}),(0,N.jsxs)("form",{onSubmit:y=>{y.preventDefault(),i.trim()&&!e&&r(i.trim())},children:[(0,N.jsx)("input",{type:"text",value:i,onChange:y=>m(y.target.value),placeholder:"My Dash App",className:"plotly-cloud-name-input-field",disabled:!!e}),(0,N.jsx)("div",{className:"plotly-cloud-button-bar",children:(0,N.jsx)("button",{type:"submit",disabled:!i.trim()||!!e,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",children:"Publish App"})})]})]})},aa=Wa;var W=s(c());var f=s(c(),1),ra=new Map([["bold",f.createElement(f.Fragment,null,f.createElement("path",{d:"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z"}))],["duotone",f.createElement(f.Fragment,null,f.createElement("path",{d:"M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z",opacity:"0.2"}),f.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["fill",f.createElement(f.Fragment,null,f.createElement("path",{d:"M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z"}))],["light",f.createElement(f.Fragment,null,f.createElement("path",{d:"M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z"}))],["regular",f.createElement(f.Fragment,null,f.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["thin",f.createElement(f.Fragment,null,f.createElement("path",{d:"M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z"}))]]);var u=s(c(),1),sa=new Map([["bold",u.createElement(u.Fragment,null,u.createElement("path",{d:"M236,128a108,108,0,0,1-216,0c0-42.52,24.73-81.34,63-98.9A12,12,0,1,1,93,50.91C63.24,64.57,44,94.83,44,128a84,84,0,0,0,168,0c0-33.17-19.24-63.43-49-77.09A12,12,0,1,1,173,29.1C211.27,46.66,236,85.48,236,128Z"}))],["duotone",u.createElement(u.Fragment,null,u.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),u.createElement("path",{d:"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"}))],["fill",u.createElement(u.Fragment,null,u.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,176A72,72,0,0,1,92,65.64a8,8,0,0,1,8,13.85,56,56,0,1,0,56,0,8,8,0,0,1,8-13.85A72,72,0,0,1,128,200Z"}))],["light",u.createElement(u.Fragment,null,u.createElement("path",{d:"M230,128a102,102,0,0,1-204,0c0-40.18,23.35-76.86,59.5-93.45a6,6,0,0,1,5,10.9C58.61,60.09,38,92.49,38,128a90,90,0,0,0,180,0c0-35.51-20.61-67.91-52.5-82.55a6,6,0,0,1,5-10.9C206.65,51.14,230,87.82,230,128Z"}))],["regular",u.createElement(u.Fragment,null,u.createElement("path",{d:"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"}))],["thin",u.createElement(u.Fragment,null,u.createElement("path",{d:"M228,128a100,100,0,0,1-200,0c0-39.4,22.9-75.37,58.33-91.63a4,4,0,1,1,3.34,7.27C57.07,58.6,36,91.71,36,128a92,92,0,0,0,184,0c0-36.29-21.07-69.4-53.67-84.36a4,4,0,1,1,3.34-7.27C205.1,52.63,228,88.6,228,128Z"}))]]);var d=s(c(),1),ea=new Map([["bold",d.createElement(d.Fragment,null,d.createElement("path",{d:"M160,36A92.09,92.09,0,0,0,79,84.36,68,68,0,1,0,72,220h88a92,92,0,0,0,0-184Zm0,160H72a44,44,0,0,1-1.82-88A91.86,91.86,0,0,0,68,128a12,12,0,0,0,24,0,68,68,0,1,1,68,68Zm40.49-92.49a12,12,0,0,1,0,17l-48,48a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L144,143l39.51-39.52A12,12,0,0,1,200.49,103.51Z"}))],["duotone",d.createElement(d.Fragment,null,d.createElement("path",{d:"M240,128a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.74l0,.1A80,80,0,0,1,240,128Z",opacity:"0.2"}),d.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm37.66-93.66a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35A8,8,0,0,1,197.66,106.34Z"}))],["fill",d.createElement(d.Fragment,null,d.createElement("path",{d:"M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-50.27-6.86-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35a8,8,0,0,1,11.32,11.32Z"}))],["light",d.createElement(d.Fragment,null,d.createElement("path",{d:"M160,42A86.11,86.11,0,0,0,82.43,90.88,62,62,0,1,0,72,214h88a86,86,0,0,0,0-172Zm0,160H72a50,50,0,0,1,0-100,50.67,50.67,0,0,1,5.91.35A85.61,85.61,0,0,0,74,128a6,6,0,0,0,12,0,74,74,0,1,1,74,74Zm36.24-94.24a6,6,0,0,1,0,8.48l-48,48a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L144,151.51l43.76-43.75A6,6,0,0,1,196.24,107.76Z"}))],["regular",d.createElement(d.Fragment,null,d.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm37.66-93.66a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35A8,8,0,0,1,197.66,106.34Z"}))],["thin",d.createElement(d.Fragment,null,d.createElement("path",{d:"M160,44A84.11,84.11,0,0,0,83.59,93.12,60.71,60.71,0,0,0,72,92a60,60,0,0,0,0,120h88a84,84,0,0,0,0-168Zm0,160H72a52,52,0,1,1,8.55-103.3A83.66,83.66,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,1,1,76,76Zm34.83-94.83a4,4,0,0,1,0,5.66l-48,48a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L144,154.34l45.17-45.17A4,4,0,0,1,194.83,109.17Z"}))]]);var g=s(c(),1),na=new Map([["bold",g.createElement(g.Fragment,null,g.createElement("path",{d:"M56.88,31.93A12,12,0,1,0,39.12,48.07L71.79,84A68,68,0,0,0,72,220h88a91.26,91.26,0,0,0,30.66-5.24l8.46,9.31a12,12,0,0,0,17.76-16.14ZM160,196H72a44,44,0,0,1-1.8-87.95A91.91,91.91,0,0,0,68,128a12,12,0,0,0,24,0,68.22,68.22,0,0,1,2.66-18.84l77.88,85.67A68.67,68.67,0,0,1,160,196Zm92-68a91.32,91.32,0,0,1-17.53,54,12,12,0,1,1-19.41-14.11,68,68,0,0,0-89.57-98.53,12,12,0,0,1-12.2-20.66A92,92,0,0,1,252,128Z"}))],["duotone",g.createElement(g.Fragment,null,g.createElement("path",{d:"M240,128a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.74l0,.1A80,80,0,0,1,240,128Z",opacity:"0.2"}),g.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L81.32,88.55l-.06.12A65,65,0,0,0,72,88a64,64,0,0,0,0,128h88a87.34,87.34,0,0,0,31.8-5.93l10.28,11.31a8,8,0,1,0,11.84-10.76ZM160,200H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.3.12A88.4,88.4,0,0,0,72,128a8,8,0,0,0,16,0,72.25,72.25,0,0,1,5.06-26.54l87,95.7A71.66,71.66,0,0,1,160,200Zm88-72a87.89,87.89,0,0,1-22.35,58.61A8,8,0,0,1,213.71,176,72,72,0,0,0,117.37,70a8,8,0,0,1-9.48-12.89A88,88,0,0,1,248,128Z"}))],["fill",g.createElement(g.Fragment,null,g.createElement("path",{d:"M248,128.72A87.74,87.74,0,0,1,222.41,190a4,4,0,0,1-5.77-.16L103.78,65.67a4,4,0,0,1,.39-5.76A87.82,87.82,0,0,1,160.87,40C209.15,40.47,248.38,80.43,248,128.72ZM53.92,34.62A8,8,0,1,0,42.08,45.38L81.33,88.56l-.06.11A64,64,0,0,0,8,153c.53,35.12,29.84,63,65,63h87a87.65,87.65,0,0,0,31.78-5.95l10.3,11.33a8,8,0,0,0,11.33.52,8.32,8.32,0,0,0,.29-11.52Z"}))],["light",g.createElement(g.Fragment,null,g.createElement("path",{d:"M52.44,36A6,6,0,0,0,43.56,44l40.18,44.2c-.45.87-.9,1.75-1.32,2.64A62,62,0,1,0,72,214h88a85.23,85.23,0,0,0,32.35-6.3L203.56,220a6,6,0,0,0,8.88-8.08ZM160,202H72a50,50,0,1,1,5.9-99.64A86.25,86.25,0,0,0,74,128a6,6,0,0,0,12,0,73.92,73.92,0,0,1,6.44-30.2l91.22,100.34A73.65,73.65,0,0,1,160,202Zm86-74a85.85,85.85,0,0,1-21.85,57.27,6,6,0,0,1-4.47,2,6,6,0,0,1-4.47-10,74,74,0,0,0-99-108.92,6,6,0,1,1-7.11-9.67A86,86,0,0,1,246,128Z"}))],["regular",g.createElement(g.Fragment,null,g.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L81.32,88.55l-.06.12A65,65,0,0,0,72,88a64,64,0,0,0,0,128h88a87.34,87.34,0,0,0,31.8-5.93l10.28,11.31a8,8,0,1,0,11.84-10.76ZM160,200H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.3.12A88.4,88.4,0,0,0,72,128a8,8,0,0,0,16,0,72.25,72.25,0,0,1,5.06-26.54l87,95.7A71.66,71.66,0,0,1,160,200Zm88-72a87.89,87.89,0,0,1-22.35,58.61A8,8,0,0,1,213.71,176,72,72,0,0,0,117.37,70a8,8,0,0,1-9.48-12.89A88,88,0,0,1,248,128Z"}))],["thin",g.createElement(g.Fragment,null,g.createElement("path",{d:"M51,37.31A4,4,0,0,0,45,42.69L86.16,87.93q-1.38,2.55-2.59,5.19A60,60,0,1,0,72,212h88a83.19,83.19,0,0,0,32.88-6.69L205,218.69a4,4,0,1,0,5.92-5.38ZM160,204H72a52,52,0,0,1,0-104,52.92,52.92,0,0,1,8.54.72A84.21,84.21,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,0,1,7.9-33.76L187.13,199A75.37,75.37,0,0,1,160,204Zm84-76a83.86,83.86,0,0,1-21.34,55.94,4,4,0,1,1-6-5.33A76,76,0,0,0,115,66.75a4,4,0,0,1-4.74-6.45A84,84,0,0,1,244,128Z"}))]]);var S=s(c(),1),ia=new Map([["bold",S.createElement(S.Fragment,null,S.createElement("path",{d:"M160,36A92.09,92.09,0,0,0,79,84.36,68,68,0,1,0,72,220h88a92,92,0,0,0,0-184Zm0,160H72a44,44,0,0,1-1.82-88A91.86,91.86,0,0,0,68,128a12,12,0,0,0,24,0,68,68,0,1,1,68,68Zm32.49-79.51L177,132l15.52,15.51a12,12,0,0,1-17,17L160,149l-15.51,15.52a12,12,0,1,1-17-17L143,132l-15.52-15.51a12,12,0,1,1,17-17L160,115l15.51-15.52a12,12,0,0,1,17,17Z"}))],["duotone",S.createElement(S.Fragment,null,S.createElement("path",{d:"M240,127.62a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.36l0,.1A80,80,0,0,1,240,127.62Z",opacity:"0.2"}),S.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm29.66-82.34L171.31,136l18.35,18.34a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z"}))],["fill",S.createElement(S.Fragment,null,S.createElement("path",{d:"M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-58.27,29.82a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32L171.31,136Z"}))],["light",S.createElement(S.Fragment,null,S.createElement("path",{d:"M160,42A86.11,86.11,0,0,0,82.43,90.88,62,62,0,1,0,72,214h88a86,86,0,0,0,0-172Zm0,160H72a50,50,0,0,1,0-100,50.67,50.67,0,0,1,5.91.35A85.61,85.61,0,0,0,74,128a6,6,0,0,0,12,0,74,74,0,1,1,74,74Zm28.24-85.76L168.48,136l19.76,19.76a6,6,0,1,1-8.48,8.48L160,144.48l-19.76,19.76a6,6,0,0,1-8.48-8.48L151.52,136l-19.76-19.76a6,6,0,0,1,8.48-8.48L160,127.52l19.76-19.76a6,6,0,0,1,8.48,8.48Z"}))],["regular",S.createElement(S.Fragment,null,S.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm29.66-82.34L171.31,136l18.35,18.34a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",S.createElement(S.Fragment,null,S.createElement("path",{d:"M160,44A84.11,84.11,0,0,0,83.59,93.12,60.71,60.71,0,0,0,72,92a60,60,0,0,0,0,120h88a84,84,0,0,0,0-168Zm0,160H72a52,52,0,1,1,8.55-103.3A83.66,83.66,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,1,1,76,76Zm26.83-89.17L165.66,136l21.17,21.17a4,4,0,0,1-5.66,5.66L160,141.66l-21.17,21.17a4,4,0,0,1-5.66-5.66L154.34,136l-21.17-21.17a4,4,0,0,1,5.66-5.66L160,130.34l21.17-21.17a4,4,0,1,1,5.66,5.66Z"}))]]);var h=s(c(),1),ta=new Map([["bold",h.createElement(h.Fragment,null,h.createElement("path",{d:"M128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,80a28,28,0,1,1,28-28A28,28,0,0,1,128,156Zm92-27.21v-1.58l14-17.51a12,12,0,0,0,2.23-10.59A111.75,111.75,0,0,0,225,71.89,12,12,0,0,0,215.89,66L193.61,63.5l-1.11-1.11L190,40.1A12,12,0,0,0,184.11,31a111.67,111.67,0,0,0-27.23-11.27A12,12,0,0,0,146.3,22L128.79,36h-1.58L109.7,22a12,12,0,0,0-10.59-2.23A111.75,111.75,0,0,0,71.89,31.05,12,12,0,0,0,66,40.11L63.5,62.39,62.39,63.5,40.1,66A12,12,0,0,0,31,71.89,111.67,111.67,0,0,0,19.77,99.12,12,12,0,0,0,22,109.7l14,17.51v1.58L22,146.3a12,12,0,0,0-2.23,10.59,111.75,111.75,0,0,0,11.29,27.22A12,12,0,0,0,40.11,190l22.28,2.48,1.11,1.11L66,215.9A12,12,0,0,0,71.89,225a111.67,111.67,0,0,0,27.23,11.27A12,12,0,0,0,109.7,234l17.51-14h1.58l17.51,14a12,12,0,0,0,10.59,2.23A111.75,111.75,0,0,0,184.11,225a12,12,0,0,0,5.91-9.06l2.48-22.28,1.11-1.11L215.9,190a12,12,0,0,0,9.06-5.91,111.67,111.67,0,0,0,11.27-27.23A12,12,0,0,0,234,146.3Zm-24.12-4.89a70.1,70.1,0,0,1,0,8.2,12,12,0,0,0,2.61,8.22l12.84,16.05A86.47,86.47,0,0,1,207,166.86l-20.43,2.27a12,12,0,0,0-7.65,4,69,69,0,0,1-5.8,5.8,12,12,0,0,0-4,7.65L166.86,207a86.47,86.47,0,0,1-10.49,4.35l-16.05-12.85a12,12,0,0,0-7.5-2.62c-.24,0-.48,0-.72,0a70.1,70.1,0,0,1-8.2,0,12.06,12.06,0,0,0-8.22,2.6L99.63,211.33A86.47,86.47,0,0,1,89.14,207l-2.27-20.43a12,12,0,0,0-4-7.65,69,69,0,0,1-5.8-5.8,12,12,0,0,0-7.65-4L49,166.86a86.47,86.47,0,0,1-4.35-10.49l12.84-16.05a12,12,0,0,0,2.61-8.22,70.1,70.1,0,0,1,0-8.2,12,12,0,0,0-2.61-8.22L44.67,99.63A86.47,86.47,0,0,1,49,89.14l20.43-2.27a12,12,0,0,0,7.65-4,69,69,0,0,1,5.8-5.8,12,12,0,0,0,4-7.65L89.14,49a86.47,86.47,0,0,1,10.49-4.35l16.05,12.85a12.06,12.06,0,0,0,8.22,2.6,70.1,70.1,0,0,1,8.2,0,12,12,0,0,0,8.22-2.6l16.05-12.85A86.47,86.47,0,0,1,166.86,49l2.27,20.43a12,12,0,0,0,4,7.65,69,69,0,0,1,5.8,5.8,12,12,0,0,0,7.65,4L207,89.14a86.47,86.47,0,0,1,4.35,10.49l-12.84,16.05A12,12,0,0,0,195.88,123.9Z"}))],["duotone",h.createElement(h.Fragment,null,h.createElement("path",{d:"M207.86,123.18l16.78-21a99.14,99.14,0,0,0-10.07-24.29l-26.7-3a81,81,0,0,0-6.81-6.81l-3-26.71a99.43,99.43,0,0,0-24.3-10l-21,16.77a81.59,81.59,0,0,0-9.64,0l-21-16.78A99.14,99.14,0,0,0,77.91,41.43l-3,26.7a81,81,0,0,0-6.81,6.81l-26.71,3a99.43,99.43,0,0,0-10,24.3l16.77,21a81.59,81.59,0,0,0,0,9.64l-16.78,21a99.14,99.14,0,0,0,10.07,24.29l26.7,3a81,81,0,0,0,6.81,6.81l3,26.71a99.43,99.43,0,0,0,24.3,10l21-16.77a81.59,81.59,0,0,0,9.64,0l21,16.78a99.14,99.14,0,0,0,24.29-10.07l3-26.7a81,81,0,0,0,6.81-6.81l26.71-3a99.43,99.43,0,0,0,10-24.3l-16.77-21A81.59,81.59,0,0,0,207.86,123.18ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z",opacity:"0.2"}),h.createElement("path",{d:"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8.06,8.06,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8.06,8.06,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z"}))],["fill",h.createElement(h.Fragment,null,h.createElement("path",{d:"M216,130.16q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z"}))],["light",h.createElement(h.Fragment,null,h.createElement("path",{d:"M128,82a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162ZM214,130.84c.06-1.89.06-3.79,0-5.68L229.33,106a6,6,0,0,0,1.11-5.29A105.34,105.34,0,0,0,219.76,74.9a6,6,0,0,0-4.53-3l-24.45-2.71q-1.93-2.07-4-4l-2.72-24.46a6,6,0,0,0-3-4.53,105.65,105.65,0,0,0-25.77-10.66A6,6,0,0,0,150,26.68l-19.2,15.37c-1.89-.06-3.79-.06-5.68,0L106,26.67a6,6,0,0,0-5.29-1.11A105.34,105.34,0,0,0,74.9,36.24a6,6,0,0,0-3,4.53L69.23,65.22q-2.07,1.94-4,4L40.76,72a6,6,0,0,0-4.53,3,105.65,105.65,0,0,0-10.66,25.77A6,6,0,0,0,26.68,106l15.37,19.2c-.06,1.89-.06,3.79,0,5.68L26.67,150.05a6,6,0,0,0-1.11,5.29A105.34,105.34,0,0,0,36.24,181.1a6,6,0,0,0,4.53,3l24.45,2.71q1.94,2.07,4,4L72,215.24a6,6,0,0,0,3,4.53,105.65,105.65,0,0,0,25.77,10.66,6,6,0,0,0,5.29-1.11L125.16,214c1.89.06,3.79.06,5.68,0l19.21,15.38a6,6,0,0,0,3.75,1.31,6.2,6.2,0,0,0,1.54-.2,105.34,105.34,0,0,0,25.76-10.68,6,6,0,0,0,3-4.53l2.71-24.45q2.07-1.93,4-4l24.46-2.72a6,6,0,0,0,4.53-3,105.49,105.49,0,0,0,10.66-25.77,6,6,0,0,0-1.11-5.29Zm-3.1,41.63-23.64,2.63a6,6,0,0,0-3.82,2,75.14,75.14,0,0,1-6.31,6.31,6,6,0,0,0-2,3.82l-2.63,23.63A94.28,94.28,0,0,1,155.14,218l-18.57-14.86a6,6,0,0,0-3.75-1.31h-.36a78.07,78.07,0,0,1-8.92,0,6,6,0,0,0-4.11,1.3L100.87,218a94.13,94.13,0,0,1-17.34-7.17L80.9,187.21a6,6,0,0,0-2-3.82,75.14,75.14,0,0,1-6.31-6.31,6,6,0,0,0-3.82-2l-23.63-2.63A94.28,94.28,0,0,1,38,155.14l14.86-18.57a6,6,0,0,0,1.3-4.11,78.07,78.07,0,0,1,0-8.92,6,6,0,0,0-1.3-4.11L38,100.87a94.13,94.13,0,0,1,7.17-17.34L68.79,80.9a6,6,0,0,0,3.82-2,75.14,75.14,0,0,1,6.31-6.31,6,6,0,0,0,2-3.82l2.63-23.63A94.28,94.28,0,0,1,100.86,38l18.57,14.86a6,6,0,0,0,4.11,1.3,78.07,78.07,0,0,1,8.92,0,6,6,0,0,0,4.11-1.3L155.13,38a94.13,94.13,0,0,1,17.34,7.17l2.63,23.64a6,6,0,0,0,2,3.82,75.14,75.14,0,0,1,6.31,6.31,6,6,0,0,0,3.82,2l23.63,2.63A94.28,94.28,0,0,1,218,100.86l-14.86,18.57a6,6,0,0,0-1.3,4.11,78.07,78.07,0,0,1,0,8.92,6,6,0,0,0,1.3,4.11L218,155.13A94.13,94.13,0,0,1,210.85,172.47Z"}))],["regular",h.createElement(h.Fragment,null,h.createElement("path",{d:"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z"}))],["thin",h.createElement(h.Fragment,null,h.createElement("path",{d:"M128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Zm83.93-32.49q.13-3.51,0-7l15.83-19.79a4,4,0,0,0,.75-3.53A103.64,103.64,0,0,0,218,75.9a4,4,0,0,0-3-2l-25.19-2.8c-1.58-1.71-3.24-3.37-4.95-4.95L182.07,41a4,4,0,0,0-2-3A104,104,0,0,0,154.82,27.5a4,4,0,0,0-3.53.74L131.51,44.07q-3.51-.14-7,0L104.7,28.24a4,4,0,0,0-3.53-.75A103.64,103.64,0,0,0,75.9,38a4,4,0,0,0-2,3l-2.8,25.19c-1.71,1.58-3.37,3.24-4.95,4.95L41,73.93a4,4,0,0,0-3,2A104,104,0,0,0,27.5,101.18a4,4,0,0,0,.74,3.53l15.83,19.78q-.14,3.51,0,7L28.24,151.3a4,4,0,0,0-.75,3.53A103.64,103.64,0,0,0,38,180.1a4,4,0,0,0,3,2l25.19,2.8c1.58,1.71,3.24,3.37,4.95,4.95l2.8,25.2a4,4,0,0,0,2,3,104,104,0,0,0,25.28,10.46,4,4,0,0,0,3.53-.74l19.78-15.83q3.51.13,7,0l19.79,15.83a4,4,0,0,0,2.5.88,4,4,0,0,0,1-.13A103.64,103.64,0,0,0,180.1,218a4,4,0,0,0,2-3l2.8-25.19c1.71-1.58,3.37-3.24,4.95-4.95l25.2-2.8a4,4,0,0,0,3-2,104,104,0,0,0,10.46-25.28,4,4,0,0,0-.74-3.53Zm.17,42.83-24.67,2.74a4,4,0,0,0-2.55,1.32,76.2,76.2,0,0,1-6.48,6.48,4,4,0,0,0-1.32,2.55l-2.74,24.66a95.45,95.45,0,0,1-19.64,8.15l-19.38-15.51a4,4,0,0,0-2.5-.87h-.24a73.67,73.67,0,0,1-9.16,0,4,4,0,0,0-2.74.87l-19.37,15.5a95.33,95.33,0,0,1-19.65-8.13l-2.74-24.67a4,4,0,0,0-1.32-2.55,76.2,76.2,0,0,1-6.48-6.48,4,4,0,0,0-2.55-1.32l-24.66-2.74a95.45,95.45,0,0,1-8.15-19.64l15.51-19.38a4,4,0,0,0,.87-2.74,77.76,77.76,0,0,1,0-9.16,4,4,0,0,0-.87-2.74l-15.5-19.37A95.33,95.33,0,0,1,43.9,81.66l24.67-2.74a4,4,0,0,0,2.55-1.32,76.2,76.2,0,0,1,6.48-6.48,4,4,0,0,0,1.32-2.55l2.74-24.66a95.45,95.45,0,0,1,19.64-8.15l19.38,15.51a4,4,0,0,0,2.74.87,73.67,73.67,0,0,1,9.16,0,4,4,0,0,0,2.74-.87l19.37-15.5a95.33,95.33,0,0,1,19.65,8.13l2.74,24.67a4,4,0,0,0,1.32,2.55,76.2,76.2,0,0,1,6.48,6.48,4,4,0,0,0,2.55,1.32l24.66,2.74a95.45,95.45,0,0,1,8.15,19.64l-15.51,19.38a4,4,0,0,0-.87,2.74,77.76,77.76,0,0,1,0,9.16,4,4,0,0,0,.87,2.74l15.5,19.37A95.33,95.33,0,0,1,212.1,174.34Z"}))]]);var C=s(c(),1),ca=new Map([["bold",C.createElement(C.Fragment,null,C.createElement("path",{d:"M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z"}))],["duotone",C.createElement(C.Fragment,null,C.createElement("path",{d:"M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z",opacity:"0.2"}),C.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["fill",C.createElement(C.Fragment,null,C.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z"}))],["light",C.createElement(C.Fragment,null,C.createElement("path",{d:"M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z"}))],["regular",C.createElement(C.Fragment,null,C.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["thin",C.createElement(C.Fragment,null,C.createElement("path",{d:"M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z"}))]]);var w=s(c(),1),la=new Map([["bold",w.createElement(w.Fragment,null,w.createElement("path",{d:"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z"}))],["duotone",w.createElement(w.Fragment,null,w.createElement("path",{d:"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z",opacity:"0.2"}),w.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["fill",w.createElement(w.Fragment,null,w.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"}))],["light",w.createElement(w.Fragment,null,w.createElement("path",{d:"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z"}))],["regular",w.createElement(w.Fragment,null,w.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["thin",w.createElement(w.Fragment,null,w.createElement("path",{d:"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z"}))]]);var q=s(c(),1);var ma=s(c(),1),pa=(0,ma.createContext)({color:"currentColor",size:"1em",weight:"regular",mirrored:!1});var b=q.forwardRef((o,a)=>{let{alt:r,color:e,size:i,weight:m,mirrored:k,children:y,weights:l,...x}=o,{color:G="currentColor",size:D,weight:A="regular",mirrored:O=!1,...v}=q.useContext(pa);return q.createElement("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",width:i??D,height:i??D,fill:e??G,viewBox:"0 0 256 256",transform:k||O?"scale(-1, 1)":void 0,...v,...x},!!r&&q.createElement("title",null,r),y,l.get(m??A))});b.displayName="IconBase";var j=s(c(),1);var Y=j.forwardRef((o,a)=>j.createElement(b,{ref:a,...o,weights:ra}));Y.displayName="ArrowSquareOutIcon";var $=s(c(),1);var oo=$.forwardRef((o,a)=>$.createElement(b,{ref:a,...o,weights:sa}));oo.displayName="CircleNotchIcon";var ao=s(c(),1);var ro=ao.forwardRef((o,a)=>ao.createElement(b,{ref:a,...o,weights:ea}));ro.displayName="CloudCheckIcon";var so=s(c(),1);var eo=so.forwardRef((o,a)=>so.createElement(b,{ref:a,...o,weights:na}));eo.displayName="CloudSlashIcon";var no=s(c(),1);var io=no.forwardRef((o,a)=>no.createElement(b,{ref:a,...o,weights:ia}));io.displayName="CloudXIcon";var to=s(c(),1);var co=to.forwardRef((o,a)=>to.createElement(b,{ref:a,...o,weights:ta}));co.displayName="GearIcon";var lo=s(c(),1);var mo=lo.forwardRef((o,a)=>lo.createElement(b,{ref:a,...o,weights:ca}));mo.displayName="SignOutIcon";var po=s(c(),1);var Io=po.forwardRef((o,a)=>po.createElement(b,{ref:a,...o,weights:la}));Io.displayName="WarningIcon";var Ia=s(L()),Va=o=>(0,Ia.jsx)(oo,{size:o.size,className:"plotly-cloud-spin plotly-cloud-gray-icon",weight:"bold"}),z=Va;var P=s(L()),za=({initialAppName:o="",teams:a,loadingTeams:r,onCancel:e,onPublish:i,sizeError:m=""})=>{let[k,y]=(0,W.useState)(o),[l,x]=(0,W.useState)("");(0,W.useEffect)(()=>{a.length>0&&!l&&x(a[0].team.id)},[a,l]);let G=A=>{if(A.preventDefault(),k.trim()&&!m){let O=a.find(v=>v.team.id===l);i(k.trim(),l||void 0,O?.team.name||void 0)}},D=(0,W.useMemo)(()=>{if(!(r||!a||!a.length))return a.find(A=>A.team.id===l)},[a]);return r?null:(0,P.jsxs)("div",{className:"plotly-cloud-name-input",children:[m&&(0,P.jsx)("div",{className:"plotly-cloud-size-error",children:m}),(0,P.jsxs)("form",{onSubmit:G,children:[(0,P.jsx)("div",{className:"plotly-cloud-name-input-label",children:"App Name"}),(0,P.jsx)("input",{type:"text",value:k,onChange:A=>y(A.target.value),placeholder:"My Dash App",className:"plotly-cloud-name-input-field",disabled:!!m||r}),(0,P.jsx)("div",{className:"plotly-cloud-name-input-label",style:{marginTop:"16px"},children:"Team"}),r?(0,P.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"8px"},children:[(0,P.jsx)(z,{size:16}),(0,P.jsx)("span",{style:{marginLeft:"8px"},children:"Loading teams..."})]}):a.length===0?(0,P.jsx)("div",{style:{padding:"8px",color:"#666"},children:"No teams available"}):(0,P.jsx)("select",{value:l,onChange:A=>x(A.target.value),className:"plotly-cloud-name-input-field",disabled:!!m,children:a?.map(A=>(0,P.jsx)("option",{value:A.team.id,children:A.team.name},A.team.id))}),D&&D.team.description&&(0,P.jsx)("div",{style:{marginTop:"8px",fontSize:"12px",color:"#666"},children:D.team.description}),(0,P.jsx)("div",{className:"plotly-cloud-button-bar",children:(0,P.jsx)("button",{type:"submit",disabled:!k.trim()||!!m||r||a.length===0,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",children:"Publish App"})})]})]})},fa=za;var uo=s(c());var Z=s(L()),Za=({status:o,size:a=16,isButtonIcon:r})=>o==="BUILDING"||o==="STARTING"||o==="unknown"?(0,Z.jsx)(z,{size:a}):o==="RUNNING"?(0,Z.jsx)(ro,{size:a,className:"plotly-cloud-green-icon",weight:r?"fill":"duotone"}):o==="new"?(0,Z.jsx)(eo,{size:a,className:"plotly-cloud-gray-icon",weight:r?"fill":"duotone"}):(0,Z.jsx)(io,{size:a,className:"plotly-cloud-red-icon",weight:"duotone"}),fo=Za;var p=s(L()),_a=({status:o,onPublish:a,isUpdate:r,publishing:e,onCancel:i,onLogout:m,appUrl:k,teamName:y,sizeError:l=""})=>{let x=()=>{i&&i()},G=()=>{window.open(k,"_blank")},[D,A,O]=(0,uo.useMemo)(()=>o==="BUILDING"||o==="STARTING"?["App is building","Wait for your app to finish publishing before publishing again","gray"]:o==="RUNNING"?["App is live","Your app is running in Plotly Cloud.","green"]:["App is stopped","Start your app by publishing again or starting it in the app manager","red"],[o]),[v,_]=(0,uo.useMemo)(()=>e?r?["Open Settings in Plotly Cloud","Republishing",""]:[null,"Publishing",""]:r?[(0,p.jsxs)("span",{children:[(0,p.jsx)(co,{}),"\xA0Open Settings in Plotly Cloud"]}),"Republish"]:[null,"Publish",""],[e,r]),V=(0,uo.useMemo)(()=>["BUILDING","STARTING"].includes(o)||!!l,[o,l]);return(0,p.jsxs)("div",{className:"plotly-cloud-status-banner",children:[l&&(0,p.jsx)("div",{className:"plotly-cloud-size-error",children:l}),(0,p.jsxs)("div",{className:`plotly-cloud-status-info plotly-cloud-status-${O}`,children:[(0,p.jsx)(fo,{status:o,size:20}),(0,p.jsxs)("div",{className:"plotly-cloud-status-description",children:[(0,p.jsx)("div",{className:"plotly-cloud-status-title",children:D}),(0,p.jsx)("div",{className:"plotly-cloud-status-text",children:A}),y&&(0,p.jsxs)("div",{style:{marginTop:"4px",fontSize:"12px",color:"#666"},children:["Team: ",y]})]})]}),(0,p.jsxs)("div",{className:"plotly-cloud-button-bar",children:[(0,p.jsx)("div",{style:{flex:1},children:(0,p.jsxs)("button",{disabled:e,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary plotly-cloud-logout",onClick:m,children:[(0,p.jsx)(mo,{}),"\xA0Logout"]})}),v?(0,p.jsx)("button",{type:"button",onClick:x,disabled:r?!1:e,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:v}):null,k?(0,p.jsx)("button",{onClick:G,disabled:e,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:(0,p.jsxs)("span",{children:[(0,p.jsx)(Y,{}),"\xA0View App"]})}):null,(0,p.jsxs)("button",{type:"button",onClick:a,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",disabled:e||V,children:[e?(0,p.jsx)(z,{size:12}):null,_]})]})]})},Lo=_a;var go=s(L()),Xa=({error:o})=>(0,go.jsxs)("div",{className:"plotly-cloud-error",children:[(0,go.jsx)(Io,{className:"plotly-cloud-red-icon",size:24}),"\xA0",o]}),ua=Xa;function da(o){switch(o){case"BUILDING":return 1e4;case"STARTING":return 7e3;case"CHECKING":case"STOPPING":return 15e3;case"RUNNING":return 18e4;case"FAILING":case"PENDING_ENTITLEMENTS":case"BUILD_COMPLETED":case"BUILD_FAILED":case"STOPPED":case"DEPLOYED_BY_OTHER_PLATFORM":return 6e4;default:return 6e4}}var T=s(L()),So="cloud",Ja=()=>{let{popup:o,setPopup:a}=window.dash_component_api.devtool.useDevtool(),r=window.dash_component_api.devtool.useDevtoolMenuButtonClassName(So),[e,i]=(0,t.useState)(""),[m,k]=(0,t.useState)(""),[y,l]=(0,t.useState)("initialize"),[x,G]=(0,t.useState)(!1),[D,A]=(0,t.useState)(""),[O,v]=(0,t.useState)(""),[_,V]=(0,t.useState)(!1),[ga,ho]=(0,t.useState)(!1),[bo,Sa]=(0,t.useState)(""),[Po,To]=(0,t.useState)(""),[ko,yo]=(0,t.useState)(""),[Co,ha]=(0,t.useState)([]),[Fo,Bo]=(0,t.useState)(!1),[Do,Ho]=(0,t.useState)(""),[M,U]=(0,t.useState)("unknown"),[Mo,Ro]=(0,t.useState)(0),[Ca,wa]=(0,t.useState)(1),[No,xo]=(0,t.useState)(-1),X=(0,t.useRef)(""),R=(0,t.useRef)(""),B=(0,t.useMemo)(()=>$o("/"),[]),vo=(0,t.useMemo)(()=>o===So,[o]),J=()=>{a("")},La=()=>{a(o===So?"":So)},Uo=()=>{B.logout().then(()=>{l("initialize")})},Eo=()=>{G(!0),B.authenticate().then(n=>{n.error?i(n.error):(l("auth_poll"),A(n.result.user_code),v(n.result.verification_uri_complete),X.current=n.result.device_code,B.wait_auth().then(()=>{window.open(n.result.verification_uri_complete,"_blank"),xo(setTimeout(()=>{B.auth_poll({device_code:X.current}).then(Go)},8e3))}))})},Go=n=>{if(n.error)i(n.error);else{if(n.result.success){X.current="",R.current?(U("unknown"),l("update_app"),B.status({app_id:R.current}).then(H=>{U(H.result.status)})):(Oo(),l("enter_name"));return}if(n.result.try_again){Eo();return}let I=Ca||1;n.result.delay&&(I=n.result.delay,wa(I)),xo(setTimeout(()=>{B.auth_poll({device_code:X.current}).then(Go)},1e3+I*1e3))}},Aa=()=>{setTimeout(Eo,2e3)},Oo=()=>{Bo(!0),B.fetch_teams().then(n=>{n.error?console.error("Failed to fetch teams:",n.error):ha(n.result.teams),Bo(!1)})};(0,t.useEffect)(()=>{y==="initialize"&&B.initialize().then(n=>{let{result:I,error:H}=n;H?i(H):(Sa(I.app_path),To(I.app_name),U(I.status),yo(I.app_url),k(I.size_error||""),I.team_name&&Ho(I.team_name),I.app_id&&(R.current=I.app_id),I?.authenticated?I.status==="new"?(Oo(),l("enter_name")):l("update_app"):l("sign_in"))})},[y,vo]);let ba=()=>{B.status({app_id:R.current}).then(Pa)},Pa=n=>{if(n.error){i(n.error);return}U(n.result.status),Ro(Date.now()),n.result.status==="RUNNING"?(V(!1),ho(!0),l("update_app")):["BUILDING","STARTING"].includes(n.result.status)||(V(!1),l("update_app"))},qo=n=>{if(n.error){i(n.error);return}l("status_poll"),R.current=n.result.app_id,yo(n.result.app_url),U("BUILDING"),Ro(0)},Wo=(n,I,H)=>{To(n),H&&Ho(H),V(!0),ho(!1),U("BUILDING"),B.publish({app_path:bo,app_name:n,team_id:I,team_name:H}).then(qo)},Vo=()=>{V(!0),ho(!0),U("BUILDING"),B.publish({app_id:R.current,app_path:bo}).then(qo)};(0,t.useEffect)(()=>{if(!R.current||M==="unknown"||M==="new")return;let n=setInterval(()=>{let H=Date.now()-Mo,Ta=da(M);H>=Ta&&ba()},1e3);return()=>{clearInterval(n)}},[R.current,M,Mo]),(0,t.useEffect)(()=>()=>{No>0&&clearTimeout(No)}),(0,t.useEffect)(()=>{e&&M!=="error"&&U("error")},[e,M]);let zo=()=>{window.open(`https://cloud.plotly.com/app/${R.current}/settings`,"_blank")};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)("button",{className:r,onClick:La,children:[(0,T.jsx)(fo,{status:M,isButtonIcon:!0}),"\xA0Plotly Cloud"]}),vo?(0,T.jsx)(Qo,{title:"Plotly Cloud",onClose:J,children:e?(0,T.jsx)(ua,{error:e}):(()=>{switch(y){case"authenticate":case"auth_poll":case"sign_in":return(0,T.jsx)(Yo,{onSignIn:Aa,waiting:x,userCode:D,verificationUrlComplete:O});case"enter_name":return!Fo&&Co.length===1?(0,T.jsx)(aa,{onPublish:n=>{let I=Co[0];Wo(n,I.team.id,I.team.name)},onCancel:J,initialAppName:Po,sizeError:m}):(0,T.jsx)(fa,{onPublish:Wo,onCancel:J,initialAppName:Po,teams:Co,loadingTeams:Fo,sizeError:m});case"update_app":return(0,T.jsx)(Lo,{onPublish:Vo,status:M,isUpdate:!0,onCancel:zo,appUrl:ko,teamName:Do,onLogout:Uo,sizeError:m});case"status_poll":case"publish":return(0,T.jsx)(Lo,{publishing:_,onPublish:Vo,status:M,onCancel:_?zo:J,isUpdate:ga,appUrl:ko,teamName:Do,onLogout:Uo,sizeError:m});default:return(0,T.jsx)(T.Fragment,{})}})()},"publish-modal"):null]})},Ao=Ja;typeof window<"u"&&(window.plotly_cloud_publish_component={PlotlyCloudPublishComponent:Ao});return Ma(Ka);})();
3
+ /*! Bundled license information:
4
+
5
+ react/cjs/react-jsx-runtime.production.min.js:
6
+ (**
7
+ * @license React
8
+ * react-jsx-runtime.production.min.js
9
+ *
10
+ * Copyright (c) Facebook, Inc. and its affiliates.
11
+ *
12
+ * This source code is licensed under the MIT license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ *)
15
+ */
@@ -1,10 +1,10 @@
1
- """Custom exceptions for Plotly Cloud CLI."""
1
+ """Custom exceptions for Plotly Cloud Extension."""
2
2
 
3
3
  from typing import Optional
4
4
 
5
5
 
6
6
  class PlotlyCloudError(Exception):
7
- """Base exception for all Plotly Cloud CLI errors."""
7
+ """Base exception for all Plotly Cloud Extension errors."""
8
8
 
9
9
  def __init__(self, message: str, details: Optional[str] = None):
10
10
  """Initialize exception with message and optional details."""
@@ -4,20 +4,22 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "plotly-cloud"
7
- version = "0.1.0rc5"
8
- description = "CLI for interacting with Plotly Cloud to deploy Dash apps"
7
+ version = "0.2.0"
8
+ description = "Python extension for Plotly Cloud with CLI and Dash dev tools integration"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "httpx>=0.24.0,<1.0.0",
13
13
  "dash>=2.0.0",
14
14
  "rich>=10.0.0",
15
- "rich-argparse>=1.7.1",
16
15
  "tomli>=2.2.1",
17
16
  "tomli-w>=1.2.0",
18
17
  "nest-asyncio>=1.6.0",
19
18
  ]
20
19
 
20
+ [project.urls]
21
+ Repository = "https://github.com/plotly/plotly-cloud-extension"
22
+
21
23
  [project.scripts]
22
24
  plotly = "plotly_cloud.cli:main"
23
25
 
@@ -1,3 +0,0 @@
1
- """Plotly Cloud CLI package."""
2
-
3
- __version__ = "0.1.0"
@@ -1,15 +0,0 @@
1
- const React = window.React; const ReactDOM = window.ReactDOM;
2
- "use strict";var plotly_cloud_publish_component=(()=>{var ga=Object.create;var Z=Object.defineProperty;var Sa=Object.getOwnPropertyDescriptor;var ha=Object.getOwnPropertyNames;var Ca=Object.getPrototypeOf,wa=Object.prototype.hasOwnProperty;var So=(o,a)=>()=>(a||o((a={exports:{}}).exports,a),a.exports),La=(o,a)=>{for(var s in a)Z(o,s,{get:a[s],enumerable:!0})},xo=(o,a,s,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of ha(a))!wa.call(o,n)&&n!==s&&Z(o,n,{get:()=>a[n],enumerable:!(r=Sa(a,n))||r.enumerable});return o};var e=(o,a,s)=>(s=o!=null?ga(Ca(o)):{},xo(a||!o||!o.__esModule?Z(s,"default",{value:o,enumerable:!0}):s,o)),Aa=o=>xo(Z({},"__esModule",{value:!0}),o);var c=So((qa,Uo)=>{Uo.exports=React});var Eo=So(_=>{"use strict";var ba=c(),Pa=Symbol.for("react.element"),ka=Symbol.for("react.fragment"),Ta=Object.prototype.hasOwnProperty,ya=ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Fa={key:!0,ref:!0,__self:!0,__source:!0};function vo(o,a,s){var r,n={},L=null,T=null;s!==void 0&&(L=""+s),a.key!==void 0&&(L=""+a.key),a.ref!==void 0&&(T=a.ref);for(r in a)Ta.call(a,r)&&!Fa.hasOwnProperty(r)&&(n[r]=a[r]);if(o&&o.defaultProps)for(r in a=o.defaultProps,a)n[r]===void 0&&(n[r]=a[r]);return{$$typeof:Pa,type:o,key:L,ref:T,props:n,_owner:ya.current}}_.Fragment=ka;_.jsx=vo;_.jsxs=vo});var h=So((Va,Go)=>{"use strict";Go.exports=Eo()});var Ea={};La(Ea,{PlotlyCloudPublishComponent:()=>Co});var t=e(c());var M=e(h()),Ba=({title:o,onClose:a,children:s})=>(0,M.jsx)("div",{className:"plotly-cloud-publish-modal-overlay",children:(0,M.jsxs)("div",{className:"plotly-cloud-publish-modal-content",children:[(0,M.jsxs)("div",{className:"plotly-cloud-publish-modal-header",children:[(0,M.jsx)("h3",{children:o},"modal-title"),(0,M.jsx)("button",{className:"plotly-cloud-publish-modal-close",onClick:a,children:"\xD7"},"modal-close")]}),(0,M.jsx)("div",{className:"plotly-cloud-publish-modal-body",children:s},"modal-body")]})}),Oo=Ba;var qo=e(c()),k=e(h()),Da=o=>{let[a,s]=(0,qo.useState)(o.waiting);return(0,k.jsx)("div",{className:"plotly-cloud-publish-signin",children:a?(0,k.jsxs)("div",{children:[o.verificationUrlComplete?(0,k.jsxs)("div",{children:["A browser window should open for sign-in."," ",(0,k.jsx)("a",{href:o.verificationUrlComplete,target:"_blank",rel:"noopener noreferrer",children:"Click here"})," ","if it doesn't open automatically."]}):(0,k.jsx)("div",{children:"Preparing sign-in..."}),o.userCode?(0,k.jsxs)("div",{className:"plotly-cloud-confirm-code",children:["Confirm your device code"," ",(0,k.jsx)("span",{className:"plotly-cloud-user-code",children:o.userCode})," ","when prompted."]}):null]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("span",{children:"Sign in to publish your app to Plotly Cloud."}),(0,k.jsx)("button",{className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",onClick:()=>{s(!0),o.onSignIn()},children:"Sign In"})]})})},Wo=Da;var Ha=o=>{let a=async r=>await(await fetch(`${o}_plotly_cloud_publish`,{method:"POST",body:JSON.stringify(r),headers:{"Content-Type":"application/json"}})).json(),s=r=>n=>a({operation:r,data:n});return{initialize:s("initialize"),authenticate:s("authenticate"),auth_poll:s("auth_poll"),publish:s("publish"),status:s("status"),wait_auth:s("wait_auth"),logout:s("logout")}},Vo=Ha;var zo=e(c()),D=e(h()),Ma=({initialAppName:o="",onCancel:a,onPublish:s,sizeError:r=""})=>{let[n,L]=(0,zo.useState)(o);return(0,D.jsxs)("div",{className:"plotly-cloud-name-input",children:[r&&(0,D.jsx)("div",{className:"plotly-cloud-size-error",children:r}),(0,D.jsx)("div",{className:"plotly-cloud-name-input-label",children:"App Name"}),(0,D.jsxs)("form",{onSubmit:A=>{A.preventDefault(),n.trim()&&!r&&s(n.trim())},children:[(0,D.jsx)("input",{type:"text",value:n,onChange:A=>L(A.target.value),placeholder:"My Dash App",className:"plotly-cloud-name-input-field",disabled:!!r}),(0,D.jsx)("div",{className:"plotly-cloud-button-bar",children:(0,D.jsx)("button",{type:"submit",disabled:!n.trim()||!!r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",children:"Publish App"})})]})]})},Zo=Ma;var po=e(c());var l=e(c(),1),_o=new Map([["bold",l.createElement(l.Fragment,null,l.createElement("path",{d:"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z"}))],["duotone",l.createElement(l.Fragment,null,l.createElement("path",{d:"M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z",opacity:"0.2"}),l.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["fill",l.createElement(l.Fragment,null,l.createElement("path",{d:"M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z"}))],["light",l.createElement(l.Fragment,null,l.createElement("path",{d:"M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z"}))],["regular",l.createElement(l.Fragment,null,l.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["thin",l.createElement(l.Fragment,null,l.createElement("path",{d:"M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z"}))]]);var m=e(c(),1),Xo=new Map([["bold",m.createElement(m.Fragment,null,m.createElement("path",{d:"M236,128a108,108,0,0,1-216,0c0-42.52,24.73-81.34,63-98.9A12,12,0,1,1,93,50.91C63.24,64.57,44,94.83,44,128a84,84,0,0,0,168,0c0-33.17-19.24-63.43-49-77.09A12,12,0,1,1,173,29.1C211.27,46.66,236,85.48,236,128Z"}))],["duotone",m.createElement(m.Fragment,null,m.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),m.createElement("path",{d:"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"}))],["fill",m.createElement(m.Fragment,null,m.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,176A72,72,0,0,1,92,65.64a8,8,0,0,1,8,13.85,56,56,0,1,0,56,0,8,8,0,0,1,8-13.85A72,72,0,0,1,128,200Z"}))],["light",m.createElement(m.Fragment,null,m.createElement("path",{d:"M230,128a102,102,0,0,1-204,0c0-40.18,23.35-76.86,59.5-93.45a6,6,0,0,1,5,10.9C58.61,60.09,38,92.49,38,128a90,90,0,0,0,180,0c0-35.51-20.61-67.91-52.5-82.55a6,6,0,0,1,5-10.9C206.65,51.14,230,87.82,230,128Z"}))],["regular",m.createElement(m.Fragment,null,m.createElement("path",{d:"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60.15,61.59,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20.15-66.41-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z"}))],["thin",m.createElement(m.Fragment,null,m.createElement("path",{d:"M228,128a100,100,0,0,1-200,0c0-39.4,22.9-75.37,58.33-91.63a4,4,0,1,1,3.34,7.27C57.07,58.6,36,91.71,36,128a92,92,0,0,0,184,0c0-36.29-21.07-69.4-53.67-84.36a4,4,0,1,1,3.34-7.27C205.1,52.63,228,88.6,228,128Z"}))]]);var p=e(c(),1),Jo=new Map([["bold",p.createElement(p.Fragment,null,p.createElement("path",{d:"M160,36A92.09,92.09,0,0,0,79,84.36,68,68,0,1,0,72,220h88a92,92,0,0,0,0-184Zm0,160H72a44,44,0,0,1-1.82-88A91.86,91.86,0,0,0,68,128a12,12,0,0,0,24,0,68,68,0,1,1,68,68Zm40.49-92.49a12,12,0,0,1,0,17l-48,48a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L144,143l39.51-39.52A12,12,0,0,1,200.49,103.51Z"}))],["duotone",p.createElement(p.Fragment,null,p.createElement("path",{d:"M240,128a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.74l0,.1A80,80,0,0,1,240,128Z",opacity:"0.2"}),p.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm37.66-93.66a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35A8,8,0,0,1,197.66,106.34Z"}))],["fill",p.createElement(p.Fragment,null,p.createElement("path",{d:"M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-50.27-6.86-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35a8,8,0,0,1,11.32,11.32Z"}))],["light",p.createElement(p.Fragment,null,p.createElement("path",{d:"M160,42A86.11,86.11,0,0,0,82.43,90.88,62,62,0,1,0,72,214h88a86,86,0,0,0,0-172Zm0,160H72a50,50,0,0,1,0-100,50.67,50.67,0,0,1,5.91.35A85.61,85.61,0,0,0,74,128a6,6,0,0,0,12,0,74,74,0,1,1,74,74Zm36.24-94.24a6,6,0,0,1,0,8.48l-48,48a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L144,151.51l43.76-43.75A6,6,0,0,1,196.24,107.76Z"}))],["regular",p.createElement(p.Fragment,null,p.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm37.66-93.66a8,8,0,0,1,0,11.32l-48,48a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L144,148.69l42.34-42.35A8,8,0,0,1,197.66,106.34Z"}))],["thin",p.createElement(p.Fragment,null,p.createElement("path",{d:"M160,44A84.11,84.11,0,0,0,83.59,93.12,60.71,60.71,0,0,0,72,92a60,60,0,0,0,0,120h88a84,84,0,0,0,0-168Zm0,160H72a52,52,0,1,1,8.55-103.3A83.66,83.66,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,1,1,76,76Zm34.83-94.83a4,4,0,0,1,0,5.66l-48,48a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L144,154.34l45.17-45.17A4,4,0,0,1,194.83,109.17Z"}))]]);var I=e(c(),1),Ko=new Map([["bold",I.createElement(I.Fragment,null,I.createElement("path",{d:"M56.88,31.93A12,12,0,1,0,39.12,48.07L71.79,84A68,68,0,0,0,72,220h88a91.26,91.26,0,0,0,30.66-5.24l8.46,9.31a12,12,0,0,0,17.76-16.14ZM160,196H72a44,44,0,0,1-1.8-87.95A91.91,91.91,0,0,0,68,128a12,12,0,0,0,24,0,68.22,68.22,0,0,1,2.66-18.84l77.88,85.67A68.67,68.67,0,0,1,160,196Zm92-68a91.32,91.32,0,0,1-17.53,54,12,12,0,1,1-19.41-14.11,68,68,0,0,0-89.57-98.53,12,12,0,0,1-12.2-20.66A92,92,0,0,1,252,128Z"}))],["duotone",I.createElement(I.Fragment,null,I.createElement("path",{d:"M240,128a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.74l0,.1A80,80,0,0,1,240,128Z",opacity:"0.2"}),I.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L81.32,88.55l-.06.12A65,65,0,0,0,72,88a64,64,0,0,0,0,128h88a87.34,87.34,0,0,0,31.8-5.93l10.28,11.31a8,8,0,1,0,11.84-10.76ZM160,200H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.3.12A88.4,88.4,0,0,0,72,128a8,8,0,0,0,16,0,72.25,72.25,0,0,1,5.06-26.54l87,95.7A71.66,71.66,0,0,1,160,200Zm88-72a87.89,87.89,0,0,1-22.35,58.61A8,8,0,0,1,213.71,176,72,72,0,0,0,117.37,70a8,8,0,0,1-9.48-12.89A88,88,0,0,1,248,128Z"}))],["fill",I.createElement(I.Fragment,null,I.createElement("path",{d:"M248,128.72A87.74,87.74,0,0,1,222.41,190a4,4,0,0,1-5.77-.16L103.78,65.67a4,4,0,0,1,.39-5.76A87.82,87.82,0,0,1,160.87,40C209.15,40.47,248.38,80.43,248,128.72ZM53.92,34.62A8,8,0,1,0,42.08,45.38L81.33,88.56l-.06.11A64,64,0,0,0,8,153c.53,35.12,29.84,63,65,63h87a87.65,87.65,0,0,0,31.78-5.95l10.3,11.33a8,8,0,0,0,11.33.52,8.32,8.32,0,0,0,.29-11.52Z"}))],["light",I.createElement(I.Fragment,null,I.createElement("path",{d:"M52.44,36A6,6,0,0,0,43.56,44l40.18,44.2c-.45.87-.9,1.75-1.32,2.64A62,62,0,1,0,72,214h88a85.23,85.23,0,0,0,32.35-6.3L203.56,220a6,6,0,0,0,8.88-8.08ZM160,202H72a50,50,0,1,1,5.9-99.64A86.25,86.25,0,0,0,74,128a6,6,0,0,0,12,0,73.92,73.92,0,0,1,6.44-30.2l91.22,100.34A73.65,73.65,0,0,1,160,202Zm86-74a85.85,85.85,0,0,1-21.85,57.27,6,6,0,0,1-4.47,2,6,6,0,0,1-4.47-10,74,74,0,0,0-99-108.92,6,6,0,1,1-7.11-9.67A86,86,0,0,1,246,128Z"}))],["regular",I.createElement(I.Fragment,null,I.createElement("path",{d:"M53.92,34.62A8,8,0,1,0,42.08,45.38L81.32,88.55l-.06.12A65,65,0,0,0,72,88a64,64,0,0,0,0,128h88a87.34,87.34,0,0,0,31.8-5.93l10.28,11.31a8,8,0,1,0,11.84-10.76ZM160,200H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.3.12A88.4,88.4,0,0,0,72,128a8,8,0,0,0,16,0,72.25,72.25,0,0,1,5.06-26.54l87,95.7A71.66,71.66,0,0,1,160,200Zm88-72a87.89,87.89,0,0,1-22.35,58.61A8,8,0,0,1,213.71,176,72,72,0,0,0,117.37,70a8,8,0,0,1-9.48-12.89A88,88,0,0,1,248,128Z"}))],["thin",I.createElement(I.Fragment,null,I.createElement("path",{d:"M51,37.31A4,4,0,0,0,45,42.69L86.16,87.93q-1.38,2.55-2.59,5.19A60,60,0,1,0,72,212h88a83.19,83.19,0,0,0,32.88-6.69L205,218.69a4,4,0,1,0,5.92-5.38ZM160,204H72a52,52,0,0,1,0-104,52.92,52.92,0,0,1,8.54.72A84.21,84.21,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,0,1,7.9-33.76L187.13,199A75.37,75.37,0,0,1,160,204Zm84-76a83.86,83.86,0,0,1-21.34,55.94,4,4,0,1,1-6-5.33A76,76,0,0,0,115,66.75a4,4,0,0,1-4.74-6.45A84,84,0,0,1,244,128Z"}))]]);var f=e(c(),1),Qo=new Map([["bold",f.createElement(f.Fragment,null,f.createElement("path",{d:"M160,36A92.09,92.09,0,0,0,79,84.36,68,68,0,1,0,72,220h88a92,92,0,0,0,0-184Zm0,160H72a44,44,0,0,1-1.82-88A91.86,91.86,0,0,0,68,128a12,12,0,0,0,24,0,68,68,0,1,1,68,68Zm32.49-79.51L177,132l15.52,15.51a12,12,0,0,1-17,17L160,149l-15.51,15.52a12,12,0,1,1-17-17L143,132l-15.52-15.51a12,12,0,1,1,17-17L160,115l15.51-15.52a12,12,0,0,1,17,17Z"}))],["duotone",f.createElement(f.Fragment,null,f.createElement("path",{d:"M240,127.62a80,80,0,0,1-80,80H72A56,56,0,1,1,85.92,97.36l0,.1A80,80,0,0,1,240,127.62Z",opacity:"0.2"}),f.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm29.66-82.34L171.31,136l18.35,18.34a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z"}))],["fill",f.createElement(f.Fragment,null,f.createElement("path",{d:"M247.93,124.52C246.11,77.54,207.07,40,160.06,40A88.1,88.1,0,0,0,81.29,88.67h0A87.48,87.48,0,0,0,72,127.73,8.18,8.18,0,0,1,64.57,136,8,8,0,0,1,56,128a103.66,103.66,0,0,1,5.34-32.92,4,4,0,0,0-4.75-5.18A64.09,64.09,0,0,0,8,152c0,35.19,29.75,64,65,64H160A88.09,88.09,0,0,0,247.93,124.52Zm-58.27,29.82a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32L171.31,136Z"}))],["light",f.createElement(f.Fragment,null,f.createElement("path",{d:"M160,42A86.11,86.11,0,0,0,82.43,90.88,62,62,0,1,0,72,214h88a86,86,0,0,0,0-172Zm0,160H72a50,50,0,0,1,0-100,50.67,50.67,0,0,1,5.91.35A85.61,85.61,0,0,0,74,128a6,6,0,0,0,12,0,74,74,0,1,1,74,74Zm28.24-85.76L168.48,136l19.76,19.76a6,6,0,1,1-8.48,8.48L160,144.48l-19.76,19.76a6,6,0,0,1-8.48-8.48L151.52,136l-19.76-19.76a6,6,0,0,1,8.48-8.48L160,127.52l19.76-19.76a6,6,0,0,1,8.48,8.48Z"}))],["regular",f.createElement(f.Fragment,null,f.createElement("path",{d:"M160,40A88.09,88.09,0,0,0,81.29,88.67,64,64,0,1,0,72,216h88a88,88,0,0,0,0-176Zm0,160H72a48,48,0,0,1,0-96c1.1,0,2.2,0,3.29.11A88,88,0,0,0,72,128a8,8,0,0,0,16,0,72,72,0,1,1,72,72Zm29.66-82.34L171.31,136l18.35,18.34a8,8,0,0,1-11.32,11.32L160,147.31l-18.34,18.35a8,8,0,0,1-11.32-11.32L148.69,136l-18.35-18.34a8,8,0,0,1,11.32-11.32L160,124.69l18.34-18.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",f.createElement(f.Fragment,null,f.createElement("path",{d:"M160,44A84.11,84.11,0,0,0,83.59,93.12,60.71,60.71,0,0,0,72,92a60,60,0,0,0,0,120h88a84,84,0,0,0,0-168Zm0,160H72a52,52,0,1,1,8.55-103.3A83.66,83.66,0,0,0,76,128a4,4,0,0,0,8,0,76,76,0,1,1,76,76Zm26.83-89.17L165.66,136l21.17,21.17a4,4,0,0,1-5.66,5.66L160,141.66l-21.17,21.17a4,4,0,0,1-5.66-5.66L154.34,136l-21.17-21.17a4,4,0,0,1,5.66-5.66L160,130.34l21.17-21.17a4,4,0,1,1,5.66,5.66Z"}))]]);var u=e(c(),1),jo=new Map([["bold",u.createElement(u.Fragment,null,u.createElement("path",{d:"M128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,80a28,28,0,1,1,28-28A28,28,0,0,1,128,156Zm92-27.21v-1.58l14-17.51a12,12,0,0,0,2.23-10.59A111.75,111.75,0,0,0,225,71.89,12,12,0,0,0,215.89,66L193.61,63.5l-1.11-1.11L190,40.1A12,12,0,0,0,184.11,31a111.67,111.67,0,0,0-27.23-11.27A12,12,0,0,0,146.3,22L128.79,36h-1.58L109.7,22a12,12,0,0,0-10.59-2.23A111.75,111.75,0,0,0,71.89,31.05,12,12,0,0,0,66,40.11L63.5,62.39,62.39,63.5,40.1,66A12,12,0,0,0,31,71.89,111.67,111.67,0,0,0,19.77,99.12,12,12,0,0,0,22,109.7l14,17.51v1.58L22,146.3a12,12,0,0,0-2.23,10.59,111.75,111.75,0,0,0,11.29,27.22A12,12,0,0,0,40.11,190l22.28,2.48,1.11,1.11L66,215.9A12,12,0,0,0,71.89,225a111.67,111.67,0,0,0,27.23,11.27A12,12,0,0,0,109.7,234l17.51-14h1.58l17.51,14a12,12,0,0,0,10.59,2.23A111.75,111.75,0,0,0,184.11,225a12,12,0,0,0,5.91-9.06l2.48-22.28,1.11-1.11L215.9,190a12,12,0,0,0,9.06-5.91,111.67,111.67,0,0,0,11.27-27.23A12,12,0,0,0,234,146.3Zm-24.12-4.89a70.1,70.1,0,0,1,0,8.2,12,12,0,0,0,2.61,8.22l12.84,16.05A86.47,86.47,0,0,1,207,166.86l-20.43,2.27a12,12,0,0,0-7.65,4,69,69,0,0,1-5.8,5.8,12,12,0,0,0-4,7.65L166.86,207a86.47,86.47,0,0,1-10.49,4.35l-16.05-12.85a12,12,0,0,0-7.5-2.62c-.24,0-.48,0-.72,0a70.1,70.1,0,0,1-8.2,0,12.06,12.06,0,0,0-8.22,2.6L99.63,211.33A86.47,86.47,0,0,1,89.14,207l-2.27-20.43a12,12,0,0,0-4-7.65,69,69,0,0,1-5.8-5.8,12,12,0,0,0-7.65-4L49,166.86a86.47,86.47,0,0,1-4.35-10.49l12.84-16.05a12,12,0,0,0,2.61-8.22,70.1,70.1,0,0,1,0-8.2,12,12,0,0,0-2.61-8.22L44.67,99.63A86.47,86.47,0,0,1,49,89.14l20.43-2.27a12,12,0,0,0,7.65-4,69,69,0,0,1,5.8-5.8,12,12,0,0,0,4-7.65L89.14,49a86.47,86.47,0,0,1,10.49-4.35l16.05,12.85a12.06,12.06,0,0,0,8.22,2.6,70.1,70.1,0,0,1,8.2,0,12,12,0,0,0,8.22-2.6l16.05-12.85A86.47,86.47,0,0,1,166.86,49l2.27,20.43a12,12,0,0,0,4,7.65,69,69,0,0,1,5.8,5.8,12,12,0,0,0,7.65,4L207,89.14a86.47,86.47,0,0,1,4.35,10.49l-12.84,16.05A12,12,0,0,0,195.88,123.9Z"}))],["duotone",u.createElement(u.Fragment,null,u.createElement("path",{d:"M207.86,123.18l16.78-21a99.14,99.14,0,0,0-10.07-24.29l-26.7-3a81,81,0,0,0-6.81-6.81l-3-26.71a99.43,99.43,0,0,0-24.3-10l-21,16.77a81.59,81.59,0,0,0-9.64,0l-21-16.78A99.14,99.14,0,0,0,77.91,41.43l-3,26.7a81,81,0,0,0-6.81,6.81l-26.71,3a99.43,99.43,0,0,0-10,24.3l16.77,21a81.59,81.59,0,0,0,0,9.64l-16.78,21a99.14,99.14,0,0,0,10.07,24.29l26.7,3a81,81,0,0,0,6.81,6.81l3,26.71a99.43,99.43,0,0,0,24.3,10l21-16.77a81.59,81.59,0,0,0,9.64,0l21,16.78a99.14,99.14,0,0,0,24.29-10.07l3-26.7a81,81,0,0,0,6.81-6.81l26.71-3a99.43,99.43,0,0,0,10-24.3l-16.77-21A81.59,81.59,0,0,0,207.86,123.18ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z",opacity:"0.2"}),u.createElement("path",{d:"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8.06,8.06,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8.06,8.06,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z"}))],["fill",u.createElement(u.Fragment,null,u.createElement("path",{d:"M216,130.16q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z"}))],["light",u.createElement(u.Fragment,null,u.createElement("path",{d:"M128,82a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162ZM214,130.84c.06-1.89.06-3.79,0-5.68L229.33,106a6,6,0,0,0,1.11-5.29A105.34,105.34,0,0,0,219.76,74.9a6,6,0,0,0-4.53-3l-24.45-2.71q-1.93-2.07-4-4l-2.72-24.46a6,6,0,0,0-3-4.53,105.65,105.65,0,0,0-25.77-10.66A6,6,0,0,0,150,26.68l-19.2,15.37c-1.89-.06-3.79-.06-5.68,0L106,26.67a6,6,0,0,0-5.29-1.11A105.34,105.34,0,0,0,74.9,36.24a6,6,0,0,0-3,4.53L69.23,65.22q-2.07,1.94-4,4L40.76,72a6,6,0,0,0-4.53,3,105.65,105.65,0,0,0-10.66,25.77A6,6,0,0,0,26.68,106l15.37,19.2c-.06,1.89-.06,3.79,0,5.68L26.67,150.05a6,6,0,0,0-1.11,5.29A105.34,105.34,0,0,0,36.24,181.1a6,6,0,0,0,4.53,3l24.45,2.71q1.94,2.07,4,4L72,215.24a6,6,0,0,0,3,4.53,105.65,105.65,0,0,0,25.77,10.66,6,6,0,0,0,5.29-1.11L125.16,214c1.89.06,3.79.06,5.68,0l19.21,15.38a6,6,0,0,0,3.75,1.31,6.2,6.2,0,0,0,1.54-.2,105.34,105.34,0,0,0,25.76-10.68,6,6,0,0,0,3-4.53l2.71-24.45q2.07-1.93,4-4l24.46-2.72a6,6,0,0,0,4.53-3,105.49,105.49,0,0,0,10.66-25.77,6,6,0,0,0-1.11-5.29Zm-3.1,41.63-23.64,2.63a6,6,0,0,0-3.82,2,75.14,75.14,0,0,1-6.31,6.31,6,6,0,0,0-2,3.82l-2.63,23.63A94.28,94.28,0,0,1,155.14,218l-18.57-14.86a6,6,0,0,0-3.75-1.31h-.36a78.07,78.07,0,0,1-8.92,0,6,6,0,0,0-4.11,1.3L100.87,218a94.13,94.13,0,0,1-17.34-7.17L80.9,187.21a6,6,0,0,0-2-3.82,75.14,75.14,0,0,1-6.31-6.31,6,6,0,0,0-3.82-2l-23.63-2.63A94.28,94.28,0,0,1,38,155.14l14.86-18.57a6,6,0,0,0,1.3-4.11,78.07,78.07,0,0,1,0-8.92,6,6,0,0,0-1.3-4.11L38,100.87a94.13,94.13,0,0,1,7.17-17.34L68.79,80.9a6,6,0,0,0,3.82-2,75.14,75.14,0,0,1,6.31-6.31,6,6,0,0,0,2-3.82l2.63-23.63A94.28,94.28,0,0,1,100.86,38l18.57,14.86a6,6,0,0,0,4.11,1.3,78.07,78.07,0,0,1,8.92,0,6,6,0,0,0,4.11-1.3L155.13,38a94.13,94.13,0,0,1,17.34,7.17l2.63,23.64a6,6,0,0,0,2,3.82,75.14,75.14,0,0,1,6.31,6.31,6,6,0,0,0,3.82,2l23.63,2.63A94.28,94.28,0,0,1,218,100.86l-14.86,18.57a6,6,0,0,0-1.3,4.11,78.07,78.07,0,0,1,0,8.92,6,6,0,0,0,1.3,4.11L218,155.13A94.13,94.13,0,0,1,210.85,172.47Z"}))],["regular",u.createElement(u.Fragment,null,u.createElement("path",{d:"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z"}))],["thin",u.createElement(u.Fragment,null,u.createElement("path",{d:"M128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Zm83.93-32.49q.13-3.51,0-7l15.83-19.79a4,4,0,0,0,.75-3.53A103.64,103.64,0,0,0,218,75.9a4,4,0,0,0-3-2l-25.19-2.8c-1.58-1.71-3.24-3.37-4.95-4.95L182.07,41a4,4,0,0,0-2-3A104,104,0,0,0,154.82,27.5a4,4,0,0,0-3.53.74L131.51,44.07q-3.51-.14-7,0L104.7,28.24a4,4,0,0,0-3.53-.75A103.64,103.64,0,0,0,75.9,38a4,4,0,0,0-2,3l-2.8,25.19c-1.71,1.58-3.37,3.24-4.95,4.95L41,73.93a4,4,0,0,0-3,2A104,104,0,0,0,27.5,101.18a4,4,0,0,0,.74,3.53l15.83,19.78q-.14,3.51,0,7L28.24,151.3a4,4,0,0,0-.75,3.53A103.64,103.64,0,0,0,38,180.1a4,4,0,0,0,3,2l25.19,2.8c1.58,1.71,3.24,3.37,4.95,4.95l2.8,25.2a4,4,0,0,0,2,3,104,104,0,0,0,25.28,10.46,4,4,0,0,0,3.53-.74l19.78-15.83q3.51.13,7,0l19.79,15.83a4,4,0,0,0,2.5.88,4,4,0,0,0,1-.13A103.64,103.64,0,0,0,180.1,218a4,4,0,0,0,2-3l2.8-25.19c1.71-1.58,3.37-3.24,4.95-4.95l25.2-2.8a4,4,0,0,0,3-2,104,104,0,0,0,10.46-25.28,4,4,0,0,0-.74-3.53Zm.17,42.83-24.67,2.74a4,4,0,0,0-2.55,1.32,76.2,76.2,0,0,1-6.48,6.48,4,4,0,0,0-1.32,2.55l-2.74,24.66a95.45,95.45,0,0,1-19.64,8.15l-19.38-15.51a4,4,0,0,0-2.5-.87h-.24a73.67,73.67,0,0,1-9.16,0,4,4,0,0,0-2.74.87l-19.37,15.5a95.33,95.33,0,0,1-19.65-8.13l-2.74-24.67a4,4,0,0,0-1.32-2.55,76.2,76.2,0,0,1-6.48-6.48,4,4,0,0,0-2.55-1.32l-24.66-2.74a95.45,95.45,0,0,1-8.15-19.64l15.51-19.38a4,4,0,0,0,.87-2.74,77.76,77.76,0,0,1,0-9.16,4,4,0,0,0-.87-2.74l-15.5-19.37A95.33,95.33,0,0,1,43.9,81.66l24.67-2.74a4,4,0,0,0,2.55-1.32,76.2,76.2,0,0,1,6.48-6.48,4,4,0,0,0,1.32-2.55l2.74-24.66a95.45,95.45,0,0,1,19.64-8.15l19.38,15.51a4,4,0,0,0,2.74.87,73.67,73.67,0,0,1,9.16,0,4,4,0,0,0,2.74-.87l19.37-15.5a95.33,95.33,0,0,1,19.65,8.13l2.74,24.67a4,4,0,0,0,1.32,2.55,76.2,76.2,0,0,1,6.48,6.48,4,4,0,0,0,2.55,1.32l24.66,2.74a95.45,95.45,0,0,1,8.15,19.64l-15.51,19.38a4,4,0,0,0-.87,2.74,77.76,77.76,0,0,1,0,9.16,4,4,0,0,0,.87,2.74l15.5,19.37A95.33,95.33,0,0,1,212.1,174.34Z"}))]]);var d=e(c(),1),Yo=new Map([["bold",d.createElement(d.Fragment,null,d.createElement("path",{d:"M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z"}))],["duotone",d.createElement(d.Fragment,null,d.createElement("path",{d:"M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z",opacity:"0.2"}),d.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["fill",d.createElement(d.Fragment,null,d.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z"}))],["light",d.createElement(d.Fragment,null,d.createElement("path",{d:"M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z"}))],["regular",d.createElement(d.Fragment,null,d.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["thin",d.createElement(d.Fragment,null,d.createElement("path",{d:"M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z"}))]]);var g=e(c(),1),$o=new Map([["bold",g.createElement(g.Fragment,null,g.createElement("path",{d:"M240.26,186.1,152.81,34.23h0a28.74,28.74,0,0,0-49.62,0L15.74,186.1a27.45,27.45,0,0,0,0,27.71A28.31,28.31,0,0,0,40.55,228h174.9a28.31,28.31,0,0,0,24.79-14.19A27.45,27.45,0,0,0,240.26,186.1Zm-20.8,15.7a4.46,4.46,0,0,1-4,2.2H40.55a4.46,4.46,0,0,1-4-2.2,3.56,3.56,0,0,1,0-3.73L124,46.2a4.77,4.77,0,0,1,8,0l87.44,151.87A3.56,3.56,0,0,1,219.46,201.8ZM116,136V104a12,12,0,0,1,24,0v32a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,176Z"}))],["duotone",g.createElement(g.Fragment,null,g.createElement("path",{d:"M215.46,216H40.54C27.92,216,20,202.79,26.13,192.09L113.59,40.22c6.3-11,22.52-11,28.82,0l87.46,151.87C236,202.79,228.08,216,215.46,216Z",opacity:"0.2"}),g.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["fill",g.createElement(g.Fragment,null,g.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z"}))],["light",g.createElement(g.Fragment,null,g.createElement("path",{d:"M235.07,189.09,147.61,37.22h0a22.75,22.75,0,0,0-39.22,0L20.93,189.09a21.53,21.53,0,0,0,0,21.72A22.35,22.35,0,0,0,40.55,222h174.9a22.35,22.35,0,0,0,19.6-11.19A21.53,21.53,0,0,0,235.07,189.09ZM224.66,204.8a10.46,10.46,0,0,1-9.21,5.2H40.55a10.46,10.46,0,0,1-9.21-5.2,9.51,9.51,0,0,1,0-9.72L118.79,43.21a10.75,10.75,0,0,1,18.42,0l87.46,151.87A9.51,9.51,0,0,1,224.66,204.8ZM122,144V104a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,180Z"}))],["regular",g.createElement(g.Fragment,null,g.createElement("path",{d:"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM222.93,203.8a8.5,8.5,0,0,1-7.48,4.2H40.55a8.5,8.5,0,0,1-7.48-4.2,7.59,7.59,0,0,1,0-7.72L120.52,44.21a8.75,8.75,0,0,1,15,0l87.45,151.87A7.59,7.59,0,0,1,222.93,203.8ZM120,144V104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,180Z"}))],["thin",g.createElement(g.Fragment,null,g.createElement("path",{d:"M233.34,190.09,145.88,38.22h0a20.75,20.75,0,0,0-35.76,0L22.66,190.09a19.52,19.52,0,0,0,0,19.71A20.36,20.36,0,0,0,40.54,220H215.46a20.36,20.36,0,0,0,17.86-10.2A19.52,19.52,0,0,0,233.34,190.09ZM226.4,205.8a12.47,12.47,0,0,1-10.94,6.2H40.54a12.47,12.47,0,0,1-10.94-6.2,11.45,11.45,0,0,1,0-11.72L117.05,42.21a12.76,12.76,0,0,1,21.9,0L226.4,194.08A11.45,11.45,0,0,1,226.4,205.8ZM124,144V104a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,180Z"}))]]);var R=e(c(),1);var oa=e(c(),1),aa=(0,oa.createContext)({color:"currentColor",size:"1em",weight:"regular",mirrored:!1});var C=R.forwardRef((o,a)=>{let{alt:s,color:r,size:n,weight:L,mirrored:T,children:A,weights:b,...v}=o,{color:E="currentColor",size:N,weight:G="regular",mirrored:x=!1,...O}=R.useContext(aa);return R.createElement("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",width:n??N,height:n??N,fill:r??E,viewBox:"0 0 256 256",transform:T||x?"scale(-1, 1)":void 0,...O,...v},!!s&&R.createElement("title",null,s),A,b.get(L??G))});C.displayName="IconBase";var X=e(c(),1);var J=X.forwardRef((o,a)=>X.createElement(C,{ref:a,...o,weights:_o}));J.displayName="ArrowSquareOutIcon";var K=e(c(),1);var Q=K.forwardRef((o,a)=>K.createElement(C,{ref:a,...o,weights:Xo}));Q.displayName="CircleNotchIcon";var j=e(c(),1);var Y=j.forwardRef((o,a)=>j.createElement(C,{ref:a,...o,weights:Jo}));Y.displayName="CloudCheckIcon";var $=e(c(),1);var oo=$.forwardRef((o,a)=>$.createElement(C,{ref:a,...o,weights:Ko}));oo.displayName="CloudSlashIcon";var ao=e(c(),1);var ro=ao.forwardRef((o,a)=>ao.createElement(C,{ref:a,...o,weights:Qo}));ro.displayName="CloudXIcon";var so=e(c(),1);var eo=so.forwardRef((o,a)=>so.createElement(C,{ref:a,...o,weights:jo}));eo.displayName="GearIcon";var no=e(c(),1);var io=no.forwardRef((o,a)=>no.createElement(C,{ref:a,...o,weights:Yo}));io.displayName="SignOutIcon";var to=e(c(),1);var co=to.forwardRef((o,a)=>to.createElement(C,{ref:a,...o,weights:$o}));co.displayName="WarningIcon";var ra=e(h()),Ra=o=>(0,ra.jsx)(Q,{size:o.size,className:"plotly-cloud-spin plotly-cloud-gray-icon",weight:"bold"}),lo=Ra;var q=e(h()),Na=({status:o,size:a=16,isButtonIcon:s})=>o==="BUILDING"||o==="STARTING"||o==="unknown"?(0,q.jsx)(lo,{size:a}):o==="RUNNING"?(0,q.jsx)(Y,{size:a,className:"plotly-cloud-green-icon",weight:s?"fill":"duotone"}):o==="new"?(0,q.jsx)(oo,{size:a,className:"plotly-cloud-gray-icon",weight:s?"fill":"duotone"}):(0,q.jsx)(ro,{size:a,className:"plotly-cloud-red-icon",weight:"duotone"}),mo=Na;var S=e(h()),xa=({status:o,onPublish:a,isUpdate:s,publishing:r,onCancel:n,onLogout:L,appUrl:T,sizeError:A=""})=>{let b=()=>{n&&n()},v=()=>{window.open(T,"_blank")},[E,N,G]=(0,po.useMemo)(()=>o==="BUILDING"||o==="STARTING"?["App is building","Wait for your app to finish publishing before publishing again","gray"]:o==="RUNNING"?["App is live","Your app is running in Plotly Cloud.","green"]:["App is stopped","Start your app by publishing again or starting it in the app manager","red"],[o]),[x,O]=(0,po.useMemo)(()=>r?s?["Open Settings in Plotly Cloud","Republishing",""]:[null,"Publishing",""]:s?[(0,S.jsxs)("span",{children:[(0,S.jsx)(eo,{}),"\xA0Open Settings in Plotly Cloud"]}),"Republish"]:[null,"Publish",""],[r,s]),W=(0,po.useMemo)(()=>["BUILDING","STARTING"].includes(o)||!!A,[o,A]);return(0,S.jsxs)("div",{className:"plotly-cloud-status-banner",children:[A&&(0,S.jsx)("div",{className:"plotly-cloud-size-error",children:A}),(0,S.jsxs)("div",{className:`plotly-cloud-status-info plotly-cloud-status-${G}`,children:[(0,S.jsx)(mo,{status:o,size:20}),(0,S.jsxs)("div",{className:"plotly-cloud-status-description",children:[(0,S.jsx)("div",{className:"plotly-cloud-status-title",children:E}),(0,S.jsx)("div",{className:"plotly-cloud-status-text",children:N})]})]}),(0,S.jsxs)("div",{className:"plotly-cloud-button-bar",children:[(0,S.jsx)("div",{style:{flex:1},children:(0,S.jsxs)("button",{disabled:r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary plotly-cloud-logout",onClick:L,children:[(0,S.jsx)(io,{}),"\xA0Logout"]})}),x?(0,S.jsx)("button",{type:"button",onClick:b,disabled:s?!1:r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:x}):null,T?(0,S.jsx)("button",{onClick:v,disabled:r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:(0,S.jsxs)("span",{children:[(0,S.jsx)(J,{}),"\xA0View App"]})}):null,(0,S.jsxs)("button",{type:"button",onClick:a,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",disabled:r||W,children:[r?(0,S.jsx)(lo,{size:12}):null,O]})]})]})},ho=xa;var Io=e(h()),Ua=({error:o})=>(0,Io.jsxs)("div",{className:"plotly-cloud-error",children:[(0,Io.jsx)(co,{className:"plotly-cloud-red-icon",size:24}),"\xA0",o]}),sa=Ua;function ea(o){switch(o){case"BUILDING":return 1e4;case"STARTING":return 7e3;case"CHECKING":case"STOPPING":return 15e3;case"RUNNING":return 18e4;case"FAILING":case"PENDING_ENTITLEMENTS":case"BUILD_COMPLETED":case"BUILD_FAILED":case"STOPPED":case"DEPLOYED_BY_OTHER_PLATFORM":return 6e4;default:return 6e4}}var w=e(h()),fo="cloud",va=()=>{let{popup:o,setPopup:a}=window.dash_component_api.devtool.useDevtool(),s=window.dash_component_api.devtool.useDevtoolMenuButtonClassName(fo),[r,n]=(0,t.useState)(""),[L,T]=(0,t.useState)(""),[A,b]=(0,t.useState)("initialize"),[v,E]=(0,t.useState)(!1),[N,G]=(0,t.useState)(""),[x,O]=(0,t.useState)(""),[W,V]=(0,t.useState)(!1),[na,uo]=(0,t.useState)(!1),[wo,ia]=(0,t.useState)(""),[ta,Lo]=(0,t.useState)(""),[Ao,bo]=(0,t.useState)(""),[F,H]=(0,t.useState)("unknown"),[Po,ko]=(0,t.useState)(0),[ca,la]=(0,t.useState)(1),[To,yo]=(0,t.useState)(-1),z=(0,t.useRef)(""),B=(0,t.useRef)(""),y=(0,t.useMemo)(()=>Vo("/"),[]),Fo=(0,t.useMemo)(()=>o===fo,[o]),go=()=>{a("")},ma=()=>{a(o===fo?"":fo)},Bo=()=>{y.logout().then(()=>{b("initialize")})},Do=()=>{E(!0),y.authenticate().then(i=>{i.error?n(i.error):(b("auth_poll"),G(i.result.user_code),O(i.result.verification_uri_complete),z.current=i.result.device_code,y.wait_auth().then(()=>{window.open(i.result.verification_uri_complete,"_blank"),yo(setTimeout(()=>{y.auth_poll({device_code:z.current}).then(Ho)},8e3))}))})},Ho=i=>{if(i.error)n(i.error);else{if(i.result.success){z.current="",B.current?(H("unknown"),b("update_app"),y.status({app_id:B.current}).then(U=>{H(U.result.status)})):b("enter_name");return}if(i.result.try_again){Do();return}let P=ca||1;i.result.delay&&(P=i.result.delay,la(P)),yo(setTimeout(()=>{y.auth_poll({device_code:z.current}).then(Ho)},1e3+P*1e3))}},pa=()=>{setTimeout(Do,2e3)};(0,t.useEffect)(()=>{A==="initialize"&&y.initialize().then(i=>{let{result:P,error:U}=i;U?n(U):(ia(P.app_path),Lo(P.app_name),H(P.status),bo(P.app_url),T(P.size_error||""),P.app_id&&(B.current=P.app_id),P?.authenticated?P.status==="new"?b("enter_name"):b("update_app"):b("sign_in"))})},[A,Fo]);let Ia=()=>{y.status({app_id:B.current}).then(fa)},fa=i=>{if(i.error){n(i.error);return}H(i.result.status),ko(Date.now()),i.result.status==="RUNNING"?(V(!1),uo(!0),b("update_app")):["BUILDING","STARTING"].includes(i.result.status)||(V(!1),b("update_app"))},Mo=i=>{if(i.error){n(i.error);return}b("status_poll"),B.current=i.result.app_id,bo(i.result.app_url),H("BUILDING"),ko(0)},ua=i=>{Lo(i),V(!0),uo(!1),H("BUILDING"),y.publish({app_path:wo,app_name:i}).then(Mo)},Ro=()=>{V(!0),uo(!0),H("BUILDING"),y.publish({app_id:B.current,app_path:wo}).then(Mo)};(0,t.useEffect)(()=>{if(!B.current||F==="unknown"||F==="new")return;let i=setInterval(()=>{let U=Date.now()-Po,da=ea(F);U>=da&&Ia()},1e3);return()=>{clearInterval(i)}},[B.current,F,Po]),(0,t.useEffect)(()=>()=>{To>0&&clearTimeout(To)}),(0,t.useEffect)(()=>{r&&F!=="error"&&H("error")},[r,F]);let No=()=>{window.open(`https://cloud.plotly.com/app/${B.current}/settings`,"_blank")};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)("button",{className:s,onClick:ma,children:[(0,w.jsx)(mo,{status:F,isButtonIcon:!0}),"\xA0Plotly Cloud"]}),Fo?(0,w.jsx)(Oo,{title:"Plotly Cloud",onClose:go,children:r?(0,w.jsx)(sa,{error:r}):(()=>{switch(A){case"authenticate":case"auth_poll":case"sign_in":return(0,w.jsx)(Wo,{onSignIn:pa,waiting:v,userCode:N,verificationUrlComplete:x});case"enter_name":return(0,w.jsx)(Zo,{onPublish:ua,onCancel:go,initialAppName:ta,sizeError:L});case"update_app":return(0,w.jsx)(ho,{onPublish:Ro,status:F,isUpdate:!0,onCancel:No,appUrl:Ao,onLogout:Bo,sizeError:L});case"status_poll":case"publish":return(0,w.jsx)(ho,{publishing:W,onPublish:Ro,status:F,onCancel:W?No:go,isUpdate:na,appUrl:Ao,onLogout:Bo,sizeError:L});default:return(0,w.jsx)(w.Fragment,{})}})()},"publish-modal"):null]})},Co=va;typeof window<"u"&&(window.plotly_cloud_publish_component={PlotlyCloudPublishComponent:Co});return Aa(Ea);})();
3
- /*! Bundled license information:
4
-
5
- react/cjs/react-jsx-runtime.production.min.js:
6
- (**
7
- * @license React
8
- * react-jsx-runtime.production.min.js
9
- *
10
- * Copyright (c) Facebook, Inc. and its affiliates.
11
- *
12
- * This source code is licensed under the MIT license found in the
13
- * LICENSE file in the root directory of this source tree.
14
- *)
15
- */
File without changes
File without changes