plotly-cloud 0.1.0rc3__tar.gz → 0.1.0rc5__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.0rc3 → plotly_cloud-0.1.0rc5}/PKG-INFO +1 -1
  2. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_api_types.py +8 -7
  3. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_commands.py +13 -11
  4. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_deploy.py +35 -89
  5. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_devtool_publish_rpc.py +92 -5
  6. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/cli.py +14 -0
  7. plotly_cloud-0.1.0rc5/plotly_cloud/cloud_devtools.css +1 -0
  8. plotly_cloud-0.1.0rc5/plotly_cloud/cloud_devtools.js +15 -0
  9. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/pyproject.toml +1 -1
  10. plotly_cloud-0.1.0rc3/plotly_cloud/cloud_devtools.css +0 -1
  11. plotly_cloud-0.1.0rc3/plotly_cloud/cloud_devtools.js +0 -15
  12. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/.gitignore +0 -0
  13. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/LICENSE +0 -0
  14. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/README.md +0 -0
  15. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/__init__.py +0 -0
  16. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_changes.py +0 -0
  17. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_cloud_env.py +0 -0
  18. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_definitions.py +0 -0
  19. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_devtool_hooks.py +0 -0
  20. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_oauth.py +0 -0
  21. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/_parser.py +0 -0
  22. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/cloud-env.toml +0 -0
  23. {plotly_cloud-0.1.0rc3 → plotly_cloud-0.1.0rc5}/plotly_cloud/exceptions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plotly-cloud
3
- Version: 0.1.0rc3
3
+ Version: 0.1.0rc5
4
4
  Summary: CLI for interacting with Plotly Cloud to deploy Dash apps
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.9
@@ -4,16 +4,10 @@ from typing import Any, Dict, List
4
4
 
5
5
  from typing_extensions import NotRequired, TypedDict
6
6
 
7
- EnvironmentVariables = Dict[str, Any]
8
-
9
-
10
- class ErrorResponse(TypedDict):
11
- error: NotRequired[str]
12
- error_description: NotRequired[str]
13
-
14
7
 
15
8
  class AppRequest(TypedDict):
16
9
  pythonVersion: NotRequired[str]
10
+ entrypointModule: NotRequired[str]
17
11
  name: NotRequired[str]
18
12
  appUrl: NotRequired[str]
19
13
  description: NotRequired[str]
@@ -21,6 +15,11 @@ class AppRequest(TypedDict):
21
15
  invitations: NotRequired[List[str]]
22
16
  environmentVariables: NotRequired[List[Dict[str, Any]]]
23
17
 
18
+ EnvironmentVariables = Dict[str, Any]
19
+
20
+ class ErrorResponse(TypedDict):
21
+ error: NotRequired[str]
22
+ error_description: NotRequired[str]
24
23
 
25
24
  class App(TypedDict):
26
25
  id: NotRequired[str]
@@ -29,6 +28,8 @@ class App(TypedDict):
29
28
  description: NotRequired[str]
30
29
  app_url: NotRequired[str]
31
30
  is_view_private: NotRequired[bool]
31
+ created_with_desktop: NotRequired[bool]
32
+ desktop_app_version: NotRequired[str]
32
33
  environment_variables: NotRequired[EnvironmentVariables]
33
34
  invitations: NotRequired[List[str]]
34
35
  status: NotRequired[str]
@@ -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
11
+ from typing import Dict, List, TypedDict, cast
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
23
+ from plotly_cloud._definitions import REVISION_STATUS_MAP, CommandArgument, RevisionStatusInfo
24
24
  from plotly_cloud._deploy import (
25
25
  DeploymentClient,
26
26
  create_deployment_zip,
@@ -28,7 +28,6 @@ from plotly_cloud._deploy import (
28
28
  get_config_path,
29
29
  load_deployment_config,
30
30
  save_deployment_config,
31
- validate_dependencies,
32
31
  )
33
32
  from plotly_cloud._oauth import OAuthClient
34
33
  from plotly_cloud._parser import ParsedArguments
@@ -439,6 +438,10 @@ class PublishCommand(BaseCommand):
439
438
  "name": "--name",
440
439
  "help": "Application name (will prompt if not provided first time app is published)",
441
440
  },
441
+ {
442
+ "name": "--entrypoint-module",
443
+ "help": "Entrypoint module for the application in 'module:variable' format (e.g., 'app:app')",
444
+ },
442
445
  {
443
446
  "name": "--output",
444
447
  "help": "Output path for zip file of the published app (default: temporary file)",
@@ -532,7 +535,9 @@ class PublishCommand(BaseCommand):
532
535
  status_text.append("Timeout", style="bold yellow")
533
536
  return Panel(status_text, title="🚀 Publish Status", border_style="yellow", padding=(0, 1))
534
537
 
535
- status_info = REVISION_STATUS_MAP.get(status, {"label": status, "emoji": "⏳", "color": "white"})
538
+ status_info = cast(
539
+ RevisionStatusInfo, REVISION_STATUS_MAP.get(status, {"label": status, "emoji": "⏳", "color": "white"})
540
+ )
536
541
 
537
542
  status_text = Text()
538
543
  status_text.append(f"{status_info['emoji']} ", style="bold")
@@ -609,11 +614,6 @@ class PublishCommand(BaseCommand):
609
614
  else:
610
615
  progress.update(validate_task, description="No existing configuration found")
611
616
 
612
- # Validate dependencies
613
- progress.update(validate_task, description="Validating project dependencies...")
614
- validate_dependencies(project_path)
615
- progress.update(validate_task, description="✓ Dependencies validated!")
616
-
617
617
  # Determine output path for zip file
618
618
  if args.output:
619
619
  zip_path = os.path.abspath(args.output)
@@ -646,7 +646,8 @@ class PublishCommand(BaseCommand):
646
646
  progress.remove_task(package_task)
647
647
  deploy_task = progress.add_task(f"Creating new app: {app_name}...", total=None)
648
648
 
649
- app_data = await deploy_client.create_app(app_name, zip_path)
649
+ entrypoint_module = getattr(args, "entrypoint_module", None)
650
+ app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module)
650
651
 
