From 080f6391bac4fd59e9e71b9785d7a2f835703805 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Thu, 25 Mar 2021 01:56:00 -0300 Subject: [PATCH] refactor(bundler): specific settings on dedicated structs, update README (#1380) --- .changes/bundle-macos-refactor.md | 6 + .github/workflows/build-smoke-tests.yml | 2 +- cli/core/config_definition.rs | 11 +- cli/core/schema.json | 38 ++--- cli/core/src/build/rust.rs | 23 +-- cli/core/templates/src-tauri/tauri.conf.json | 4 +- cli/tauri-bundler/{Readme.md => README.md} | 120 +++++++------- cli/tauri-bundler/src/bundle.rs | 9 +- cli/tauri-bundler/src/bundle/category.rs | 13 +- cli/tauri-bundler/src/bundle/deb_bundle.rs | 6 +- cli/tauri-bundler/src/bundle/dmg_bundle.rs | 8 +- .../bundle/{osx_bundle.rs => macos_bundle.rs} | 25 +-- cli/tauri-bundler/src/bundle/settings.rs | 149 ++++++++---------- .../test/jest/__tests__/template.spec.js | 2 +- examples/api/public/build/bundle.js | 2 +- examples/api/public/build/bundle.js.map | 2 +- examples/helloworld/src-tauri/tauri.conf.json | 2 +- 17 files changed, 201 insertions(+), 221 deletions(-) create mode 100644 .changes/bundle-macos-refactor.md rename cli/tauri-bundler/{Readme.md => README.md} (51%) rename cli/tauri-bundler/src/bundle/{osx_bundle.rs => macos_bundle.rs} (95%) diff --git a/.changes/bundle-macos-refactor.md b/.changes/bundle-macos-refactor.md new file mode 100644 index 000000000..3320a1f09 --- /dev/null +++ b/.changes/bundle-macos-refactor.md @@ -0,0 +1,6 @@ +--- +"tauri-bundler": minor +"tauri": minor +--- + +Rename macOS bundle settings from `osx` to `macOS`. diff --git a/.github/workflows/build-smoke-tests.yml b/.github/workflows/build-smoke-tests.yml index 52f29c137..2c753a438 100644 --- a/.github/workflows/build-smoke-tests.yml +++ b/.github/workflows/build-smoke-tests.yml @@ -39,7 +39,7 @@ jobs: - platform: ubuntu-latest releaseFolder: target/release/bundle/deb - platform: macos-latest - releaseFolder: target/release/bundle/osx + releaseFolder: target/release/bundle/macos - platform: windows-latest releaseFolder: target/release/bundle/msi diff --git a/cli/core/config_definition.rs b/cli/core/config_definition.rs index 6bdfd9c55..757a6eff8 100644 --- a/cli/core/config_definition.rs +++ b/cli/core/config_definition.rs @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize}; use serde_json::Value as JsonValue; use serde_with::skip_serializing_none; -use std::{collections::HashMap, path::PathBuf}; +use std::collections::HashMap; #[derive(Debug, PartialEq, Clone, Deserialize, Serialize, JsonSchema)] #[serde(untagged)] @@ -26,7 +26,7 @@ pub struct DebConfig { #[skip_serializing_none] #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase", deny_unknown_fields)] -pub struct OsxConfig { +pub struct MacConfig { pub frameworks: Option>, pub minimum_system_version: Option, pub exception_domain: Option, @@ -51,7 +51,7 @@ pub struct PackageConfig { pub struct BundleConfig { /// Whether we should build your app with tauri-bundler or plain `cargo build` pub active: bool, - /// The bundle targets, currently supports ["deb", "osx", "msi", "appimage", "dmg"] or "all" + /// The bundle targets, currently supports ["deb", "app", "msi", "appimage", "dmg"] or "all" pub targets: Option, /// The app's identifier pub identifier: Option, @@ -65,11 +65,10 @@ pub struct BundleConfig { pub category: Option, pub short_description: Option, pub long_description: Option, - pub script: Option, #[serde(default)] pub deb: DebConfig, - #[serde(default)] - pub osx: OsxConfig, + #[serde(rename = "macOS", default)] + pub macos: MacConfig, pub external_bin: Option>, } diff --git a/cli/core/schema.json b/cli/core/schema.json index cc835fdfc..cdf642b82 100644 --- a/cli/core/schema.json +++ b/cli/core/schema.json @@ -84,7 +84,7 @@ "deb": { "useBootstrapper": false }, - "osx": { + "macOS": { "useBootstrapper": false } }, @@ -296,13 +296,13 @@ "null" ] }, - "osx": { + "macOS": { "default": { "useBootstrapper": false }, "allOf": [ { - "$ref": "#/definitions/OsxConfig" + "$ref": "#/definitions/MacConfig" } ] }, @@ -316,12 +316,6 @@ "type": "string" } }, - "script": { - "type": [ - "string", - "null" - ] - }, "shortDescription": { "type": [ "string", @@ -329,7 +323,7 @@ ] }, "targets": { - "description": "The bundle targets, currently supports [\"deb\", \"osx\", \"msi\", \"appimage\", \"dmg\"] or \"all\"", + "description": "The bundle targets, currently supports [\"deb\", \"app\", \"msi\", \"appimage\", \"dmg\"] or \"all\"", "anyOf": [ { "$ref": "#/definitions/BundleTarget" @@ -723,17 +717,7 @@ }, "additionalProperties": false }, - "NotificationAllowlistConfig": { - "type": "object", - "properties": { - "all": { - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "OsxConfig": { + "MacConfig": { "type": "object", "properties": { "exceptionDomain": { @@ -770,6 +754,16 @@ }, "additionalProperties": false }, + "NotificationAllowlistConfig": { + "type": "object", + "properties": { + "all": { + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, "PackageConfig": { "type": "object", "properties": { @@ -879,7 +873,7 @@ "deb": { "useBootstrapper": false }, - "osx": { + "macOS": { "useBootstrapper": false } }, diff --git a/cli/core/src/build/rust.rs b/cli/core/src/build/rust.rs index f4b0c4507..0109130bc 100644 --- a/cli/core/src/build/rust.rs +++ b/cli/core/src/build/rust.rs @@ -3,7 +3,9 @@ use std::{fs::File, io::Read, path::PathBuf, process::Command, str::FromStr}; use serde::Deserialize; use crate::helpers::{app_paths::tauri_dir, config::Config}; -use tauri_bundler::{AppCategory, BundleBinary, BundleSettings, PackageSettings}; +use tauri_bundler::{ + AppCategory, BundleBinary, BundleSettings, DebianSettings, MacOSSettings, PackageSettings, +}; /// The `workspace` section of the app configuration (read from Cargo.toml). #[derive(Clone, Debug, Deserialize)] @@ -317,15 +319,18 @@ fn tauri_config_to_bundle_settings( }, short_description: config.short_description, long_description: config.long_description, - script: config.script, - deb_depends: config.deb.depends, - deb_use_bootstrapper: Some(config.deb.use_bootstrapper), - osx_frameworks: config.osx.frameworks, - osx_minimum_system_version: config.osx.minimum_system_version, - osx_license: config.osx.license, - osx_use_bootstrapper: Some(config.osx.use_bootstrapper), external_bin: config.external_bin, - exception_domain: config.osx.exception_domain, + deb: DebianSettings { + depends: config.deb.depends, + use_bootstrapper: Some(config.deb.use_bootstrapper), + }, + macos: MacOSSettings { + frameworks: config.macos.frameworks, + minimum_system_version: config.macos.minimum_system_version, + license: config.macos.license, + use_bootstrapper: Some(config.macos.use_bootstrapper), + exception_domain: config.macos.exception_domain, + }, ..Default::default() }) } diff --git a/cli/core/templates/src-tauri/tauri.conf.json b/cli/core/templates/src-tauri/tauri.conf.json index 345bd9eef..89feb46ac 100644 --- a/cli/core/templates/src-tauri/tauri.conf.json +++ b/cli/core/templates/src-tauri/tauri.conf.json @@ -31,7 +31,7 @@ "depends": [], "useBootstrapper": false }, - "osx": { + "macOS": { "frameworks": [], "minimumSystemVersion": "", "useBootstrapper": false, @@ -54,4 +54,4 @@ "csp": "default-src blob: data: filesystem: ws: http: https: 'unsafe-eval' 'unsafe-inline'" } } -} +} \ No newline at end of file diff --git a/cli/tauri-bundler/Readme.md b/cli/tauri-bundler/README.md similarity index 51% rename from cli/tauri-bundler/Readme.md rename to cli/tauri-bundler/README.md index 739b6aed0..1e285c5d6 100644 --- a/cli/tauri-bundler/Readme.md +++ b/cli/tauri-bundler/README.md @@ -1,31 +1,14 @@ -# Cargo Tauri Bundle +# Tauri Bundler -Wrap Rust executables in OS-specific app bundles +Wrap Rust executables in OS-specific app bundles. ## About -`cargo tauri-bundle` is a tool used to generate installers or app bundles for GUI -executables built with `cargo`. It can create `.app` bundles for Mac OS X and -iOS, `.deb` packages for Linux, and `.msi` installers for Windows (note however -that iOS and Windows support is still experimental). Support for creating -`.rpm` packages (for Linux) and `.apk` packages (for Android) is still pending. +This is a fork of the awesome [cargo-bundle](https://github.com/burtonageo/cargo-bundle), turned into a library used by the [Tauri CLI](../core). -To install `cargo tauri-bundle`, run `cargo install cargo-tauri-bundle`. This will add the most recent version of `cargo-bundle` -published to [crates.io](https://crates.io/crates/cargo-bundle) as a subcommand to your default `cargo` installation. +## Configuration -To start using `cargo tauri-bundle`, add a `[package.metadata.bundle]` section to your project's `Cargo.toml` file. This -section describes various attributes of the generated bundle, such as its name, icon, description, copyright, as well -as any packaging scripts you need to generate extra data. The full manifest format is described below. - -To build a bundle for the OS you're on, simply run `cargo tauri-bundle` in your -project's directory (where the `Cargo.toml` is placed). If you would like to -bundle a release build, you must add the `--release` flag to your call. To -cross-compile and bundle an application for another OS, add an appropriate -`--target` flag, just as you would for `cargo build`. - -## Bundle manifest format - -There are several fields in the `[package.metadata.bundle]` section. +Tauri automatically loads configurations from the `tauri.conf.json > tauri > bundle` object, but this library doesn't rely on it and can be used by non-Tauri apps. ### General settings @@ -39,7 +22,7 @@ These settings apply to bundles for all (or most) OSes. bundle's `CFBundleIdentifier` value; for Windows, this is hashed to create an application GUID. * `icon`: [OPTIONAL] The icons used for your application. This should be an array of file paths or globs (with images - in various sizes/formats); `cargo-bundle` will automatically convert between image formats as necessary for + in various sizes/formats); `tauri-bundler` will automatically convert between image formats as necessary for different platforms. Supported formats include ICNS, ICO, PNG, and anything else that can be decoded by the [`image`](https://crates.io/crates/image) crate. Icons intended for high-resolution (e.g. Retina) displays should have a filename with `@2x` just before the extension (see example below). @@ -47,14 +30,12 @@ These settings apply to bundles for all (or most) OSes. value from your `Cargo.toml` file. * `resources`: [OPTIONAL] List of files or directories which will be copied to the resources section of the bundle. Globs are supported. - * `script`: [OPTIONAL] This is a reserved field; at the moment it is not used for anything, but may be used to - run scripts while packaging the bundle (e.g. download files, compress and encrypt, etc.). * `copyright`: [OPTIONAL] This contains a copyright string associated with your application. * `category`: [OPTIONAL] What kind of application this is. This can be a human-readable string (e.g. `"Puzzle game"`), or a Mac OS X LSApplicationCategoryType value (e.g. `"public.app-category.puzzle-games"`), or a GNOME desktop - file category name (e.g. `"LogicGame"`), and `cargo-bundle` will + file category name (e.g. `"LogicGame"`), and `tauri-bundler` will automatically convert as needed for different platforms. * `short_description`: [OPTIONAL] A short, one-line description of the application. If this is not present, then it will use the `description` value from your `Cargo.toml` file. @@ -64,72 +45,79 @@ These settings apply to bundles for all (or most) OSes. These settings are used only when bundling `deb` packages. -* `deb_depends`: A list of strings indicating other packages (e.g. shared +* `depends`: A list of strings indicating other packages (e.g. shared libraries) that this package depends on to be installed. If present, this forms the `Depends:` field of the `deb` package control file. +* `use_bootstrapper`: Enables the bootstrapper script, which allows access to the environment variables. ### Mac OS X-specific settings -These settings are used only when bundling `osx` packages. +These settings are used only when bundling `app` and `dmg` packages. -* `osx_frameworks`: A list of strings indicating any Mac OS X frameworks that +* `frameworks`: A list of strings indicating any Mac OS X frameworks that need to be bundled with the app. Each string can either be the name of a framework (without the `.framework` extension, e.g. `"SDL2"`), in which case - `cargo-bundle` will search for that framework in the standard install + `tauri-bundler` will search for that framework in the standard install locations (`~/Library/Frameworks/`, `/Library/Frameworks/`, and `/Network/Library/Frameworks/`), or a path to a specific framework bundle (e.g. `./data/frameworks/SDL2.framework`). Note that this setting just makes - `cargo-bundle` copy the specified frameworks into the OS X app bundle (under + `tauri-bundler` copy the specified frameworks into the OS X app bundle (under `Foobar.app/Contents/Frameworks/`); you are still responsible for (1) arranging for the compiled binary to link against those frameworks (e.g. by emitting lines like `cargo:rustc-link-lib=framework=SDL2` from your `build.rs` script), and (2) embedding the correct rpath in your binary (e.g. by running `install_name_tool -add_rpath "@executable_path/../Frameworks" path/to/binary` after compiling). -* `osx_minimum_system_version`: A version string indicating the minimum Mac OS +* `minimum_system_version`: A version string indicating the minimum Mac OS X version that the bundled app supports (e.g. `"10.11"`). If you are using this config field, you may also want have your `build.rs` script emit `cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.11` (or whatever version number you want) to ensure that the compiled binary has the same minimum version. +* `license`: Path to the license file for the DMG bundle. +* `exception_domain`: The exception domain to use on the macOS .app bundle. Allows communication to the outside world e.g. a web server you're shipping. +* `use_bootstrapper`: Enables the bootstrapper script, which allows access to the environment variables. -### Example `Cargo.toml`: +### Example `tauri.conf.json`: -```toml -[package] -name = "example" -# ...other fields... - -[package.metadata.bundle] -name = "ExampleApplication" -identifier = "com.doe.exampleapplication" -icon = ["32x32.png", "128x128.png", "128x128@2x.png"] -version = "1.0.0" -resources = ["assets", "images/**/*.png", "secrets/public_key.txt"] -copyright = "Copyright (c) Jane Doe 2016. All rights reserved." -category = "Developer Tool" -short_description = "An example application." -long_description = """ -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do -eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut -enim ad minim veniam, quis nostrud exercitation ullamco laboris -nisi ut aliquip ex ea commodo consequat. -""" -deb_depends = ["libgl1-mesa-glx", "libsdl2-2.0-0 (>= 2.0.5)"] -osx_frameworks = ["SDL2"] +```json +{ + "package": { + "productName": "Your Awesome App", + "version": "0.1.0" + }, + "tauri": { + "bundle": { + "active": true, + "identifier": "com.my.app", + "shortDescription": "", + "longDescription": "", + "copyright": "Copyright (c) You 2021. All rights reserved.", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "resources": ["./assets/**/*.png"], + "deb": { + "depends": ["debian-dependency1", "debian-dependency2"], + "useBootstrapper": true + }, + "macOS": { + "frameworks": [], + "minimumSystemVersion": "10.11", + "license": "./LICENSE", + "useBootstrapper": true + }, + "externalBin": ["./sidecar-app"] + } + } +} ``` -## Contributing - -`cargo-tauri-bundle` has ambitions to be inclusive project and welcome contributions from anyone. Please abide by the Rust -code of conduct. - -## Status - -Very early alpha. Expect the format of the `[package.metadata.bundle]` section to change, and there is no guarantee of -stability. - ## License -(c) 2017 - present, George Burton, Lucas Fernandes Gonçalves Nogueira, Daniel Thompson-Yvetot, Razvan Stoenescu +(c) 2017 - present, George Burton, Tauri-Apps Organization This program is licensed either under the terms of the [Apache Software License](http://www.apache.org/licenses/LICENSE-2.0), or the diff --git a/cli/tauri-bundler/src/bundle.rs b/cli/tauri-bundler/src/bundle.rs index 38eeeeaaf..f71bec2f4 100644 --- a/cli/tauri-bundler/src/bundle.rs +++ b/cli/tauri-bundler/src/bundle.rs @@ -4,9 +4,9 @@ mod common; mod deb_bundle; mod dmg_bundle; mod ios_bundle; +mod macos_bundle; #[cfg(target_os = "windows")] mod msi_bundle; -mod osx_bundle; mod path_utils; mod platform; mod rpm_bundle; @@ -18,7 +18,8 @@ pub use self::{ category::AppCategory, common::{print_error, print_info}, settings::{ - BundleBinary, BundleSettings, PackageSettings, PackageType, Settings, SettingsBuilder, + BundleBinary, BundleSettings, DebianSettings, MacOSSettings, PackageSettings, PackageType, + Settings, SettingsBuilder, }, }; use common::print_finished; @@ -32,11 +33,11 @@ pub fn bundle_project(settings: Settings) -> crate::Result> { let package_types = settings.package_types()?; for package_type in &package_types { let mut bundle_paths = match package_type { - PackageType::OsxBundle => { + PackageType::MacOSBundle => { if package_types.clone().iter().any(|&t| t == PackageType::Dmg) { vec![] } else { - osx_bundle::bundle_project(&settings)? + macos_bundle::bundle_project(&settings)? } } PackageType::IosBundle => ios_bundle::bundle_project(&settings)?, diff --git a/cli/tauri-bundler/src/bundle/category.rs b/cli/tauri-bundler/src/bundle/category.rs index 82b39dcaa..7b8423058 100644 --- a/cli/tauri-bundler/src/bundle/category.rs +++ b/cli/tauri-bundler/src/bundle/category.rs @@ -2,7 +2,7 @@ use std::{fmt, str::FromStr}; const CONFIDENCE_THRESHOLD: f64 = 0.8; -const OSX_APP_CATEGORY_PREFIX: &str = "public.app-category."; +const MACOS_APP_CATEGORY_PREFIX: &str = "public.app-category."; // TODO: RIght now, these categories correspond to LSApplicationCategoryType // values for OS X. There are also some additional GNOME registered categories @@ -61,8 +61,11 @@ impl FromStr for AppCategory { fn from_str(input: &str) -> Result { // Canonicalize input: let mut input = input.to_ascii_lowercase(); - if input.starts_with(OSX_APP_CATEGORY_PREFIX) { - input = input.split_at(OSX_APP_CATEGORY_PREFIX.len()).1.to_string(); + if input.starts_with(MACOS_APP_CATEGORY_PREFIX) { + input = input + .split_at(MACOS_APP_CATEGORY_PREFIX.len()) + .1 + .to_string(); } input = input.replace(" ", ""); input = input.replace("-", ""); @@ -181,7 +184,7 @@ impl AppCategory { /// Map an AppCategory to the closest LSApplicationCategoryType value that /// matches that category. - pub fn osx_application_category_type(self) -> &'static str { + pub fn macos_application_category_type(self) -> &'static str { match &self { AppCategory::Business => "public.app-category.business", AppCategory::DeveloperTool => "public.app-category.developer-tools", @@ -454,7 +457,7 @@ mod tests { // macOS app bundle LSApplicationCategoryType. for &value in values.iter() { let category = AppCategory::from_str(value).expect(value); - assert_eq!(category.osx_application_category_type(), value); + assert_eq!(category.macos_application_category_type(), value); } } } diff --git a/cli/tauri-bundler/src/bundle/deb_bundle.rs b/cli/tauri-bundler/src/bundle/deb_bundle.rs index 159b83c70..0e4f340b2 100644 --- a/cli/tauri-bundler/src/bundle/deb_bundle.rs +++ b/cli/tauri-bundler/src/bundle/deb_bundle.rs @@ -107,7 +107,7 @@ pub fn generate_data(settings: &Settings, package_dir: &Path) -> crate::Result

crate::Result< if !settings.short_description().is_empty() { writeln!(file, "Comment={}", settings.short_description())?; } - let use_bootstrapper = settings.debian_use_bootstrapper(); + let use_bootstrapper = settings.deb().use_bootstrapper.unwrap_or_default(); writeln!( file, "Exec={}", @@ -239,7 +239,7 @@ fn generate_control_file( if !settings.homepage_url().is_empty() { writeln!(&mut file, "Homepage: {}", settings.homepage_url())?; } - let dependencies = settings.debian_dependencies(); + let dependencies = settings.deb().depends.as_ref().cloned().unwrap_or_default(); if !dependencies.is_empty() { writeln!(&mut file, "Depends: {}", dependencies.join(", "))?; } diff --git a/cli/tauri-bundler/src/bundle/dmg_bundle.rs b/cli/tauri-bundler/src/bundle/dmg_bundle.rs index 87e2fd22d..4e4e19c8f 100644 --- a/cli/tauri-bundler/src/bundle/dmg_bundle.rs +++ b/cli/tauri-bundler/src/bundle/dmg_bundle.rs @@ -1,4 +1,4 @@ -use super::{common, osx_bundle}; +use super::{common, macos_bundle}; use crate::Settings; use anyhow::Context; @@ -14,7 +14,7 @@ use std::{ /// Returns a vector of PathBuf that shows where the DMG was created. pub fn bundle_project(settings: &Settings) -> crate::Result> { // generate the .app bundle - osx_bundle::bundle_project(settings)?; + macos_bundle::bundle_project(settings)?; // get the target path let output_path = settings.project_out_directory().join("bundle/dmg"); @@ -31,7 +31,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result> { let dmg_path = output_path.join(&dmg_name); let product_name = &format!("{}.app", &package_base_name); - let bundle_dir = settings.project_out_directory().join("bundle/osx"); + let bundle_dir = settings.project_out_directory().join("bundle/macos"); let bundle_path = bundle_dir.join(&product_name.clone()); let support_directory_path = output_path.join("support"); @@ -96,7 +96,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result> { &product_name, ]; - if let Some(license_path) = settings.osx_license() { + if let Some(license_path) = &settings.macos().license { args.push("--eula"); args.push(license_path); } diff --git a/cli/tauri-bundler/src/bundle/osx_bundle.rs b/cli/tauri-bundler/src/bundle/macos_bundle.rs similarity index 95% rename from cli/tauri-bundler/src/bundle/osx_bundle.rs rename to cli/tauri-bundler/src/bundle/macos_bundle.rs index e4fb2e463..c5be10c28 100644 --- a/cli/tauri-bundler/src/bundle/osx_bundle.rs +++ b/cli/tauri-bundler/src/bundle/macos_bundle.rs @@ -1,4 +1,4 @@ -// An OSX package is laid out like: +// A macOS application bundle package is laid out like: // // foobar.app # Actually a directory // Contents # A further subdirectory @@ -48,7 +48,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result> { common::print_bundling(&app_product_name)?; let app_bundle_path = settings .project_out_directory() - .join("bundle/osx") + .join("bundle/macos") .join(&app_product_name); if app_bundle_path.exists() { fs::remove_dir_all(&app_bundle_path) @@ -82,10 +82,10 @@ pub fn bundle_project(settings: &Settings) -> crate::Result> { copy_binaries_to_bundle(&bundle_directory, settings)?; - let use_bootstrapper = settings.osx_use_bootstrapper(); + let use_bootstrapper = settings.macos().use_bootstrapper.unwrap_or_default(); if use_bootstrapper { create_bootstrapper(&bundle_directory, settings) - .with_context(|| "Failed to create OSX bootstrapper")?; + .with_context(|| "Failed to create macOS bootstrapper")?; } Ok(vec![app_bundle_path]) } @@ -162,7 +162,7 @@ fn create_info_plist( ) -> crate::Result<()> { let build_number = chrono::Utc::now().format("%Y%m%d.%H%M%S"); let file = &mut common::create_file(&bundle_dir.join("Info.plist"))?; - let use_bootstrapper = settings.osx_use_bootstrapper(); + let use_bootstrapper = settings.macos().use_bootstrapper.unwrap_or_default(); write!( file, "\n\ @@ -232,10 +232,10 @@ fn create_info_plist( file, " LSApplicationCategoryType\n \ {}\n", - category.osx_application_category_type() + category.macos_application_category_type() )?; } - if let Some(version) = settings.osx_minimum_system_version() { + if let Some(version) = &settings.macos().minimum_system_version { write!( file, " LSMinimumSystemVersion\n \ @@ -254,7 +254,7 @@ fn create_info_plist( )?; } - if let Some(exception_domain) = settings.exception_domain() { + if let Some(exception_domain) = &settings.macos().exception_domain { write!( file, " NSAppTransportSecurity\n \ @@ -291,9 +291,14 @@ fn copy_framework_from(dest_dir: &Path, framework: &str, src_dir: &Path) -> crat } } -// Copies the OSX bundle frameworks to the .app +// Copies the macOS application bundle frameworks to the .app fn copy_frameworks_to_bundle(bundle_directory: &Path, settings: &Settings) -> crate::Result<()> { - let frameworks = settings.osx_frameworks(); + let frameworks = settings + .macos() + .frameworks + .as_ref() + .cloned() + .unwrap_or_default(); if frameworks.is_empty() { return Ok(()); } diff --git a/cli/tauri-bundler/src/bundle/settings.rs b/cli/tauri-bundler/src/bundle/settings.rs index a83775f6a..a20e39128 100644 --- a/cli/tauri-bundler/src/bundle/settings.rs +++ b/cli/tauri-bundler/src/bundle/settings.rs @@ -11,8 +11,8 @@ use std::{ /// The type of the package we're bundling. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum PackageType { - /// The macOS bundle (.app). - OsxBundle, + /// The macOS application bundle (.app). + MacOSBundle, /// The iOS app bundle. IosBundle, /// The Windows bundle (.msi). @@ -30,7 +30,7 @@ pub enum PackageType { impl PackageType { /// Maps a short name to a PackageType. - /// Possible values are "deb", "ios", "msi", "osx", "rpm", "appimage", "dmg". + /// Possible values are "deb", "ios", "msi", "app", "rpm", "appimage", "dmg". pub fn from_short_name(name: &str) -> Option { // Other types we may eventually want to support: apk. match name { @@ -38,7 +38,7 @@ impl PackageType { "ios" => Some(PackageType::IosBundle), #[cfg(target_os = "windows")] "msi" => Some(PackageType::WindowsMsi), - "osx" => Some(PackageType::OsxBundle), + "app" => Some(PackageType::MacOSBundle), "rpm" => Some(PackageType::Rpm), "appimage" => Some(PackageType::AppImage), "dmg" => Some(PackageType::Dmg), @@ -54,7 +54,7 @@ impl PackageType { PackageType::IosBundle => "ios", #[cfg(target_os = "windows")] PackageType::WindowsMsi => "msi", - PackageType::OsxBundle => "osx", + PackageType::MacOSBundle => "app", PackageType::Rpm => "rpm", PackageType::AppImage => "appimage", PackageType::Dmg => "dmg", @@ -72,7 +72,7 @@ const ALL_PACKAGE_TYPES: &[PackageType] = &[ PackageType::IosBundle, #[cfg(target_os = "windows")] PackageType::WindowsMsi, - PackageType::OsxBundle, + PackageType::MacOSBundle, PackageType::Rpm, PackageType::Dmg, PackageType::AppImage, @@ -95,6 +95,52 @@ pub struct PackageSettings { pub default_run: Option, } +/// The Linux debian bundle settings. +#[derive(Clone, Debug, Deserialize, Default)] +pub struct DebianSettings { + // OS-specific settings: + /// the list of debian dependencies. + pub depends: Option>, + /// whether we should use the bootstrap script on debian or not. + /// + /// this script goal is to allow your app to access environment variables e.g $PATH. + /// + /// without it, you can't run some applications installed by the user. + pub use_bootstrapper: Option, +} + +/// The macOS bundle settings. +#[derive(Clone, Debug, Deserialize, Default)] +pub struct MacOSSettings { + /// MacOS frameworks that need to be bundled with the app. + /// + /// Each string can either be the name of a framework (without the `.framework` extension, e.g. `"SDL2"`), + /// in which case we will search for that framework in the standard install locations (`~/Library/Frameworks/`, `/Library/Frameworks/`, and `/Network/Library/Frameworks/`), + /// or a path to a specific framework bundle (e.g. `./data/frameworks/SDL2.framework`). Note that this setting just makes tauri-bundler copy the specified frameworks into the OS X app bundle + /// (under `Foobar.app/Contents/Frameworks/`); you are still responsible for: + /// + /// - arranging for the compiled binary to link against those frameworks (e.g. by emitting lines like `cargo:rustc-link-lib=framework=SDL2` from your `build.rs` script) + /// + /// - embedding the correct rpath in your binary (e.g. by running `install_name_tool -add_rpath "@executable_path/../Frameworks" path/to/binary` after compiling) + pub frameworks: Option>, + /// A version string indicating the minimum MacOS version that the bundled app supports (e.g. `"10.11"`). + /// If you are using this config field, you may also want have your `build.rs` script emit `cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.11`. + pub minimum_system_version: Option, + /// The path to the LICENSE file for macOS apps. + /// Currently only used by the dmg bundle. + pub license: Option, + /// whether we should use the bootstrap script on macOS .app or not. + /// + /// this script goal is to allow your app to access environment variables e.g $PATH. + /// + /// without it, you can't run some applications installed by the user. + pub use_bootstrapper: Option, + /// The exception domain to use on the macOS .app bundle. + /// + /// This allows communication to the outside world e.g. a web server you're shipping. + pub exception_domain: Option, +} + /// The bundle settings of the BuildArtifact we're bundling. #[derive(Clone, Debug, Deserialize, Default)] pub struct BundleSettings { @@ -116,45 +162,9 @@ pub struct BundleSettings { pub short_description: Option, /// the app's long description. pub long_description: Option, - /// the app's script to run when unpackaging the bundle. - pub script: Option, - // OS-specific settings: - /// the list of debian dependencies. - pub deb_depends: Option>, - /// whether we should use the bootstrap script on debian or not. - /// - /// this script goal is to allow your app to access environment variables e.g $PATH. - /// - /// without it, you can't run some applications installed by the user. - pub deb_use_bootstrapper: Option, - /// Mac OS X frameworks that need to be bundled with the app. - /// - /// Each string can either be the name of a framework (without the `.framework` extension, e.g. `"SDL2"`), - /// in which case we will search for that framework in the standard install locations (`~/Library/Frameworks/`, `/Library/Frameworks/`, and `/Network/Library/Frameworks/`), - /// or a path to a specific framework bundle (e.g. `./data/frameworks/SDL2.framework`). Note that this setting just makes tauri-bundler copy the specified frameworks into the OS X app bundle - /// (under `Foobar.app/Contents/Frameworks/`); you are still responsible for: - /// - /// - arranging for the compiled binary to link against those frameworks (e.g. by emitting lines like `cargo:rustc-link-lib=framework=SDL2` from your `build.rs` script) - /// - /// - embedding the correct rpath in your binary (e.g. by running `install_name_tool -add_rpath "@executable_path/../Frameworks" path/to/binary` after compiling) - pub osx_frameworks: Option>, - /// A version string indicating the minimum Mac OS X version that the bundled app supports (e.g. `"10.11"`). - /// If you are using this config field, you may also want have your `build.rs` script emit `cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.11`. - pub osx_minimum_system_version: Option, - /// The path to the LICENSE file for macOS apps. - /// Currently only used by the dmg bundle. - pub osx_license: Option, - /// whether we should use the bootstrap script on macOS .app or not. - /// - /// this script goal is to allow your app to access environment variables e.g $PATH. - /// - /// without it, you can't run some applications installed by the user. - pub osx_use_bootstrapper: Option, - // Bundles for other binaries/examples: + // Bundles for other binaries: /// Configuration map for the possible [bin] apps to bundle. pub bin: Option>, - /// Configuration map for the possible example apps to bundle. - pub example: Option>, /// External binaries to add to the bundle. /// /// Note that each binary name will have the target platform's target triple appended, @@ -164,10 +174,10 @@ pub struct BundleSettings { /// /// The possible target triples can be seen by running `$ rustup target list`. pub external_bin: Option>, - /// The exception domain to use on the macOS .app bundle. - /// - /// This allows communication to the outside world e.g. a web server you're shipping. - pub exception_domain: Option, + /// Debian-specific settings. + pub deb: DebianSettings, + /// MacOS-specific settings. + pub macos: MacOSSettings, } #[derive(Clone, Debug)] @@ -349,7 +359,7 @@ impl Settings { pub fn package_types(&self) -> crate::Result> { let target_os = std::env::consts::OS; let platform_types = match target_os { - "macos" => vec![PackageType::OsxBundle, PackageType::Dmg], + "macos" => vec![PackageType::MacOSBundle, PackageType::Dmg], "ios" => vec![PackageType::IosBundle], "linux" => vec![PackageType::Deb, PackageType::AppImage], #[cfg(target_os = "windows")] @@ -420,11 +430,6 @@ impl Settings { } } - /// Returns the OSX exception domain. - pub fn exception_domain(&self) -> Option<&String> { - self.bundle_settings.exception_domain.as_ref() - } - /// Copies external binaries to a path. pub fn copy_binaries(&self, path: &Path) -> crate::Result<()> { for src in self.external_binaries() { @@ -501,40 +506,14 @@ impl Settings { self.bundle_settings.long_description.as_deref() } - /// Returns the dependencies of the debian bundle. - pub fn debian_dependencies(&self) -> &[String] { - match self.bundle_settings.deb_depends { - Some(ref dependencies) => dependencies.as_slice(), - None => &[], - } + /// Returns the debian settings. + pub fn deb(&self) -> &DebianSettings { + &self.bundle_settings.deb } - /// Returns whether the debian bundle should use the bootstrap script or not. - pub fn debian_use_bootstrapper(&self) -> bool { - self.bundle_settings.deb_use_bootstrapper.unwrap_or(false) - } - - /// Returns the frameworks to bundle with the macOS .app - pub fn osx_frameworks(&self) -> &[String] { - match self.bundle_settings.osx_frameworks { - Some(ref frameworks) => frameworks.as_slice(), - None => &[], - } - } - - /// Returns the minimum system version of the macOS bundle. - pub fn osx_minimum_system_version(&self) -> Option<&str> { - self.bundle_settings.osx_minimum_system_version.as_deref() - } - - /// Returns the path to the DMG bundle license. - pub fn osx_license(&self) -> Option<&str> { - self.bundle_settings.osx_license.as_deref() - } - - /// Returns whether the macOS .app bundle should use the bootstrap script or not. - pub fn osx_use_bootstrapper(&self) -> bool { - self.bundle_settings.osx_use_bootstrapper.unwrap_or(false) + /// Returns the MacOS settings. + pub fn macos(&self) -> &MacOSSettings { + &self.bundle_settings.macos } } diff --git a/cli/tauri.js/test/jest/__tests__/template.spec.js b/cli/tauri.js/test/jest/__tests__/template.spec.js index 693da1784..a6947d01f 100644 --- a/cli/tauri.js/test/jest/__tests__/template.spec.js +++ b/cli/tauri.js/test/jest/__tests__/template.spec.js @@ -30,7 +30,7 @@ describe('[CLI] tauri.js template', () => { config: { tauri: { bundle: { - targets: ['deb', 'osx', 'msi', 'appimage'] // we can't bundle dmg on CI so we remove it here + targets: ['deb', 'app', 'msi', 'appimage'] // we can't bundle dmg on CI so we remove it here } } } diff --git a/examples/api/public/build/bundle.js b/examples/api/public/build/bundle.js index 80e0a6cd8..6a4978dfa 100644 --- a/examples/api/public/build/bundle.js +++ b/examples/api/public/build/bundle.js @@ -13,5 +13,5 @@ var app=function(){"use strict";function e(){}function t(e){return e()}function OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ -var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function i(e,t,n,i){return new(n||(n=Promise))((function(o,r){function u(e){try{s(i.next(e))}catch(e){r(e)}}function a(e){try{s(i.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,a)}s((i=i.apply(e,t||[])).next())}))}function o(e,t){var n,i,o,r,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(r){return function(a){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,i&&(o=2&r[0]?i.return:r[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return u.label++,{value:r[1],done:!1};case 5:u.label++,i=r[1],r=[0];continue;case 7:r=u.ops.pop(),u.trys.pop();continue;default:if(!((o=(o=u.trys).length>0&&o[o.length-1])||6!==r[0]&&2!==r[0])){u=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]{"onMessage"in e&&n(1,i=e.onMessage)},[function(){Q.getMatches().then(i).catch(i)},i]}class te extends N{constructor(e){super(),L(this,e,ee,Z,r,{onMessage:1})}}var ne=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,X.emit(e,void 0,t)]}))}))}var i=Object.freeze({__proto__:null,emit:n,listen:X.listen,once:X.once});t.emit=n,t.event=i})),ie=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.listen=X.listen,t.once=X.once,t.emit=ne.emit})),oe=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.invoke=G.invoke,t.transformCallback=G.transformCallback}));function re(t){let n,o,r,u,l,f,_,v;return{c(){n=d("div"),o=d("button"),o.textContent="Call Log API",r=p(),u=d("button"),u.textContent="Call Request (async) API",l=p(),f=d("button"),f.textContent="Send event to Rust",m(o,"class","button"),m(o,"id","log"),m(u,"class","button"),m(u,"id","request"),m(f,"class","button"),m(f,"id","event")},m(e,i){s(e,n,i),a(n,o),a(n,r),a(n,u),a(n,l),a(n,f),_||(v=[h(o,"click",t[0]),h(u,"click",t[1]),h(f,"click",t[2])],_=!0)},p:e,i:e,o:e,d(e){e&&c(n),_=!1,i(v)}}}function ue(e,t,n){let{onMessage:i}=t;return ie.listen("rust-event",i),e.$$set=e=>{"onMessage"in e&&n(3,i=e.onMessage)},[function(){oe.invoke("log_operation",{event:"tauri-click",payload:"this payload is optional because we used Option in Rust"})},function(){oe.invoke("perform_request",{endpoint:"dummy endpoint arg",body:{id:5,name:"test"}}).then(i).catch(i)},function(){ie.emit("js-event","this is the payload string")},i]}class ae extends N{constructor(e){super(),L(this,e,ue,re,r,{onMessage:3})}}var se=U((function(e,t){function n(e){return void 0===e&&(e={}),G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Dialog",mainThread:!0,message:{cmd:"openDialog",options:e}})]}))}))}function i(e){return void 0===e&&(e={}),G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Dialog",mainThread:!0,message:{cmd:"saveDialog",options:e}})]}))}))}var o=Object.freeze({__proto__:null,open:n,save:i});t.dialog=o,t.open=n,t.save=i})),ce=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.open=se.open,t.save=se.save})),le=U((function(e,t){var n,i=G;function o(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"readTextFile",path:e,options:t}})]}))}))}function r(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"readBinaryFile",path:e,options:t}})]}))}))}function u(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return"object"==typeof t&&Object.freeze(t),"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"writeFile",path:e.path,contents:e.contents,options:t}})]}))}))}function a(e){var t=function(e){if(e.length<65536)return String.fromCharCode.apply(null,Array.from(e));for(var t="",n=e.length,i=0;i{"onMessage"in e&&n(6,i=e.onMessage)},[o,r,u,a,function(){ce.open({defaultPath:o,filters:r?[{name:"Tauri Example",extensions:r.split(",").map((e=>e.trim()))}]:[],multiple:u,directory:a}).then((function(e){if(Array.isArray(e))i(e);else{var t=e,n=t.match(/\S+\.\S+$/g);de.readBinaryFile(t).then((function(o){var r,u,a,s;n&&(t.includes(".png")||t.includes(".jpg"))?(r=new Uint8Array(o),u=function(e){i('')},a=new Blob([r],{type:"application/octet-binary"}),(s=new FileReader).onload=function(e){var t=e.target.result;u(t.substr(t.indexOf(",")+1))},s.readAsDataURL(a)):i(e)})).catch(i(e))}})).catch(i)},function(){ce.save({defaultPath:o,filters:r?[{name:"Tauri Example",extensions:r.split(",").map((e=>e.trim()))}]:[]}).then(i).catch(i)},i,function(){o=this.value,n(0,o)},function(){r=this.value,n(1,r)},function(){u=this.checked,n(2,u)},function(){a=this.checked,n(3,a)}]}class he extends N{constructor(e){var t;super(),document.getElementById("svelte-1eg58yg-style")||((t=d("style")).id="svelte-1eg58yg-style",t.textContent="#dialog-filter.svelte-1eg58yg{width:260px}",a(document.head,t)),L(this,e,pe,fe,r,{onMessage:6})}}function _e(e,t,n){const i=e.slice();return i[5]=t[n],i}function me(t){let n,i,o=t[5][0]+"";return{c(){n=d("option"),i=f(o),n.__value=t[5][1],n.value=n.__value},m(e,t){s(e,n,t),a(n,i)},p:e,d(e){e&&c(n)}}}function ve(t){let n,o,r,u,f,v,g,y,w,k=t[1],x=[];for(let e=0;eisNaN(parseInt(e)))).map((e=>[e,de.Dir[e]]));return e.$$set=e=>{"onMessage"in e&&n(3,i=e.onMessage)},[o,r,function(){const e=o.match(/\S+\.\S+$/g),t={dir:ge()};(e?de.readBinaryFile(o,t):de.readDir(o,t)).then((function(t){if(e)if(o.includes(".png")||o.includes(".jpg"))!function(e,t){const n=new Blob([e],{type:"application/octet-binary"}),i=new FileReader;i.onload=function(e){const n=e.target.result;t(n.substr(n.indexOf(",")+1))},i.readAsDataURL(n)}(new Uint8Array(t),(function(e){i('')}));else{const e=String.fromCharCode.apply(null,t);i(''),setTimeout((()=>{const t=document.getElementById("file-response");t.value=e,document.getElementById("file-save").addEventListener("click",(function(){writeFile({file:o,contents:t.value},{dir:ge()}).catch(i)}))}))}else i(t)})).catch(i)},i,function(){o=this.value,n(0,o)}]}class ye extends N{constructor(e){super(),L(this,e,be,ve,r,{onMessage:3})}}var we=U((function(e,t){var n;t.ResponseType=void 0,(n=t.ResponseType||(t.ResponseType={}))[n.JSON=1]="JSON",n[n.Text=2]="Text",n[n.Binary=3]="Binary";var i=function(){function e(e,t){this.type=e,this.payload=t}return e.form=function(t){return new e("Form",t)},e.json=function(t){return new e("Json",t)},e.text=function(t){return new e("Text",t)},e.bytes=function(t){return new e("Bytes",t)},e}(),o=function(){function e(e){this.id=e}return e.prototype.drop=function(){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(e){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"dropClient",client:this.id}})]}))}))},e.prototype.request=function(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"httpRequest",client:this.id,options:e}})]}))}))},e.prototype.get=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"GET",url:e},t))]}))}))},e.prototype.post=function(e,t,n){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){return[2,this.request(G._assign({method:"POST",url:e,body:t},n))]}))}))},e.prototype.put=function(e,t,n){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){return[2,this.request(G._assign({method:"PUT",url:e,body:t},n))]}))}))},e.prototype.patch=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"PATCH",url:e},t))]}))}))},e.prototype.delete=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"DELETE",url:e},t))]}))}))},e}();function r(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"createClient",options:e}}).then((function(e){return new o(e)}))]}))}))}var u=null;function a(e,t){var n;return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){switch(i.label){case 0:return null!==u?[3,2]:[4,r()];case 1:u=i.sent(),i.label=2;case 2:return[2,u.request(G._assign({url:e,method:null!==(n=null==t?void 0:t.method)&&void 0!==n?n:"GET"},t))]}}))}))}var s=Object.freeze({__proto__:null,get ResponseType(){return t.ResponseType},Body:i,Client:o,getClient:r,fetch:a});t.Body=i,t.Client=o,t.fetch=a,t.getClient=r,t.http=s})),ke=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Body=we.Body,t.Client=we.Client,Object.defineProperty(t,"ResponseType",{enumerable:!0,get:function(){return we.ResponseType}}),t.fetch=we.fetch,t.getClient=we.getClient}));function xe(t){let n,o,r,u,l,f,v,g,k,x,C,T,M,$,O,F,j;return{c(){n=d("form"),o=d("select"),r=d("option"),r.textContent="GET",u=d("option"),u.textContent="POST",l=d("option"),l.textContent="PUT",f=d("option"),f.textContent="PATCH",v=d("option"),v.textContent="DELETE",g=p(),k=d("input"),x=p(),C=d("br"),T=p(),M=d("textarea"),$=p(),O=d("button"),O.textContent="Make request",r.__value="GET",r.value=r.__value,u.__value="POST",u.value=u.__value,l.__value="PUT",l.value=l.__value,f.__value="PATCH",f.value=f.__value,v.__value="DELETE",v.value=v.__value,m(o,"class","button"),m(o,"id","request-method"),void 0===t[0]&&D((()=>t[5].call(o))),m(k,"id","request-url"),m(k,"placeholder","Type the request URL..."),m(M,"id","request-body"),m(M,"placeholder","Request body"),m(M,"rows","5"),y(M,"width","100%"),y(M,"margin-right","10px"),y(M,"font-size","12px"),m(O,"class","button"),m(O,"id","make-request")},m(e,i){s(e,n,i),a(n,o),a(o,r),a(o,u),a(o,l),a(o,f),a(o,v),w(o,t[0]),a(n,g),a(n,k),b(k,t[1]),a(n,x),a(n,C),a(n,T),a(n,M),b(M,t[2]),a(n,$),a(n,O),F||(j=[h(o,"change",t[5]),h(k,"input",t[6]),h(M,"input",t[7]),h(n,"submit",_(t[3]))],F=!0)},p(e,[t]){1&t&&w(o,e[0]),2&t&&k.value!==e[1]&&b(k,e[1]),4&t&&b(M,e[2])},i:e,o:e,d(e){e&&c(n),F=!1,i(j)}}}function Ce(e,t,n){let i="GET",o="",r="",{onMessage:u}=t;return e.$$set=e=>{"onMessage"in e&&n(4,u=e.onMessage)},[i,o,r,async function(){const e=await ke.getClient(),t={url:o||""||"",method:i||"GET"||"GET"};r.startsWith("{")&&r.endsWith("}")||r.startsWith("[")&&r.endsWith("]")?t.body=ke.Body.json(JSON.parse(r)):""!==r&&(t.body=ke.Body.text(r)),e.request(t).then(u).catch(u)},u,function(){i=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),n(0,i)},function(){o=this.value,n(1,o)},function(){r=this.value,n(2,r)}]}class Te extends N{constructor(e){super(),L(this,e,Ce,xe,r,{onMessage:4})}}function Me(t){let n,i,o;return{c(){n=d("button"),n.textContent="Send test notification",m(n,"class","button"),m(n,"id","notification")},m(e,r){s(e,n,r),i||(o=h(n,"click",t[0]),i=!0)},p:e,i:e,o:e,d(e){e&&c(n),i=!1,o()}}}function $e(){new Notification("Notification title",{body:"This is the notification body"})}function Oe(e,t,n){let{onMessage:i}=t;return e.$$set=e=>{"onMessage"in e&&n(1,i=e.onMessage)},[function(){"default"===Notification.permission?Notification.requestPermission().then((function(e){"granted"===e?$e():i("Permission is "+e)})).catch(i):"granted"===Notification.permission?$e():i("Permission is denied")},i]}class Fe extends N{constructor(e){super(),L(this,e,Oe,Me,r,{onMessage:1})}}var De=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return"object"==typeof t&&Object.freeze(t),[2,J.invokeTauriCommand({__tauriModule:"Shell",message:{cmd:"execute",command:e,args:"string"==typeof t?[t]:t}})]}))}))}function i(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"Shell",message:{cmd:"open",path:e,with:t}})]}))}))}var o=Object.freeze({__proto__:null,execute:n,open:i});t.execute=n,t.open=i,t.shell=o})),je=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.execute=De.execute,t.open=De.open}));function Pe(t){let n,o,r,u,l,g,w,k,x,C,T,M,$,O,F,D,j,P,W,A,z,E,S,B,R,q,I,H,L,N,U,G,J,X,Y,V,K,Q,Z,ee,te,ne,ie,oe,re,ue,ae,se,ce,le,de,fe,pe,he,_e,me,ve,ge,be,ye,we,ke,xe,Ce,Te,Me,$e,Oe,Fe,De,je,Pe,We,Ae,ze,Ee,Se,Be,Re,qe,Ie;return{c(){n=d("div"),o=d("div"),r=d("label"),u=d("input"),l=f("\n Resizable"),g=p(),w=d("label"),k=d("input"),x=f("\n Maximize"),C=p(),T=d("button"),T.textContent="Minimize",M=p(),$=d("button"),$.textContent="Hide",O=p(),F=d("label"),D=d("input"),j=f("\n Transparent"),P=p(),W=d("label"),A=d("input"),z=f("\n Has decorations"),E=p(),S=d("label"),B=d("input"),R=f("\n Always on top"),q=p(),I=d("label"),H=d("input"),L=f("\n Fullscreen"),N=p(),U=d("button"),U.textContent="Change icon",G=p(),J=d("div"),X=d("div"),Y=d("div"),V=d("div"),K=f("X\n "),Q=d("input"),Z=p(),ee=d("div"),te=f("Y\n "),ne=d("input"),ie=p(),oe=d("div"),re=d("div"),ue=f("Width\n "),ae=d("input"),se=p(),ce=d("div"),le=f("Height\n "),de=d("input"),fe=p(),pe=d("div"),he=d("div"),_e=f("Min width\n "),me=d("input"),ve=p(),ge=d("div"),be=f("Min height\n "),ye=d("input"),we=p(),ke=d("div"),xe=d("div"),Ce=f("Max width\n "),Te=d("input"),Me=p(),$e=d("div"),Oe=f("Max height\n "),Fe=d("input"),De=p(),je=d("form"),Pe=d("input"),We=p(),Ae=d("button"),Ae.textContent="Set title",ze=p(),Ee=d("form"),Se=d("input"),Be=p(),Re=d("button"),Re.textContent="Open URL",m(u,"type","checkbox"),m(k,"type","checkbox"),m(T,"title","Unminimizes after 2 seconds"),m($,"title","Visible again after 2 seconds"),m(D,"type","checkbox"),m(A,"type","checkbox"),m(B,"type","checkbox"),m(H,"type","checkbox"),m(Q,"type","number"),m(Q,"min","0"),m(Q,"class","svelte-b76pvm"),m(ne,"type","number"),m(ne,"min","0"),m(ne,"class","svelte-b76pvm"),m(Y,"class","flex col grow svelte-b76pvm"),m(ae,"type","number"),m(ae,"min","400"),m(ae,"class","svelte-b76pvm"),m(de,"type","number"),m(de,"min","400"),m(de,"class","svelte-b76pvm"),m(oe,"class","flex col grow svelte-b76pvm"),m(me,"type","number"),m(me,"class","svelte-b76pvm"),m(ye,"type","number"),m(ye,"class","svelte-b76pvm"),m(pe,"class","flex col grow svelte-b76pvm"),m(Te,"type","number"),m(Te,"min","400"),m(Te,"class","svelte-b76pvm"),m(Fe,"type","number"),m(Fe,"min","400"),m(Fe,"class","svelte-b76pvm"),m(ke,"class","flex col grow svelte-b76pvm"),m(X,"class","window-controls flex flex-row svelte-b76pvm"),m(n,"class","flex col"),m(Pe,"id","title"),m(Ae,"class","button"),m(Ae,"type","submit"),y(je,"margin-top","24px"),m(Se,"id","url"),m(Re,"class","button"),m(Re,"id","open-url"),y(Ee,"margin-top","24px")},m(e,i){s(e,n,i),a(n,o),a(o,r),a(r,u),u.checked=t[0],a(r,l),a(o,g),a(o,w),a(w,k),k.checked=t[1],a(w,x),a(o,C),a(o,T),a(o,M),a(o,$),a(o,O),a(o,F),a(F,D),D.checked=t[14],a(F,j),a(o,P),a(o,W),a(W,A),A.checked=t[2],a(W,z),a(o,E),a(o,S),a(S,B),B.checked=t[3],a(S,R),a(o,q),a(o,I),a(I,H),H.checked=t[4],a(I,L),a(o,N),a(o,U),a(n,G),a(n,J),a(J,X),a(X,Y),a(Y,V),a(V,K),a(V,Q),b(Q,t[11]),a(Y,Z),a(Y,ee),a(ee,te),a(ee,ne),b(ne,t[12]),a(X,ie),a(X,oe),a(oe,re),a(re,ue),a(re,ae),b(ae,t[5]),a(oe,se),a(oe,ce),a(ce,le),a(ce,de),b(de,t[6]),a(X,fe),a(X,pe),a(pe,he),a(he,_e),a(he,me),b(me,t[7]),a(pe,ve),a(pe,ge),a(ge,be),a(ge,ye),b(ye,t[8]),a(X,we),a(X,ke),a(ke,xe),a(xe,Ce),a(xe,Te),b(Te,t[9]),a(ke,Me),a(ke,$e),a($e,Oe),a($e,Fe),b(Fe,t[10]),s(e,De,i),s(e,je,i),a(je,Pe),b(Pe,t[15]),a(je,We),a(je,Ae),s(e,ze,i),s(e,Ee,i),a(Ee,Se),b(Se,t[13]),a(Ee,Be),a(Ee,Re),qe||(Ie=[h(u,"change",t[21]),h(k,"change",t[22]),h(T,"click",t[19]),h($,"click",t[18]),h(D,"change",t[23]),h(A,"change",t[24]),h(B,"change",t[25]),h(H,"change",t[26]),h(U,"click",t[20]),h(Q,"input",t[27]),h(ne,"input",t[28]),h(ae,"input",t[29]),h(de,"input",t[30]),h(me,"input",t[31]),h(ye,"input",t[32]),h(Te,"input",t[33]),h(Fe,"input",t[34]),h(Pe,"input",t[35]),h(je,"submit",_(t[17])),h(Se,"input",t[36]),h(Ee,"submit",_(t[16]))],qe=!0)},p(e,t){1&t[0]&&(u.checked=e[0]),2&t[0]&&(k.checked=e[1]),16384&t[0]&&(D.checked=e[14]),4&t[0]&&(A.checked=e[2]),8&t[0]&&(B.checked=e[3]),16&t[0]&&(H.checked=e[4]),2048&t[0]&&v(Q.value)!==e[11]&&b(Q,e[11]),4096&t[0]&&v(ne.value)!==e[12]&&b(ne,e[12]),32&t[0]&&v(ae.value)!==e[5]&&b(ae,e[5]),64&t[0]&&v(de.value)!==e[6]&&b(de,e[6]),128&t[0]&&v(me.value)!==e[7]&&b(me,e[7]),256&t[0]&&v(ye.value)!==e[8]&&b(ye,e[8]),512&t[0]&&v(Te.value)!==e[9]&&b(Te,e[9]),1024&t[0]&&v(Fe.value)!==e[10]&&b(Fe,e[10]),32768&t[0]&&Pe.value!==e[15]&&b(Pe,e[15]),8192&t[0]&&Se.value!==e[13]&&b(Se,e[13])},i:e,o:e,d(e){e&&c(n),e&&c(De),e&&c(je),e&&c(ze),e&&c(Ee),qe=!1,i(Ie)}}}function We(e,t,n){const{setResizable:i,setTitle:o,maximize:r,unmaximize:u,minimize:a,unminimize:s,show:c,hide:l,setTransparent:d,setDecorations:f,setAlwaysOnTop:p,setWidth:h,setHeight:_,setMinSize:m,setMaxSize:g,setX:b,setY:y,setFullscreen:w,setIcon:k}=V.appWindow;let x="https://tauri.studio",C=!0,T=!1,M=!1,$=!0,O=!1,F=!1,D=900,j=700,P=600,W=600,A=null,z=null,E=100,S=100,B="Awesome Tauri Example!";return e.$$.update=()=>{1&e.$$.dirty[0]&&i(C),2&e.$$.dirty[0]&&(T?r():u()),4&e.$$.dirty[0]&&f($),8&e.$$.dirty[0]&&p(O),16&e.$$.dirty[0]&&w(F),32&e.$$.dirty[0]&&h(D),64&e.$$.dirty[0]&&_(j),384&e.$$.dirty[0]&&P&&W&&m(P,W),1536&e.$$.dirty[0]&&A&&z&&g(A,z),2048&e.$$.dirty[0]&&b(E),4096&e.$$.dirty[0]&&y(S)},[C,T,$,O,F,D,j,P,W,A,z,E,S,x,M,B,function(){je.open(x)},function(){o(B)},function(){l(),setTimeout(c,2e3)},function(){a(),setTimeout(s,2e3)},function(){ce.open({multiple:!1}).then(k)},function(){C=this.checked,n(0,C)},function(){T=this.checked,n(1,T)},function(){M=this.checked,n(14,M)},function(){$=this.checked,n(2,$)},function(){O=this.checked,n(3,O)},function(){F=this.checked,n(4,F)},function(){E=v(this.value),n(11,E)},function(){S=v(this.value),n(12,S)},function(){D=v(this.value),n(5,D)},function(){j=v(this.value),n(6,j)},function(){P=v(this.value),n(7,P)},function(){W=v(this.value),n(8,W)},function(){A=v(this.value),n(9,A)},function(){z=v(this.value),n(10,z)},function(){B=this.value,n(15,B)},function(){x=this.value,n(13,x)}]}class Ae extends N{constructor(e){var t;super(),document.getElementById("svelte-b76pvm-style")||((t=d("style")).id="svelte-b76pvm-style",t.textContent=".flex-row.svelte-b76pvm.svelte-b76pvm{flex-direction:row}.grow.svelte-b76pvm.svelte-b76pvm{flex-grow:1}.window-controls.svelte-b76pvm input.svelte-b76pvm{width:50px}",a(document.head,t)),L(this,e,We,Pe,r,{},[-1,-1])}}const ze=[];var Ee=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"register",shortcut:e,handler:G.transformCallback(t)}})]}))}))}function i(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"registerAll",shortcuts:e,handler:G.transformCallback(t)}})]}))}))}function o(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"isRegistered",shortcut:e}})]}))}))}function r(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"unregister",shortcut:e}})]}))}))}function u(){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(e){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"unregisterAll"}})]}))}))}var a=Object.freeze({__proto__:null,register:n,registerAll:i,isRegistered:o,unregister:r,unregisterAll:u});t.globalShortcut=a,t.isRegistered=o,t.register=n,t.registerAll=i,t.unregister=r,t.unregisterAll=u})),Se=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isRegistered=Ee.isRegistered,t.register=Ee.register,t.registerAll=Ee.registerAll,t.unregister=Ee.unregister,t.unregisterAll=Ee.unregisterAll}));function Be(e,t,n){const i=e.slice();return i[9]=t[n],i}function Re(e){let t,n,i,o,r,u,l=e[9]+"";function _(){return e[8](e[9])}return{c(){t=d("div"),n=f(l),i=p(),o=d("button"),o.textContent="Unregister",m(o,"type","button")},m(e,c){s(e,t,c),a(t,n),a(t,i),a(t,o),r||(u=h(o,"click",_),r=!0)},p(t,i){e=t,2&i&&l!==(l=e[9]+"")&&g(n,l)},d(e){e&&c(t),r=!1,u()}}}function qe(t){let n,i,o;return{c(){n=d("button"),n.textContent="Unregister all",m(n,"type","button")},m(e,r){s(e,n,r),i||(o=h(n,"click",t[5]),i=!0)},p:e,d(e){e&&c(n),i=!1,o()}}}function Ie(t){let n,o,r,u,f,_,v,g,y,w,k=t[1],x=[];for(let e=0;e{const e=o.indexOf(s);-1!==e&&o.splice(e,1),0===o.length&&(i(),i=null)}}}}([]);u(t,s,(e=>i(1,o=e)));let c="CmdOrControl+X";function l(e){const t=e;Se.unregister(t).then((()=>{s.update((e=>e.filter((e=>e!==t)))),a(`Shortcut ${t} unregistered`)})).catch(a)}return t.$$set=e=>{"onMessage"in e&&i(6,a=e.onMessage)},[c,o,s,function(){const e=c;Se.register(e,(()=>{a(`Shortcut ${e} triggered`)})).then((()=>{s.update((t=>[...t,e])),a(`Shortcut ${e} registered successfully`)})).catch(a)},l,function(){Se.unregisterAll().then((()=>{s.update((()=>[])),a("Unregistered all shortcuts")})).catch(a)},a,function(){c=this.value,i(0,c)},e=>l(e)]}class Le extends N{constructor(e){super(),L(this,e,He,Ie,r,{onMessage:6})}}function Ne(t){let n,i,o;return{c(){n=d("h1"),n.textContent="Welcome",i=p(),o=d("p"),o.textContent="Tauri's API capabilities using the ` @tauri-apps/api ` package. It's used as\n the main validation app, serving as the testbed of our development process. In\n the future, this app will be used on Tauri's integration tests."},m(e,t){s(e,n,t),s(e,i,t),s(e,o,t)},p:e,i:e,o:e,d(e){e&&c(n),e&&c(i),e&&c(o)}}}class Ue extends N{constructor(e){super(),L(this,e,null,Ne,r,{})}}function Ge(e,t,n){const i=e.slice();return i[8]=t[n],i}function Je(e){let t,n,i,o,r,u,l=e[8].label+"";function _(){return e[6](e[8])}return{c(){t=d("p"),n=f(l),i=p(),m(t,"class",o="nv noselect "+(e[0]===e[8]?"nv_selected":""))},m(e,o){s(e,t,o),a(t,n),a(t,i),r||(u=h(t,"click",_),r=!0)},p(n,i){e=n,1&i&&o!==(o="nv noselect "+(e[0]===e[8]?"nv_selected":""))&&m(t,"class",o)},d(e){e&&c(t),r=!1,u()}}}function Xe(e){let t,n,o,r,u,_,v,b,w,k,x,C,T,M,$,O,F,D,j,P,W,A,z,H=e[2],L=[];for(let t=0;tDocumentation \n Github \n Source',v=p(),b=d("div"),w=d("div");for(let e=0;e{I(e,1)})),E.r||i(E.c),E=E.p}N?(C=new N(U(e)),R(C.$$.fragment),S(C.$$.fragment,1),q(C,x,null)):C=null}(!W||2&t)&&g(P,e[1])},i(e){W||(C&&S(C.$$.fragment,e),W=!0)},o(e){C&&B(C.$$.fragment,e),W=!1},d(e){e&&c(t),l(L,e),C&&I(C),A=!1,i(z)}}}function Ye(e,t,n){const i=[{label:"Welcome",component:Ue},{label:"Messages",component:ae},{label:"CLI",component:te},{label:"Dialog",component:he},{label:"File system",component:ye},{label:"HTTP",component:Te},{label:"Notifications",component:Fe},{label:"Window",component:Ae},{label:"Shortcuts",component:Le}];let o=i[0],r=[""];function u(e){n(0,o=e)}return[o,r,i,u,function(e){n(1,r+="string"==typeof e?e:JSON.stringify(e)),n(1,r+="\n")},function(){V.open("https://tauri.studio/")},e=>u(e),()=>{n(1,r=[""])}]}return new class extends N{constructor(e){super(),L(this,e,Ye,Xe,r,{})}}({target:document.body})}(); +var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function i(e,t,n,i){return new(n||(n=Promise))((function(o,r){function u(e){try{s(i.next(e))}catch(e){r(e)}}function a(e){try{s(i.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,a)}s((i=i.apply(e,t||[])).next())}))}function o(e,t){var n,i,o,r,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(r){return function(a){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,i&&(o=2&r[0]?i.return:r[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return u.label++,{value:r[1],done:!1};case 5:u.label++,i=r[1],r=[0];continue;case 7:r=u.ops.pop(),u.trys.pop();continue;default:if(!((o=(o=u.trys).length>0&&o[o.length-1])||6!==r[0]&&2!==r[0])){u=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]{"onMessage"in e&&n(1,i=e.onMessage)},[function(){K.getMatches().then(i).catch(i)},i]}class ee extends N{constructor(e){super(),L(this,e,Z,Q,r,{onMessage:1})}}var te=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){var n=this;return G.__generator(this,(function(o){return[2,J.invokeTauriCommand({__tauriModule:"Event",message:{cmd:"listen",event:e,handler:G.transformCallback(t)}}).then((function(e){return function(){return G.__awaiter(n,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,i(e)]}))}))}}))]}))}))}function i(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"Event",message:{cmd:"unlisten",eventId:e}})]}))}))}t.emit=function(e,t,n){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){switch(i.label){case 0:return[4,J.invokeTauriCommand({__tauriModule:"Event",message:{cmd:"emit",event:e,windowLabel:t,payload:n}})];case 1:return i.sent(),[2]}}))}))},t.listen=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){return[2,n(e,t)]}))}))},t.once=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(o){return[2,n(e,(function(e){t(e),i(e.id).catch((function(){}))}))]}))}))}})),ne=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,te.emit(e,void 0,t)]}))}))}var i=Object.freeze({__proto__:null,emit:n,listen:te.listen,once:te.once});t.emit=n,t.event=i})),ie=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.listen=te.listen,t.once=te.once,t.emit=ne.emit})),oe=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.invoke=G.invoke,t.transformCallback=G.transformCallback}));function re(t){let n,o,r,u,l,f,_,v;return{c(){n=d("div"),o=d("button"),o.textContent="Call Log API",r=p(),u=d("button"),u.textContent="Call Request (async) API",l=p(),f=d("button"),f.textContent="Send event to Rust",m(o,"class","button"),m(o,"id","log"),m(u,"class","button"),m(u,"id","request"),m(f,"class","button"),m(f,"id","event")},m(e,i){s(e,n,i),a(n,o),a(n,r),a(n,u),a(n,l),a(n,f),_||(v=[h(o,"click",t[0]),h(u,"click",t[1]),h(f,"click",t[2])],_=!0)},p:e,i:e,o:e,d(e){e&&c(n),_=!1,i(v)}}}function ue(e,t,n){let{onMessage:i}=t;return ie.listen("rust-event",i),e.$$set=e=>{"onMessage"in e&&n(3,i=e.onMessage)},[function(){oe.invoke("log_operation",{event:"tauri-click",payload:"this payload is optional because we used Option in Rust"})},function(){oe.invoke("perform_request",{endpoint:"dummy endpoint arg",body:{id:5,name:"test"}}).then(i).catch(i)},function(){ie.emit("js-event","this is the payload string")},i]}class ae extends N{constructor(e){super(),L(this,e,ue,re,r,{onMessage:3})}}var se=U((function(e,t){function n(e){return void 0===e&&(e={}),G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Dialog",mainThread:!0,message:{cmd:"openDialog",options:e}})]}))}))}function i(e){return void 0===e&&(e={}),G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Dialog",mainThread:!0,message:{cmd:"saveDialog",options:e}})]}))}))}var o=Object.freeze({__proto__:null,open:n,save:i});t.dialog=o,t.open=n,t.save=i})),ce=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.open=se.open,t.save=se.save})),le=U((function(e,t){var n,i=G;function o(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"readTextFile",path:e,options:t}})]}))}))}function r(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"readBinaryFile",path:e,options:t}})]}))}))}function u(e,t){return void 0===t&&(t={}),i.__awaiter(this,void 0,void 0,(function(){return i.__generator(this,(function(n){return"object"==typeof t&&Object.freeze(t),"object"==typeof e&&Object.freeze(e),[2,J.invokeTauriCommand({__tauriModule:"Fs",message:{cmd:"writeFile",path:e.path,contents:e.contents,options:t}})]}))}))}function a(e){var t=function(e){if(e.length<65536)return String.fromCharCode.apply(null,Array.from(e));for(var t="",n=e.length,i=0;i{"onMessage"in e&&n(6,i=e.onMessage)},[o,r,u,a,function(){ce.open({defaultPath:o,filters:r?[{name:"Tauri Example",extensions:r.split(",").map((e=>e.trim()))}]:[],multiple:u,directory:a}).then((function(e){if(Array.isArray(e))i(e);else{var t=e,n=t.match(/\S+\.\S+$/g);de.readBinaryFile(t).then((function(o){var r,u,a,s;n&&(t.includes(".png")||t.includes(".jpg"))?(r=new Uint8Array(o),u=function(e){i('')},a=new Blob([r],{type:"application/octet-binary"}),(s=new FileReader).onload=function(e){var t=e.target.result;u(t.substr(t.indexOf(",")+1))},s.readAsDataURL(a)):i(e)})).catch(i(e))}})).catch(i)},function(){ce.save({defaultPath:o,filters:r?[{name:"Tauri Example",extensions:r.split(",").map((e=>e.trim()))}]:[]}).then(i).catch(i)},i,function(){o=this.value,n(0,o)},function(){r=this.value,n(1,r)},function(){u=this.checked,n(2,u)},function(){a=this.checked,n(3,a)}]}class he extends N{constructor(e){var t;super(),document.getElementById("svelte-1eg58yg-style")||((t=d("style")).id="svelte-1eg58yg-style",t.textContent="#dialog-filter.svelte-1eg58yg{width:260px}",a(document.head,t)),L(this,e,pe,fe,r,{onMessage:6})}}function _e(e,t,n){const i=e.slice();return i[5]=t[n],i}function me(t){let n,i,o=t[5][0]+"";return{c(){n=d("option"),i=f(o),n.__value=t[5][1],n.value=n.__value},m(e,t){s(e,n,t),a(n,i)},p:e,d(e){e&&c(n)}}}function ve(t){let n,o,r,u,f,v,g,y,w,k=t[1],x=[];for(let e=0;eisNaN(parseInt(e)))).map((e=>[e,de.Dir[e]]));return e.$$set=e=>{"onMessage"in e&&n(3,i=e.onMessage)},[o,r,function(){const e=o.match(/\S+\.\S+$/g),t={dir:ge()};(e?de.readBinaryFile(o,t):de.readDir(o,t)).then((function(t){if(e)if(o.includes(".png")||o.includes(".jpg"))!function(e,t){const n=new Blob([e],{type:"application/octet-binary"}),i=new FileReader;i.onload=function(e){const n=e.target.result;t(n.substr(n.indexOf(",")+1))},i.readAsDataURL(n)}(new Uint8Array(t),(function(e){i('')}));else{const e=String.fromCharCode.apply(null,t);i(''),setTimeout((()=>{const t=document.getElementById("file-response");t.value=e,document.getElementById("file-save").addEventListener("click",(function(){writeFile({file:o,contents:t.value},{dir:ge()}).catch(i)}))}))}else i(t)})).catch(i)},i,function(){o=this.value,n(0,o)}]}class ye extends N{constructor(e){super(),L(this,e,be,ve,r,{onMessage:3})}}var we=U((function(e,t){var n;t.ResponseType=void 0,(n=t.ResponseType||(t.ResponseType={}))[n.JSON=1]="JSON",n[n.Text=2]="Text",n[n.Binary=3]="Binary";var i=function(){function e(e,t){this.type=e,this.payload=t}return e.form=function(t){return new e("Form",t)},e.json=function(t){return new e("Json",t)},e.text=function(t){return new e("Text",t)},e.bytes=function(t){return new e("Bytes",t)},e}(),o=function(){function e(e){this.id=e}return e.prototype.drop=function(){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(e){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"dropClient",client:this.id}})]}))}))},e.prototype.request=function(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"httpRequest",client:this.id,options:e}})]}))}))},e.prototype.get=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"GET",url:e},t))]}))}))},e.prototype.post=function(e,t,n){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){return[2,this.request(G._assign({method:"POST",url:e,body:t},n))]}))}))},e.prototype.put=function(e,t,n){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){return[2,this.request(G._assign({method:"PUT",url:e,body:t},n))]}))}))},e.prototype.patch=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"PATCH",url:e},t))]}))}))},e.prototype.delete=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,this.request(G._assign({method:"DELETE",url:e},t))]}))}))},e}();function r(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"Http",message:{cmd:"createClient",options:e}}).then((function(e){return new o(e)}))]}))}))}var u=null;function a(e,t){var n;return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(i){switch(i.label){case 0:return null!==u?[3,2]:[4,r()];case 1:u=i.sent(),i.label=2;case 2:return[2,u.request(G._assign({url:e,method:null!==(n=null==t?void 0:t.method)&&void 0!==n?n:"GET"},t))]}}))}))}var s=Object.freeze({__proto__:null,get ResponseType(){return t.ResponseType},Body:i,Client:o,getClient:r,fetch:a});t.Body=i,t.Client=o,t.fetch=a,t.getClient=r,t.http=s})),ke=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Body=we.Body,t.Client=we.Client,Object.defineProperty(t,"ResponseType",{enumerable:!0,get:function(){return we.ResponseType}}),t.fetch=we.fetch,t.getClient=we.getClient}));function xe(t){let n,o,r,u,l,f,v,g,k,x,C,T,M,$,O,F,j;return{c(){n=d("form"),o=d("select"),r=d("option"),r.textContent="GET",u=d("option"),u.textContent="POST",l=d("option"),l.textContent="PUT",f=d("option"),f.textContent="PATCH",v=d("option"),v.textContent="DELETE",g=p(),k=d("input"),x=p(),C=d("br"),T=p(),M=d("textarea"),$=p(),O=d("button"),O.textContent="Make request",r.__value="GET",r.value=r.__value,u.__value="POST",u.value=u.__value,l.__value="PUT",l.value=l.__value,f.__value="PATCH",f.value=f.__value,v.__value="DELETE",v.value=v.__value,m(o,"class","button"),m(o,"id","request-method"),void 0===t[0]&&D((()=>t[5].call(o))),m(k,"id","request-url"),m(k,"placeholder","Type the request URL..."),m(M,"id","request-body"),m(M,"placeholder","Request body"),m(M,"rows","5"),y(M,"width","100%"),y(M,"margin-right","10px"),y(M,"font-size","12px"),m(O,"class","button"),m(O,"id","make-request")},m(e,i){s(e,n,i),a(n,o),a(o,r),a(o,u),a(o,l),a(o,f),a(o,v),w(o,t[0]),a(n,g),a(n,k),b(k,t[1]),a(n,x),a(n,C),a(n,T),a(n,M),b(M,t[2]),a(n,$),a(n,O),F||(j=[h(o,"change",t[5]),h(k,"input",t[6]),h(M,"input",t[7]),h(n,"submit",_(t[3]))],F=!0)},p(e,[t]){1&t&&w(o,e[0]),2&t&&k.value!==e[1]&&b(k,e[1]),4&t&&b(M,e[2])},i:e,o:e,d(e){e&&c(n),F=!1,i(j)}}}function Ce(e,t,n){let i="GET",o="",r="",{onMessage:u}=t;return e.$$set=e=>{"onMessage"in e&&n(4,u=e.onMessage)},[i,o,r,async function(){const e=await ke.getClient(),t={url:o||""||"",method:i||"GET"||"GET"};r.startsWith("{")&&r.endsWith("}")||r.startsWith("[")&&r.endsWith("]")?t.body=ke.Body.json(JSON.parse(r)):""!==r&&(t.body=ke.Body.text(r)),e.request(t).then(u).catch(u)},u,function(){i=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),n(0,i)},function(){o=this.value,n(1,o)},function(){r=this.value,n(2,r)}]}class Te extends N{constructor(e){super(),L(this,e,Ce,xe,r,{onMessage:4})}}function Me(t){let n,i,o;return{c(){n=d("button"),n.textContent="Send test notification",m(n,"class","button"),m(n,"id","notification")},m(e,r){s(e,n,r),i||(o=h(n,"click",t[0]),i=!0)},p:e,i:e,o:e,d(e){e&&c(n),i=!1,o()}}}function $e(){new Notification("Notification title",{body:"This is the notification body"})}function Oe(e,t,n){let{onMessage:i}=t;return e.$$set=e=>{"onMessage"in e&&n(1,i=e.onMessage)},[function(){"default"===Notification.permission?Notification.requestPermission().then((function(e){"granted"===e?$e():i("Permission is "+e)})).catch(i):"granted"===Notification.permission?$e():i("Permission is denied")},i]}class Fe extends N{constructor(e){super(),L(this,e,Oe,Me,r,{onMessage:1})}}var De=U((function(e,t){function n(){return new r(window.__TAURI__.__currentWindow.label)}function i(){return window.__TAURI__.__windows}var o=["tauri://created","tauri://error"],r=function(){function e(e){this.label=e,this.listeners={}}return e.prototype.listen=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return this._handleTauriEvent(e,t)?[2,Promise.resolve((function(){}))]:[2,te.listen(e,t)]}))}))},e.prototype.once=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return this._handleTauriEvent(e,t)?[2,Promise.resolve()]:[2,te.once(e,t)]}))}))},e.prototype.emit=function(e,t){return G.__awaiter(this,void 0,void 0,(function(){var n,i;return G.__generator(this,(function(r){if(o.includes(e)){for(n=0,i=this.listeners[e]||[];n{1&e.$$.dirty[0]&&i(C),2&e.$$.dirty[0]&&(T?r():u()),4&e.$$.dirty[0]&&f($),8&e.$$.dirty[0]&&p(O),16&e.$$.dirty[0]&&w(F),32&e.$$.dirty[0]&&h(D),64&e.$$.dirty[0]&&_(j),384&e.$$.dirty[0]&&P&&W&&m(P,W),1536&e.$$.dirty[0]&&A&&z&&g(A,z),2048&e.$$.dirty[0]&&b(E),4096&e.$$.dirty[0]&&y(S)},[C,T,$,O,F,D,j,P,W,A,z,E,S,x,M,B,function(){Y.open(x)},function(){o(B)},function(){l(),setTimeout(c,2e3)},function(){a(),setTimeout(s,2e3)},function(){ce.open({multiple:!1}).then(k)},function(){C=this.checked,n(0,C)},function(){T=this.checked,n(1,T)},function(){M=this.checked,n(14,M)},function(){$=this.checked,n(2,$)},function(){O=this.checked,n(3,O)},function(){F=this.checked,n(4,F)},function(){E=v(this.value),n(11,E)},function(){S=v(this.value),n(12,S)},function(){D=v(this.value),n(5,D)},function(){j=v(this.value),n(6,j)},function(){P=v(this.value),n(7,P)},function(){W=v(this.value),n(8,W)},function(){A=v(this.value),n(9,A)},function(){z=v(this.value),n(10,z)},function(){B=this.value,n(15,B)},function(){x=this.value,n(13,x)}]}class Ae extends N{constructor(e){var t;super(),document.getElementById("svelte-b76pvm-style")||((t=d("style")).id="svelte-b76pvm-style",t.textContent=".flex-row.svelte-b76pvm.svelte-b76pvm{flex-direction:row}.grow.svelte-b76pvm.svelte-b76pvm{flex-grow:1}.window-controls.svelte-b76pvm input.svelte-b76pvm{width:50px}",a(document.head,t)),L(this,e,We,Pe,r,{},[-1,-1])}}const ze=[];var Ee=U((function(e,t){function n(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"register",shortcut:e,handler:G.transformCallback(t)}})]}))}))}function i(e,t){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(n){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"registerAll",shortcuts:e,handler:G.transformCallback(t)}})]}))}))}function o(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"isRegistered",shortcut:e}})]}))}))}function r(e){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(t){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"unregister",shortcut:e}})]}))}))}function u(){return G.__awaiter(this,void 0,void 0,(function(){return G.__generator(this,(function(e){return[2,J.invokeTauriCommand({__tauriModule:"GlobalShortcut",message:{cmd:"unregisterAll"}})]}))}))}var a=Object.freeze({__proto__:null,register:n,registerAll:i,isRegistered:o,unregister:r,unregisterAll:u});t.globalShortcut=a,t.isRegistered=o,t.register=n,t.registerAll=i,t.unregister=r,t.unregisterAll=u})),Se=U((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isRegistered=Ee.isRegistered,t.register=Ee.register,t.registerAll=Ee.registerAll,t.unregister=Ee.unregister,t.unregisterAll=Ee.unregisterAll}));function Be(e,t,n){const i=e.slice();return i[9]=t[n],i}function Re(e){let t,n,i,o,r,u,l=e[9]+"";function _(){return e[8](e[9])}return{c(){t=d("div"),n=f(l),i=p(),o=d("button"),o.textContent="Unregister",m(o,"type","button")},m(e,c){s(e,t,c),a(t,n),a(t,i),a(t,o),r||(u=h(o,"click",_),r=!0)},p(t,i){e=t,2&i&&l!==(l=e[9]+"")&&g(n,l)},d(e){e&&c(t),r=!1,u()}}}function qe(t){let n,i,o;return{c(){n=d("button"),n.textContent="Unregister all",m(n,"type","button")},m(e,r){s(e,n,r),i||(o=h(n,"click",t[5]),i=!0)},p:e,d(e){e&&c(n),i=!1,o()}}}function Ie(t){let n,o,r,u,f,_,v,g,y,w,k=t[1],x=[];for(let e=0;e{const e=o.indexOf(s);-1!==e&&o.splice(e,1),0===o.length&&(i(),i=null)}}}}([]);u(t,s,(e=>i(1,o=e)));let c="CmdOrControl+X";function l(e){const t=e;Se.unregister(t).then((()=>{s.update((e=>e.filter((e=>e!==t)))),a(`Shortcut ${t} unregistered`)})).catch(a)}return t.$$set=e=>{"onMessage"in e&&i(6,a=e.onMessage)},[c,o,s,function(){const e=c;Se.register(e,(()=>{a(`Shortcut ${e} triggered`)})).then((()=>{s.update((t=>[...t,e])),a(`Shortcut ${e} registered successfully`)})).catch(a)},l,function(){Se.unregisterAll().then((()=>{s.update((()=>[])),a("Unregistered all shortcuts")})).catch(a)},a,function(){c=this.value,i(0,c)},e=>l(e)]}class Le extends N{constructor(e){super(),L(this,e,He,Ie,r,{onMessage:6})}}function Ne(t){let n,i,o;return{c(){n=d("h1"),n.textContent="Welcome",i=p(),o=d("p"),o.textContent="Tauri's API capabilities using the ` @tauri-apps/api ` package. It's used as\n the main validation app, serving as the testbed of our development process. In\n the future, this app will be used on Tauri's integration tests."},m(e,t){s(e,n,t),s(e,i,t),s(e,o,t)},p:e,i:e,o:e,d(e){e&&c(n),e&&c(i),e&&c(o)}}}class Ue extends N{constructor(e){super(),L(this,e,null,Ne,r,{})}}function Ge(e,t,n){const i=e.slice();return i[8]=t[n],i}function Je(e){let t,n,i,o,r,u,l=e[8].label+"";function _(){return e[6](e[8])}return{c(){t=d("p"),n=f(l),i=p(),m(t,"class",o="nv noselect "+(e[0]===e[8]?"nv_selected":""))},m(e,o){s(e,t,o),a(t,n),a(t,i),r||(u=h(t,"click",_),r=!0)},p(n,i){e=n,1&i&&o!==(o="nv noselect "+(e[0]===e[8]?"nv_selected":""))&&m(t,"class",o)},d(e){e&&c(t),r=!1,u()}}}function Xe(e){let t,n,o,r,u,_,v,b,w,k,x,C,T,M,$,O,F,D,j,P,W,A,z,H=e[2],L=[];for(let t=0;tDocumentation \n Github \n Source',v=p(),b=d("div"),w=d("div");for(let e=0;e{I(e,1)})),E.r||i(E.c),E=E.p}N?(C=new N(U(e)),R(C.$$.fragment),S(C.$$.fragment,1),q(C,x,null)):C=null}(!W||2&t)&&g(P,e[1])},i(e){W||(C&&S(C.$$.fragment,e),W=!0)},o(e){C&&B(C.$$.fragment,e),W=!1},d(e){e&&c(t),l(L,e),C&&I(C),A=!1,i(z)}}}function Ye(e,t,n){const i=[{label:"Welcome",component:Ue},{label:"Messages",component:ae},{label:"CLI",component:ee},{label:"Dialog",component:he},{label:"File system",component:ye},{label:"HTTP",component:Te},{label:"Notifications",component:Fe},{label:"Window",component:Ae},{label:"Shortcuts",component:Le}];let o=i[0],r=[""];function u(e){n(0,o=e)}return[o,r,i,u,function(e){n(1,r+="string"==typeof e?e:JSON.stringify(e)),n(1,r+="\n")},function(){Y.open("https://tauri.studio/")},e=>u(e),()=>{n(1,r=[""])}]}return new class extends N{constructor(e){super(),L(this,e,Ye,Xe,r,{})}}({target:document.body})}(); //# sourceMappingURL=bundle.js.map diff --git a/examples/api/public/build/bundle.js.map b/examples/api/public/build/bundle.js.map index 0a01e7f78..5e137ef30 100644 --- a/examples/api/public/build/bundle.js.map +++ b/examples/api/public/build/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../../../api/dist/tauri-9f03c3f0.js","../../../../api/dist/tauri-c613af6d.js","../../../../api/dist/event-08015720.js","../../../../api/dist/window-2f480af6.js","../../../../api/dist/window.js","../../../../api/dist/cli-905e66c4.js","../../../../api/dist/cli.js","../../src/components/Cli.svelte","../../../../api/dist/event-c0bb16b0.js","../../../../api/dist/event.js","../../../../api/dist/tauri.js","../../src/components/Communication.svelte","../../../../api/dist/dialog-c385e907.js","../../../../api/dist/dialog.js","../../../../api/dist/fs-256059a8.js","../../../../api/dist/fs.js","../../src/components/Dialog.svelte","../../src/components/FileSystem.svelte","../../../../api/dist/http-1650abc6.js","../../../../api/dist/http.js","../../src/components/Http.svelte","../../src/components/Notifications.svelte","../../../../api/dist/shell-b1aa90e6.js","../../../../api/dist/shell.js","../../src/components/Window.svelte","../../node_modules/svelte/store/index.mjs","../../../../api/dist/globalShortcut-5d3ed41f.js","../../../../api/dist/globalShortcut.js","../../src/components/Shortcuts.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot_spread(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_spread_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_spread_changes_fn(dirty) | get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n let j = 0;\n const remove = [];\n while (j < node.attributes.length) {\n const attribute = node.attributes[j++];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n for (let k = 0; k < remove.length; k++) {\n node.removeAttribute(remove[k]);\n }\n return nodes.splice(i, 1)[0];\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(anchor = null) {\n this.a = anchor;\n this.e = this.n = null;\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.h(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = node.ownerDocument;\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${String(value).replace(/\"/g, '"').replace(/'/g, ''')}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.35.0' }, detail)));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to seperate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_custom_elements_slots, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, update_slot, update_slot_spread, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","\"use strict\";\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */var t=function(n,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])})(n,e)};function n(t,n,e,r){return new(e||(e=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(a,c)}u((r=r.apply(t,n||[])).next())}))}function e(t,n){var e,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(e)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(e=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\n import { getMatches } from \"@tauri-apps/api/cli\";\n\n export let onMessage;\n\n function cliMatches() {\n getMatches().then(onMessage).catch(onMessage);\n }\n\n\n

\n \n
\n","\"use strict\";var e=require(\"./tauri-9f03c3f0.js\"),t=require(\"./event-08015720.js\");function r(r,i){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,t.emit(r,void 0,i)]}))}))}var i=Object.freeze({__proto__:null,emit:r,listen:t.listen,once:t.once});exports.emit=r,exports.event=i;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\");var e=require(\"./event-08015720.js\"),r=require(\"./event-c0bb16b0.js\");require(\"./tauri-c613af6d.js\"),exports.listen=e.listen,exports.once=e.once,exports.emit=r.emit;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"./tauri-9f03c3f0.js\");exports.invoke=e.invoke,exports.transformCallback=e.transformCallback;\n","\n\n
\n \n \n \n
\n","\"use strict\";var e=require(\"./tauri-9f03c3f0.js\"),o=require(\"./tauri-c613af6d.js\");function r(r){return void 0===r&&(r={}),e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),[2,o.invokeTauriCommand({__tauriModule:\"Dialog\",mainThread:!0,message:{cmd:\"openDialog\",options:r}})]}))}))}function t(r){return void 0===r&&(r={}),e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),[2,o.invokeTauriCommand({__tauriModule:\"Dialog\",mainThread:!0,message:{cmd:\"saveDialog\",options:r}})]}))}))}var i=Object.freeze({__proto__:null,open:r,save:t});exports.dialog=i,exports.open=r,exports.save=t;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./dialog-c385e907.js\");exports.open=e.open,exports.save=e.save;\n","\"use strict\";var e,r=require(\"./tauri-9f03c3f0.js\"),t=require(\"./tauri-c613af6d.js\");function i(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"readTextFile\",path:e,options:i}})]}))}))}function o(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"readBinaryFile\",path:e,options:i}})]}))}))}function n(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return\"object\"==typeof i&&Object.freeze(i),\"object\"==typeof e&&Object.freeze(e),[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"writeFile\",path:e.path,contents:e.contents,options:i}})]}))}))}exports.BaseDirectory=void 0,(e=exports.BaseDirectory||(exports.BaseDirectory={}))[e.Audio=1]=\"Audio\",e[e.Cache=2]=\"Cache\",e[e.Config=3]=\"Config\",e[e.Data=4]=\"Data\",e[e.LocalData=5]=\"LocalData\",e[e.Desktop=6]=\"Desktop\",e[e.Document=7]=\"Document\",e[e.Download=8]=\"Download\",e[e.Executable=9]=\"Executable\",e[e.Font=10]=\"Font\",e[e.Home=11]=\"Home\",e[e.Picture=12]=\"Picture\",e[e.Public=13]=\"Public\",e[e.Runtime=14]=\"Runtime\",e[e.Template=15]=\"Template\",e[e.Video=16]=\"Video\",e[e.Resource=17]=\"Resource\",e[e.App=18]=\"App\";function a(e){var r=function(e){if(e.length<65536)return String.fromCharCode.apply(null,Array.from(e));for(var r=\"\",t=e.length,i=0;i\n import { open, save } from \"@tauri-apps/api/dialog\";\n import { readBinaryFile } from \"@tauri-apps/api/fs\";\n\n export let onMessage;\n let defaultPath = null;\n let filter = null;\n let multiple = false;\n let directory = false;\n\n function arrayBufferToBase64(buffer, callback) {\n var blob = new Blob([buffer], {\n type: \"application/octet-binary\",\n });\n var reader = new FileReader();\n reader.onload = function (evt) {\n var dataurl = evt.target.result;\n callback(dataurl.substr(dataurl.indexOf(\",\") + 1));\n };\n reader.readAsDataURL(blob);\n }\n\n function openDialog() {\n open({\n defaultPath,\n filters: filter\n ? [\n {\n name: \"Tauri Example\",\n extensions: filter.split(\",\").map((f) => f.trim()),\n },\n ]\n : [],\n multiple,\n directory,\n })\n .then(function (res) {\n if (Array.isArray(res)) {\n onMessage(res);\n } else {\n var pathToRead = res;\n var isFile = pathToRead.match(/\\S+\\.\\S+$/g);\n readBinaryFile(pathToRead)\n .then(function (response) {\n if (isFile) {\n if (\n pathToRead.includes(\".png\") ||\n pathToRead.includes(\".jpg\")\n ) {\n arrayBufferToBase64(\n new Uint8Array(response),\n function (base64) {\n var src = \"data:image/png;base64,\" + base64;\n onMessage('');\n }\n );\n } else {\n onMessage(res);\n }\n } else {\n onMessage(res);\n }\n })\n .catch(onMessage(res));\n }\n })\n .catch(onMessage);\n }\n\n function saveDialog() {\n save({\n defaultPath,\n filters: filter\n ? [\n {\n name: \"Tauri Example\",\n extensions: filter.split(\",\").map((f) => f.trim()),\n },\n ]\n : [],\n })\n .then(onMessage)\n .catch(onMessage);\n }\n\n\n
\n \n \n
\n \n \n
\n
\n \n \n
\n\n
\n\n\n","\n\n
\n \n \n \n\n","\"use strict\";var t,e=require(\"./tauri-9f03c3f0.js\"),n=require(\"./tauri-c613af6d.js\");exports.ResponseType=void 0,(t=exports.ResponseType||(exports.ResponseType={}))[t.JSON=1]=\"JSON\",t[t.Text=2]=\"Text\",t[t.Binary=3]=\"Binary\";var r=function(){function t(t,e){this.type=t,this.payload=e}return t.form=function(e){return new t(\"Form\",e)},t.json=function(e){return new t(\"Json\",e)},t.text=function(e){return new t(\"Text\",e)},t.bytes=function(e){return new t(\"Bytes\",e)},t}(),i=function(){function t(t){this.id=t}return t.prototype.drop=function(){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(t){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"dropClient\",client:this.id}})]}))}))},t.prototype.request=function(t){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"httpRequest\",client:this.id,options:t}})]}))}))},t.prototype.get=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"GET\",url:t},n))]}))}))},t.prototype.post=function(t,n,r){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){return[2,this.request(e._assign({method:\"POST\",url:t,body:n},r))]}))}))},t.prototype.put=function(t,n,r){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){return[2,this.request(e._assign({method:\"PUT\",url:t,body:n},r))]}))}))},t.prototype.patch=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"PATCH\",url:t},n))]}))}))},t.prototype.delete=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"DELETE\",url:t},n))]}))}))},t}();function o(t){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"createClient\",options:t}}).then((function(t){return new i(t)}))]}))}))}var u=null;function s(t,n){var r;return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){switch(i.label){case 0:return null!==u?[3,2]:[4,o()];case 1:u=i.sent(),i.label=2;case 2:return[2,u.request(e._assign({url:t,method:null!==(r=null==n?void 0:n.method)&&void 0!==r?r:\"GET\"},n))]}}))}))}var a=Object.freeze({__proto__:null,get ResponseType(){return exports.ResponseType},Body:r,Client:i,getClient:o,fetch:s});exports.Body=r,exports.Client=i,exports.fetch=s,exports.getClient=o,exports.http=a;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./http-1650abc6.js\");exports.Body=e.Body,exports.Client=e.Client,Object.defineProperty(exports,\"ResponseType\",{enumerable:!0,get:function(){return e.ResponseType}}),exports.fetch=e.fetch,exports.getClient=e.getClient;\n","\n\n
\n \n \n
\n \n \n\n","\n\n\n","\"use strict\";var e=require(\"./tauri-9f03c3f0.js\"),t=require(\"./tauri-c613af6d.js\");function r(r,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return\"object\"==typeof n&&Object.freeze(n),[2,t.invokeTauriCommand({__tauriModule:\"Shell\",message:{cmd:\"execute\",command:r,args:\"string\"==typeof n?[n]:n}})]}))}))}function n(r,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,t.invokeTauriCommand({__tauriModule:\"Shell\",message:{cmd:\"open\",path:r,with:n}})]}))}))}var o=Object.freeze({__proto__:null,execute:r,open:n});exports.execute=r,exports.open=n,exports.shell=o;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./shell-b1aa90e6.js\");exports.execute=e.execute,exports.open=e.open;\n","\n\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n X\n \n
\n
\n Y\n \n
\n
\n\n
\n
\n Width\n \n
\n
\n Height\n \n
\n
\n\n
\n
\n Min width\n \n
\n
\n Min height\n \n
\n
\n\n
\n
\n Max width\n \n
\n
\n Max height\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n\n\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","\"use strict\";var r=require(\"./tauri-9f03c3f0.js\"),t=require(\"./tauri-c613af6d.js\");function e(e,i){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(n){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"register\",shortcut:e,handler:r.transformCallback(i)}})]}))}))}function i(e,i){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(n){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"registerAll\",shortcuts:e,handler:r.transformCallback(i)}})]}))}))}function n(e){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"isRegistered\",shortcut:e}})]}))}))}function o(e){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"unregister\",shortcut:e}})]}))}))}function u(){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"unregisterAll\"}})]}))}))}var s=Object.freeze({__proto__:null,register:e,registerAll:i,isRegistered:n,unregister:o,unregisterAll:u});exports.globalShortcut=s,exports.isRegistered=n,exports.register=e,exports.registerAll=i,exports.unregister=o,exports.unregisterAll=u;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./globalShortcut-5d3ed41f.js\");exports.isRegistered=e.isRegistered,exports.register=e.register,exports.registerAll=e.registerAll,exports.unregister=e.unregister,exports.unregisterAll=e.unregisterAll;\n","\n\n
\n
\n \n \n
\n
\n {#each $shortcuts as savedShortcut}\n
\n {savedShortcut}\n
\n {/each}\n {#if $shortcuts.length}\n \n {/if}\n
\n
\n","\n\n
\n \n
\n
\n {#each views as view}\n

select(view)}\n >\n {view.label}\n

\n {/each}\n
\n
\n \n
\n
\n
\n

\n Tauri Console\n {\n responses = [\"\"];\n }}>clear\n

\n {responses}\n
\n
","import App from \"./App.svelte\";\n\nconst app = new App({\n target: document.body,\n});\n\nexport default app;\n"],"names":["noop","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","component_subscribe","component","store","callback","$$","on_destroy","push","callbacks","unsub","subscribe","unsubscribe","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","value","removeAttribute","getAttribute","setAttribute","to_number","set_data","wholeText","set_input_value","input","set_style","key","important","style","setProperty","select_option","select","option","__value","selected","current_component","set_current_component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","Promise","resolve","update_scheduled","add_render_callback","flushing","seen_callbacks","Set","flush","update","pop","has","add","clear","fragment","before_update","dirty","p","ctx","after_update","outroing","outros","transition_in","block","local","delete","transition_out","o","c","create_component","mount_component","customElement","on_mount","m","new_on_destroy","map","filter","destroy_component","make_dirty","then","fill","init","instance","create_fragment","not_equal","props","parent_component","bound","on_disconnect","context","Map","skip_bound","ready","ret","rest","hydrate","nodes","Array","from","childNodes","children","l","intro","SvelteComponent","[object Object]","$destroy","type","index","indexOf","splice","$$props","obj","$$set","keys","t","n","e","setPrototypeOf","__proto__","prototype","hasOwnProperty","r","u","next","throw","done","apply","label","sent","trys","ops","return","Symbol","iterator","TypeError","Math","floor","random","toString","substring","defineProperty","window","Reflect","deleteProperty","writable","configurable","rpc","notify","exports","_assign","error","assign","arguments","freeze","transformCallback","invoke","String","constructor","__awaiter","__generator","invokeTauriCommand","__tauriModule","message","cmd","eventId","windowLabel","payload","id","catch","__TAURI__","__currentWindow","__windows","listeners","_handleTauriEvent","once","emit","includes","__extends","getByLabel","some","s","setResizable","resizable","setTitle","title","maximize","unmaximize","minimize","unminimize","show","hide","close","setDecorations","decorations","setAlwaysOnTop","alwaysOnTop","setWidth","width","setHeight","height","resize","setMinSize","minWidth","minHeight","setMaxSize","maxWidth","maxHeight","setX","x","setY","y","setPosition","setFullscreen","fullscreen","setIcon","icon","WebviewWindow","getCurrent","getAll","appWindow","getMatches","onMessage","endpoint","body","mainThread","open","save","require$$0","path","contents","fromCharCode","subarray","Uint8Array","btoa","_","source","destination","oldPath","newPath","BaseDirectory","Audio","Cache","Config","Data","LocalData","Desktop","Document","Download","Executable","Font","Home","Picture","Public","Runtime","Template","Video","Resource","App","f","Dir","readTextFile","readBinaryFile","writeFile","writeBinaryFile","readDir","createDir","removeDir","copyFile","removeFile","renameFile","enumerable","get","defaultPath","multiple","directory","filters","extensions","split","trim","res","isArray","pathToRead","isFile","match","response","buffer","blob","reader","base64","Blob","FileReader","onload","evt","dataurl","result","substr","readAsDataURL","getDir","getElementById","parseInt","dir","DirOptions","isNaN","opts","arrayBufferToBase64","setTimeout","fileInput","file","ResponseType","JSON","Text","Binary","form","json","bytes","drop","client","request","method","url","post","put","patch","Body","Client","getClient","fetch","httpMethod","httpUrl","httpBody","startsWith","endsWith","parse","selected_option","querySelector","_sendNotification","Notification","permission","requestPermission","command","args","with","execute","setTransparent","urlValue","maximized","transparent","windowTitle","openDialog","subscriber_queue","shortcut","shortcuts","register","registerAll","isRegistered","unregister","unregisterAll","start","stop","subscribers","set","new_value","run_queue","invalidate","subscriber","shortcut_","unregisterShortcut","shortcuts_","registerShortcut","unregisterAllShortcuts","savedShortcut","views","Welcome","Communication","Cli","Dialog","FileSystem","Http","Notifications","Window","Shortcuts","responses","view","stringify"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../../../api/dist/tauri-9f03c3f0.js","../../../../api/dist/tauri-c613af6d.js","../../../../api/dist/shell-b1aa90e6.js","../../../../api/dist/shell.js","../../../../api/dist/cli-905e66c4.js","../../../../api/dist/cli.js","../../src/components/Cli.svelte","../../../../api/dist/event-08015720.js","../../../../api/dist/event-c0bb16b0.js","../../../../api/dist/event.js","../../../../api/dist/tauri.js","../../src/components/Communication.svelte","../../../../api/dist/dialog-c385e907.js","../../../../api/dist/dialog.js","../../../../api/dist/fs-256059a8.js","../../../../api/dist/fs.js","../../src/components/Dialog.svelte","../../src/components/FileSystem.svelte","../../../../api/dist/http-1650abc6.js","../../../../api/dist/http.js","../../src/components/Http.svelte","../../src/components/Notifications.svelte","../../../../api/dist/window-2f480af6.js","../../../../api/dist/window.js","../../src/components/Window.svelte","../../node_modules/svelte/store/index.mjs","../../../../api/dist/globalShortcut-5d3ed41f.js","../../../../api/dist/globalShortcut.js","../../src/components/Shortcuts.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot_spread(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_spread_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_spread_changes_fn(dirty) | get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n let j = 0;\n const remove = [];\n while (j < node.attributes.length) {\n const attribute = node.attributes[j++];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n for (let k = 0; k < remove.length; k++) {\n node.removeAttribute(remove[k]);\n }\n return nodes.splice(i, 1)[0];\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(anchor = null) {\n this.a = anchor;\n this.e = this.n = null;\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.h(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = node.ownerDocument;\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${String(value).replace(/\"/g, '"').replace(/'/g, ''')}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.35.0' }, detail)));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to seperate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_custom_elements_slots, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, update_slot, update_slot_spread, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","\"use strict\";\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */var t=function(n,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=n[e])})(n,e)};function n(t,n,e,r){return new(e||(e=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(a,c)}u((r=r.apply(t,n||[])).next())}))}function e(t,n){var e,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(e)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(e=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]\n import { getMatches } from \"@tauri-apps/api/cli\";\n\n export let onMessage;\n\n function cliMatches() {\n getMatches().then(onMessage).catch(onMessage);\n }\n\n\n
\n \n
\n","\"use strict\";var t=require(\"./tauri-9f03c3f0.js\"),n=require(\"./tauri-c613af6d.js\");function e(e,i){return t.__awaiter(this,void 0,void 0,(function(){var u=this;return t.__generator(this,(function(o){return[2,n.invokeTauriCommand({__tauriModule:\"Event\",message:{cmd:\"listen\",event:e,handler:t.transformCallback(i)}}).then((function(n){return function(){return t.__awaiter(u,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,r(n)]}))}))}}))]}))}))}function r(e){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,n.invokeTauriCommand({__tauriModule:\"Event\",message:{cmd:\"unlisten\",eventId:e}})]}))}))}exports.emit=function(e,r,i){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){switch(t.label){case 0:return[4,n.invokeTauriCommand({__tauriModule:\"Event\",message:{cmd:\"emit\",event:e,windowLabel:r,payload:i}})];case 1:return t.sent(),[2]}}))}))},exports.listen=function(n,r){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,e(n,r)]}))}))},exports.once=function(n,i){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,e(n,(function(t){i(t),r(t.id).catch((function(){}))}))]}))}))};\n","\"use strict\";var e=require(\"./tauri-9f03c3f0.js\"),t=require(\"./event-08015720.js\");function r(r,i){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,t.emit(r,void 0,i)]}))}))}var i=Object.freeze({__proto__:null,emit:r,listen:t.listen,once:t.once});exports.emit=r,exports.event=i;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\");var e=require(\"./event-08015720.js\"),r=require(\"./event-c0bb16b0.js\");require(\"./tauri-c613af6d.js\"),exports.listen=e.listen,exports.once=e.once,exports.emit=r.emit;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"./tauri-9f03c3f0.js\");exports.invoke=e.invoke,exports.transformCallback=e.transformCallback;\n","\n\n
\n \n \n \n
\n","\"use strict\";var e=require(\"./tauri-9f03c3f0.js\"),o=require(\"./tauri-c613af6d.js\");function r(r){return void 0===r&&(r={}),e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),[2,o.invokeTauriCommand({__tauriModule:\"Dialog\",mainThread:!0,message:{cmd:\"openDialog\",options:r}})]}))}))}function t(r){return void 0===r&&(r={}),e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return\"object\"==typeof r&&Object.freeze(r),[2,o.invokeTauriCommand({__tauriModule:\"Dialog\",mainThread:!0,message:{cmd:\"saveDialog\",options:r}})]}))}))}var i=Object.freeze({__proto__:null,open:r,save:t});exports.dialog=i,exports.open=r,exports.save=t;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./dialog-c385e907.js\");exports.open=e.open,exports.save=e.save;\n","\"use strict\";var e,r=require(\"./tauri-9f03c3f0.js\"),t=require(\"./tauri-c613af6d.js\");function i(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"readTextFile\",path:e,options:i}})]}))}))}function o(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"readBinaryFile\",path:e,options:i}})]}))}))}function n(e,i){return void 0===i&&(i={}),r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return\"object\"==typeof i&&Object.freeze(i),\"object\"==typeof e&&Object.freeze(e),[2,t.invokeTauriCommand({__tauriModule:\"Fs\",message:{cmd:\"writeFile\",path:e.path,contents:e.contents,options:i}})]}))}))}exports.BaseDirectory=void 0,(e=exports.BaseDirectory||(exports.BaseDirectory={}))[e.Audio=1]=\"Audio\",e[e.Cache=2]=\"Cache\",e[e.Config=3]=\"Config\",e[e.Data=4]=\"Data\",e[e.LocalData=5]=\"LocalData\",e[e.Desktop=6]=\"Desktop\",e[e.Document=7]=\"Document\",e[e.Download=8]=\"Download\",e[e.Executable=9]=\"Executable\",e[e.Font=10]=\"Font\",e[e.Home=11]=\"Home\",e[e.Picture=12]=\"Picture\",e[e.Public=13]=\"Public\",e[e.Runtime=14]=\"Runtime\",e[e.Template=15]=\"Template\",e[e.Video=16]=\"Video\",e[e.Resource=17]=\"Resource\",e[e.App=18]=\"App\";function a(e){var r=function(e){if(e.length<65536)return String.fromCharCode.apply(null,Array.from(e));for(var r=\"\",t=e.length,i=0;i\n import { open, save } from \"@tauri-apps/api/dialog\";\n import { readBinaryFile } from \"@tauri-apps/api/fs\";\n\n export let onMessage;\n let defaultPath = null;\n let filter = null;\n let multiple = false;\n let directory = false;\n\n function arrayBufferToBase64(buffer, callback) {\n var blob = new Blob([buffer], {\n type: \"application/octet-binary\",\n });\n var reader = new FileReader();\n reader.onload = function (evt) {\n var dataurl = evt.target.result;\n callback(dataurl.substr(dataurl.indexOf(\",\") + 1));\n };\n reader.readAsDataURL(blob);\n }\n\n function openDialog() {\n open({\n defaultPath,\n filters: filter\n ? [\n {\n name: \"Tauri Example\",\n extensions: filter.split(\",\").map((f) => f.trim()),\n },\n ]\n : [],\n multiple,\n directory,\n })\n .then(function (res) {\n if (Array.isArray(res)) {\n onMessage(res);\n } else {\n var pathToRead = res;\n var isFile = pathToRead.match(/\\S+\\.\\S+$/g);\n readBinaryFile(pathToRead)\n .then(function (response) {\n if (isFile) {\n if (\n pathToRead.includes(\".png\") ||\n pathToRead.includes(\".jpg\")\n ) {\n arrayBufferToBase64(\n new Uint8Array(response),\n function (base64) {\n var src = \"data:image/png;base64,\" + base64;\n onMessage('');\n }\n );\n } else {\n onMessage(res);\n }\n } else {\n onMessage(res);\n }\n })\n .catch(onMessage(res));\n }\n })\n .catch(onMessage);\n }\n\n function saveDialog() {\n save({\n defaultPath,\n filters: filter\n ? [\n {\n name: \"Tauri Example\",\n extensions: filter.split(\",\").map((f) => f.trim()),\n },\n ]\n : [],\n })\n .then(onMessage)\n .catch(onMessage);\n }\n\n\n
\n \n \n
\n \n \n
\n
\n \n \n
\n\n
\n\n\n","\n\n
\n \n \n \n\n","\"use strict\";var t,e=require(\"./tauri-9f03c3f0.js\"),n=require(\"./tauri-c613af6d.js\");exports.ResponseType=void 0,(t=exports.ResponseType||(exports.ResponseType={}))[t.JSON=1]=\"JSON\",t[t.Text=2]=\"Text\",t[t.Binary=3]=\"Binary\";var r=function(){function t(t,e){this.type=t,this.payload=e}return t.form=function(e){return new t(\"Form\",e)},t.json=function(e){return new t(\"Json\",e)},t.text=function(e){return new t(\"Text\",e)},t.bytes=function(e){return new t(\"Bytes\",e)},t}(),i=function(){function t(t){this.id=t}return t.prototype.drop=function(){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(t){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"dropClient\",client:this.id}})]}))}))},t.prototype.request=function(t){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"httpRequest\",client:this.id,options:t}})]}))}))},t.prototype.get=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"GET\",url:t},n))]}))}))},t.prototype.post=function(t,n,r){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){return[2,this.request(e._assign({method:\"POST\",url:t,body:n},r))]}))}))},t.prototype.put=function(t,n,r){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){return[2,this.request(e._assign({method:\"PUT\",url:t,body:n},r))]}))}))},t.prototype.patch=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"PATCH\",url:t},n))]}))}))},t.prototype.delete=function(t,n){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(r){return[2,this.request(e._assign({method:\"DELETE\",url:t},n))]}))}))},t}();function o(t){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,n.invokeTauriCommand({__tauriModule:\"Http\",message:{cmd:\"createClient\",options:t}}).then((function(t){return new i(t)}))]}))}))}var u=null;function s(t,n){var r;return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(i){switch(i.label){case 0:return null!==u?[3,2]:[4,o()];case 1:u=i.sent(),i.label=2;case 2:return[2,u.request(e._assign({url:t,method:null!==(r=null==n?void 0:n.method)&&void 0!==r?r:\"GET\"},n))]}}))}))}var a=Object.freeze({__proto__:null,get ResponseType(){return exports.ResponseType},Body:r,Client:i,getClient:o,fetch:s});exports.Body=r,exports.Client=i,exports.fetch=s,exports.getClient=o,exports.http=a;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./http-1650abc6.js\");exports.Body=e.Body,exports.Client=e.Client,Object.defineProperty(exports,\"ResponseType\",{enumerable:!0,get:function(){return e.ResponseType}}),exports.fetch=e.fetch,exports.getClient=e.getClient;\n","\n\n
\n \n \n
\n \n \n\n","\n\n\n","\"use strict\";var t=require(\"./tauri-9f03c3f0.js\"),e=require(\"./tauri-c613af6d.js\"),n=require(\"./event-08015720.js\");function i(){return new u(window.__TAURI__.__currentWindow.label)}function r(){return window.__TAURI__.__windows}var o=[\"tauri://created\",\"tauri://error\"],u=function(){function e(t){this.label=t,this.listeners={}}return e.prototype.listen=function(e,i){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return this._handleTauriEvent(e,i)?[2,Promise.resolve((function(){}))]:[2,n.listen(e,i)]}))}))},e.prototype.once=function(e,i){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return this._handleTauriEvent(e,i)?[2,Promise.resolve()]:[2,n.once(e,i)]}))}))},e.prototype.emit=function(e,i){return t.__awaiter(this,void 0,void 0,(function(){var r,u;return t.__generator(this,(function(t){if(o.includes(e)){for(r=0,u=this.listeners[e]||[];r\n import { appWindow } from \"@tauri-apps/api/window\";\n import { open as openDialog } from \"@tauri-apps/api/dialog\";\n import { open } from \"@tauri-apps/api/shell\";\n\n const {\n setResizable,\n setTitle,\n maximize,\n unmaximize,\n minimize,\n unminimize,\n show,\n hide,\n setTransparent,\n setDecorations,\n setAlwaysOnTop,\n setWidth,\n setHeight,\n // resize,\n setMinSize,\n setMaxSize,\n setX,\n setY,\n // setPosition,\n setFullscreen,\n setIcon,\n } = appWindow;\n\n let urlValue = \"https://tauri.studio\";\n let resizable = true;\n let maximized = false;\n let transparent = false;\n let decorations = true;\n let alwaysOnTop = false;\n let fullscreen = false;\n let width = 900;\n let height = 700;\n let minWidth = 600;\n let minHeight = 600;\n let maxWidth = null;\n let maxHeight = null;\n let x = 100;\n let y = 100;\n\n let windowTitle = \"Awesome Tauri Example!\";\n\n function openUrl() {\n open(urlValue);\n }\n\n function setTitle_() {\n setTitle(windowTitle);\n }\n\n function hide_() {\n hide();\n setTimeout(show, 2000);\n }\n\n function minimize_() {\n minimize();\n setTimeout(unminimize, 2000);\n }\n\n function getIcon() {\n openDialog({\n multiple: false,\n }).then(setIcon);\n }\n\n $: setResizable(resizable);\n $: maximized ? maximize() : unmaximize();\n //$: setTransparent(transparent)\n $: setDecorations(decorations);\n $: setAlwaysOnTop(alwaysOnTop);\n $: setFullscreen(fullscreen);\n\n $: setWidth(width);\n $: setHeight(height);\n $: minWidth && minHeight && setMinSize(minWidth, minHeight);\n $: maxWidth && maxHeight && setMaxSize(maxWidth, maxHeight);\n $: setX(x);\n $: setY(y);\n\n\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n X\n \n
\n
\n Y\n \n
\n
\n\n
\n
\n Width\n \n
\n
\n Height\n \n
\n
\n\n
\n
\n Min width\n \n
\n
\n Min height\n \n
\n
\n\n
\n
\n Max width\n \n
\n
\n Max height\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n\n\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","\"use strict\";var r=require(\"./tauri-9f03c3f0.js\"),t=require(\"./tauri-c613af6d.js\");function e(e,i){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(n){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"register\",shortcut:e,handler:r.transformCallback(i)}})]}))}))}function i(e,i){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(n){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"registerAll\",shortcuts:e,handler:r.transformCallback(i)}})]}))}))}function n(e){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"isRegistered\",shortcut:e}})]}))}))}function o(e){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"unregister\",shortcut:e}})]}))}))}function u(){return r.__awaiter(this,void 0,void 0,(function(){return r.__generator(this,(function(r){return[2,t.invokeTauriCommand({__tauriModule:\"GlobalShortcut\",message:{cmd:\"unregisterAll\"}})]}))}))}var s=Object.freeze({__proto__:null,register:e,registerAll:i,isRegistered:n,unregister:o,unregisterAll:u});exports.globalShortcut=s,exports.isRegistered=n,exports.register=e,exports.registerAll=i,exports.unregister=o,exports.unregisterAll=u;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),require(\"./tauri-9f03c3f0.js\"),require(\"./tauri-c613af6d.js\");var e=require(\"./globalShortcut-5d3ed41f.js\");exports.isRegistered=e.isRegistered,exports.register=e.register,exports.registerAll=e.registerAll,exports.unregister=e.unregister,exports.unregisterAll=e.unregisterAll;\n","\n\n
\n
\n \n \n
\n
\n {#each $shortcuts as savedShortcut}\n
\n {savedShortcut}\n
\n {/each}\n {#if $shortcuts.length}\n \n {/if}\n
\n
\n","\n\n
\n \n
\n
\n {#each views as view}\n

select(view)}\n >\n {view.label}\n

\n {/each}\n
\n
\n \n
\n
\n
\n

\n Tauri Console\n {\n responses = [\"\"];\n }}>clear\n

\n {responses}\n
\n
\n","import App from \"./App.svelte\";\n\nconst app = new App({\n target: document.body,\n});\n\nexport default app;\n"],"names":["noop","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","component_subscribe","component","store","callback","$$","on_destroy","push","callbacks","unsub","subscribe","unsubscribe","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","value","removeAttribute","getAttribute","setAttribute","to_number","set_data","wholeText","set_input_value","input","set_style","key","important","style","setProperty","select_option","select","option","__value","selected","current_component","set_current_component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","Promise","resolve","update_scheduled","add_render_callback","flushing","seen_callbacks","Set","flush","update","pop","has","add","clear","fragment","before_update","dirty","p","ctx","after_update","outroing","outros","transition_in","block","local","delete","transition_out","o","c","create_component","mount_component","customElement","on_mount","m","new_on_destroy","map","filter","destroy_component","make_dirty","then","fill","init","instance","create_fragment","not_equal","props","parent_component","bound","on_disconnect","context","Map","skip_bound","ready","ret","rest","hydrate","nodes","Array","from","childNodes","children","l","intro","SvelteComponent","[object Object]","$destroy","type","index","indexOf","splice","$$props","obj","$$set","keys","t","n","e","setPrototypeOf","__proto__","prototype","hasOwnProperty","r","u","next","throw","done","apply","label","sent","trys","ops","return","Symbol","iterator","TypeError","Math","floor","random","toString","substring","defineProperty","window","Reflect","deleteProperty","writable","configurable","rpc","notify","exports","_assign","error","assign","arguments","freeze","transformCallback","invoke","String","constructor","__awaiter","__generator","invokeTauriCommand","__tauriModule","message","cmd","command","args","path","with","execute","open","getMatches","onMessage","catch","eventId","windowLabel","payload","id","emit","once","endpoint","body","mainThread","save","require$$0","contents","fromCharCode","subarray","Uint8Array","btoa","s","_","source","destination","oldPath","newPath","BaseDirectory","Audio","Cache","Config","Data","LocalData","Desktop","Document","Download","Executable","Font","Home","Picture","Public","Runtime","Template","Video","Resource","App","f","Dir","readTextFile","readBinaryFile","writeFile","writeBinaryFile","readDir","createDir","removeDir","copyFile","removeFile","renameFile","enumerable","get","defaultPath","multiple","directory","filters","extensions","split","trim","res","isArray","pathToRead","isFile","match","response","buffer","blob","reader","includes","base64","Blob","FileReader","onload","evt","dataurl","result","substr","readAsDataURL","getDir","getElementById","parseInt","dir","DirOptions","isNaN","opts","arrayBufferToBase64","setTimeout","fileInput","file","ResponseType","JSON","Text","Binary","form","json","bytes","drop","client","request","method","url","post","put","patch","Body","Client","getClient","fetch","httpMethod","httpUrl","httpBody","startsWith","endsWith","parse","selected_option","querySelector","_sendNotification","Notification","permission","requestPermission","__TAURI__","__currentWindow","__windows","listeners","_handleTauriEvent","__extends","getByLabel","some","setResizable","resizable","setTitle","title","maximize","unmaximize","minimize","unminimize","show","hide","close","setDecorations","decorations","setAlwaysOnTop","alwaysOnTop","setWidth","width","setHeight","height","resize","setMinSize","minWidth","minHeight","setMaxSize","maxWidth","maxHeight","setX","x","setY","y","setPosition","setFullscreen","fullscreen","setIcon","icon","WebviewWindow","getCurrent","getAll","appWindow","setTransparent","urlValue","maximized","transparent","windowTitle","openDialog","subscriber_queue","shortcut","shortcuts","register","registerAll","isRegistered","unregister","unregisterAll","start","stop","subscribers","set","new_value","run_queue","invalidate","subscriber","shortcut_","unregisterShortcut","shortcuts_","registerShortcut","unregisterAllShortcuts","savedShortcut","views","Welcome","Communication","Cli","Dialog","FileSystem","Http","Notifications","Window","Shortcuts","responses","view","stringify"],"mappings":"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"} \ No newline at end of file diff --git a/examples/helloworld/src-tauri/tauri.conf.json b/examples/helloworld/src-tauri/tauri.conf.json index 395feb156..ebacdc3ea 100644 --- a/examples/helloworld/src-tauri/tauri.conf.json +++ b/examples/helloworld/src-tauri/tauri.conf.json @@ -27,7 +27,7 @@ "depends": [], "useBootstrapper": false }, - "osx": { + "macOS": { "frameworks": [], "minimumSystemVersion": "", "useBootstrapper": false,