651
652
  progress.update(
652
653
  deploy_task,
@@ -671,7 +672,8 @@ class PublishCommand(BaseCommand):
671
672
  assert app_id is not None # We know this is not None in else branch
672
673
  progress.remove_task(package_task)
673
674
  deploy_task = progress.add_task(f"Updating existing app (ID: {app_id})...", total=None)
674
- app_data = await deploy_client.publish_app(app_id, zip_path)
675
+ entrypoint_module = getattr(args, "entrypoint_module", None)
676
+ app_data = await deploy_client.publish_app(app_id, zip_path, entrypoint_module)
675
677
  progress.update(deploy_task, description=f"✓ Published app update (ID: {app_id})")
676
678
 
677
679
  # Update config with any new data
@@ -20,7 +20,6 @@ from .exceptions import (
20
20
  APIError,
21
21
  AppCreationError,
22
22
  AppPublishError,
23
- DependencyValidationError,
24
23
  DeploymentClientError,
25
24
  DeploymentError,
26
25
  FileSizeError,
@@ -31,84 +30,8 @@ from .exceptions import (
31
30
  PlotlyCloudError,
32
31
  )
33
32
 
34
- # Maximum allowed zip file size (80MB)
35
- MAX_ZIP_SIZE = 80 * 1024 * 1024
36
-
37
- # Required dependencies for deployment
38
- REQUIRED_DEPENDENCIES = {"dash"}
39
-
40
-
41
- def validate_dependencies(project_path: str) -> None:
42
- """
43
- Validate that the project has required dependencies (dash).
44
-
45
- Checks requirements.txt or pyproject.toml for the required dependencies.
46
-
47
- Args:
48
- project_path: Path to the project directory
49
-
50
- Returns:
51
- True if all required dependencies are found, False otherwise
52
- """
53
- requirements_path = os.path.join(project_path, "requirements.txt")
54
- pyproject_path = os.path.join(project_path, "pyproject.toml")
55
-
56
- found_deps = set()
57
-
58
- # Check requirements.txt
59
- if os.path.exists(requirements_path):
60
- try:
61
- with open(requirements_path, encoding="utf-8") as f:
62
- for line in f:
63
- line = line.strip()
64
- if line and not line.startswith("#"):
65
- # Extract package name (handle versions, extras, etc.)
66
- # Split on version operators and extras
67
- dep_name = re.split(r"[>=<!\[~]", line)[0].strip()
68
- if dep_name: # Only add non-empty names
69
- found_deps.add(dep_name.lower())
70
- except Exception as err:
71
- raise DependencyValidationError(f"Error reading requirement file: {requirements_path}") from err
72
-
73
- # Check pyproject.toml
74
- elif os.path.exists(pyproject_path):
75
- try:
76
- with open(pyproject_path, "rb") as f:
77
- data = tomli.load(f)
78
-
79
- # Check different possible locations for dependencies
80
- dep_sources = [
81
- data.get("project", {}).get("dependencies", []),
82
- data.get("tool", {}).get("poetry", {}).get("dependencies", {}),
83
- data.get("build-system", {}).get("requires", []),
84
- ]
85
-
86
- for deps in dep_sources:
87
- if isinstance(deps, list):
88
- # Handle list format (like project.dependencies)
89
- for dep in deps:
90
- if isinstance(dep, str):
91
- dep_name = re.split(r"[>=<!\[~]", dep)[0].strip()
92
- if dep_name: # Only add non-empty names
93
- found_deps.add(dep_name.lower())
94
- elif isinstance(deps, dict):
95
- # Handle dict format (like poetry dependencies)
96
- for dep_name in deps.keys():
97
- found_deps.add(dep_name.lower())
98
- except Exception as err:
99
- raise DependencyValidationError(f"Error reading pyproject file: {pyproject_path}") from err
100
- else:
101
- raise FileNotFoundError("No requirements.txt or pyproject.toml found in project directory.")
102
-
103
- # Check if all required dependencies are present
104
- missing_deps = REQUIRED_DEPENDENCIES - found_deps
105
-
106
- if missing_deps:
107
- raise DependencyValidationError(
108
- f"Missing required dependencies: {', '.join(sorted(missing_deps))}.\n\n"
109
- ""
110
- "please add them to your requirements.txt or pyproject.toml"
111
- )
33
+ # Maximum allowed zip file size (200MB)
34
+ MAX_ZIP_SIZE = 200 * 1024 * 1024
112
35
 
113
36
 
114
37
  def parse_gitignore(project_path: str) -> set[str]:
@@ -203,11 +126,19 @@ async def create_deployment_zip(project_path: str, output_path: str) -> int:
203
126
  ValueError: If zip file exceeds size limit
204
127
  """
205
128
  exclude_patterns = parse_gitignore(project_path)
129
+ total_uncompressed_size = 0
206
130
 
207
131
  with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zipf:
208
132
  for root, dirs, files in os.walk(project_path):
209
133
  # Remove excluded directories from dirs list to avoid walking them
210
- dirs[:] = [d for d in dirs if not should_exclude_path(os.path.join(root, d), exclude_patterns)]
134
+ # Convert to relative paths for consistent pattern matching
135
+ dirs[:] = [
136
+ d
137
+ for d in dirs
138
+ if not should_exclude_path(
139
+ str(os.path.relpath(os.path.join(root, d), project_path)), exclude_patterns
140
+ )
141
+ ]
211
142
 
212
143
  for file in files:
213
144
  file_path = os.path.join(root, file)
@@ -226,19 +157,23 @@ async def create_deployment_zip(project_path: str, output_path: str) -> int:
226
157
  continue
227
158
 
228
159
  try:
160
+ file_size = os.path.getsize(file_path)
161
+ total_uncompressed_size += file_size
229
162
  zipf.write(file_path, relative_path)
230
163
  except (OSError, PermissionError):
231
164
  # Skip files that can't be read, continue with others
232
165
  continue
233
166
 
234
- # Check zip file size
167
+ # Check uncompressed size only
235
168
  zip_size = os.path.getsize(output_path)
236
- if zip_size > MAX_ZIP_SIZE:
169
+
170
+ if total_uncompressed_size > MAX_ZIP_SIZE:
237
171
  os.remove(output_path) # Clean up the oversized zip
238
172
  raise FileSizeError(
239
- f"Deployment package is too large ({zip_size / (1024 * 1024):.1f}MB)",
240
- f"Maximum allowed size is {MAX_ZIP_SIZE / (1024 * 1024):.0f}MB. "
241
- "Consider excluding more files in your .gitignore.",
173
+ f"This directory exceeds {MAX_ZIP_SIZE / (1024 * 1024):.0f}MB and couldn't be published",
174
+ f"Total size: {total_uncompressed_size / (1024 * 1024):.1f}MB. "
175
+ f"Maximum allowed: {MAX_ZIP_SIZE / (1024 * 1024):.0f}MB. "
176
+ "Consider excluding large files in your .gitignore.",
242
177
  )
243
178
 
244
179
  return zip_size
@@ -374,7 +309,7 @@ class DeploymentClient:
374
309
  )
375
310
  return self
376
311
 
377
- async def __aexit__(self, exc_type, exc_val, exc_tb):
312
+ async def __aexit__(self, exc_type, exc_val, exc_tb): # noqa: ARG002
378
313
  """Async context manager exit."""
379
314
  if self._client:
380
315
  await self._client.aclose()
@@ -392,12 +327,13 @@ class DeploymentClient:
392
327
  pass
393
328
  return False
394
329
 
395
- async def create_app(self, name: str, zip_path: str = "") -> App:
330
+ async def create_app(self, name: str, zip_path: str = "", entrypoint_module: Optional[str] = None) -> App:
396
331
  """Create a new application and upload deployment in same request.
397
332
 
398
333
  Args:
399
334
  name: Application name
400
335
  zip_path: Path to deployment zip file to upload
336
+ entrypoint_module: Entrypoint module for the application (e.g., "app:app")
401
337
 
402
338
  Returns:
403
339
  App response from the API
@@ -416,6 +352,8 @@ class DeploymentClient:
416
352
  try:
417
353
  # Create typed request data
418
354
  app_request: AppRequest = {"name": name}
355
+ if entrypoint_module:
356
+ app_request["entrypointModule"] = entrypoint_module
419
357
 
420
358
  # Upload deployment in same request as app creation
421
359
  retry_count = 0
@@ -440,12 +378,13 @@ class DeploymentClient:
440
378
  except httpx.RequestError as e:
441
379
  raise NetworkError("Failed to create app", str(e)) from e
442
380
 
443
- async def publish_app(self, app_id: str, zip_path: str = "") -> App:
381
+ async def publish_app(self, app_id: str, zip_path: str = "", entrypoint_module: Optional[str] = None) -> App:
444
382
  """Publish existing application and upload deployment in same request.
445
383
 
446
384
  Args:
447
385
  app_id: Application ID
448
386
  zip_path: Path to deployment zip file to upload
387
+ entrypoint_module: Entrypoint module for the application (e.g., "app:app")
449
388
 
450
389
  Returns:
451
390
  App response from the API
@@ -468,7 +407,14 @@ class DeploymentClient:
468
407
  while retry_count <= 1:
469
408
  with open(zip_path, "rb") as f:
470
409
  files = {"file": (os.path.basename(zip_path), f, "application/zip")}
471
- response = await self._client.post(url, files=files)
410
+
411
+ # Add entrypoint module if provided
412
+ data = {}
413
+ if entrypoint_module:
414
+ app_request: AppRequest = {"entrypointModule": entrypoint_module}
415
+ data["json"] = json.dumps(app_request)
416
+
417
+ response = await self._client.post(url, files=files, data=data if data else None)
472
418
 
473
419
  if response.status_code in (200, 201):
474
420
  api_response: App = response.json()
@@ -12,13 +12,15 @@ from typing_extensions import Literal, NotRequired, TypedDict
12
12
  from plotly_cloud._cloud_env import cloud_config
13
13
  from plotly_cloud._definitions import AppDeploymentConfig
14
14
  from plotly_cloud._deploy import (
15
+ MAX_ZIP_SIZE,
15
16
  DeploymentClient,
16
17
  create_deployment_zip,
17
18
  format_app_url,
18
19
  get_config_path,
19
20
  load_deployment_config,
21
+ parse_gitignore,
20
22
  save_deployment_config,
21
- validate_dependencies,
23
+ should_exclude_path,
22
24
  )
23
25
  from plotly_cloud._oauth import OAuthClient
24
26
  from plotly_cloud.exceptions import TokenError
@@ -62,6 +64,86 @@ class PlotlyCloudPublishRPC:
62
64
  app_module = importlib.import_module(app.config.name)
63
65
  return os.path.dirname(str(app_module.__file__))
64
66
 
67
+ def check_directory_size(self, project_path: str) -> tuple[int, bool, str]:
68
+ """Check if directory size would exceed limit.
69
+
70
+ Args:
71
+ project_path: Path to the project directory
72
+
73
+ Returns:
74
+ Tuple of (size_in_bytes, exceeds_limit, error_message)
75
+ """
76
+ exclude_patterns = parse_gitignore(project_path)
77
+ total_size = 0
78
+
79
+ for root, dirs, files in os.walk(project_path):
80
+ # Remove excluded directories from dirs list
81
+ dirs[:] = [d for d in dirs if not should_exclude_path(os.path.join(root, d), exclude_patterns)]
82
+
83
+ for file in files:
84
+ file_path = os.path.join(root, file)
85
+ relative_path = os.path.relpath(file_path, project_path)
86
+
87
+ # Ensure relative_path is a string
88
+ if isinstance(relative_path, bytes):
89
+ relative_path = relative_path.decode("utf-8")
90
+
91
+ # Skip if file should be excluded
92
+ if should_exclude_path(relative_path, exclude_patterns):
93
+ continue
94
+
95
+ try:
96
+ total_size += os.path.getsize(file_path)
97
+ # Early exit if we exceed the limit - no need to count further
98
+ if total_size > MAX_ZIP_SIZE:
99
+ max_size_mb = MAX_ZIP_SIZE / (1024 * 1024)
100
+ error_msg = (
101
+ f"This directory is greater than {max_size_mb:.0f}MB and cannot be published. "
102
+ "Consider excluding large files in your .gitignore."
103
+ )
104
+ return (total_size, True, error_msg)
105
+ except (OSError, PermissionError):
106
+ continue
107
+
108
+ # All files checked, under the limit
109
+ return (total_size, False, "")
110
+
111
+ def resolve_entrypoint_module(self) -> str:
112
+ """Resolve the entrypoint module for the current Dash app.
113
+
114
+ Returns:
115
+ Entrypoint module name (e.g., 'app' or 'src.app')
116
+ """
117
+ app = None
118
+ try:
119
+ app = dash.det_app() # type: ignore
120
+ except Exception:
121
+ app = self._app_setup
122
+
123
+ if not app:
124
+ return "app" # Default fallback
125
+
126
+ try:
127
+ # Get the module name and import it
128
+ module_name = app.config.name
129
+ app_module = importlib.import_module(module_name)
130
+
131
+ # Get the absolute path of the module file
132
+ module_file = str(app_module.__file__)
133
+
134
+ # Get the project path
135
+ project_path = self.get_project_path()
136
+
137
+ # Make it relative to the project path
138
+ rel_path = os.path.relpath(module_file, project_path)
139
+
140
+ # Remove .py extension and convert path separators to dots
141
+ entrypoint_module = str(rel_path).replace(".py", "").replace(os.sep, ".")
142
+
143
+ return entrypoint_module
144
+ except Exception:
145
+ return "app" # Fallback
146
+
65
147
  async def handle_operation(self, publish_operation: PublishOperation) -> RPCResponse:
66
148
  """Handle a publish operation from dev tools.
67
149
 
@@ -114,6 +196,9 @@ class PlotlyCloudPublishRPC:
114
196
  status = status_data.get("status", "")
115
197
  app_url = format_app_url(status_data.get("app_url", ""))
116
198
 
199
+ # Check directory size upfront
200
+ _, exceeds_limit, size_error = self.check_directory_size(project_path)
201
+
117
202
  return {
118
203
  "result": {
119
204
  "authenticated": is_authenticated,
@@ -123,6 +208,7 @@ class PlotlyCloudPublishRPC:
123
208
  "app_path": project_path,
124
209
  "app_id": app_id,
125
210
  "app_url": app_url,
211
+ "size_error": size_error if exceeds_limit else None,
126
212
  }
127
213
  }
128
214
 
@@ -168,14 +254,15 @@ class PlotlyCloudPublishRPC:
168
254
  zip_path = temp_file.name
169
255
  temp_file.close()
170
256
 
171
- validate_dependencies(app_path)
172
-
173
257
  await create_deployment_zip(app_path, zip_path)
174
258
 
259
+ # Resolve the entrypoint module
260
+ entrypoint_module = self.resolve_entrypoint_module()
261
+
175
262
  async with DeploymentClient(self.oauth_client) as deploy_client:
176
263
  if app_id:
177
264
  # update app
178
- app_data = await deploy_client.publish_app(app_id, zip_path)
265
+ app_data = await deploy_client.publish_app(app_id, zip_path, entrypoint_module)
179
266
  config = load_deployment_config(config_path)
180
267
 
181
268
  if config.get("app_url") != app_data.get("app_url"):
@@ -185,7 +272,7 @@ class PlotlyCloudPublishRPC:
185
272
  return {"result": {"app_id": app_id, "app_url": format_app_url(app_data.get("app_url"))}}
186
273
  else:
187
274
  # create new app
188
- app_data = await deploy_client.create_app(app_name, zip_path)
275
+ app_data = await deploy_client.create_app(app_name, zip_path, entrypoint_module)
189
276
 
190
277
  config: AppDeploymentConfig = {
191
278
  "name": app_name,
@@ -1,6 +1,7 @@
1
1
  """Main CLI entry point for Plotly Cloud."""
2
2
 
3
3
  import asyncio
4
+ import logging
4
5
  import sys
5
6
  import textwrap
6
7
  from collections.abc import Sequence
@@ -15,6 +16,10 @@ from plotly_cloud._definitions import CommandArgument, HelpPanelStyle
15
16
  from plotly_cloud._parser import parse_args, parse_group_and_command
16
17
  from plotly_cloud.exceptions import PlotlyCloudError
17
18
 
19
+ # Suppress asyncio task exception warnings during Flask reloads
20
+ # These occur when Flask's werkzeug reloader terminates the process
21
+ logging.getLogger("asyncio").setLevel(logging.CRITICAL)
22
+
18
23
  console = Console()
19
24
 
20
25
 
@@ -232,6 +237,15 @@ def main() -> None:
232
237
  # Find the command group
233
238
  group_data = CommandRegistry.commands.get(group)
234
239
 
240
+ # Check if group exists
241
+ if group_data is None:
242
+ create_error_panel(
243
+ f"Unknown command group: [yellow]'{group}'[/yellow]\n\n"
244
+ f"Available groups: [cyan]{', '.join(CommandRegistry.commands.keys())}[/cyan]\n\n"
245
+ f"Use [cyan]'plotly --help'[/cyan] to see all available commands."
246
+ )
247
+ sys.exit(1)
248
+
235
249
  # Type guard to ensure group_data is not None
236
250
  assert group_data is not None
237
251
 
@@ -0,0 +1 @@
1
+ .plotly-cloud-publish-container{position:relative;font-family:Verdana,Geneva,sans-serif}.plotly-cloud-publish-button{cursor:pointer}.plotly-cloud-publish-button:hover{color:#7f4bc4}.plotly-cloud-publish-modal-overlay{position:absolute;bottom:100%;left:-2px;z-index:10000;margin-bottom:2px}.plotly-cloud-publish-modal-content{width:552px;background:#fff;border:1px solid #d1d5db;border-radius:4px 4px 0 0;box-shadow:0 -4px 6px #00000014;overflow:hidden}.plotly-cloud-publish-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e5e5;background:#f9fafb}.plotly-cloud-publish-modal-header h3{margin:0;color:#333}.plotly-cloud-publish-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.plotly-cloud-publish-modal-close:hover{color:#333}.plotly-cloud-publish-modal-body{padding:20px;color:#000!important;font-weight:100}button.plotly-cloud-publish-modal-button{display:inline-flex;align-items:center;gap:6px;padding:6px 10px!important;border-radius:4px!important;font-size:12px!important;font-weight:600;cursor:pointer;border:1px solid transparent;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent;background:#f3f4f6;color:#374151}.plotly-cloud-publish-modal-button:disabled{cursor:not-allowed;opacity:.5}button.plotly-cloud-btn-primary{background:#8b5cf6!important;color:#fff;border-color:#7c3aed!important}button.plotly-cloud-btn-primary:disabled{background:#d1d5db!important;color:#9ca3af!important;border-color:#d1d5db!important}button.plotly-cloud-btn-secondary{background:#fff;border:none;color:#8b5cf6!important;font-weight:100}.plotly-cloud-button-bar{display:flex;justify-content:flex-end;align-items:center}.plotly-cloud-publish-signin{display:flex;justify-content:space-between;align-items:center}.plotly-cloud-name-input-label{font-weight:600;color:#374151;font-size:12px;margin-bottom:6px}.plotly-cloud-name-input-field{margin-bottom:12px;width:calc(100% - 8px)}.plotly-cloud-name-input-field:disabled{background-color:#fcfcfc;color:#a1a1aa;cursor:not-allowed;border:1px solid #e4e4e7}.plotly-cloud-status-info{display:flex;border-radius:5px;margin-bottom:12px;align-items:center;padding:6px;font-size:12px!important}.plotly-cloud-status-red{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.plotly-cloud-status-description{font-size:12px!important;margin-left:8px}.plotly-cloud-status-title{font-weight:700}.plotly-cloud-status-green{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.plotly-cloud-status-red .plotly-cloud-status-title{color:#a10}.plotly-cloud-status-green .plotly-cloud-status-title{color:#065f46}.plotly-cloud-status-gray{background:#f9fafb;color:#000;border:1px solid #dadada}.plotly-cloud-status-gray .plotly-cloud-status-title{color:#2e2e2e}.plotly-cloud-green-icon{color:#10b981!important}.plotly-cloud-red-icon{color:#ef4444}.plotly-cloud-gray-icon{color:#9ca3af}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.plotly-cloud-spin{animation:spin 2s linear infinite}.plotly-cloud-confirm-code{margin-top:1rem}.plotly-cloud-user-code{color:#8b5cf6;font-weight:700}button.plotly-cloud-logout{padding-left:0!important}.plotly-cloud-error{display:flex;border-radius:5px;margin-bottom:12px;align-items:center;padding:6px;font-size:12px!important;background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.plotly-cloud-size-error{display:block;border-radius:5px;margin-bottom:12px;padding:12px;font-size:13px!important;font-weight:500;background:#fef2f2;color:#991b1b;border:1px solid #fecaca;line-height:1.5}
@@ -0,0 +1,15 @@
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
+ */
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "plotly-cloud"
7
- version = "0.1.0rc3"
7
+ version = "0.1.0rc5"
8
8
  description = "CLI for interacting with Plotly Cloud to deploy Dash apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1 +0,0 @@
1
- .plotly-cloud-publish-container{position:relative;font-family:Verdana,Geneva,sans-serif}.plotly-cloud-publish-button{cursor:pointer}.plotly-cloud-publish-button:hover{color:#7f4bc4}.plotly-cloud-publish-modal-overlay{position:absolute;bottom:100%;left:-2px;z-index:10000;margin-bottom:2px}.plotly-cloud-publish-modal-content{width:552px;background:#fff;border:1px solid #d1d5db;border-radius:4px 4px 0 0;box-shadow:0 -4px 6px #00000014;overflow:hidden}.plotly-cloud-publish-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e5e5e5;background:#f9fafb}.plotly-cloud-publish-modal-header h3{margin:0;color:#333}.plotly-cloud-publish-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.plotly-cloud-publish-modal-close:hover{color:#333}.plotly-cloud-publish-modal-body{padding:20px;color:#000!important;font-weight:100}button.plotly-cloud-publish-modal-button{display:inline-flex;align-items:center;gap:6px;padding:6px 10px!important;border-radius:4px!important;font-size:12px!important;font-weight:600;cursor:pointer;border:1px solid transparent;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent;background:#f3f4f6;color:#374151}.plotly-cloud-publish-modal-button:disabled{cursor:not-allowed}button.plotly-cloud-btn-primary{background:#8b5cf6!important;color:#fff;border-color:#7c3aed!important}button.plotly-cloud-btn-secondary{background:#fff;border:none;color:#8b5cf6!important;font-weight:100}.plotly-cloud-button-bar{display:flex;justify-content:flex-end;align-items:center}.plotly-cloud-publish-signin{display:flex;justify-content:space-between;align-items:center}.plotly-cloud-name-input-label{font-weight:600;color:#374151;font-size:12px;margin-bottom:6px}.plotly-cloud-name-input-field{margin-bottom:12px;width:calc(100% - 8px)}.plotly-cloud-status-info{display:flex;border-radius:5px;margin-bottom:12px;align-items:center;padding:6px;font-size:12px!important}.plotly-cloud-status-red{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.plotly-cloud-status-description{font-size:12px!important;margin-left:8px}.plotly-cloud-status-title{font-weight:700}.plotly-cloud-status-green{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.plotly-cloud-status-red .plotly-cloud-status-title{color:#a10}.plotly-cloud-status-green .plotly-cloud-status-title{color:#065f46}.plotly-cloud-status-gray{background:#f9fafb;color:#000;border:1px solid #dadada}.plotly-cloud-status-gray .plotly-cloud-status-title{color:#2e2e2e}.plotly-cloud-green-icon{color:#10b981!important}.plotly-cloud-red-icon{color:#ef4444}.plotly-cloud-gray-icon{color:#9ca3af}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.plotly-cloud-spin{animation:spin 2s linear infinite}.plotly-cloud-confirm-code{margin-top:1rem}.plotly-cloud-user-code{color:#8b5cf6;font-weight:700}button.plotly-cloud-logout{padding-left:0!important}
@@ -1,15 +0,0 @@
1
- const React = window.React; const ReactDOM = window.ReactDOM;
2
- "use strict";var plotly_cloud_publish_component=(()=>{var aa=Object.create;var z=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ra=Object.getOwnPropertyNames;var ea=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var Io=(o,a)=>()=>(a||o((a={exports:{}}).exports,a),a.exports),ia=(o,a)=>{for(var s in a)z(o,s,{get:a[s],enumerable:!0})},yo=(o,a,s,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of ra(a))!na.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?aa(ea(o)):{},yo(a||!o||!o.__esModule?z(s,"default",{value:o,enumerable:!0}):s,o)),ta=o=>yo(z({},"__esModule",{value:!0}),o);var l=Io((Ta,Fo)=>{Fo.exports=React});var Do=Io(Z=>{"use strict";var ca=l(),la=Symbol.for("react.element"),ma=Symbol.for("react.fragment"),pa=Object.prototype.hasOwnProperty,Ia=ca.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,fa={key:!0,ref:!0,__self:!0,__source:!0};function Bo(o,a,s){var r,n={},L=null,c=null;s!==void 0&&(L=""+s),a.key!==void 0&&(L=""+a.key),a.ref!==void 0&&(c=a.ref);for(r in a)pa.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:la,type:o,key:L,ref:c,props:n,_owner:Ia.current}}Z.Fragment=ma;Z.jsx=Bo;Z.jsxs=Bo});var h=Io((Fa,Ho)=>{"use strict";Ho.exports=Do()});var Aa={};ia(Aa,{PlotlyCloudPublishComponent:()=>uo});var t=e(l());var F=e(h()),ua=({title:o,onClose:a,children:s})=>(0,F.jsx)("div",{className:"plotly-cloud-publish-modal-overlay",children:(0,F.jsxs)("div",{className:"plotly-cloud-publish-modal-content",children:[(0,F.jsxs)("div",{className:"plotly-cloud-publish-modal-header",children:[(0,F.jsx)("h3",{children:o},"modal-title"),(0,F.jsx)("button",{className:"plotly-cloud-publish-modal-close",onClick:a,children:"\xD7"},"modal-close")]}),(0,F.jsx)("div",{className:"plotly-cloud-publish-modal-body",children:s},"modal-body")]})}),Mo=ua;var Ro=e(l()),b=e(h()),ga=o=>{let[a,s]=(0,Ro.useState)(o.waiting);return(0,b.jsx)("div",{className:"plotly-cloud-publish-signin",children:a?(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{children:"Waiting for succesful sign-in on signin.cloud.plotly.com"}),o.userCode?(0,b.jsxs)("div",{className:"plotly-cloud-confirm-code",children:["Confirm your device code"," ",(0,b.jsx)("span",{className:"plotly-cloud-user-code",children:o.userCode})," ","when prompted."]}):null]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:"Sign in to publish your app to Plotly Cloud."}),(0,b.jsx)("button",{className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",onClick:()=>{s(!0),o.onSignIn()},children:"Sign In"})]})})},xo=ga;var da=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")}},No=da;var Uo=e(l()),k=e(h()),Sa=({initialAppName:o="",onCancel:a,onPublish:s})=>{let[r,n]=(0,Uo.useState)(o);return(0,k.jsxs)("div",{className:"plotly-cloud-name-input",children:[(0,k.jsx)("div",{className:"plotly-cloud-name-input-label",children:"App Name"}),(0,k.jsxs)("form",{onSubmit:c=>{c.preventDefault(),r.trim()&&s(r.trim())},children:[(0,k.jsx)("input",{type:"text",value:r,onChange:c=>n(c.target.value),placeholder:"My Dash App",className:"plotly-cloud-name-input-field"}),(0,k.jsxs)("div",{className:"plotly-cloud-button-bar",children:[(0,k.jsx)("button",{type:"button",onClick:a,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:"Cancel"}),(0,k.jsx)("button",{type:"submit",disabled:!r.trim(),className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",children:"Publish App"})]})]})]})},vo=Sa;var co=e(l());var m=e(l(),1),Eo=new Map([["bold",m.createElement(m.Fragment,null,m.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",m.createElement(m.Fragment,null,m.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"}),m.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",m.createElement(m.Fragment,null,m.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",m.createElement(m.Fragment,null,m.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",m.createElement(m.Fragment,null,m.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",m.createElement(m.Fragment,null,m.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 p=e(l(),1),Go=new Map([["bold",p.createElement(p.Fragment,null,p.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",p.createElement(p.Fragment,null,p.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),p.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",p.createElement(p.Fragment,null,p.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",p.createElement(p.Fragment,null,p.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",p.createElement(p.Fragment,null,p.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",p.createElement(p.Fragment,null,p.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 I=e(l(),1),qo=new Map([["bold",I.createElement(I.Fragment,null,I.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",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:"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",I.createElement(I.Fragment,null,I.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",I.createElement(I.Fragment,null,I.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",I.createElement(I.Fragment,null,I.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",I.createElement(I.Fragment,null,I.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 f=e(l(),1),Oo=new Map([["bold",f.createElement(f.Fragment,null,f.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",f.createElement(f.Fragment,null,f.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"}),f.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",f.createElement(f.Fragment,null,f.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",f.createElement(f.Fragment,null,f.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",f.createElement(f.Fragment,null,f.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",f.createElement(f.Fragment,null,f.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 u=e(l(),1),Wo=new Map([["bold",u.createElement(u.Fragment,null,u.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",u.createElement(u.Fragment,null,u.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"}),u.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",u.createElement(u.Fragment,null,u.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",u.createElement(u.Fragment,null,u.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",u.createElement(u.Fragment,null,u.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",u.createElement(u.Fragment,null,u.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 g=e(l(),1),Vo=new Map([["bold",g.createElement(g.Fragment,null,g.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",g.createElement(g.Fragment,null,g.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"}),g.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",g.createElement(g.Fragment,null,g.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",g.createElement(g.Fragment,null,g.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",g.createElement(g.Fragment,null,g.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",g.createElement(g.Fragment,null,g.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(l(),1),zo=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 M=e(l(),1);var Zo=e(l(),1),_o=(0,Zo.createContext)({color:"currentColor",size:"1em",weight:"regular",mirrored:!1});var C=M.forwardRef((o,a)=>{let{alt:s,color:r,size:n,weight:L,mirrored:c,children:R,weights:x,...N}=o,{color:U="currentColor",size:B,weight:T="regular",mirrored:v=!1,...D}=M.useContext(_o);return M.createElement("svg",{ref:a,xmlns:"http://www.w3.org/2000/svg",width:n??B,height:n??B,fill:r??U,viewBox:"0 0 256 256",transform:c||v?"scale(-1, 1)":void 0,...D,...N},!!s&&M.createElement("title",null,s),R,x.get(L??T))});C.displayName="IconBase";var _=e(l(),1);var X=_.forwardRef((o,a)=>_.createElement(C,{ref:a,...o,weights:Eo}));X.displayName="ArrowSquareOutIcon";var J=e(l(),1);var K=J.forwardRef((o,a)=>J.createElement(C,{ref:a,...o,weights:Go}));K.displayName="CircleNotchIcon";var Q=e(l(),1);var j=Q.forwardRef((o,a)=>Q.createElement(C,{ref:a,...o,weights:qo}));j.displayName="CloudCheckIcon";var Y=e(l(),1);var $=Y.forwardRef((o,a)=>Y.createElement(C,{ref:a,...o,weights:Oo}));$.displayName="CloudSlashIcon";var oo=e(l(),1);var ao=oo.forwardRef((o,a)=>oo.createElement(C,{ref:a,...o,weights:Wo}));ao.displayName="CloudXIcon";var so=e(l(),1);var ro=so.forwardRef((o,a)=>so.createElement(C,{ref:a,...o,weights:Vo}));ro.displayName="GearIcon";var eo=e(l(),1);var no=eo.forwardRef((o,a)=>eo.createElement(C,{ref:a,...o,weights:zo}));no.displayName="SignOutIcon";var Xo=e(h()),ha=o=>(0,Xo.jsx)(K,{size:o.size,className:"plotly-cloud-spin plotly-cloud-gray-icon",weight:"bold"}),io=ha;var E=e(h()),Ca=({status:o,size:a=16,isButtonIcon:s})=>o==="BUILDING"||o==="STARTING"||o==="unknown"?(0,E.jsx)(io,{size:a}):o==="RUNNING"?(0,E.jsx)(j,{size:a,className:"plotly-cloud-green-icon",weight:s?"fill":"duotone"}):o==="new"?(0,E.jsx)($,{size:a,className:"plotly-cloud-gray-icon",weight:s?"fill":"duotone"}):(0,E.jsx)(ao,{size:a,className:"plotly-cloud-red-icon",weight:"duotone"}),to=Ca;var S=e(h()),wa=({status:o,onPublish:a,isUpdate:s,publishing:r,onCancel:n,onLogout:L,appUrl:c})=>{let R=()=>{n&&n()},x=()=>{window.open(c,"_blank")},[N,U,B]=(0,co.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]),[T,v]=(0,co.useMemo)(()=>r?s?["Open Settings in Plotly Cloud","Republishing",""]:["Cancel","Publishing",""]:s?[(0,S.jsxs)("span",{children:[(0,S.jsx)(ro,{}),"\xA0Open Settings in Plotly Cloud"]}),"Republish"]:["Cancel","Publish",""],[r,s]),D=(0,co.useMemo)(()=>["BUILDING","STARTING"].includes(o),[o]);return(0,S.jsxs)("div",{className:"plotly-cloud-status-banner",children:[(0,S.jsxs)("div",{className:`plotly-cloud-status-info plotly-cloud-status-${B}`,children:[(0,S.jsx)(to,{status:o,size:20}),(0,S.jsxs)("div",{className:"plotly-cloud-status-description",children:[(0,S.jsx)("div",{className:"plotly-cloud-status-title",children:N}),(0,S.jsx)("div",{className:"plotly-cloud-status-text",children:U})]})]}),(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)(no,{}),"\xA0Logout"]})}),(0,S.jsx)("button",{type:"button",onClick:R,disabled:s?!1:r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:T}),c?(0,S.jsx)("button",{onClick:x,disabled:r,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-secondary",children:(0,S.jsxs)("span",{children:[(0,S.jsx)(X,{}),"\xA0View App"]})}):null,(0,S.jsxs)("button",{type:"button",onClick:a,className:"plotly-cloud-publish-modal-button plotly-cloud-btn-primary",disabled:r||D,children:[r?(0,S.jsx)(io,{size:12}):null,v]})]})]})},fo=wa;var w=e(h()),lo="cloud",La=()=>{let{popup:o,setPopup:a}=window.dash_component_api.devtool.useDevtool(),s=window.dash_component_api.devtool.useDevtoolMenuButtonClassName(lo),[r,n]=(0,t.useState)(""),[L,c]=(0,t.useState)("initialize"),[R,x]=(0,t.useState)(!1),[N,U]=(0,t.useState)(""),[B,T]=(0,t.useState)(!1),[v,D]=(0,t.useState)(!1),[go,Jo]=(0,t.useState)(""),[Ko,So]=(0,t.useState)(""),[ho,Co]=(0,t.useState)(""),[mo,H]=(0,t.useState)("unknown"),[G,q]=(0,t.useState)(-1),[Qo,jo]=(0,t.useState)(1),O=(0,t.useRef)(""),y=(0,t.useRef)(""),P=(0,t.useMemo)(()=>No("/"),[]),W=(0,t.useMemo)(()=>o===lo,[o]),po=()=>{a("")},Yo=()=>{a(o===lo?"":lo)},wo=()=>{P.logout().then(()=>{c("initialize")})},ba=(0,t.useMemo)(()=>W?"plotly-cloud-publish-container dash-debug-menu__button dash-debug-menu__button--selected":"plotly-cloud-publish-container dash-debug-menu__button",[W]),Lo=()=>{x(!0),P.authenticate().then(i=>{i.error?n(i.error):(c("auth_poll"),U(i.result.user_code),O.current=i.result.device_code,P.wait_auth().then(()=>{window.open(i.result.verification_uri_complete,"_blank"),q(setTimeout(()=>{P.auth_poll({device_code:O.current}).then(Ao)},8e3))}))})},Ao=i=>{if(i.error)n(i.error);else{if(i.result.success){O.current="",y.current?(H("unknown"),c("update_app"),P.status({app_id:y.current}).then(V=>{H(V.result.status)})):c("enter_name");return}if(i.result.try_again){Lo();return}let A=Qo||1;i.result.delay&&(A=i.result.delay,jo(A)),q(setTimeout(()=>{P.auth_poll({device_code:O.current}).then(Ao)},1e3+A*1e3))}},$o=()=>{setTimeout(Lo,2e3)};(0,t.useEffect)(()=>{L==="initialize"&&P.initialize().then(i=>{let{result:A,error:V}=i;V?n(V):(Jo(A.app_path),So(A.app_name),H(A.status),Co(A.app_url),A.app_id&&(y.current=A.app_id),A?.authenticated?A.status==="new"?c("enter_name"):c("update_app"):c("sign_in"))})},[L,W]);let bo=i=>{if(i.error){n(i.error);return}H(i.result.status),i.result.status==="RUNNING"?(T(!1),D(!0),c("update_app")):["BUILDING","STARTING"].includes(i.result.status)?q(setTimeout(()=>{P.status({app_id:y.current}).then(bo)},4e3)):(T(!1),c("update_app"))},Po=i=>{if(i.error){n(i.error);return}c("status_poll"),y.current=i.result.app_id,Co(i.result.app_url),H("BUILDING"),G>0&&clearTimeout(G),q(setTimeout(()=>{P.status({app_id:y.current}).then(bo)},2500))},oa=i=>{So(i),T(!0),D(!1),H("BUILDING"),P.publish({app_path:go,app_name:i}).then(Po)},ko=()=>{T(!0),D(!0),H("BUILDING"),P.publish({app_id:y.current,app_path:go}).then(Po)};(0,t.useEffect)(()=>()=>{G&&clearTimeout(G)});let To=()=>{window.open(`https://cloud.plotly.com/app/${y.current}/settings`,"_blank")};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)("button",{className:s,onClick:Yo,children:[(0,w.jsx)(to,{status:mo,isButtonIcon:!0}),"\xA0Plotly Cloud"]}),W?(0,w.jsx)(Mo,{title:"Plotly Cloud",onClose:po,children:r||(()=>{switch(L){case"authenticate":case"auth_poll":case"sign_in":return(0,w.jsx)(xo,{onSignIn:$o,waiting:R,userCode:N});case"enter_name":return(0,w.jsx)(vo,{onPublish:oa,onCancel:po,initialAppName:Ko});case"update_app":return(0,w.jsx)(fo,{onPublish:ko,status:mo,isUpdate:!0,onCancel:To,appUrl:ho,onLogout:wo});case"status_poll":case"publish":return(0,w.jsx)(fo,{publishing:B,onPublish:ko,status:mo,onCancel:B?To:po,isUpdate:v,appUrl:ho,onLogout:wo});default:return(0,w.jsx)(w.Fragment,{})}})()},"publish-modal"):null]})},uo=La;typeof window<"u"&&(window.plotly_cloud_publish_component={PlotlyCloudPublishComponent:uo});return ta(Aa);})();
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