From aee8cc09cfe52c678566b7c02795daccb7eaaa40 Mon Sep 17 00:00:00 2001 From: Alfonso Uceda Date: Thu, 22 May 2025 10:53:54 +0200 Subject: [PATCH 01/16] Ruby and dependencies are udpated to latest version Tailwindcss is still in v3 --- .ruby-version | 2 +- Gemfile | 9 +- Gemfile.lock | 230 ++++++++++++++++++++++++++++++-------------------- 3 files changed, 142 insertions(+), 99 deletions(-) diff --git a/.ruby-version b/.ruby-version index 9e79f6c..e3cc07a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-3.2.2 +ruby-3.4.4 diff --git a/Gemfile b/Gemfile index e616099..6b9e112 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,4 @@ source "https://rubygems.org" -git_source(:github) { |repo| "https://github.com/#{repo}.git" } - -ruby "3.2.2" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" gem "railties" @@ -12,13 +9,13 @@ gem "actionview" gem "sprockets-rails" # Use the Puma web server [https://github.com/puma/puma] -gem "puma", "~> 5.0" +gem "puma" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] gem "importmap-rails" # Use Tailwind CSS [https://github.com/rails/tailwindcss-rails] -gem "tailwindcss-rails" +gem "tailwindcss-rails", "~> 3.3.1" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] @@ -60,4 +57,4 @@ gem "torture", ">= 0.0.3" # gem "torture-server", path: "../torture-server" gem "torture-server", github: "apotonick/torture-server", branch: "cms" -# gem "trailblazer-developer" +gem "ostruct" diff --git a/Gemfile.lock b/Gemfile.lock index aedb36e..cf0f77c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,13 @@ +GIT + remote: https://github.com/apotonick/torture-server.git + revision: 0f57406ac50966d903bfd8155a83f7f7ffbcbb42 + branch: cms + specs: + torture-server (0.1.0) + kramdown + minitest-line + trailblazer-activity-dsl-linear + GIT remote: https://github.com/trailblazer/cells.git revision: 3e87c147b0595555ef4b1e929da8d18f896bece3 @@ -6,161 +16,196 @@ GIT cells (5.0.0.alpha1) tilt (~> 2.1.0) -PATH - remote: ../torture-server - specs: - torture-server (0.1.0) - kramdown - minitest-line - trailblazer-activity-dsl-linear - GEM remote: https://rubygems.org/ specs: - actionpack (7.0.8) - actionview (= 7.0.8) - activesupport (= 7.0.8) - rack (~> 2.0, >= 2.2.4) + actionpack (8.0.2) + actionview (= 8.0.2) + activesupport (= 8.0.2) + nokogiri (>= 1.8.5) + rack (>= 2.2.4) + rack-session (>= 1.0.1) rack-test (>= 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actionview (7.0.8) - activesupport (= 7.0.8) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + useragent (~> 0.16) + actionview (8.0.2) + activesupport (= 8.0.2) builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activesupport (7.0.8) - concurrent-ruby (~> 1.0, >= 1.0.2) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activesupport (8.0.2) + base64 + benchmark (>= 0.3) + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - tzinfo (~> 2.0) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) - builder (3.2.4) - capybara (3.39.2) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.2.0) + benchmark (0.4.0) + bigdecimal (3.1.9) + builder (3.3.0) + capybara (3.40.0) addressable matrix mini_mime (>= 0.1.3) - nokogiri (~> 1.8) + nokogiri (~> 1.11) rack (>= 1.6.0) rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) coderay (1.1.3) - concurrent-ruby (1.2.2) + concurrent-ruby (1.3.5) + connection_pool (2.5.3) crass (1.0.6) - debug (1.8.0) - irb (>= 1.5.0) - reline (>= 0.3.1) + date (3.4.1) + debug (1.10.0) + irb (~> 1.10) + reline (>= 0.3.8) + drb (2.2.3) + erb (5.0.1) erbse (0.1.4) temple - erubi (1.12.0) - ffi (1.16.2) + erubi (1.13.1) + ffi (1.17.2-arm64-darwin) + ffi (1.17.2-x86_64-linux-gnu) formatador (1.1.0) - guard (2.18.1) + guard (2.19.1) formatador (>= 0.2.4) listen (>= 2.7, < 4.0) + logger (~> 1.6) lumberjack (>= 1.0.12, < 2.0) nenv (~> 0.1) notiffany (~> 0.0) + ostruct (~> 0.6) pry (>= 0.13.0) shellany (~> 0.0) thor (>= 0.18.1) hashie (5.0.0) hirb (0.7.3) - i18n (1.14.1) + i18n (1.14.7) concurrent-ruby (~> 1.0) - importmap-rails (1.2.1) + importmap-rails (2.1.0) actionpack (>= 6.0.0) + activesupport (>= 6.0.0) railties (>= 6.0.0) - io-console (0.6.0) - irb (1.8.1) - rdoc - reline (>= 0.3.8) - kramdown (2.4.0) - rexml - listen (3.8.0) + io-console (0.8.0) + irb (1.15.2) + pp (>= 0.6.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + kramdown (2.5.1) + rexml (>= 3.3.9) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.21.3) + logger (1.7.0) + loofah (2.24.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) - lumberjack (1.2.9) + lumberjack (1.2.10) matrix (0.4.2) - method_source (1.0.0) + method_source (1.1.0) mini_mime (1.1.5) - minitest (5.20.0) + minitest (5.25.5) minitest-line (0.6.5) minitest (~> 5.0) nenv (0.3.0) - nio4r (2.5.9) - nokogiri (1.15.4-x86_64-linux) + nio4r (2.7.4) + nokogiri (1.18.8-arm64-darwin) + racc (~> 1.4) + nokogiri (1.18.8-x86_64-linux-gnu) racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) - pry (0.14.2) + ostruct (0.6.1) + pp (0.6.2) + prettyprint + prettyprint (0.2.0) + pry (0.15.2) coderay (~> 1.1) method_source (~> 1.0) - psych (5.1.0) + psych (5.2.6) + date stringio - public_suffix (5.0.3) - puma (5.6.7) + public_suffix (6.0.2) + puma (6.6.0) nio4r (~> 2.0) - racc (1.7.1) - rack (2.2.8) - rack-test (2.1.0) + racc (1.8.1) + rack (3.1.15) + rack-session (2.1.1) + base64 (>= 0.1.0) + rack (>= 3.0.0) + rack-test (2.2.0) rack (>= 1.3) - rails-dom-testing (2.2.0) + rackup (2.2.1) + rack (>= 3) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) - nokogiri (~> 1.14) - railties (7.0.8) - actionpack (= 7.0.8) - activesupport (= 7.0.8) - method_source + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (8.0.2) + actionpack (= 8.0.2) + activesupport (= 8.0.2) + irb (~> 1.13) + rackup (>= 1.0.0) rake (>= 12.2) - thor (~> 1.0) - zeitwerk (~> 2.5) - rake (13.0.6) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rake (13.2.1) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rdoc (6.5.0) + rdoc (6.14.0) + erb psych (>= 4.0.0) - regexp_parser (2.8.1) - reline (0.3.8) + regexp_parser (2.10.0) + reline (0.6.1) io-console (~> 0.5) - rexml (3.2.6) - rubyzip (2.3.2) + rexml (3.4.1) + rubyzip (2.4.1) + securerandom (0.4.1) selenium-webdriver (4.10.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) shellany (0.0.1) - sprockets (4.2.1) + sprockets (4.2.2) concurrent-ruby (~> 1.0) + logger rack (>= 2.2.4, < 4) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) + sprockets-rails (3.5.2) + actionpack (>= 6.1) + activesupport (>= 6.1) sprockets (>= 3.0.0) - stringio (3.0.8) - tailwindcss-rails (2.0.30-x86_64-linux) - railties (>= 6.0.0) - temple (0.10.2) - thor (1.2.2) + stringio (3.1.7) + tailwindcss-rails (3.3.2) + railties (>= 7.0.0) + tailwindcss-ruby (~> 3.0) + tailwindcss-ruby (3.4.17-arm64-darwin) + tailwindcss-ruby (3.4.17-x86_64-linux) + temple (0.10.3) + thor (1.3.2) tilt (2.1.0) torture (0.0.3) - trailblazer-activity (0.16.1) + trailblazer-activity (0.17.0) trailblazer-context (~> 0.5.0) trailblazer-option (~> 0.1.0) - trailblazer-activity-dsl-linear (1.2.4) - trailblazer-activity (>= 0.16.0, < 0.17.0) + trailblazer-activity-dsl-linear (1.2.6) + trailblazer-activity (>= 0.17.0, < 0.18.0) trailblazer-declarative (>= 0.0.1, < 0.1.0) trailblazer-context (0.5.1) hashie (>= 3.0.0) @@ -171,16 +216,19 @@ GEM trailblazer-option (0.1.2) tzinfo (2.0.6) concurrent-ruby (~> 1.0) + uri (1.0.3) + useragent (0.16.11) webdrivers (5.3.1) nokogiri (~> 1.6) rubyzip (>= 1.3.0) selenium-webdriver (~> 4.0, < 4.11) - websocket (1.2.10) + websocket (1.2.11) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.12) + zeitwerk (2.7.3) PLATFORMS + arm64-darwin-24 x86_64-linux DEPENDENCIES @@ -192,19 +240,17 @@ DEPENDENCIES erbse guard importmap-rails - puma (~> 5.0) + ostruct + puma railties selenium-webdriver sprockets-rails - tailwindcss-rails + tailwindcss-rails (~> 3.3.1) torture (>= 0.0.3) torture-server! trailblazer-developer tzinfo-data webdrivers -RUBY VERSION - ruby 3.2.2p53 - BUNDLED WITH - 2.4.10 + 2.6.9 From 6d4d596ef1483ffe67d1afc4624e4a2518a145c8 Mon Sep 17 00:00:00 2001 From: Alfonso Uceda Date: Thu, 22 May 2025 13:30:38 +0200 Subject: [PATCH 02/16] Script clone respositories added --- script/clone_repositories | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 script/clone_repositories diff --git a/script/clone_repositories b/script/clone_repositories new file mode 100755 index 0000000..cd2a45d --- /dev/null +++ b/script/clone_repositories @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby + +repositories = [ + "trailblazer-activity", + "trailblazer-activity-dsl-linear", + "trailblazer-developer", + "trailblazer-endpoint", + "trailblazer-macro", + "trailblazer-macro-contract", + "trailblazer-operation", + "trailblazer-option", + "trailblazer-rails", + "trailblazer-test", +] + +Dir.chdir("..") + +repositories.each do |repository| + puts "Cloning repository: #{repository}" + `git clone git@github.com:trailblazer/#{repository}.git` +end + + + + + + + + + + + From 13600aa102f0dd77d23d9117c1b54ac11ac17020 Mon Sep 17 00:00:00 2001 From: Alfonso Uceda Date: Thu, 22 May 2025 13:31:18 +0200 Subject: [PATCH 03/16] Not found test code lines commented These lines aren't found in the last master version of their repository --- app/controllers/views_controller.rb | 8 ++++---- section/internals/context.md.erb | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/controllers/views_controller.rb b/app/controllers/views_controller.rb index 33a4b65..34254e2 100644 --- a/app/controllers/views_controller.rb +++ b/app/controllers/views_controller.rb @@ -607,7 +607,7 @@ class Cell "interfaces.md.erb" => { snippet_file: "activity_test.rb" }, "internals/path_layout.md.erb" => { snippet_file: "path_layout_test.rb" }, "internals/fast_track_layout.md.erb" => { snippet_file: "fast_track_layout_test.rb" }, - "class_dependencies.md.erb" => {snippet_dir: "../trailblazer-operation/test/docs", snippet_file: "class_dependencies_test.rb"}, + # "class_dependencies.md.erb" => {snippet_dir: "../trailblazer-operation/test/docs", snippet_file: "class_dependencies_test.rb"}, "troubleshooting.md.erb" => {section_dir: "section/developer", snippet_dir: "../trailblazer-developer/test/docs", snippet_file: "developer_test.rb" }, # "kitchen_sink.md.erb" => { snippet_file: "____test.rb" }, }, @@ -758,13 +758,13 @@ class Cell target_file: "public/2.1/docs/reform/index.html", target_url: "/2.1/docs/reform/index.html", - "overview.md.erb" => {snippet_file: "validation_test.rb"}, - "api.md.erb" => {snippet_file: "validation_test.rb"}, + # "overview.md.erb" => {snippet_file: "validation_test.rb"}, + # "api.md.erb" => {snippet_file: "validation_test.rb"}, "options.md.erb" => {snippet_file: nil}, "data_types.md.erb" => {snippet_file: nil}, "populators.md.erb" => {snippet_file: nil}, "prepopulators.md.erb" => {snippet_file: nil}, - "validation.md.erb" => {snippet_file: "validation_test.rb"}, + # "validation.md.erb" => {snippet_file: "validation_test.rb"}, "rails.md.erb" => {snippet_file: nil}, "upgrading_guide.md.erb" => {snippet_file: nil}, }, diff --git a/section/internals/context.md.erb b/section/internals/context.md.erb index ac983d6..d40639a 100644 --- a/section/internals/context.md.erb +++ b/section/internals/context.md.erb @@ -23,17 +23,17 @@ In order to provide the generic interface, scoping and debugging capabilities, t <%= code 'ctx-indifferent-access' %> All keys are stored as Symbols by default in order to allow them to be accessible as keyword arguments. -Note that `ctx` doesn't provide interchangeable keys for any nested hashes because of the performance reasons. +Note that `ctx` doesn't provide interchangeable keys for any nested hashes because of the performance reasons. <%= h4 "Aliases" %> -Most commonly found keys in `ctx` are `'contract.default', 'contract.default.params', 'policy.default'` etc. It sometimes becomes cumbersome to access them from `ctx` as they can't be defined as keyword arguments in steps. +Most commonly found keys in `ctx` are `'contract.default', 'contract.default.params', 'policy.default'` etc. It sometimes becomes cumbersome to access them from `ctx` as they can't be defined as keyword arguments in steps. -To overcome this, it is possible to define a shorter versions of context keys using `aliases`. By providing aliases mapping in `flow_options[:context_options]`, context will maintain any mutations being made on the origianl keys with +To overcome this, it is possible to define a shorter versions of context keys using `aliases`. By providing aliases mapping in `flow_options[:context_options]`, context will maintain any mutations being made on the origianl keys with the aliases and vice versa. -<%= code 'ctx-aliases' %> +<%# code 'ctx-aliases' %> `flow_options` are passed to the nested operations via `Subprocess` and all given aliases will also be applied in them by default. -<%= code 'ctx-aliases-step', collapse: "flow" %> +<%# code 'ctx-aliases-step', collapse: "flow" %> From b276cce60b34cf597de6ad4f6eadabcf9f878523 Mon Sep 17 00:00:00 2001 From: Alfonso Uceda Date: Thu, 22 May 2025 16:48:26 +0200 Subject: [PATCH 04/16] Tailwindcss upgraded to v4 --- Gemfile | 2 +- Gemfile.lock | 10 +- .../stylesheets/application.tailwind.css | 73 ---------- app/assets/tailwind/application.css | 137 ++++++++++++++++++ app/concepts/cell/application/container.erb | 3 +- config/tailwind.config.js | 76 +--------- 6 files changed, 146 insertions(+), 155 deletions(-) delete mode 100644 app/assets/stylesheets/application.tailwind.css create mode 100644 app/assets/tailwind/application.css diff --git a/Gemfile b/Gemfile index 6b9e112..8f308a4 100644 --- a/Gemfile +++ b/Gemfile @@ -15,7 +15,7 @@ gem "puma" gem "importmap-rails" # Use Tailwind CSS [https://github.com/rails/tailwindcss-rails] -gem "tailwindcss-rails", "~> 3.3.1" +gem "tailwindcss-rails" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] diff --git a/Gemfile.lock b/Gemfile.lock index cf0f77c..14a87c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -192,11 +192,11 @@ GEM activesupport (>= 6.1) sprockets (>= 3.0.0) stringio (3.1.7) - tailwindcss-rails (3.3.2) + tailwindcss-rails (4.2.3) railties (>= 7.0.0) - tailwindcss-ruby (~> 3.0) - tailwindcss-ruby (3.4.17-arm64-darwin) - tailwindcss-ruby (3.4.17-x86_64-linux) + tailwindcss-ruby (~> 4.0) + tailwindcss-ruby (4.1.7-arm64-darwin) + tailwindcss-ruby (4.1.7-x86_64-linux-gnu) temple (0.10.3) thor (1.3.2) tilt (2.1.0) @@ -245,7 +245,7 @@ DEPENDENCIES railties selenium-webdriver sprockets-rails - tailwindcss-rails (~> 3.3.1) + tailwindcss-rails torture (>= 0.0.3) torture-server! trailblazer-developer diff --git a/app/assets/stylesheets/application.tailwind.css b/app/assets/stylesheets/application.tailwind.css deleted file mode 100644 index 7d47070..0000000 --- a/app/assets/stylesheets/application.tailwind.css +++ /dev/null @@ -1,73 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer components { -/* FIXME: doesn't show up*/ - .DocSearch-Button { - @apply rounded bg-white !important h-20; - } - - .hamburger-toggle { - @apply - [&>div]:h-0 - [&>div::before]:translate-y-0 - [&>div::before]:rotate-45 - [&>div::after]:translate-y-0 - [&>div::after]:-rotate-45 - } - - .active-mobile-navbar { - @apply sticky top-0 h-screen bg-purple; - } - - .base-button { - @apply w-60 h-14 rounded flex items-center justify-center text-base font-bold - lg:w-[18.75rem] lg:h-16 lg:text-2xl - } - - .section-content-wrapper { - @apply mobile-section-width mx-auto py-12 max-w-[28rem] - lg:max-w-[58.5rem] lg:py-22; - } - - .mobile-section-width { - @apply w-10/12; - } - - .section-header { - @apply text-center text-3xl lg:text-5xl; - } - - .section-description { - @apply text-center text-lg mt-5 lg:text-2xl; - } - - .list-checkmark { - @apply list-image-[url(list_checkmark)]; - } - - .list-white-checkmark { - @apply list-image-[url(list_white_checkmark)]; - } - - .documentation-right-toc-h3-active { - @apply text-white bg-dark-purple; - } - - .documentation-right-toc-h4-active { - @apply bg-lighter-purple; - } - - .display_none { - display: none; - } - - .display_block { - display: block; - } - - .toc-right-height { - height: calc(100dvh - 10rem); - } -} diff --git a/app/assets/tailwind/application.css b/app/assets/tailwind/application.css new file mode 100644 index 0000000..ada4eab --- /dev/null +++ b/app/assets/tailwind/application.css @@ -0,0 +1,137 @@ +@import "tailwindcss"; +@plugin "@tailwindcss/forms"; + +@theme { + --font-display: "Open Sauce Sans", "sans-serif"; + + /* Colors */ + --color-neutral-500: #1B2430; + --color-text: #211B3F; + --color-blue: #140F3F; + --color-bg-blue: #05012C; + --color-dark-blue: #17124A; + --color-purple: #582ABB; + --color-purple-text: #998FF8; + --color-selected: #4D4499; + --color-bg-purple-1: #AEAAF7; + --color-bg-purple-3: #CAC6F3; + --color-light-purple: #C5C0F5; + --color-lighter-purple: #D6D4FA; + --color-dark-purple: #292262; + --color-violet: #5A1B4D; + --color-magenta: #E72456; + --color-red: #E72F2B; + --color-orange: #EC651A; + --color-bg-orange: #F5B18C; + --color-grey: #989CAA; + --color-bg-grey: #F2F2F2; + --color-light-grey: #F1F1F1; + --color-light-bg: #FEFEFE; + + + /* Typography */ + --font-size-xs: 0.75rem; + --font-size-sm: 0.875rem; + --font-size-base: 17px; + --font-size-lg: 1.125rem; + --font-size-xl: 1.25rem; + --font-size-2xl: 1.5rem; + --font-size-3xl: 1.875rem; + --font-size-5xl: 2.75rem; + + /* Line Heights */ + --line-height-xs: 1rem; + --line-height-sm: 1.25rem; + --line-height-base: 20px; + --line-height-lg: 1.75rem; + --line-height-3xl: 1.4; + --line-height-5xl: 1.3; + + /* Border Radius */ + --border-radius-default: 10px; + --border-radius-md: 0.375rem; + --border-radius-lg: 0.5rem; + --border-radius-xl: 0.75rem; + --border-radius-xxl: 1.25rem; + --border-radius-3xl: 1.5rem; + --border-radius-full: 9999px; + + /* Spacing */ + --spacing-7: 1.75rem; + --spacing-9: 2.0rem; + --spacing-15: 3.75rem; + --spacing-22: 5.5rem; + + /* List Style Images */ + --list-style-image-disc: url('list-circle-full.svg'); +} + +@utility mobile-section-width { + @apply w-10/12; +} + +@layer components { +/* FIXME: doesn't show up*/ + /*.DocSearch-Button { + @apply rounded bg-white !important h-20; + }*/ + + .hamburger-toggle { + @apply + [&>div]:h-0 + [&>div::before]:translate-y-0 + [&>div::before]:rotate-45 + [&>div::after]:translate-y-0 + [&>div::after]:-rotate-45 + } + + .active-mobile-navbar { + @apply sticky top-0 h-screen bg-purple; + } + + .base-button { + @apply w-60 h-14 rounded flex items-center justify-center text-base font-bold + lg:w-[18.75rem] lg:h-16 lg:text-2xl + } + + .section-content-wrapper { + @apply mobile-section-width mx-auto py-12 max-w-[28rem] + lg:max-w-[58.5rem] lg:py-22; + } + + .section-header { + @apply text-center text-3xl lg:text-5xl; + } + + .section-description { + @apply text-center text-lg mt-5 lg:text-2xl; + } + + .list-checkmark { + @apply list-image-[url(list_checkmark)]; + } + + .list-white-checkmark { + @apply list-image-[url(list_white_checkmark)]; + } + + .documentation-right-toc-h3-active { + @apply text-white bg-dark-purple; + } + + .documentation-right-toc-h4-active { + @apply bg-lighter-purple; + } + + .display_none { + display: none; + } + + .display_block { + display: block; + } + + .toc-right-height { + height: calc(100dvh - 10rem); + } +} diff --git a/app/concepts/cell/application/container.erb b/app/concepts/cell/application/container.erb index 3b0f9bf..de13eff 100644 --- a/app/concepts/cell/application/container.erb +++ b/app/concepts/cell/application/container.erb @@ -6,7 +6,8 @@ <%#= csrf_meta_tags %> <%#= csp_meta_tag %> - <%= stylesheet_link_tag "tailwind", "inter-font" %> + <%= stylesheet_link_tag "tailwind", "open-sauce" %> + <%# stylesheet_link_tag "tailwind" %> <%= stylesheet_link_tag "application" %> <%= script_for_page_identifier %> <%= javascript_importmap_tags %> diff --git a/config/tailwind.config.js b/config/tailwind.config.js index e28ec08..d2aefba 100644 --- a/config/tailwind.config.js +++ b/config/tailwind.config.js @@ -1,5 +1,3 @@ -const defaultTheme = require("tailwindcss/defaultTheme") - module.exports = { content: [ "./public/*.html", @@ -11,79 +9,7 @@ module.exports = { "./app/concepts/cms/*.rb", // config.rb "section/**/*.erb", ], - theme: { - colors: { - "neutral-500": "#1B2430", - "text": "#211B3F", - "blue": "#140F3F", - "bg-blue": "#05012C", - "dark-blue": "#17124A", - "purple": "#582ABB", - "purple-text": "#998FF8", - "selected": "#4D4499", - "bg-purple-1": "#AEAAF7", - // "purple-light": "#D6D4FB", - "bg-purple-3": "#CAC6F3", - "light-purple": "#C5C0F5", - "lighter-purple": "#D6D4FA", - "dark-purple": "#292262", - "violet": "#5A1B4D", - "magenta": "#E72456", - "red": "#E72F2B", - "orange": "#EC651A", - "bg-orange": "#F5B18C", - "grey": "#989CAA", - "bg-grey": "#F2F2F2", - "light-grey": "#F1F1F1", - "light-bg": "#FEFEFE", - "white": "#FFFFFF", - "black": "#000000", - - }, - fontFamily: { - sans: ["Open Sauce Sans", "sans-serif"] - }, - fontSize: { - "xs": ["0.75rem", { lineHeight: "1rem" }], - "sm": ["0.875rem", { lineHeight: "1.25rem" }], - "base": ["17px", { lineHeight: "20px" }], - "lg": ["1.125rem", { lineHeight: "1.75rem" }], - "xl": ["1.25rem", { lineHeight: "1.75rem" }], - "2xl": ["1.5rem", { lineHeight: "2rem" }], - "3xl": ["1.875rem", { lineHeight: "1.4" }], - "4xl": ["2.25rem", { lineHeight: "2.5rem" }], - "5xl": ["2.75rem", { lineHeight: "1.3" }], - "6xl": ["3rem", { lineHeight: "1" }], - "7xl": ["4.5rem", { lineHeight: "1" }], - "8xl": ["6rem", { lineHeight: "1" }], - "9xl": ["8rem", { lineHeight: "1" }], - }, - borderRadius: { - "none": "0", - DEFAULT: "10px", - "md": "0.375rem", - "lg": "0.5rem", - "xl": "0.75rem", - "xxl": "1.25rem", - "3xl": "1.5rem", - "full": "9999px" - }, - extend: { - spacing: { - "7": "1.75rem", - "9": "2.0rem", - "15": "3.75rem", - "22": "5.5rem", - }, - listStyleImage: { - 'disc': "url('list-circle-full.svg')" - } - } - }, plugins: [ - require("@tailwindcss/forms"), - require("@tailwindcss/aspect-ratio"), - require("@tailwindcss/typography"), - require("@tailwindcss/container-queries"), + require("@tailwindcss/forms") ] } From cfbc6f6b5181bd96b69e1990bba1c9042893674b Mon Sep 17 00:00:00 2001 From: Alfonso Uceda Date: Fri, 23 May 2025 12:39:27 +0200 Subject: [PATCH 05/16] Sprockets and impormapts replaced by ViteJS --- .gitignore | 9 +- Gemfile | 11 +- Gemfile.lock | 34 +- Procfile.dev | 2 +- README.md | 29 +- app/assets/builds/.keep | 0 app/assets/config/manifest.js | 6 - app/concepts/cell/about/about.erb | 2 +- app/concepts/cell/application/container.erb | 9 +- app/concepts/cell/application/footer.erb | 2 +- app/concepts/cell/application/navbar.erb | 2 +- app/concepts/cell/pro/pro.erb | 14 +- app/controllers/views_controller.rb | 38 +- app/frontend/entrypoints/application.css | 5 + app/frontend/entrypoints/application.js | 1 + .../fonts/Open Sauce One OFL.txt | 0 .../fonts/Open Sauce Sans OFL.txt | 0 .../fonts/Open Sauce Two OFL.txt | 0 .../fonts/OpenSauceOne-Black.ttf | Bin .../fonts/OpenSauceOne-BlackItalic.ttf | Bin .../fonts/OpenSauceOne-Bold.ttf | Bin .../fonts/OpenSauceOne-BoldItalic.ttf | Bin .../fonts/OpenSauceOne-ExtraBold.ttf | Bin .../fonts/OpenSauceOne-ExtraBoldItalic.ttf | Bin .../fonts/OpenSauceOne-Italic.ttf | Bin .../fonts/OpenSauceOne-Light.ttf | Bin .../fonts/OpenSauceOne-LightItalic.ttf | Bin .../fonts/OpenSauceOne-Medium.ttf | Bin .../fonts/OpenSauceOne-MediumItalic.ttf | Bin .../fonts/OpenSauceOne-Regular.ttf | Bin .../fonts/OpenSauceOne-SemiBold.ttf | Bin .../fonts/OpenSauceOne-SemiBoldItalic.ttf | Bin .../fonts/OpenSauceSans-Black.ttf | Bin .../fonts/OpenSauceSans-BlackItalic.ttf | Bin .../fonts/OpenSauceSans-Bold.ttf | Bin .../fonts/OpenSauceSans-BoldItalic.ttf | Bin .../fonts/OpenSauceSans-ExtraBold.ttf | Bin .../fonts/OpenSauceSans-ExtraBoldItalic.ttf | Bin .../fonts/OpenSauceSans-Italic.ttf | Bin .../fonts/OpenSauceSans-Light.ttf | Bin .../fonts/OpenSauceSans-LightItalic.ttf | Bin .../fonts/OpenSauceSans-Medium.ttf | Bin .../fonts/OpenSauceSans-MediumItalic.ttf | Bin .../fonts/OpenSauceSans-Regular.ttf | Bin .../fonts/OpenSauceSans-SemiBold.ttf | Bin .../fonts/OpenSauceSans-SemiBoldItalic.ttf | Bin .../fonts/OpenSauceTwo-Black.ttf | Bin .../fonts/OpenSauceTwo-BlackItalic.ttf | Bin .../fonts/OpenSauceTwo-Bold.ttf | Bin .../fonts/OpenSauceTwo-BoldItalic.ttf | Bin .../fonts/OpenSauceTwo-ExtraBold.ttf | Bin .../fonts/OpenSauceTwo-ExtraBoldItalic.ttf | Bin .../fonts/OpenSauceTwo-Italic.ttf | Bin .../fonts/OpenSauceTwo-Light.ttf | Bin .../fonts/OpenSauceTwo-LightItalic.ttf | Bin .../fonts/OpenSauceTwo-Medium.ttf | Bin .../fonts/OpenSauceTwo-MediumItalic.ttf | Bin .../fonts/OpenSauceTwo-Regular.ttf | Bin .../fonts/OpenSauceTwo-SemiBold.ttf | Bin .../fonts/OpenSauceTwo-SemiBoldItalic.ttf | Bin .../images/03-new-form-layoutless.webp | Bin .../images/03-show-layoutless.webp | Bin ...er-Facebook-preview-card-image-jungle.webp | Bin .../Twitter-preview-card-image-jungle.webp | Bin .../images/activity-signal.png | Bin .../images/activity-signal.webp | Bin .../images/advance-domain-ctx.webp | Bin .../images/assert-fail-message.png | Bin .../images/assert-pass-failing-wtf.png | Bin .../images/assert-pass-message.png | Bin .../images/assert-pass-wtf.png | Bin app/{assets => frontend}/images/back.webp | Bin .../images/blog_post_index.webp | Bin .../images/blog_post_new_error.webp | Bin .../images/book/check-email-fail.webp | Bin .../images/book/create-account-01.webp | Bin .../images/book/create-account-fail-fast.webp | Bin .../book/create-account-fail-wrong.webp | Bin .../images/book/create-account-fails.webp | Bin .../images/book/create-account-wtf.webp | Bin .../images/book/create-sub.webp | Bin .../images/book/reset-email.webp | Bin .../images/book/reset-ok.webp | Bin .../images/book/reset-password-fail.webp | Bin .../images/book/reset-password.webp | Bin .../images/book/reset-sub.webp | Bin .../images/book/save-account-error.webp | Bin .../images/book/save-account-fail.webp | Bin .../images/book/verify-account-fail.webp | Bin .../images/book/verify-invalid-id.webp | Bin .../images/book/verify-invalid-second.webp | Bin .../images/book/verify-invalid-token.webp | Bin .../images/book/wtf-password.webp | Bin .../images/bpmn-editor-23.png | Bin .../images/buildalib-cover.webp | Bin .../images/cells-nav-bar.webp | Bin .../images/cli/memo-create.png | Bin app/{assets => frontend}/images/code.webp | Bin .../images/code_placeholder_1.jpg | Bin .../images/code_placeholder_2.png | Bin .../images/code_placeholder_3.jpg | Bin app/{assets => frontend}/images/code_tabs.png | Bin .../images/cross-orange-lg.webp | Bin .../images/cross-purple-lg.webp | Bin app/{assets => frontend}/images/ctx-in.png | Bin .../images/ctx-out-all.png | Bin app/{assets => frontend}/images/ctx-out.png | Bin .../images/debugger-ide-screenshot-august.png | Bin app/{assets => frontend}/images/deco1.webp | Bin .../images/directory-structure.webp | Bin .../images/docu-back.webp | Bin .../images/docu-front.webp | Bin .../images/docu-middle.webp | Bin .../images/double-end.webp | Bin app/{assets => frontend}/images/dp.webp | Bin app/{assets => frontend}/images/drawing_2.svg | 0 .../images/dsl_to_activity.webp | Bin .../images/each-failure-trace.png | Bin .../images/each-trace.png | Bin .../images/editor-september.webp | Bin .../images/endpoint-adapter-api.webp | Bin .../images/endpoint-adapter-web.webp | Bin .../images/endpoint-draft.webp | Bin .../images/endpoint-fast-track-rw.png | Bin .../endpoint-not_authenticated-trace.webp | Bin .../images/endpoint-protocol-block.png | Bin .../images/endpoint-protocol-railway.png | Bin .../images/endpoint-protocol-termini.png | Bin .../images/endpoint-protocol-update.png | Bin .../images/endpoint-protocol.webp | Bin .../images/endpoint-success-trace.webp | Bin .../images/endpoint-update.png | Bin app/{assets => frontend}/images/fail_fast.png | Bin .../images/fast_track.png | Bin app/{assets => frontend}/images/favicon.ico | Bin app/{assets => frontend}/images/flow.webp | Bin app/{assets => frontend}/images/front.webp | Bin .../images/ft-failfast.webp | Bin .../images/ft-fasttrack.webp | Bin .../images/ft-passfast.webp | Bin app/{assets => frontend}/images/hec.webp | Bin app/{assets => frontend}/images/illus-lp.webp | Bin app/{assets => frontend}/images/info_icon.svg | 0 app/{assets => frontend}/images/input.webp | Bin .../images/intermediate.webp | Bin .../images/internals-trace-node.png | Bin .../images/internals-trace-tw.png | Bin .../landing/let_the_operation_handle_it.svg | 0 .../landing/where_do_i_put_this_code.svg | 0 .../images/landing/you_can_focus.svg | 0 .../images/light_bulb_icon.svg | 0 .../images/list-circle-full.svg | 0 .../images/list_checkmark.svg | 0 .../images/list_circle.svg | 0 .../images/list_white_checkmark.svg | 0 app/{assets => frontend}/images/logo-16.webp | Bin .../images/logo-dark.webp | Bin app/{assets => frontend}/images/logo_blue.svg | 0 .../images/logo_blue_ruby.svg | 0 .../images/logo_white.svg | 0 .../images/logo_white_ruby.svg | 0 .../images/lottie/1-A.json | 0 .../images/lottie/1_data.json | 0 .../images/lottie/2-A.json | 0 .../images/lottie/2_data.json | 0 .../images/lottie/3-A.json | 0 .../images/lottie/3_data.json | 0 .../images/macro-ends.webp | Bin .../images/magnetic_to.png | Bin .../images/memo-create.png | Bin .../images/memo-network-error.png | Bin app/{assets => frontend}/images/memo-pass.png | Bin app/{assets => frontend}/images/middle.webp | Bin .../images/model-not-found.png | Bin .../images/model_find.png | Bin .../images/model_find_trace.png | Bin .../images/nested-static-complete.png | Bin .../images/nested-static-create.png | Bin .../images/nested-static-trace.png | Bin .../images/nested-static-vorbiscomment.png | Bin .../images/nesting-end.webp | Bin .../images/nesting-reconnect.webp | Bin app/{assets => frontend}/images/nesting.webp | Bin app/{assets => frontend}/images/output.webp | Bin .../images/parallax/back.webp | Bin .../images/parallax/front.webp | Bin .../images/parallax/middle.webp | Bin app/{assets => frontend}/images/pass_fast.png | Bin .../images/patch-trace.png | Bin app/{assets => frontend}/images/patch.png | Bin .../images/patching-trace.webp | Bin app/{assets => frontend}/images/patching.webp | Bin app/{assets => frontend}/images/path-cc.png | Bin app/{assets => frontend}/images/path-end.png | Bin app/{assets => frontend}/images/path-end.webp | Bin app/{assets => frontend}/images/path-join.png | Bin .../images/path-macro-join.webp | Bin .../images/path-macro-railway.webp | Bin .../images/path-macro.webp | Bin .../images/path-railway.png | Bin app/{assets => frontend}/images/path.png | Bin app/{assets => frontend}/images/path.webp | Bin app/{assets => frontend}/images/pro-billo.png | Bin app/{assets => frontend}/images/pro.webp | Bin .../images/protocol-fail-fast.png | Bin .../images/protocol-wtf.png | Bin .../images/quote-close.webp | Bin .../images/quote-open.webp | Bin .../images/railway-fail.webp | Bin .../images/railway-pass.webp | Bin .../images/railway-wire.webp | Bin app/{assets => frontend}/images/railway.webp | Bin .../images/reform-architecture.webp | Bin app/{assets => frontend}/images/s_hero.webp | Bin .../images/subprocess-output.png | Bin .../images/subprocess-terminus.png | Bin .../images/subprocess.png | Bin .../images/task-wrap.webp | Bin .../images/task_wrap_validate.png | Bin .../images/trb-ruby-white.svg | 0 .../images/tutorials/fail-output.webp | Bin .../images/tutorials/fail-wtf.webp | Bin .../images/tutorials/fail.webp | Bin .../images/tutorials/find_user.webp | Bin .../images/tutorials/github-signin-v1.webp | Bin .../images/tutorials/magnetic.webp | Bin .../images/tutorials/no_info.webp | Bin .../images/tutorials/path-existing.webp | Bin .../images/tutorials/path-failure.webp | Bin .../images/tutorials/path-success.webp | Bin .../images/tutorials/render.webp | Bin .../images/tutorials/signup-1.webp | Bin .../images/tutorials/signup-2.webp | Bin .../images/tutorials/signup-3.webp | Bin .../images/tutorials/signup-4.webp | Bin .../images/tutorials/signup.webp | Bin .../images/tutorials/subprocess-trace.webp | Bin .../images/tutorials/subprocess.webp | Bin .../images/tutorials/trace-exception.webp | Bin .../images/tutorials/trace.webp | Bin .../images/tutorials/truefalse.webp | Bin .../images/tutorials/validate-3.webp | Bin .../images/tutorials/validate.webp | Bin .../images/tutorials/voc.webp | Bin app/{assets => frontend}/images/upcase.png | Bin .../images/wire-output-add.webp | Bin .../images/wire-output-end.webp | Bin .../images/wire-output-endadd.webp | Bin .../images/wire-output.webp | Bin .../images/wiring-custom-track.png | Bin .../images/wiring-end.png | Bin .../images/wiring-explicit-output.png | Bin app/{assets => frontend}/images/wiring-id.png | Bin .../images/wiring-left.png | Bin .../images/wiring-output.png | Bin .../images/wiring-path-connect-to.png | Bin .../images/wiring-path-helper.png | Bin .../images/wiring-subprocess-fast-track.png | Bin .../images/wiring-terminus-dashed.png | Bin .../images/wiring-terminus-track.png | Bin .../images/wiring-terminus.png | Bin .../images/wrap-route.png | Bin .../images/wrap-timeout.png | Bin .../images/wrap-trace.png | Bin app/{assets => frontend}/images/wrap.png | Bin .../images/wtf-color-map.webp | Bin .../images/wtf-exception.png | Bin .../images/wtf-exception.webp | Bin .../images/wtf-focus.webp | Bin .../images/wtf-trace-nice.png | Bin app/{assets => frontend}/images/wtf-trace.png | Bin app/{assets => frontend}/images/wtf.webp | Bin app/{ => frontend}/javascript/application.js | 17 +- app/{ => frontend}/javascript/docsearch.js | 4 +- .../javascript/jquery.parallax-scroll.js | 0 app/{ => frontend}/javascript/navigations.js | 0 .../stylesheets/anchor-js.css | 0 .../stylesheets/application.css | 0 .../stylesheets/highlightjs-trb.css | 0 .../stylesheets/open-sauce.css | 0 .../stylesheets}/tailwind/application.css | 59 +- bin/importmap | 4 - bin/vite | 27 + config/environments/development.rb | 3 - config/environments/production.rb | 3 - config/importmap.rb | 17 - config/initializers/assets.rb | 13 - .../initializers/content_security_policy.rb | 9 + config/tailwind.config.js | 15 - config/vite.json | 16 + dist/2.1/index.html | 14 +- package-lock.json | 2422 +++++++++++++++ package.json | 22 + .../dsl/composable_variable_mapping.md.erb | 6 +- section/activity/dsl/patching.md.erb | 4 +- section/activity/interfaces.md.erb | 2 +- .../internals/fast_track_layout.md.erb | 2 +- section/activity/internals/path_layout.md.erb | 6 +- section/activity/low_level.md.erb | 4 +- section/activity/mechanics.md.erb | 4 +- section/activity/overview.md.erb | 8 +- section/activity/step_dsl.md.erb | 4 +- section/activity/task_wrap.md.erb | 4 +- section/activity/wiring_api/api.md.erb | 18 +- section/activity/wiring_api/fast_track.md.erb | 6 +- .../activity/wiring_api/magnetic_to.md.erb | 2 +- section/activity/wiring_api/path.md.erb | 4 +- section/activity/wiring_api/subprocess.md.erb | 8 +- section/cells/getting_started.md.erb | 2 +- section/developer/debugging.md.erb | 6 +- section/endpoint/api.md.erb | 8 +- section/endpoint/protocol.md.erb | 14 +- section/endpoint/web.md.erb | 2 +- section/internals/core.md.erb | 2 +- section/internals/developer.md.erb | 4 +- section/internals/dsl.md.erb | 2 +- section/landing/abstractions.erb | 8 +- section/landing/animations.erb | 10 +- section/landing/features_section.erb | 6 +- section/landing/hero_section.erb | 6 +- section/landing/learn_more_section.erb | 2 +- section/macro/contract.md.erb | 2 +- section/macro/each.md.erb | 4 +- section/macro/model.md.erb | 2 +- section/macro/model_find.md.erb | 6 +- section/macro/nested/auto_wire.md.erb | 8 +- section/macro/wrap.md.erb | 8 +- section/pro/pro.md.erb | 4 +- section/reform/overview.md.erb | 2 +- section/trailblazer/learn.md.erb | 4 +- section/trailblazer/test/BLOG_2BRM.md.erb | 6 +- .../test/assertions/pass_fail.md.erb | 6 +- vendor/.keep | 0 vendor/javascript/.keep | 0 vendor/javascript/anchor-js.js | 40 - vendor/javascript/docsearch-3.5.2.js | 9 - vendor/javascript/highlight.js--lib--core.js | 2600 ----------------- .../highlight.js--lib--languages--ruby.js | 2 - vendor/javascript/jquery.js | 55 - vendor/javascript/lottie-player.js | 77 - vendor/javascript/scrollmagic.js | 763 ----- vendor/stylesheet/docsearch@3.css | 634 ---- vite.config.ts | 10 + 343 files changed, 2743 insertions(+), 4462 deletions(-) delete mode 100644 app/assets/builds/.keep delete mode 100644 app/assets/config/manifest.js create mode 100644 app/frontend/entrypoints/application.css create mode 100644 app/frontend/entrypoints/application.js rename app/{assets => frontend}/fonts/Open Sauce One OFL.txt (100%) rename app/{assets => frontend}/fonts/Open Sauce Sans OFL.txt (100%) rename app/{assets => frontend}/fonts/Open Sauce Two OFL.txt (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Black.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-BlackItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Bold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-BoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-ExtraBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-ExtraBoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Italic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Light.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-LightItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Medium.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-MediumItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-Regular.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-SemiBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceOne-SemiBoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Black.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-BlackItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Bold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-BoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-ExtraBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-ExtraBoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Italic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Light.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-LightItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Medium.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-MediumItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-Regular.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-SemiBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceSans-SemiBoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Black.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-BlackItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Bold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-BoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-ExtraBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-ExtraBoldItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Italic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Light.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-LightItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Medium.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-MediumItalic.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-Regular.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-SemiBold.ttf (100%) rename app/{assets => frontend}/fonts/OpenSauceTwo-SemiBoldItalic.ttf (100%) rename app/{assets => frontend}/images/03-new-form-layoutless.webp (100%) rename app/{assets => frontend}/images/03-show-layoutless.webp (100%) rename app/{assets => frontend}/images/Twitter-Facebook-preview-card-image-jungle.webp (100%) rename app/{assets => frontend}/images/Twitter-preview-card-image-jungle.webp (100%) rename app/{assets => frontend}/images/activity-signal.png (100%) rename app/{assets => frontend}/images/activity-signal.webp (100%) rename app/{assets => frontend}/images/advance-domain-ctx.webp (100%) rename app/{assets => frontend}/images/assert-fail-message.png (100%) rename app/{assets => frontend}/images/assert-pass-failing-wtf.png (100%) rename app/{assets => frontend}/images/assert-pass-message.png (100%) rename app/{assets => frontend}/images/assert-pass-wtf.png (100%) rename app/{assets => frontend}/images/back.webp (100%) rename app/{assets => frontend}/images/blog_post_index.webp (100%) rename app/{assets => frontend}/images/blog_post_new_error.webp (100%) rename app/{assets => frontend}/images/book/check-email-fail.webp (100%) rename app/{assets => frontend}/images/book/create-account-01.webp (100%) rename app/{assets => frontend}/images/book/create-account-fail-fast.webp (100%) rename app/{assets => frontend}/images/book/create-account-fail-wrong.webp (100%) rename app/{assets => frontend}/images/book/create-account-fails.webp (100%) rename app/{assets => frontend}/images/book/create-account-wtf.webp (100%) rename app/{assets => frontend}/images/book/create-sub.webp (100%) rename app/{assets => frontend}/images/book/reset-email.webp (100%) rename app/{assets => frontend}/images/book/reset-ok.webp (100%) rename app/{assets => frontend}/images/book/reset-password-fail.webp (100%) rename app/{assets => frontend}/images/book/reset-password.webp (100%) rename app/{assets => frontend}/images/book/reset-sub.webp (100%) rename app/{assets => frontend}/images/book/save-account-error.webp (100%) rename app/{assets => frontend}/images/book/save-account-fail.webp (100%) rename app/{assets => frontend}/images/book/verify-account-fail.webp (100%) rename app/{assets => frontend}/images/book/verify-invalid-id.webp (100%) rename app/{assets => frontend}/images/book/verify-invalid-second.webp (100%) rename app/{assets => frontend}/images/book/verify-invalid-token.webp (100%) rename app/{assets => frontend}/images/book/wtf-password.webp (100%) rename app/{assets => frontend}/images/bpmn-editor-23.png (100%) rename app/{assets => frontend}/images/buildalib-cover.webp (100%) rename app/{assets => frontend}/images/cells-nav-bar.webp (100%) rename app/{assets => frontend}/images/cli/memo-create.png (100%) rename app/{assets => frontend}/images/code.webp (100%) rename app/{assets => frontend}/images/code_placeholder_1.jpg (100%) rename app/{assets => frontend}/images/code_placeholder_2.png (100%) rename app/{assets => frontend}/images/code_placeholder_3.jpg (100%) rename app/{assets => frontend}/images/code_tabs.png (100%) rename app/{assets => frontend}/images/cross-orange-lg.webp (100%) rename app/{assets => frontend}/images/cross-purple-lg.webp (100%) rename app/{assets => frontend}/images/ctx-in.png (100%) rename app/{assets => frontend}/images/ctx-out-all.png (100%) rename app/{assets => frontend}/images/ctx-out.png (100%) rename app/{assets => frontend}/images/debugger-ide-screenshot-august.png (100%) rename app/{assets => frontend}/images/deco1.webp (100%) rename app/{assets => frontend}/images/directory-structure.webp (100%) rename app/{assets => frontend}/images/docu-back.webp (100%) rename app/{assets => frontend}/images/docu-front.webp (100%) rename app/{assets => frontend}/images/docu-middle.webp (100%) rename app/{assets => frontend}/images/double-end.webp (100%) rename app/{assets => frontend}/images/dp.webp (100%) rename app/{assets => frontend}/images/drawing_2.svg (100%) rename app/{assets => frontend}/images/dsl_to_activity.webp (100%) rename app/{assets => frontend}/images/each-failure-trace.png (100%) rename app/{assets => frontend}/images/each-trace.png (100%) rename app/{assets => frontend}/images/editor-september.webp (100%) rename app/{assets => frontend}/images/endpoint-adapter-api.webp (100%) rename app/{assets => frontend}/images/endpoint-adapter-web.webp (100%) rename app/{assets => frontend}/images/endpoint-draft.webp (100%) rename app/{assets => frontend}/images/endpoint-fast-track-rw.png (100%) rename app/{assets => frontend}/images/endpoint-not_authenticated-trace.webp (100%) rename app/{assets => frontend}/images/endpoint-protocol-block.png (100%) rename app/{assets => frontend}/images/endpoint-protocol-railway.png (100%) rename app/{assets => frontend}/images/endpoint-protocol-termini.png (100%) rename app/{assets => frontend}/images/endpoint-protocol-update.png (100%) rename app/{assets => frontend}/images/endpoint-protocol.webp (100%) rename app/{assets => frontend}/images/endpoint-success-trace.webp (100%) rename app/{assets => frontend}/images/endpoint-update.png (100%) rename app/{assets => frontend}/images/fail_fast.png (100%) rename app/{assets => frontend}/images/fast_track.png (100%) rename app/{assets => frontend}/images/favicon.ico (100%) rename app/{assets => frontend}/images/flow.webp (100%) rename app/{assets => frontend}/images/front.webp (100%) rename app/{assets => frontend}/images/ft-failfast.webp (100%) rename app/{assets => frontend}/images/ft-fasttrack.webp (100%) rename app/{assets => frontend}/images/ft-passfast.webp (100%) rename app/{assets => frontend}/images/hec.webp (100%) rename app/{assets => frontend}/images/illus-lp.webp (100%) rename app/{assets => frontend}/images/info_icon.svg (100%) rename app/{assets => frontend}/images/input.webp (100%) rename app/{assets => frontend}/images/intermediate.webp (100%) rename app/{assets => frontend}/images/internals-trace-node.png (100%) rename app/{assets => frontend}/images/internals-trace-tw.png (100%) rename app/{assets => frontend}/images/landing/let_the_operation_handle_it.svg (100%) rename app/{assets => frontend}/images/landing/where_do_i_put_this_code.svg (100%) rename app/{assets => frontend}/images/landing/you_can_focus.svg (100%) rename app/{assets => frontend}/images/light_bulb_icon.svg (100%) rename app/{assets => frontend}/images/list-circle-full.svg (100%) rename app/{assets => frontend}/images/list_checkmark.svg (100%) rename app/{assets => frontend}/images/list_circle.svg (100%) rename app/{assets => frontend}/images/list_white_checkmark.svg (100%) rename app/{assets => frontend}/images/logo-16.webp (100%) rename app/{assets => frontend}/images/logo-dark.webp (100%) rename app/{assets => frontend}/images/logo_blue.svg (100%) rename app/{assets => frontend}/images/logo_blue_ruby.svg (100%) rename app/{assets => frontend}/images/logo_white.svg (100%) rename app/{assets => frontend}/images/logo_white_ruby.svg (100%) rename app/{assets => frontend}/images/lottie/1-A.json (100%) rename app/{assets => frontend}/images/lottie/1_data.json (100%) rename app/{assets => frontend}/images/lottie/2-A.json (100%) rename app/{assets => frontend}/images/lottie/2_data.json (100%) rename app/{assets => frontend}/images/lottie/3-A.json (100%) rename app/{assets => frontend}/images/lottie/3_data.json (100%) rename app/{assets => frontend}/images/macro-ends.webp (100%) rename app/{assets => frontend}/images/magnetic_to.png (100%) rename app/{assets => frontend}/images/memo-create.png (100%) rename app/{assets => frontend}/images/memo-network-error.png (100%) rename app/{assets => frontend}/images/memo-pass.png (100%) rename app/{assets => frontend}/images/middle.webp (100%) rename app/{assets => frontend}/images/model-not-found.png (100%) rename app/{assets => frontend}/images/model_find.png (100%) rename app/{assets => frontend}/images/model_find_trace.png (100%) rename app/{assets => frontend}/images/nested-static-complete.png (100%) rename app/{assets => frontend}/images/nested-static-create.png (100%) rename app/{assets => frontend}/images/nested-static-trace.png (100%) rename app/{assets => frontend}/images/nested-static-vorbiscomment.png (100%) rename app/{assets => frontend}/images/nesting-end.webp (100%) rename app/{assets => frontend}/images/nesting-reconnect.webp (100%) rename app/{assets => frontend}/images/nesting.webp (100%) rename app/{assets => frontend}/images/output.webp (100%) rename app/{assets => frontend}/images/parallax/back.webp (100%) rename app/{assets => frontend}/images/parallax/front.webp (100%) rename app/{assets => frontend}/images/parallax/middle.webp (100%) rename app/{assets => frontend}/images/pass_fast.png (100%) rename app/{assets => frontend}/images/patch-trace.png (100%) rename app/{assets => frontend}/images/patch.png (100%) rename app/{assets => frontend}/images/patching-trace.webp (100%) rename app/{assets => frontend}/images/patching.webp (100%) rename app/{assets => frontend}/images/path-cc.png (100%) rename app/{assets => frontend}/images/path-end.png (100%) rename app/{assets => frontend}/images/path-end.webp (100%) rename app/{assets => frontend}/images/path-join.png (100%) rename app/{assets => frontend}/images/path-macro-join.webp (100%) rename app/{assets => frontend}/images/path-macro-railway.webp (100%) rename app/{assets => frontend}/images/path-macro.webp (100%) rename app/{assets => frontend}/images/path-railway.png (100%) rename app/{assets => frontend}/images/path.png (100%) rename app/{assets => frontend}/images/path.webp (100%) rename app/{assets => frontend}/images/pro-billo.png (100%) rename app/{assets => frontend}/images/pro.webp (100%) rename app/{assets => frontend}/images/protocol-fail-fast.png (100%) rename app/{assets => frontend}/images/protocol-wtf.png (100%) rename app/{assets => frontend}/images/quote-close.webp (100%) rename app/{assets => frontend}/images/quote-open.webp (100%) rename app/{assets => frontend}/images/railway-fail.webp (100%) rename app/{assets => frontend}/images/railway-pass.webp (100%) rename app/{assets => frontend}/images/railway-wire.webp (100%) rename app/{assets => frontend}/images/railway.webp (100%) rename app/{assets => frontend}/images/reform-architecture.webp (100%) rename app/{assets => frontend}/images/s_hero.webp (100%) rename app/{assets => frontend}/images/subprocess-output.png (100%) rename app/{assets => frontend}/images/subprocess-terminus.png (100%) rename app/{assets => frontend}/images/subprocess.png (100%) rename app/{assets => frontend}/images/task-wrap.webp (100%) rename app/{assets => frontend}/images/task_wrap_validate.png (100%) rename app/{assets => frontend}/images/trb-ruby-white.svg (100%) rename app/{assets => frontend}/images/tutorials/fail-output.webp (100%) rename app/{assets => frontend}/images/tutorials/fail-wtf.webp (100%) rename app/{assets => frontend}/images/tutorials/fail.webp (100%) rename app/{assets => frontend}/images/tutorials/find_user.webp (100%) rename app/{assets => frontend}/images/tutorials/github-signin-v1.webp (100%) rename app/{assets => frontend}/images/tutorials/magnetic.webp (100%) rename app/{assets => frontend}/images/tutorials/no_info.webp (100%) rename app/{assets => frontend}/images/tutorials/path-existing.webp (100%) rename app/{assets => frontend}/images/tutorials/path-failure.webp (100%) rename app/{assets => frontend}/images/tutorials/path-success.webp (100%) rename app/{assets => frontend}/images/tutorials/render.webp (100%) rename app/{assets => frontend}/images/tutorials/signup-1.webp (100%) rename app/{assets => frontend}/images/tutorials/signup-2.webp (100%) rename app/{assets => frontend}/images/tutorials/signup-3.webp (100%) rename app/{assets => frontend}/images/tutorials/signup-4.webp (100%) rename app/{assets => frontend}/images/tutorials/signup.webp (100%) rename app/{assets => frontend}/images/tutorials/subprocess-trace.webp (100%) rename app/{assets => frontend}/images/tutorials/subprocess.webp (100%) rename app/{assets => frontend}/images/tutorials/trace-exception.webp (100%) rename app/{assets => frontend}/images/tutorials/trace.webp (100%) rename app/{assets => frontend}/images/tutorials/truefalse.webp (100%) rename app/{assets => frontend}/images/tutorials/validate-3.webp (100%) rename app/{assets => frontend}/images/tutorials/validate.webp (100%) rename app/{assets => frontend}/images/tutorials/voc.webp (100%) rename app/{assets => frontend}/images/upcase.png (100%) rename app/{assets => frontend}/images/wire-output-add.webp (100%) rename app/{assets => frontend}/images/wire-output-end.webp (100%) rename app/{assets => frontend}/images/wire-output-endadd.webp (100%) rename app/{assets => frontend}/images/wire-output.webp (100%) rename app/{assets => frontend}/images/wiring-custom-track.png (100%) rename app/{assets => frontend}/images/wiring-end.png (100%) rename app/{assets => frontend}/images/wiring-explicit-output.png (100%) rename app/{assets => frontend}/images/wiring-id.png (100%) rename app/{assets => frontend}/images/wiring-left.png (100%) rename app/{assets => frontend}/images/wiring-output.png (100%) rename app/{assets => frontend}/images/wiring-path-connect-to.png (100%) rename app/{assets => frontend}/images/wiring-path-helper.png (100%) rename app/{assets => frontend}/images/wiring-subprocess-fast-track.png (100%) rename app/{assets => frontend}/images/wiring-terminus-dashed.png (100%) rename app/{assets => frontend}/images/wiring-terminus-track.png (100%) rename app/{assets => frontend}/images/wiring-terminus.png (100%) rename app/{assets => frontend}/images/wrap-route.png (100%) rename app/{assets => frontend}/images/wrap-timeout.png (100%) rename app/{assets => frontend}/images/wrap-trace.png (100%) rename app/{assets => frontend}/images/wrap.png (100%) rename app/{assets => frontend}/images/wtf-color-map.webp (100%) rename app/{assets => frontend}/images/wtf-exception.png (100%) rename app/{assets => frontend}/images/wtf-exception.webp (100%) rename app/{assets => frontend}/images/wtf-focus.webp (100%) rename app/{assets => frontend}/images/wtf-trace-nice.png (100%) rename app/{assets => frontend}/images/wtf-trace.png (100%) rename app/{assets => frontend}/images/wtf.webp (100%) rename app/{ => frontend}/javascript/application.js (94%) rename app/{ => frontend}/javascript/docsearch.js (86%) rename app/{ => frontend}/javascript/jquery.parallax-scroll.js (100%) rename app/{ => frontend}/javascript/navigations.js (100%) rename app/{assets => frontend}/stylesheets/anchor-js.css (100%) rename app/{assets => frontend}/stylesheets/application.css (100%) rename app/{assets => frontend}/stylesheets/highlightjs-trb.css (100%) rename app/{assets => frontend}/stylesheets/open-sauce.css (100%) rename app/{assets => frontend/stylesheets}/tailwind/application.css (70%) delete mode 100755 bin/importmap create mode 100755 bin/vite delete mode 100644 config/importmap.rb delete mode 100644 config/initializers/assets.rb delete mode 100644 config/tailwind.config.js create mode 100644 config/vite.json create mode 100644 package-lock.json create mode 100644 package.json delete mode 100644 vendor/.keep delete mode 100644 vendor/javascript/.keep delete mode 100644 vendor/javascript/anchor-js.js delete mode 100644 vendor/javascript/docsearch-3.5.2.js delete mode 100644 vendor/javascript/highlight.js--lib--core.js delete mode 100644 vendor/javascript/highlight.js--lib--languages--ruby.js delete mode 100644 vendor/javascript/jquery.js delete mode 100644 vendor/javascript/lottie-player.js delete mode 100644 vendor/javascript/scrollmagic.js delete mode 100644 vendor/stylesheet/docsearch@3.css create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore index d6de502..fc68f4c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,10 @@ # Ignore master key for decrypting credentials and more. /config/master.key -/app/assets/builds/* -!/app/assets/builds/.keep +# Vite Ruby +/public/vite* +node_modules +# Vite uses dotenv and suggests to ignore local-only env files. See +# https://vitejs.dev/guide/env-and-mode.html#env-files +*.local + diff --git a/Gemfile b/Gemfile index 8f308a4..e63d2d6 100644 --- a/Gemfile +++ b/Gemfile @@ -5,21 +5,14 @@ gem "railties" gem "actionpack" gem "actionview" -# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] -gem "sprockets-rails" - # Use the Puma web server [https://github.com/puma/puma] gem "puma" -# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] -gem "importmap-rails" - -# Use Tailwind CSS [https://github.com/rails/tailwindcss-rails] -gem "tailwindcss-rails" - # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] +gem "vite_rails" + group :development, :test do # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem "debug", platforms: %i[ mri mingw x64_mingw ] diff --git a/Gemfile.lock b/Gemfile.lock index 14a87c3..fd1e096 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -72,6 +72,7 @@ GEM irb (~> 1.10) reline (>= 0.3.8) drb (2.2.3) + dry-cli (1.2.0) erb (5.0.1) erbse (0.1.4) temple @@ -94,10 +95,6 @@ GEM hirb (0.7.3) i18n (1.14.7) concurrent-ruby (~> 1.0) - importmap-rails (2.1.0) - actionpack (>= 6.0.0) - activesupport (>= 6.0.0) - railties (>= 6.0.0) io-console (0.8.0) irb (1.15.2) pp (>= 0.6.0) @@ -119,6 +116,7 @@ GEM minitest (5.25.5) minitest-line (0.6.5) minitest (~> 5.0) + mutex_m (0.3.0) nenv (0.3.0) nio4r (2.7.4) nokogiri (1.18.8-arm64-darwin) @@ -143,6 +141,8 @@ GEM nio4r (~> 2.0) racc (1.8.1) rack (3.1.15) + rack-proxy (0.7.7) + rack rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) @@ -183,20 +183,7 @@ GEM rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) shellany (0.0.1) - sprockets (4.2.2) - concurrent-ruby (~> 1.0) - logger - rack (>= 2.2.4, < 4) - sprockets-rails (3.5.2) - actionpack (>= 6.1) - activesupport (>= 6.1) - sprockets (>= 3.0.0) stringio (3.1.7) - tailwindcss-rails (4.2.3) - railties (>= 7.0.0) - tailwindcss-ruby (~> 4.0) - tailwindcss-ruby (4.1.7-arm64-darwin) - tailwindcss-ruby (4.1.7-x86_64-linux-gnu) temple (0.10.3) thor (1.3.2) tilt (2.1.0) @@ -218,6 +205,15 @@ GEM concurrent-ruby (~> 1.0) uri (1.0.3) useragent (0.16.11) + vite_rails (3.0.19) + railties (>= 5.1, < 9) + vite_ruby (~> 3.0, >= 3.2.2) + vite_ruby (3.9.2) + dry-cli (>= 0.7, < 2) + logger (~> 1.6) + mutex_m + rack-proxy (~> 0.6, >= 0.6.1) + zeitwerk (~> 2.2) webdrivers (5.3.1) nokogiri (~> 1.6) rubyzip (>= 1.3.0) @@ -239,17 +235,15 @@ DEPENDENCIES debug erbse guard - importmap-rails ostruct puma railties selenium-webdriver - sprockets-rails - tailwindcss-rails torture (>= 0.0.3) torture-server! trailblazer-developer tzinfo-data + vite_rails webdrivers BUNDLED WITH diff --git a/Procfile.dev b/Procfile.dev index 023e98a..25b701e 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,2 +1,2 @@ web: bin/rails server -p 3000 -css: bin/rails tailwindcss:watch +vite: bin/vite dev diff --git a/README.md b/README.md index ca6e1b5..4e220e4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ To write docs, use `guard` and `rails` as a server. -``` +```shell bundle exec guard rails s ``` @@ -16,7 +16,7 @@ To work on CSS and new features, you need to run the "development mode" where Ta Run with -``` +```shell $ foreman start -f Procfile.dev ``` @@ -30,25 +30,13 @@ Browse to If styles don't show up, run -``` +```shell $ rails assets:clobber ``` -### Troubleshooting - -``` -The asset "tailwind.css" is not present in the asset pipeline. (Sprockets::Rails::Helper::AssetNotFound) -``` - -Run - -``` -rails tailwindcss:build -``` - ## Publishing -``` +```shell $ rails site:deploy ``` @@ -74,12 +62,11 @@ https://crawler.algolia.com/admin/crawlers/870e3bcd-5879-4bfd-9d57-8241620b249b/ ## Javascript -```ruby -bin/importmap pin jquery --download -``` - -will copy the library to `vendor/javascript/jquery.js` +JS dependencies are handled by [ViteJS](https://vitejs.dev/) and npm tool (installed with Node) +```shell +$ npm install +``` ## Publishing (before Netlify) diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js deleted file mode 100644 index 5b95087..0000000 --- a/app/assets/config/manifest.js +++ /dev/null @@ -1,6 +0,0 @@ -//= link_tree ../fonts -//= link_tree ../images -//= link_directory ../stylesheets .css -//= link_tree ../../javascript .js -//= link_tree ../../../vendor/javascript .js -//= link_tree ../builds .css diff --git a/app/concepts/cell/about/about.erb b/app/concepts/cell/about/about.erb index aa1d0af..4bf1848 100644 --- a/app/concepts/cell/about/about.erb +++ b/app/concepts/cell/about/about.erb @@ -20,7 +20,7 @@ Follow us on LinkedIn for updates.

- <%= image_tag "memo-create.png", class: "hidden lg:block rounded relative h-[29rem] w-auto bottom-[29rem] left-[54rem] -mb-[29rem]" %> + <%= vite_image_tag "images/memo-create.png", class: "hidden lg:block rounded relative h-[29rem] w-auto bottom-[29rem] left-[54rem] -mb-[29rem]" %>

diff --git a/app/concepts/cell/application/container.erb b/app/concepts/cell/application/container.erb index de13eff..d8c6390 100644 --- a/app/concepts/cell/application/container.erb +++ b/app/concepts/cell/application/container.erb @@ -6,11 +6,12 @@ <%#= csrf_meta_tags %> <%#= csp_meta_tag %> - <%= stylesheet_link_tag "tailwind", "open-sauce" %> - <%# stylesheet_link_tag "tailwind" %> - <%= stylesheet_link_tag "application" %> + + <%= vite_client_tag %> + <%= vite_javascript_tag 'application' %> + <%= vite_stylesheet_tag "application.css" %> + <%= script_for_page_identifier %> - <%= javascript_importmap_tags %> <%= yield %> diff --git a/app/concepts/cell/application/footer.erb b/app/concepts/cell/application/footer.erb index f2057c7..1ee7c2b 100644 --- a/app/concepts/cell/application/footer.erb +++ b/app/concepts/cell/application/footer.erb @@ -2,7 +2,7 @@

- <%= image_tag "logo_white_ruby.svg", class: "w-48" %> + <%= vite_image_tag "images/logo_white_ruby.svg", class: "w-48" %> - <%= image_tag "code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %> + <%= vite_image_tag "images/code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %>
@@ -91,7 +91,7 @@ <%= link_to "Watch BPMN Tutorial", "#", class: "base-button text-bg-blue bg-light-purple mt-10 mx-auto md:text-xl md:mx-0" %>
- <%= image_tag "code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %> + <%= vite_image_tag "images/code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %>
@@ -106,7 +106,7 @@ <%= link_to "Watch Diagram Tutorial", "#", class: "base-button text-bg-blue bg-light-purple mt-10 mx-auto md:text-xl md:mx-0" %>
- <%= image_tag "code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %> + <%= vite_image_tag "images/code_placeholder_3.jpg", class: "w-full h-fit mt-10 mx-auto max-w-[22rem] lg:max-w-[26.25rem] md:mt-0 md:mx-0" %> @@ -145,7 +145,7 @@ asdfasdfasdfsdfasdfasdfs

- <%= image_tag "code_placeholder_2.png", class: "hidden lg:block rounded relative h-[29rem] bottom-[29rem] left-[54rem] -mb-[29rem]" %> + <%= vite_image_tag "images/code_placeholder_2.png", class: "hidden lg:block rounded relative h-[29rem] bottom-[29rem] left-[54rem] -mb-[29rem]" %>
diff --git a/app/controllers/views_controller.rb b/app/controllers/views_controller.rb index 34254e2..ecb8e16 100644 --- a/app/controllers/views_controller.rb +++ b/app/controllers/views_controller.rb @@ -91,20 +91,20 @@ def api(*) # FIXME: implement end - # = image_tag "info_icon.svg" + # = vite_image_tag "info_icon.svg" def info(type: :info, &block) - box(img: "info_icon.svg", bg: "bg-bg-purple-1/50", &block) + box(img: "images/info_icon.svg", bg: "bg-bg-purple-1/50", &block) end def warning(&block) - box(img: "light_bulb_icon.svg", bg: "bg-bg-orange", &block) + box(img: "images/light_bulb_icon.svg", bg: "bg-bg-orange", &block) end def box(bg:, img:, &block) # TODO: use cell for this. kramdown_options = @options.fetch(:kramdown_options) convert_method = kramdown_options.fetch(:converter) - icon_tag = @options[:controller].helpers.image_tag img + icon_tag = @options[:controller].helpers.vite_image_tag img html = yield html = Kramdown::Document.new(html, kramdown_options).send(convert_method) # TODO: encapsulate that. @@ -158,15 +158,15 @@ def capture(&block) block end - My::Cell.delegate_to_controller_helpers(self, :image_tag) + My::Cell.delegate_to_controller_helpers(self, :vite_image_tag) - module ImageTag - def image_tag(*args, **options) + module ViteImageTag + def vite_image_tag(*args, **options) super(*args, **Cms::Config.tailwind.img, **options) end end - include ImageTag + include ViteImageTag module H class Render < Torture::Cms::Helper::Header::Render @@ -225,7 +225,15 @@ def initialize(controller:, **options) @options = options.merge(controller: controller) # TODO: find way how to specify required kws. end - My::Cell.delegate_to_controller_helpers(self, :csrf_meta_tags, :csp_meta_tag, :stylesheet_link_tag, :javascript_importmap_tags) + My::Cell.delegate_to_controller_helpers( + self, + :csrf_meta_tags, + :csp_meta_tag, + :stylesheet_link_tag, + :vite_client_tag, + :vite_javascript_tag, + :vite_stylesheet_tag + ) def script_for_page_identifier %() @@ -248,7 +256,13 @@ def initialize(controller:, **options) @options = options.merge(controller: controller) end - My::Cell.delegate_to_controller_helpers(self, :link_to, :image_tag) # navbar.erb + My::Cell.delegate_to_controller_helpers( + self, + :link_to, + :vite_image_tag, + :vite_asset_path, + :vite_asset_url + ) # navbar.erb def render(template) ::Cell.({template: template, exec_context: self}) # DISCUSS: does {render} always mean we want the same exec_context? @@ -282,7 +296,7 @@ def navbar_link_to(text, path, is: nil) end def navbar_logo - "logo_blue_ruby.svg" + "images/logo_blue_ruby.svg" end def navbar_options @@ -504,7 +518,7 @@ def navbar_div_options end def navbar_logo - "logo_white_ruby.svg" + "images/logo_white_ruby.svg" end My::Cell.delegate_to_controller_helpers(self, :asset_path) diff --git a/app/frontend/entrypoints/application.css b/app/frontend/entrypoints/application.css new file mode 100644 index 0000000..e737a5a --- /dev/null +++ b/app/frontend/entrypoints/application.css @@ -0,0 +1,5 @@ +@import "../stylesheets/tailwind/application.css"; +@import "../stylesheets/application.css"; +@import "../stylesheets/highlightjs-trb.css"; +@import "../stylesheets/open-sauce.css"; +@import "../stylesheets/anchor-js.css"; diff --git a/app/frontend/entrypoints/application.js b/app/frontend/entrypoints/application.js new file mode 100644 index 0000000..1d56420 --- /dev/null +++ b/app/frontend/entrypoints/application.js @@ -0,0 +1 @@ +import '../javascript/application.js' diff --git a/app/assets/fonts/Open Sauce One OFL.txt b/app/frontend/fonts/Open Sauce One OFL.txt similarity index 100% rename from app/assets/fonts/Open Sauce One OFL.txt rename to app/frontend/fonts/Open Sauce One OFL.txt diff --git a/app/assets/fonts/Open Sauce Sans OFL.txt b/app/frontend/fonts/Open Sauce Sans OFL.txt similarity index 100% rename from app/assets/fonts/Open Sauce Sans OFL.txt rename to app/frontend/fonts/Open Sauce Sans OFL.txt diff --git a/app/assets/fonts/Open Sauce Two OFL.txt b/app/frontend/fonts/Open Sauce Two OFL.txt similarity index 100% rename from app/assets/fonts/Open Sauce Two OFL.txt rename to app/frontend/fonts/Open Sauce Two OFL.txt diff --git a/app/assets/fonts/OpenSauceOne-Black.ttf b/app/frontend/fonts/OpenSauceOne-Black.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Black.ttf rename to app/frontend/fonts/OpenSauceOne-Black.ttf diff --git a/app/assets/fonts/OpenSauceOne-BlackItalic.ttf b/app/frontend/fonts/OpenSauceOne-BlackItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-BlackItalic.ttf rename to app/frontend/fonts/OpenSauceOne-BlackItalic.ttf diff --git a/app/assets/fonts/OpenSauceOne-Bold.ttf b/app/frontend/fonts/OpenSauceOne-Bold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Bold.ttf rename to app/frontend/fonts/OpenSauceOne-Bold.ttf diff --git a/app/assets/fonts/OpenSauceOne-BoldItalic.ttf b/app/frontend/fonts/OpenSauceOne-BoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-BoldItalic.ttf rename to app/frontend/fonts/OpenSauceOne-BoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceOne-ExtraBold.ttf b/app/frontend/fonts/OpenSauceOne-ExtraBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-ExtraBold.ttf rename to app/frontend/fonts/OpenSauceOne-ExtraBold.ttf diff --git a/app/assets/fonts/OpenSauceOne-ExtraBoldItalic.ttf b/app/frontend/fonts/OpenSauceOne-ExtraBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-ExtraBoldItalic.ttf rename to app/frontend/fonts/OpenSauceOne-ExtraBoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceOne-Italic.ttf b/app/frontend/fonts/OpenSauceOne-Italic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Italic.ttf rename to app/frontend/fonts/OpenSauceOne-Italic.ttf diff --git a/app/assets/fonts/OpenSauceOne-Light.ttf b/app/frontend/fonts/OpenSauceOne-Light.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Light.ttf rename to app/frontend/fonts/OpenSauceOne-Light.ttf diff --git a/app/assets/fonts/OpenSauceOne-LightItalic.ttf b/app/frontend/fonts/OpenSauceOne-LightItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-LightItalic.ttf rename to app/frontend/fonts/OpenSauceOne-LightItalic.ttf diff --git a/app/assets/fonts/OpenSauceOne-Medium.ttf b/app/frontend/fonts/OpenSauceOne-Medium.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Medium.ttf rename to app/frontend/fonts/OpenSauceOne-Medium.ttf diff --git a/app/assets/fonts/OpenSauceOne-MediumItalic.ttf b/app/frontend/fonts/OpenSauceOne-MediumItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-MediumItalic.ttf rename to app/frontend/fonts/OpenSauceOne-MediumItalic.ttf diff --git a/app/assets/fonts/OpenSauceOne-Regular.ttf b/app/frontend/fonts/OpenSauceOne-Regular.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-Regular.ttf rename to app/frontend/fonts/OpenSauceOne-Regular.ttf diff --git a/app/assets/fonts/OpenSauceOne-SemiBold.ttf b/app/frontend/fonts/OpenSauceOne-SemiBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-SemiBold.ttf rename to app/frontend/fonts/OpenSauceOne-SemiBold.ttf diff --git a/app/assets/fonts/OpenSauceOne-SemiBoldItalic.ttf b/app/frontend/fonts/OpenSauceOne-SemiBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceOne-SemiBoldItalic.ttf rename to app/frontend/fonts/OpenSauceOne-SemiBoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Black.ttf b/app/frontend/fonts/OpenSauceSans-Black.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Black.ttf rename to app/frontend/fonts/OpenSauceSans-Black.ttf diff --git a/app/assets/fonts/OpenSauceSans-BlackItalic.ttf b/app/frontend/fonts/OpenSauceSans-BlackItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-BlackItalic.ttf rename to app/frontend/fonts/OpenSauceSans-BlackItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Bold.ttf b/app/frontend/fonts/OpenSauceSans-Bold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Bold.ttf rename to app/frontend/fonts/OpenSauceSans-Bold.ttf diff --git a/app/assets/fonts/OpenSauceSans-BoldItalic.ttf b/app/frontend/fonts/OpenSauceSans-BoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-BoldItalic.ttf rename to app/frontend/fonts/OpenSauceSans-BoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-ExtraBold.ttf b/app/frontend/fonts/OpenSauceSans-ExtraBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-ExtraBold.ttf rename to app/frontend/fonts/OpenSauceSans-ExtraBold.ttf diff --git a/app/assets/fonts/OpenSauceSans-ExtraBoldItalic.ttf b/app/frontend/fonts/OpenSauceSans-ExtraBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-ExtraBoldItalic.ttf rename to app/frontend/fonts/OpenSauceSans-ExtraBoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Italic.ttf b/app/frontend/fonts/OpenSauceSans-Italic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Italic.ttf rename to app/frontend/fonts/OpenSauceSans-Italic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Light.ttf b/app/frontend/fonts/OpenSauceSans-Light.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Light.ttf rename to app/frontend/fonts/OpenSauceSans-Light.ttf diff --git a/app/assets/fonts/OpenSauceSans-LightItalic.ttf b/app/frontend/fonts/OpenSauceSans-LightItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-LightItalic.ttf rename to app/frontend/fonts/OpenSauceSans-LightItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Medium.ttf b/app/frontend/fonts/OpenSauceSans-Medium.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Medium.ttf rename to app/frontend/fonts/OpenSauceSans-Medium.ttf diff --git a/app/assets/fonts/OpenSauceSans-MediumItalic.ttf b/app/frontend/fonts/OpenSauceSans-MediumItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-MediumItalic.ttf rename to app/frontend/fonts/OpenSauceSans-MediumItalic.ttf diff --git a/app/assets/fonts/OpenSauceSans-Regular.ttf b/app/frontend/fonts/OpenSauceSans-Regular.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-Regular.ttf rename to app/frontend/fonts/OpenSauceSans-Regular.ttf diff --git a/app/assets/fonts/OpenSauceSans-SemiBold.ttf b/app/frontend/fonts/OpenSauceSans-SemiBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-SemiBold.ttf rename to app/frontend/fonts/OpenSauceSans-SemiBold.ttf diff --git a/app/assets/fonts/OpenSauceSans-SemiBoldItalic.ttf b/app/frontend/fonts/OpenSauceSans-SemiBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceSans-SemiBoldItalic.ttf rename to app/frontend/fonts/OpenSauceSans-SemiBoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Black.ttf b/app/frontend/fonts/OpenSauceTwo-Black.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Black.ttf rename to app/frontend/fonts/OpenSauceTwo-Black.ttf diff --git a/app/assets/fonts/OpenSauceTwo-BlackItalic.ttf b/app/frontend/fonts/OpenSauceTwo-BlackItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-BlackItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-BlackItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Bold.ttf b/app/frontend/fonts/OpenSauceTwo-Bold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Bold.ttf rename to app/frontend/fonts/OpenSauceTwo-Bold.ttf diff --git a/app/assets/fonts/OpenSauceTwo-BoldItalic.ttf b/app/frontend/fonts/OpenSauceTwo-BoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-BoldItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-BoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-ExtraBold.ttf b/app/frontend/fonts/OpenSauceTwo-ExtraBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-ExtraBold.ttf rename to app/frontend/fonts/OpenSauceTwo-ExtraBold.ttf diff --git a/app/assets/fonts/OpenSauceTwo-ExtraBoldItalic.ttf b/app/frontend/fonts/OpenSauceTwo-ExtraBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-ExtraBoldItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-ExtraBoldItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Italic.ttf b/app/frontend/fonts/OpenSauceTwo-Italic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Italic.ttf rename to app/frontend/fonts/OpenSauceTwo-Italic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Light.ttf b/app/frontend/fonts/OpenSauceTwo-Light.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Light.ttf rename to app/frontend/fonts/OpenSauceTwo-Light.ttf diff --git a/app/assets/fonts/OpenSauceTwo-LightItalic.ttf b/app/frontend/fonts/OpenSauceTwo-LightItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-LightItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-LightItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Medium.ttf b/app/frontend/fonts/OpenSauceTwo-Medium.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Medium.ttf rename to app/frontend/fonts/OpenSauceTwo-Medium.ttf diff --git a/app/assets/fonts/OpenSauceTwo-MediumItalic.ttf b/app/frontend/fonts/OpenSauceTwo-MediumItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-MediumItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-MediumItalic.ttf diff --git a/app/assets/fonts/OpenSauceTwo-Regular.ttf b/app/frontend/fonts/OpenSauceTwo-Regular.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-Regular.ttf rename to app/frontend/fonts/OpenSauceTwo-Regular.ttf diff --git a/app/assets/fonts/OpenSauceTwo-SemiBold.ttf b/app/frontend/fonts/OpenSauceTwo-SemiBold.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-SemiBold.ttf rename to app/frontend/fonts/OpenSauceTwo-SemiBold.ttf diff --git a/app/assets/fonts/OpenSauceTwo-SemiBoldItalic.ttf b/app/frontend/fonts/OpenSauceTwo-SemiBoldItalic.ttf similarity index 100% rename from app/assets/fonts/OpenSauceTwo-SemiBoldItalic.ttf rename to app/frontend/fonts/OpenSauceTwo-SemiBoldItalic.ttf diff --git a/app/assets/images/03-new-form-layoutless.webp b/app/frontend/images/03-new-form-layoutless.webp similarity index 100% rename from app/assets/images/03-new-form-layoutless.webp rename to app/frontend/images/03-new-form-layoutless.webp diff --git a/app/assets/images/03-show-layoutless.webp b/app/frontend/images/03-show-layoutless.webp similarity index 100% rename from app/assets/images/03-show-layoutless.webp rename to app/frontend/images/03-show-layoutless.webp diff --git a/app/assets/images/Twitter-Facebook-preview-card-image-jungle.webp b/app/frontend/images/Twitter-Facebook-preview-card-image-jungle.webp similarity index 100% rename from app/assets/images/Twitter-Facebook-preview-card-image-jungle.webp rename to app/frontend/images/Twitter-Facebook-preview-card-image-jungle.webp diff --git a/app/assets/images/Twitter-preview-card-image-jungle.webp b/app/frontend/images/Twitter-preview-card-image-jungle.webp similarity index 100% rename from app/assets/images/Twitter-preview-card-image-jungle.webp rename to app/frontend/images/Twitter-preview-card-image-jungle.webp diff --git a/app/assets/images/activity-signal.png b/app/frontend/images/activity-signal.png similarity index 100% rename from app/assets/images/activity-signal.png rename to app/frontend/images/activity-signal.png diff --git a/app/assets/images/activity-signal.webp b/app/frontend/images/activity-signal.webp similarity index 100% rename from app/assets/images/activity-signal.webp rename to app/frontend/images/activity-signal.webp diff --git a/app/assets/images/advance-domain-ctx.webp b/app/frontend/images/advance-domain-ctx.webp similarity index 100% rename from app/assets/images/advance-domain-ctx.webp rename to app/frontend/images/advance-domain-ctx.webp diff --git a/app/assets/images/assert-fail-message.png b/app/frontend/images/assert-fail-message.png similarity index 100% rename from app/assets/images/assert-fail-message.png rename to app/frontend/images/assert-fail-message.png diff --git a/app/assets/images/assert-pass-failing-wtf.png b/app/frontend/images/assert-pass-failing-wtf.png similarity index 100% rename from app/assets/images/assert-pass-failing-wtf.png rename to app/frontend/images/assert-pass-failing-wtf.png diff --git a/app/assets/images/assert-pass-message.png b/app/frontend/images/assert-pass-message.png similarity index 100% rename from app/assets/images/assert-pass-message.png rename to app/frontend/images/assert-pass-message.png diff --git a/app/assets/images/assert-pass-wtf.png b/app/frontend/images/assert-pass-wtf.png similarity index 100% rename from app/assets/images/assert-pass-wtf.png rename to app/frontend/images/assert-pass-wtf.png diff --git a/app/assets/images/back.webp b/app/frontend/images/back.webp similarity index 100% rename from app/assets/images/back.webp rename to app/frontend/images/back.webp diff --git a/app/assets/images/blog_post_index.webp b/app/frontend/images/blog_post_index.webp similarity index 100% rename from app/assets/images/blog_post_index.webp rename to app/frontend/images/blog_post_index.webp diff --git a/app/assets/images/blog_post_new_error.webp b/app/frontend/images/blog_post_new_error.webp similarity index 100% rename from app/assets/images/blog_post_new_error.webp rename to app/frontend/images/blog_post_new_error.webp diff --git a/app/assets/images/book/check-email-fail.webp b/app/frontend/images/book/check-email-fail.webp similarity index 100% rename from app/assets/images/book/check-email-fail.webp rename to app/frontend/images/book/check-email-fail.webp diff --git a/app/assets/images/book/create-account-01.webp b/app/frontend/images/book/create-account-01.webp similarity index 100% rename from app/assets/images/book/create-account-01.webp rename to app/frontend/images/book/create-account-01.webp diff --git a/app/assets/images/book/create-account-fail-fast.webp b/app/frontend/images/book/create-account-fail-fast.webp similarity index 100% rename from app/assets/images/book/create-account-fail-fast.webp rename to app/frontend/images/book/create-account-fail-fast.webp diff --git a/app/assets/images/book/create-account-fail-wrong.webp b/app/frontend/images/book/create-account-fail-wrong.webp similarity index 100% rename from app/assets/images/book/create-account-fail-wrong.webp rename to app/frontend/images/book/create-account-fail-wrong.webp diff --git a/app/assets/images/book/create-account-fails.webp b/app/frontend/images/book/create-account-fails.webp similarity index 100% rename from app/assets/images/book/create-account-fails.webp rename to app/frontend/images/book/create-account-fails.webp diff --git a/app/assets/images/book/create-account-wtf.webp b/app/frontend/images/book/create-account-wtf.webp similarity index 100% rename from app/assets/images/book/create-account-wtf.webp rename to app/frontend/images/book/create-account-wtf.webp diff --git a/app/assets/images/book/create-sub.webp b/app/frontend/images/book/create-sub.webp similarity index 100% rename from app/assets/images/book/create-sub.webp rename to app/frontend/images/book/create-sub.webp diff --git a/app/assets/images/book/reset-email.webp b/app/frontend/images/book/reset-email.webp similarity index 100% rename from app/assets/images/book/reset-email.webp rename to app/frontend/images/book/reset-email.webp diff --git a/app/assets/images/book/reset-ok.webp b/app/frontend/images/book/reset-ok.webp similarity index 100% rename from app/assets/images/book/reset-ok.webp rename to app/frontend/images/book/reset-ok.webp diff --git a/app/assets/images/book/reset-password-fail.webp b/app/frontend/images/book/reset-password-fail.webp similarity index 100% rename from app/assets/images/book/reset-password-fail.webp rename to app/frontend/images/book/reset-password-fail.webp diff --git a/app/assets/images/book/reset-password.webp b/app/frontend/images/book/reset-password.webp similarity index 100% rename from app/assets/images/book/reset-password.webp rename to app/frontend/images/book/reset-password.webp diff --git a/app/assets/images/book/reset-sub.webp b/app/frontend/images/book/reset-sub.webp similarity index 100% rename from app/assets/images/book/reset-sub.webp rename to app/frontend/images/book/reset-sub.webp diff --git a/app/assets/images/book/save-account-error.webp b/app/frontend/images/book/save-account-error.webp similarity index 100% rename from app/assets/images/book/save-account-error.webp rename to app/frontend/images/book/save-account-error.webp diff --git a/app/assets/images/book/save-account-fail.webp b/app/frontend/images/book/save-account-fail.webp similarity index 100% rename from app/assets/images/book/save-account-fail.webp rename to app/frontend/images/book/save-account-fail.webp diff --git a/app/assets/images/book/verify-account-fail.webp b/app/frontend/images/book/verify-account-fail.webp similarity index 100% rename from app/assets/images/book/verify-account-fail.webp rename to app/frontend/images/book/verify-account-fail.webp diff --git a/app/assets/images/book/verify-invalid-id.webp b/app/frontend/images/book/verify-invalid-id.webp similarity index 100% rename from app/assets/images/book/verify-invalid-id.webp rename to app/frontend/images/book/verify-invalid-id.webp diff --git a/app/assets/images/book/verify-invalid-second.webp b/app/frontend/images/book/verify-invalid-second.webp similarity index 100% rename from app/assets/images/book/verify-invalid-second.webp rename to app/frontend/images/book/verify-invalid-second.webp diff --git a/app/assets/images/book/verify-invalid-token.webp b/app/frontend/images/book/verify-invalid-token.webp similarity index 100% rename from app/assets/images/book/verify-invalid-token.webp rename to app/frontend/images/book/verify-invalid-token.webp diff --git a/app/assets/images/book/wtf-password.webp b/app/frontend/images/book/wtf-password.webp similarity index 100% rename from app/assets/images/book/wtf-password.webp rename to app/frontend/images/book/wtf-password.webp diff --git a/app/assets/images/bpmn-editor-23.png b/app/frontend/images/bpmn-editor-23.png similarity index 100% rename from app/assets/images/bpmn-editor-23.png rename to app/frontend/images/bpmn-editor-23.png diff --git a/app/assets/images/buildalib-cover.webp b/app/frontend/images/buildalib-cover.webp similarity index 100% rename from app/assets/images/buildalib-cover.webp rename to app/frontend/images/buildalib-cover.webp diff --git a/app/assets/images/cells-nav-bar.webp b/app/frontend/images/cells-nav-bar.webp similarity index 100% rename from app/assets/images/cells-nav-bar.webp rename to app/frontend/images/cells-nav-bar.webp diff --git a/app/assets/images/cli/memo-create.png b/app/frontend/images/cli/memo-create.png similarity index 100% rename from app/assets/images/cli/memo-create.png rename to app/frontend/images/cli/memo-create.png diff --git a/app/assets/images/code.webp b/app/frontend/images/code.webp similarity index 100% rename from app/assets/images/code.webp rename to app/frontend/images/code.webp diff --git a/app/assets/images/code_placeholder_1.jpg b/app/frontend/images/code_placeholder_1.jpg similarity index 100% rename from app/assets/images/code_placeholder_1.jpg rename to app/frontend/images/code_placeholder_1.jpg diff --git a/app/assets/images/code_placeholder_2.png b/app/frontend/images/code_placeholder_2.png similarity index 100% rename from app/assets/images/code_placeholder_2.png rename to app/frontend/images/code_placeholder_2.png diff --git a/app/assets/images/code_placeholder_3.jpg b/app/frontend/images/code_placeholder_3.jpg similarity index 100% rename from app/assets/images/code_placeholder_3.jpg rename to app/frontend/images/code_placeholder_3.jpg diff --git a/app/assets/images/code_tabs.png b/app/frontend/images/code_tabs.png similarity index 100% rename from app/assets/images/code_tabs.png rename to app/frontend/images/code_tabs.png diff --git a/app/assets/images/cross-orange-lg.webp b/app/frontend/images/cross-orange-lg.webp similarity index 100% rename from app/assets/images/cross-orange-lg.webp rename to app/frontend/images/cross-orange-lg.webp diff --git a/app/assets/images/cross-purple-lg.webp b/app/frontend/images/cross-purple-lg.webp similarity index 100% rename from app/assets/images/cross-purple-lg.webp rename to app/frontend/images/cross-purple-lg.webp diff --git a/app/assets/images/ctx-in.png b/app/frontend/images/ctx-in.png similarity index 100% rename from app/assets/images/ctx-in.png rename to app/frontend/images/ctx-in.png diff --git a/app/assets/images/ctx-out-all.png b/app/frontend/images/ctx-out-all.png similarity index 100% rename from app/assets/images/ctx-out-all.png rename to app/frontend/images/ctx-out-all.png diff --git a/app/assets/images/ctx-out.png b/app/frontend/images/ctx-out.png similarity index 100% rename from app/assets/images/ctx-out.png rename to app/frontend/images/ctx-out.png diff --git a/app/assets/images/debugger-ide-screenshot-august.png b/app/frontend/images/debugger-ide-screenshot-august.png similarity index 100% rename from app/assets/images/debugger-ide-screenshot-august.png rename to app/frontend/images/debugger-ide-screenshot-august.png diff --git a/app/assets/images/deco1.webp b/app/frontend/images/deco1.webp similarity index 100% rename from app/assets/images/deco1.webp rename to app/frontend/images/deco1.webp diff --git a/app/assets/images/directory-structure.webp b/app/frontend/images/directory-structure.webp similarity index 100% rename from app/assets/images/directory-structure.webp rename to app/frontend/images/directory-structure.webp diff --git a/app/assets/images/docu-back.webp b/app/frontend/images/docu-back.webp similarity index 100% rename from app/assets/images/docu-back.webp rename to app/frontend/images/docu-back.webp diff --git a/app/assets/images/docu-front.webp b/app/frontend/images/docu-front.webp similarity index 100% rename from app/assets/images/docu-front.webp rename to app/frontend/images/docu-front.webp diff --git a/app/assets/images/docu-middle.webp b/app/frontend/images/docu-middle.webp similarity index 100% rename from app/assets/images/docu-middle.webp rename to app/frontend/images/docu-middle.webp diff --git a/app/assets/images/double-end.webp b/app/frontend/images/double-end.webp similarity index 100% rename from app/assets/images/double-end.webp rename to app/frontend/images/double-end.webp diff --git a/app/assets/images/dp.webp b/app/frontend/images/dp.webp similarity index 100% rename from app/assets/images/dp.webp rename to app/frontend/images/dp.webp diff --git a/app/assets/images/drawing_2.svg b/app/frontend/images/drawing_2.svg similarity index 100% rename from app/assets/images/drawing_2.svg rename to app/frontend/images/drawing_2.svg diff --git a/app/assets/images/dsl_to_activity.webp b/app/frontend/images/dsl_to_activity.webp similarity index 100% rename from app/assets/images/dsl_to_activity.webp rename to app/frontend/images/dsl_to_activity.webp diff --git a/app/assets/images/each-failure-trace.png b/app/frontend/images/each-failure-trace.png similarity index 100% rename from app/assets/images/each-failure-trace.png rename to app/frontend/images/each-failure-trace.png diff --git a/app/assets/images/each-trace.png b/app/frontend/images/each-trace.png similarity index 100% rename from app/assets/images/each-trace.png rename to app/frontend/images/each-trace.png diff --git a/app/assets/images/editor-september.webp b/app/frontend/images/editor-september.webp similarity index 100% rename from app/assets/images/editor-september.webp rename to app/frontend/images/editor-september.webp diff --git a/app/assets/images/endpoint-adapter-api.webp b/app/frontend/images/endpoint-adapter-api.webp similarity index 100% rename from app/assets/images/endpoint-adapter-api.webp rename to app/frontend/images/endpoint-adapter-api.webp diff --git a/app/assets/images/endpoint-adapter-web.webp b/app/frontend/images/endpoint-adapter-web.webp similarity index 100% rename from app/assets/images/endpoint-adapter-web.webp rename to app/frontend/images/endpoint-adapter-web.webp diff --git a/app/assets/images/endpoint-draft.webp b/app/frontend/images/endpoint-draft.webp similarity index 100% rename from app/assets/images/endpoint-draft.webp rename to app/frontend/images/endpoint-draft.webp diff --git a/app/assets/images/endpoint-fast-track-rw.png b/app/frontend/images/endpoint-fast-track-rw.png similarity index 100% rename from app/assets/images/endpoint-fast-track-rw.png rename to app/frontend/images/endpoint-fast-track-rw.png diff --git a/app/assets/images/endpoint-not_authenticated-trace.webp b/app/frontend/images/endpoint-not_authenticated-trace.webp similarity index 100% rename from app/assets/images/endpoint-not_authenticated-trace.webp rename to app/frontend/images/endpoint-not_authenticated-trace.webp diff --git a/app/assets/images/endpoint-protocol-block.png b/app/frontend/images/endpoint-protocol-block.png similarity index 100% rename from app/assets/images/endpoint-protocol-block.png rename to app/frontend/images/endpoint-protocol-block.png diff --git a/app/assets/images/endpoint-protocol-railway.png b/app/frontend/images/endpoint-protocol-railway.png similarity index 100% rename from app/assets/images/endpoint-protocol-railway.png rename to app/frontend/images/endpoint-protocol-railway.png diff --git a/app/assets/images/endpoint-protocol-termini.png b/app/frontend/images/endpoint-protocol-termini.png similarity index 100% rename from app/assets/images/endpoint-protocol-termini.png rename to app/frontend/images/endpoint-protocol-termini.png diff --git a/app/assets/images/endpoint-protocol-update.png b/app/frontend/images/endpoint-protocol-update.png similarity index 100% rename from app/assets/images/endpoint-protocol-update.png rename to app/frontend/images/endpoint-protocol-update.png diff --git a/app/assets/images/endpoint-protocol.webp b/app/frontend/images/endpoint-protocol.webp similarity index 100% rename from app/assets/images/endpoint-protocol.webp rename to app/frontend/images/endpoint-protocol.webp diff --git a/app/assets/images/endpoint-success-trace.webp b/app/frontend/images/endpoint-success-trace.webp similarity index 100% rename from app/assets/images/endpoint-success-trace.webp rename to app/frontend/images/endpoint-success-trace.webp diff --git a/app/assets/images/endpoint-update.png b/app/frontend/images/endpoint-update.png similarity index 100% rename from app/assets/images/endpoint-update.png rename to app/frontend/images/endpoint-update.png diff --git a/app/assets/images/fail_fast.png b/app/frontend/images/fail_fast.png similarity index 100% rename from app/assets/images/fail_fast.png rename to app/frontend/images/fail_fast.png diff --git a/app/assets/images/fast_track.png b/app/frontend/images/fast_track.png similarity index 100% rename from app/assets/images/fast_track.png rename to app/frontend/images/fast_track.png diff --git a/app/assets/images/favicon.ico b/app/frontend/images/favicon.ico similarity index 100% rename from app/assets/images/favicon.ico rename to app/frontend/images/favicon.ico diff --git a/app/assets/images/flow.webp b/app/frontend/images/flow.webp similarity index 100% rename from app/assets/images/flow.webp rename to app/frontend/images/flow.webp diff --git a/app/assets/images/front.webp b/app/frontend/images/front.webp similarity index 100% rename from app/assets/images/front.webp rename to app/frontend/images/front.webp diff --git a/app/assets/images/ft-failfast.webp b/app/frontend/images/ft-failfast.webp similarity index 100% rename from app/assets/images/ft-failfast.webp rename to app/frontend/images/ft-failfast.webp diff --git a/app/assets/images/ft-fasttrack.webp b/app/frontend/images/ft-fasttrack.webp similarity index 100% rename from app/assets/images/ft-fasttrack.webp rename to app/frontend/images/ft-fasttrack.webp diff --git a/app/assets/images/ft-passfast.webp b/app/frontend/images/ft-passfast.webp similarity index 100% rename from app/assets/images/ft-passfast.webp rename to app/frontend/images/ft-passfast.webp diff --git a/app/assets/images/hec.webp b/app/frontend/images/hec.webp similarity index 100% rename from app/assets/images/hec.webp rename to app/frontend/images/hec.webp diff --git a/app/assets/images/illus-lp.webp b/app/frontend/images/illus-lp.webp similarity index 100% rename from app/assets/images/illus-lp.webp rename to app/frontend/images/illus-lp.webp diff --git a/app/assets/images/info_icon.svg b/app/frontend/images/info_icon.svg similarity index 100% rename from app/assets/images/info_icon.svg rename to app/frontend/images/info_icon.svg diff --git a/app/assets/images/input.webp b/app/frontend/images/input.webp similarity index 100% rename from app/assets/images/input.webp rename to app/frontend/images/input.webp diff --git a/app/assets/images/intermediate.webp b/app/frontend/images/intermediate.webp similarity index 100% rename from app/assets/images/intermediate.webp rename to app/frontend/images/intermediate.webp diff --git a/app/assets/images/internals-trace-node.png b/app/frontend/images/internals-trace-node.png similarity index 100% rename from app/assets/images/internals-trace-node.png rename to app/frontend/images/internals-trace-node.png diff --git a/app/assets/images/internals-trace-tw.png b/app/frontend/images/internals-trace-tw.png similarity index 100% rename from app/assets/images/internals-trace-tw.png rename to app/frontend/images/internals-trace-tw.png diff --git a/app/assets/images/landing/let_the_operation_handle_it.svg b/app/frontend/images/landing/let_the_operation_handle_it.svg similarity index 100% rename from app/assets/images/landing/let_the_operation_handle_it.svg rename to app/frontend/images/landing/let_the_operation_handle_it.svg diff --git a/app/assets/images/landing/where_do_i_put_this_code.svg b/app/frontend/images/landing/where_do_i_put_this_code.svg similarity index 100% rename from app/assets/images/landing/where_do_i_put_this_code.svg rename to app/frontend/images/landing/where_do_i_put_this_code.svg diff --git a/app/assets/images/landing/you_can_focus.svg b/app/frontend/images/landing/you_can_focus.svg similarity index 100% rename from app/assets/images/landing/you_can_focus.svg rename to app/frontend/images/landing/you_can_focus.svg diff --git a/app/assets/images/light_bulb_icon.svg b/app/frontend/images/light_bulb_icon.svg similarity index 100% rename from app/assets/images/light_bulb_icon.svg rename to app/frontend/images/light_bulb_icon.svg diff --git a/app/assets/images/list-circle-full.svg b/app/frontend/images/list-circle-full.svg similarity index 100% rename from app/assets/images/list-circle-full.svg rename to app/frontend/images/list-circle-full.svg diff --git a/app/assets/images/list_checkmark.svg b/app/frontend/images/list_checkmark.svg similarity index 100% rename from app/assets/images/list_checkmark.svg rename to app/frontend/images/list_checkmark.svg diff --git a/app/assets/images/list_circle.svg b/app/frontend/images/list_circle.svg similarity index 100% rename from app/assets/images/list_circle.svg rename to app/frontend/images/list_circle.svg diff --git a/app/assets/images/list_white_checkmark.svg b/app/frontend/images/list_white_checkmark.svg similarity index 100% rename from app/assets/images/list_white_checkmark.svg rename to app/frontend/images/list_white_checkmark.svg diff --git a/app/assets/images/logo-16.webp b/app/frontend/images/logo-16.webp similarity index 100% rename from app/assets/images/logo-16.webp rename to app/frontend/images/logo-16.webp diff --git a/app/assets/images/logo-dark.webp b/app/frontend/images/logo-dark.webp similarity index 100% rename from app/assets/images/logo-dark.webp rename to app/frontend/images/logo-dark.webp diff --git a/app/assets/images/logo_blue.svg b/app/frontend/images/logo_blue.svg similarity index 100% rename from app/assets/images/logo_blue.svg rename to app/frontend/images/logo_blue.svg diff --git a/app/assets/images/logo_blue_ruby.svg b/app/frontend/images/logo_blue_ruby.svg similarity index 100% rename from app/assets/images/logo_blue_ruby.svg rename to app/frontend/images/logo_blue_ruby.svg diff --git a/app/assets/images/logo_white.svg b/app/frontend/images/logo_white.svg similarity index 100% rename from app/assets/images/logo_white.svg rename to app/frontend/images/logo_white.svg diff --git a/app/assets/images/logo_white_ruby.svg b/app/frontend/images/logo_white_ruby.svg similarity index 100% rename from app/assets/images/logo_white_ruby.svg rename to app/frontend/images/logo_white_ruby.svg diff --git a/app/assets/images/lottie/1-A.json b/app/frontend/images/lottie/1-A.json similarity index 100% rename from app/assets/images/lottie/1-A.json rename to app/frontend/images/lottie/1-A.json diff --git a/app/assets/images/lottie/1_data.json b/app/frontend/images/lottie/1_data.json similarity index 100% rename from app/assets/images/lottie/1_data.json rename to app/frontend/images/lottie/1_data.json diff --git a/app/assets/images/lottie/2-A.json b/app/frontend/images/lottie/2-A.json similarity index 100% rename from app/assets/images/lottie/2-A.json rename to app/frontend/images/lottie/2-A.json diff --git a/app/assets/images/lottie/2_data.json b/app/frontend/images/lottie/2_data.json similarity index 100% rename from app/assets/images/lottie/2_data.json rename to app/frontend/images/lottie/2_data.json diff --git a/app/assets/images/lottie/3-A.json b/app/frontend/images/lottie/3-A.json similarity index 100% rename from app/assets/images/lottie/3-A.json rename to app/frontend/images/lottie/3-A.json diff --git a/app/assets/images/lottie/3_data.json b/app/frontend/images/lottie/3_data.json similarity index 100% rename from app/assets/images/lottie/3_data.json rename to app/frontend/images/lottie/3_data.json diff --git a/app/assets/images/macro-ends.webp b/app/frontend/images/macro-ends.webp similarity index 100% rename from app/assets/images/macro-ends.webp rename to app/frontend/images/macro-ends.webp diff --git a/app/assets/images/magnetic_to.png b/app/frontend/images/magnetic_to.png similarity index 100% rename from app/assets/images/magnetic_to.png rename to app/frontend/images/magnetic_to.png diff --git a/app/assets/images/memo-create.png b/app/frontend/images/memo-create.png similarity index 100% rename from app/assets/images/memo-create.png rename to app/frontend/images/memo-create.png diff --git a/app/assets/images/memo-network-error.png b/app/frontend/images/memo-network-error.png similarity index 100% rename from app/assets/images/memo-network-error.png rename to app/frontend/images/memo-network-error.png diff --git a/app/assets/images/memo-pass.png b/app/frontend/images/memo-pass.png similarity index 100% rename from app/assets/images/memo-pass.png rename to app/frontend/images/memo-pass.png diff --git a/app/assets/images/middle.webp b/app/frontend/images/middle.webp similarity index 100% rename from app/assets/images/middle.webp rename to app/frontend/images/middle.webp diff --git a/app/assets/images/model-not-found.png b/app/frontend/images/model-not-found.png similarity index 100% rename from app/assets/images/model-not-found.png rename to app/frontend/images/model-not-found.png diff --git a/app/assets/images/model_find.png b/app/frontend/images/model_find.png similarity index 100% rename from app/assets/images/model_find.png rename to app/frontend/images/model_find.png diff --git a/app/assets/images/model_find_trace.png b/app/frontend/images/model_find_trace.png similarity index 100% rename from app/assets/images/model_find_trace.png rename to app/frontend/images/model_find_trace.png diff --git a/app/assets/images/nested-static-complete.png b/app/frontend/images/nested-static-complete.png similarity index 100% rename from app/assets/images/nested-static-complete.png rename to app/frontend/images/nested-static-complete.png diff --git a/app/assets/images/nested-static-create.png b/app/frontend/images/nested-static-create.png similarity index 100% rename from app/assets/images/nested-static-create.png rename to app/frontend/images/nested-static-create.png diff --git a/app/assets/images/nested-static-trace.png b/app/frontend/images/nested-static-trace.png similarity index 100% rename from app/assets/images/nested-static-trace.png rename to app/frontend/images/nested-static-trace.png diff --git a/app/assets/images/nested-static-vorbiscomment.png b/app/frontend/images/nested-static-vorbiscomment.png similarity index 100% rename from app/assets/images/nested-static-vorbiscomment.png rename to app/frontend/images/nested-static-vorbiscomment.png diff --git a/app/assets/images/nesting-end.webp b/app/frontend/images/nesting-end.webp similarity index 100% rename from app/assets/images/nesting-end.webp rename to app/frontend/images/nesting-end.webp diff --git a/app/assets/images/nesting-reconnect.webp b/app/frontend/images/nesting-reconnect.webp similarity index 100% rename from app/assets/images/nesting-reconnect.webp rename to app/frontend/images/nesting-reconnect.webp diff --git a/app/assets/images/nesting.webp b/app/frontend/images/nesting.webp similarity index 100% rename from app/assets/images/nesting.webp rename to app/frontend/images/nesting.webp diff --git a/app/assets/images/output.webp b/app/frontend/images/output.webp similarity index 100% rename from app/assets/images/output.webp rename to app/frontend/images/output.webp diff --git a/app/assets/images/parallax/back.webp b/app/frontend/images/parallax/back.webp similarity index 100% rename from app/assets/images/parallax/back.webp rename to app/frontend/images/parallax/back.webp diff --git a/app/assets/images/parallax/front.webp b/app/frontend/images/parallax/front.webp similarity index 100% rename from app/assets/images/parallax/front.webp rename to app/frontend/images/parallax/front.webp diff --git a/app/assets/images/parallax/middle.webp b/app/frontend/images/parallax/middle.webp similarity index 100% rename from app/assets/images/parallax/middle.webp rename to app/frontend/images/parallax/middle.webp diff --git a/app/assets/images/pass_fast.png b/app/frontend/images/pass_fast.png similarity index 100% rename from app/assets/images/pass_fast.png rename to app/frontend/images/pass_fast.png diff --git a/app/assets/images/patch-trace.png b/app/frontend/images/patch-trace.png similarity index 100% rename from app/assets/images/patch-trace.png rename to app/frontend/images/patch-trace.png diff --git a/app/assets/images/patch.png b/app/frontend/images/patch.png similarity index 100% rename from app/assets/images/patch.png rename to app/frontend/images/patch.png diff --git a/app/assets/images/patching-trace.webp b/app/frontend/images/patching-trace.webp similarity index 100% rename from app/assets/images/patching-trace.webp rename to app/frontend/images/patching-trace.webp diff --git a/app/assets/images/patching.webp b/app/frontend/images/patching.webp similarity index 100% rename from app/assets/images/patching.webp rename to app/frontend/images/patching.webp diff --git a/app/assets/images/path-cc.png b/app/frontend/images/path-cc.png similarity index 100% rename from app/assets/images/path-cc.png rename to app/frontend/images/path-cc.png diff --git a/app/assets/images/path-end.png b/app/frontend/images/path-end.png similarity index 100% rename from app/assets/images/path-end.png rename to app/frontend/images/path-end.png diff --git a/app/assets/images/path-end.webp b/app/frontend/images/path-end.webp similarity index 100% rename from app/assets/images/path-end.webp rename to app/frontend/images/path-end.webp diff --git a/app/assets/images/path-join.png b/app/frontend/images/path-join.png similarity index 100% rename from app/assets/images/path-join.png rename to app/frontend/images/path-join.png diff --git a/app/assets/images/path-macro-join.webp b/app/frontend/images/path-macro-join.webp similarity index 100% rename from app/assets/images/path-macro-join.webp rename to app/frontend/images/path-macro-join.webp diff --git a/app/assets/images/path-macro-railway.webp b/app/frontend/images/path-macro-railway.webp similarity index 100% rename from app/assets/images/path-macro-railway.webp rename to app/frontend/images/path-macro-railway.webp diff --git a/app/assets/images/path-macro.webp b/app/frontend/images/path-macro.webp similarity index 100% rename from app/assets/images/path-macro.webp rename to app/frontend/images/path-macro.webp diff --git a/app/assets/images/path-railway.png b/app/frontend/images/path-railway.png similarity index 100% rename from app/assets/images/path-railway.png rename to app/frontend/images/path-railway.png diff --git a/app/assets/images/path.png b/app/frontend/images/path.png similarity index 100% rename from app/assets/images/path.png rename to app/frontend/images/path.png diff --git a/app/assets/images/path.webp b/app/frontend/images/path.webp similarity index 100% rename from app/assets/images/path.webp rename to app/frontend/images/path.webp diff --git a/app/assets/images/pro-billo.png b/app/frontend/images/pro-billo.png similarity index 100% rename from app/assets/images/pro-billo.png rename to app/frontend/images/pro-billo.png diff --git a/app/assets/images/pro.webp b/app/frontend/images/pro.webp similarity index 100% rename from app/assets/images/pro.webp rename to app/frontend/images/pro.webp diff --git a/app/assets/images/protocol-fail-fast.png b/app/frontend/images/protocol-fail-fast.png similarity index 100% rename from app/assets/images/protocol-fail-fast.png rename to app/frontend/images/protocol-fail-fast.png diff --git a/app/assets/images/protocol-wtf.png b/app/frontend/images/protocol-wtf.png similarity index 100% rename from app/assets/images/protocol-wtf.png rename to app/frontend/images/protocol-wtf.png diff --git a/app/assets/images/quote-close.webp b/app/frontend/images/quote-close.webp similarity index 100% rename from app/assets/images/quote-close.webp rename to app/frontend/images/quote-close.webp diff --git a/app/assets/images/quote-open.webp b/app/frontend/images/quote-open.webp similarity index 100% rename from app/assets/images/quote-open.webp rename to app/frontend/images/quote-open.webp diff --git a/app/assets/images/railway-fail.webp b/app/frontend/images/railway-fail.webp similarity index 100% rename from app/assets/images/railway-fail.webp rename to app/frontend/images/railway-fail.webp diff --git a/app/assets/images/railway-pass.webp b/app/frontend/images/railway-pass.webp similarity index 100% rename from app/assets/images/railway-pass.webp rename to app/frontend/images/railway-pass.webp diff --git a/app/assets/images/railway-wire.webp b/app/frontend/images/railway-wire.webp similarity index 100% rename from app/assets/images/railway-wire.webp rename to app/frontend/images/railway-wire.webp diff --git a/app/assets/images/railway.webp b/app/frontend/images/railway.webp similarity index 100% rename from app/assets/images/railway.webp rename to app/frontend/images/railway.webp diff --git a/app/assets/images/reform-architecture.webp b/app/frontend/images/reform-architecture.webp similarity index 100% rename from app/assets/images/reform-architecture.webp rename to app/frontend/images/reform-architecture.webp diff --git a/app/assets/images/s_hero.webp b/app/frontend/images/s_hero.webp similarity index 100% rename from app/assets/images/s_hero.webp rename to app/frontend/images/s_hero.webp diff --git a/app/assets/images/subprocess-output.png b/app/frontend/images/subprocess-output.png similarity index 100% rename from app/assets/images/subprocess-output.png rename to app/frontend/images/subprocess-output.png diff --git a/app/assets/images/subprocess-terminus.png b/app/frontend/images/subprocess-terminus.png similarity index 100% rename from app/assets/images/subprocess-terminus.png rename to app/frontend/images/subprocess-terminus.png diff --git a/app/assets/images/subprocess.png b/app/frontend/images/subprocess.png similarity index 100% rename from app/assets/images/subprocess.png rename to app/frontend/images/subprocess.png diff --git a/app/assets/images/task-wrap.webp b/app/frontend/images/task-wrap.webp similarity index 100% rename from app/assets/images/task-wrap.webp rename to app/frontend/images/task-wrap.webp diff --git a/app/assets/images/task_wrap_validate.png b/app/frontend/images/task_wrap_validate.png similarity index 100% rename from app/assets/images/task_wrap_validate.png rename to app/frontend/images/task_wrap_validate.png diff --git a/app/assets/images/trb-ruby-white.svg b/app/frontend/images/trb-ruby-white.svg similarity index 100% rename from app/assets/images/trb-ruby-white.svg rename to app/frontend/images/trb-ruby-white.svg diff --git a/app/assets/images/tutorials/fail-output.webp b/app/frontend/images/tutorials/fail-output.webp similarity index 100% rename from app/assets/images/tutorials/fail-output.webp rename to app/frontend/images/tutorials/fail-output.webp diff --git a/app/assets/images/tutorials/fail-wtf.webp b/app/frontend/images/tutorials/fail-wtf.webp similarity index 100% rename from app/assets/images/tutorials/fail-wtf.webp rename to app/frontend/images/tutorials/fail-wtf.webp diff --git a/app/assets/images/tutorials/fail.webp b/app/frontend/images/tutorials/fail.webp similarity index 100% rename from app/assets/images/tutorials/fail.webp rename to app/frontend/images/tutorials/fail.webp diff --git a/app/assets/images/tutorials/find_user.webp b/app/frontend/images/tutorials/find_user.webp similarity index 100% rename from app/assets/images/tutorials/find_user.webp rename to app/frontend/images/tutorials/find_user.webp diff --git a/app/assets/images/tutorials/github-signin-v1.webp b/app/frontend/images/tutorials/github-signin-v1.webp similarity index 100% rename from app/assets/images/tutorials/github-signin-v1.webp rename to app/frontend/images/tutorials/github-signin-v1.webp diff --git a/app/assets/images/tutorials/magnetic.webp b/app/frontend/images/tutorials/magnetic.webp similarity index 100% rename from app/assets/images/tutorials/magnetic.webp rename to app/frontend/images/tutorials/magnetic.webp diff --git a/app/assets/images/tutorials/no_info.webp b/app/frontend/images/tutorials/no_info.webp similarity index 100% rename from app/assets/images/tutorials/no_info.webp rename to app/frontend/images/tutorials/no_info.webp diff --git a/app/assets/images/tutorials/path-existing.webp b/app/frontend/images/tutorials/path-existing.webp similarity index 100% rename from app/assets/images/tutorials/path-existing.webp rename to app/frontend/images/tutorials/path-existing.webp diff --git a/app/assets/images/tutorials/path-failure.webp b/app/frontend/images/tutorials/path-failure.webp similarity index 100% rename from app/assets/images/tutorials/path-failure.webp rename to app/frontend/images/tutorials/path-failure.webp diff --git a/app/assets/images/tutorials/path-success.webp b/app/frontend/images/tutorials/path-success.webp similarity index 100% rename from app/assets/images/tutorials/path-success.webp rename to app/frontend/images/tutorials/path-success.webp diff --git a/app/assets/images/tutorials/render.webp b/app/frontend/images/tutorials/render.webp similarity index 100% rename from app/assets/images/tutorials/render.webp rename to app/frontend/images/tutorials/render.webp diff --git a/app/assets/images/tutorials/signup-1.webp b/app/frontend/images/tutorials/signup-1.webp similarity index 100% rename from app/assets/images/tutorials/signup-1.webp rename to app/frontend/images/tutorials/signup-1.webp diff --git a/app/assets/images/tutorials/signup-2.webp b/app/frontend/images/tutorials/signup-2.webp similarity index 100% rename from app/assets/images/tutorials/signup-2.webp rename to app/frontend/images/tutorials/signup-2.webp diff --git a/app/assets/images/tutorials/signup-3.webp b/app/frontend/images/tutorials/signup-3.webp similarity index 100% rename from app/assets/images/tutorials/signup-3.webp rename to app/frontend/images/tutorials/signup-3.webp diff --git a/app/assets/images/tutorials/signup-4.webp b/app/frontend/images/tutorials/signup-4.webp similarity index 100% rename from app/assets/images/tutorials/signup-4.webp rename to app/frontend/images/tutorials/signup-4.webp diff --git a/app/assets/images/tutorials/signup.webp b/app/frontend/images/tutorials/signup.webp similarity index 100% rename from app/assets/images/tutorials/signup.webp rename to app/frontend/images/tutorials/signup.webp diff --git a/app/assets/images/tutorials/subprocess-trace.webp b/app/frontend/images/tutorials/subprocess-trace.webp similarity index 100% rename from app/assets/images/tutorials/subprocess-trace.webp rename to app/frontend/images/tutorials/subprocess-trace.webp diff --git a/app/assets/images/tutorials/subprocess.webp b/app/frontend/images/tutorials/subprocess.webp similarity index 100% rename from app/assets/images/tutorials/subprocess.webp rename to app/frontend/images/tutorials/subprocess.webp diff --git a/app/assets/images/tutorials/trace-exception.webp b/app/frontend/images/tutorials/trace-exception.webp similarity index 100% rename from app/assets/images/tutorials/trace-exception.webp rename to app/frontend/images/tutorials/trace-exception.webp diff --git a/app/assets/images/tutorials/trace.webp b/app/frontend/images/tutorials/trace.webp similarity index 100% rename from app/assets/images/tutorials/trace.webp rename to app/frontend/images/tutorials/trace.webp diff --git a/app/assets/images/tutorials/truefalse.webp b/app/frontend/images/tutorials/truefalse.webp similarity index 100% rename from app/assets/images/tutorials/truefalse.webp rename to app/frontend/images/tutorials/truefalse.webp diff --git a/app/assets/images/tutorials/validate-3.webp b/app/frontend/images/tutorials/validate-3.webp similarity index 100% rename from app/assets/images/tutorials/validate-3.webp rename to app/frontend/images/tutorials/validate-3.webp diff --git a/app/assets/images/tutorials/validate.webp b/app/frontend/images/tutorials/validate.webp similarity index 100% rename from app/assets/images/tutorials/validate.webp rename to app/frontend/images/tutorials/validate.webp diff --git a/app/assets/images/tutorials/voc.webp b/app/frontend/images/tutorials/voc.webp similarity index 100% rename from app/assets/images/tutorials/voc.webp rename to app/frontend/images/tutorials/voc.webp diff --git a/app/assets/images/upcase.png b/app/frontend/images/upcase.png similarity index 100% rename from app/assets/images/upcase.png rename to app/frontend/images/upcase.png diff --git a/app/assets/images/wire-output-add.webp b/app/frontend/images/wire-output-add.webp similarity index 100% rename from app/assets/images/wire-output-add.webp rename to app/frontend/images/wire-output-add.webp diff --git a/app/assets/images/wire-output-end.webp b/app/frontend/images/wire-output-end.webp similarity index 100% rename from app/assets/images/wire-output-end.webp rename to app/frontend/images/wire-output-end.webp diff --git a/app/assets/images/wire-output-endadd.webp b/app/frontend/images/wire-output-endadd.webp similarity index 100% rename from app/assets/images/wire-output-endadd.webp rename to app/frontend/images/wire-output-endadd.webp diff --git a/app/assets/images/wire-output.webp b/app/frontend/images/wire-output.webp similarity index 100% rename from app/assets/images/wire-output.webp rename to app/frontend/images/wire-output.webp diff --git a/app/assets/images/wiring-custom-track.png b/app/frontend/images/wiring-custom-track.png similarity index 100% rename from app/assets/images/wiring-custom-track.png rename to app/frontend/images/wiring-custom-track.png diff --git a/app/assets/images/wiring-end.png b/app/frontend/images/wiring-end.png similarity index 100% rename from app/assets/images/wiring-end.png rename to app/frontend/images/wiring-end.png diff --git a/app/assets/images/wiring-explicit-output.png b/app/frontend/images/wiring-explicit-output.png similarity index 100% rename from app/assets/images/wiring-explicit-output.png rename to app/frontend/images/wiring-explicit-output.png diff --git a/app/assets/images/wiring-id.png b/app/frontend/images/wiring-id.png similarity index 100% rename from app/assets/images/wiring-id.png rename to app/frontend/images/wiring-id.png diff --git a/app/assets/images/wiring-left.png b/app/frontend/images/wiring-left.png similarity index 100% rename from app/assets/images/wiring-left.png rename to app/frontend/images/wiring-left.png diff --git a/app/assets/images/wiring-output.png b/app/frontend/images/wiring-output.png similarity index 100% rename from app/assets/images/wiring-output.png rename to app/frontend/images/wiring-output.png diff --git a/app/assets/images/wiring-path-connect-to.png b/app/frontend/images/wiring-path-connect-to.png similarity index 100% rename from app/assets/images/wiring-path-connect-to.png rename to app/frontend/images/wiring-path-connect-to.png diff --git a/app/assets/images/wiring-path-helper.png b/app/frontend/images/wiring-path-helper.png similarity index 100% rename from app/assets/images/wiring-path-helper.png rename to app/frontend/images/wiring-path-helper.png diff --git a/app/assets/images/wiring-subprocess-fast-track.png b/app/frontend/images/wiring-subprocess-fast-track.png similarity index 100% rename from app/assets/images/wiring-subprocess-fast-track.png rename to app/frontend/images/wiring-subprocess-fast-track.png diff --git a/app/assets/images/wiring-terminus-dashed.png b/app/frontend/images/wiring-terminus-dashed.png similarity index 100% rename from app/assets/images/wiring-terminus-dashed.png rename to app/frontend/images/wiring-terminus-dashed.png diff --git a/app/assets/images/wiring-terminus-track.png b/app/frontend/images/wiring-terminus-track.png similarity index 100% rename from app/assets/images/wiring-terminus-track.png rename to app/frontend/images/wiring-terminus-track.png diff --git a/app/assets/images/wiring-terminus.png b/app/frontend/images/wiring-terminus.png similarity index 100% rename from app/assets/images/wiring-terminus.png rename to app/frontend/images/wiring-terminus.png diff --git a/app/assets/images/wrap-route.png b/app/frontend/images/wrap-route.png similarity index 100% rename from app/assets/images/wrap-route.png rename to app/frontend/images/wrap-route.png diff --git a/app/assets/images/wrap-timeout.png b/app/frontend/images/wrap-timeout.png similarity index 100% rename from app/assets/images/wrap-timeout.png rename to app/frontend/images/wrap-timeout.png diff --git a/app/assets/images/wrap-trace.png b/app/frontend/images/wrap-trace.png similarity index 100% rename from app/assets/images/wrap-trace.png rename to app/frontend/images/wrap-trace.png diff --git a/app/assets/images/wrap.png b/app/frontend/images/wrap.png similarity index 100% rename from app/assets/images/wrap.png rename to app/frontend/images/wrap.png diff --git a/app/assets/images/wtf-color-map.webp b/app/frontend/images/wtf-color-map.webp similarity index 100% rename from app/assets/images/wtf-color-map.webp rename to app/frontend/images/wtf-color-map.webp diff --git a/app/assets/images/wtf-exception.png b/app/frontend/images/wtf-exception.png similarity index 100% rename from app/assets/images/wtf-exception.png rename to app/frontend/images/wtf-exception.png diff --git a/app/assets/images/wtf-exception.webp b/app/frontend/images/wtf-exception.webp similarity index 100% rename from app/assets/images/wtf-exception.webp rename to app/frontend/images/wtf-exception.webp diff --git a/app/assets/images/wtf-focus.webp b/app/frontend/images/wtf-focus.webp similarity index 100% rename from app/assets/images/wtf-focus.webp rename to app/frontend/images/wtf-focus.webp diff --git a/app/assets/images/wtf-trace-nice.png b/app/frontend/images/wtf-trace-nice.png similarity index 100% rename from app/assets/images/wtf-trace-nice.png rename to app/frontend/images/wtf-trace-nice.png diff --git a/app/assets/images/wtf-trace.png b/app/frontend/images/wtf-trace.png similarity index 100% rename from app/assets/images/wtf-trace.png rename to app/frontend/images/wtf-trace.png diff --git a/app/assets/images/wtf.webp b/app/frontend/images/wtf.webp similarity index 100% rename from app/assets/images/wtf.webp rename to app/frontend/images/wtf.webp diff --git a/app/javascript/application.js b/app/frontend/javascript/application.js similarity index 94% rename from app/javascript/application.js rename to app/frontend/javascript/application.js index 469e42c..930bc71 100644 --- a/app/javascript/application.js +++ b/app/frontend/javascript/application.js @@ -1,20 +1,19 @@ +// dependencies import hljs from 'highlight.js/lib/core'; import ruby from 'highlight.js/lib/languages/ruby'; -import anchorJS from 'anchor-js'; - -import 'navigations'; // FIXME: here, part of the code should only be run when "docs". - +import "@lottiefiles/lottie-player"; +import AnchorJS from 'anchor-js'; import jquery from 'jquery'; +import { ParallaxScroll } from "../javascript/jquery.parallax-scroll"; -import { ParallaxScroll } from "jquery.parallax-scroll"; +// custom files +import '../javascript/navigations'; // FIXME: here, part of the code should only be run when "docs". hljs.registerLanguage('ruby', ruby); hljs.highlightAll(); if (pageIdentifier == "landing") { jquery(document).ready(function() { - import("lottie-player"); - ParallaxScroll.init(); // TODO: move to separate function/file. @@ -37,7 +36,7 @@ if (pageIdentifier == "landing") { if (pageIdentifier == "docs") { jquery(document).ready(function() { - import("docsearch"); + import("../javascript/docsearch"); let h2_map = []; @@ -166,7 +165,7 @@ if (pageIdentifier == "docs") { jquery(window).on("scroll", h2_listener); h2_listener(null); // init wyof-scrollspy - var anchors = new anchorJS(); + var anchors = new AnchorJS(); anchors.add('h2, h3, h4'); // listen for click on tab links diff --git a/app/javascript/docsearch.js b/app/frontend/javascript/docsearch.js similarity index 86% rename from app/javascript/docsearch.js rename to app/frontend/javascript/docsearch.js index 15678ed..691ef1f 100644 --- a/app/javascript/docsearch.js +++ b/app/frontend/javascript/docsearch.js @@ -1,4 +1,6 @@ -import 'docsearch-3.5.2'; +import docsearch from '@docsearch/js'; + +import '@docsearch/css'; // TODO: remove, currently unused function. function my_transformItems(items) { diff --git a/app/javascript/jquery.parallax-scroll.js b/app/frontend/javascript/jquery.parallax-scroll.js similarity index 100% rename from app/javascript/jquery.parallax-scroll.js rename to app/frontend/javascript/jquery.parallax-scroll.js diff --git a/app/javascript/navigations.js b/app/frontend/javascript/navigations.js similarity index 100% rename from app/javascript/navigations.js rename to app/frontend/javascript/navigations.js diff --git a/app/assets/stylesheets/anchor-js.css b/app/frontend/stylesheets/anchor-js.css similarity index 100% rename from app/assets/stylesheets/anchor-js.css rename to app/frontend/stylesheets/anchor-js.css diff --git a/app/assets/stylesheets/application.css b/app/frontend/stylesheets/application.css similarity index 100% rename from app/assets/stylesheets/application.css rename to app/frontend/stylesheets/application.css diff --git a/app/assets/stylesheets/highlightjs-trb.css b/app/frontend/stylesheets/highlightjs-trb.css similarity index 100% rename from app/assets/stylesheets/highlightjs-trb.css rename to app/frontend/stylesheets/highlightjs-trb.css diff --git a/app/assets/stylesheets/open-sauce.css b/app/frontend/stylesheets/open-sauce.css similarity index 100% rename from app/assets/stylesheets/open-sauce.css rename to app/frontend/stylesheets/open-sauce.css diff --git a/app/assets/tailwind/application.css b/app/frontend/stylesheets/tailwind/application.css similarity index 70% rename from app/assets/tailwind/application.css rename to app/frontend/stylesheets/tailwind/application.css index ada4eab..ca17332 100644 --- a/app/assets/tailwind/application.css +++ b/app/frontend/stylesheets/tailwind/application.css @@ -1,6 +1,14 @@ @import "tailwindcss"; @plugin "@tailwindcss/forms"; +@source "../../../../public/*.html"; +@source "../../../../app/javascript/**/*.js"; +@source "../../../../app/views/**/*.erb"; +@source "../../../../app/concepts/**/*.erb"; +@source "../../../../app/controllers/views_controller.rb"; +@source "../../../../app/concepts/cms/*.rb"; +@source "../../../../section/**/*.erb"; + @theme { --font-display: "Open Sauce Sans", "sans-serif"; @@ -30,31 +38,31 @@ /* Typography */ - --font-size-xs: 0.75rem; - --font-size-sm: 0.875rem; - --font-size-base: 17px; - --font-size-lg: 1.125rem; - --font-size-xl: 1.25rem; - --font-size-2xl: 1.5rem; - --font-size-3xl: 1.875rem; - --font-size-5xl: 2.75rem; + --size-xs: 0.75rem; + --size-sm: 0.875rem; + --size-base: 17px; + --size-lg: 1.125rem; + --size-xl: 1.25rem; + --size-2xl: 1.5rem; + --size-3xl: 1.875rem; + --size-5xl: 2.75rem; /* Line Heights */ - --line-height-xs: 1rem; - --line-height-sm: 1.25rem; - --line-height-base: 20px; - --line-height-lg: 1.75rem; - --line-height-3xl: 1.4; - --line-height-5xl: 1.3; + --leading-xs: 1rem; + --leading-sm: 1.25rem; + --leading-base: 20px; + --leading-lg: 1.75rem; + --leading-3xl: 1.4; + --leading-5xl: 1.3; /* Border Radius */ - --border-radius-default: 10px; - --border-radius-md: 0.375rem; - --border-radius-lg: 0.5rem; - --border-radius-xl: 0.75rem; - --border-radius-xxl: 1.25rem; - --border-radius-3xl: 1.5rem; - --border-radius-full: 9999px; + --radius: 10px; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-xxl: 1.25rem; + --radius-3xl: 1.5rem; + --radius-full: 9999px; /* Spacing */ --spacing-7: 1.75rem; @@ -63,13 +71,20 @@ --spacing-22: 5.5rem; /* List Style Images */ - --list-style-image-disc: url('list-circle-full.svg'); + --list-image-disc: url('@/images/list-circle-full.svg'); } @utility mobile-section-width { @apply w-10/12; } +@layer base { + button:not(:disabled), + [role="button"]:not(:disabled) { + cursor: pointer; + } +} + @layer components { /* FIXME: doesn't show up*/ /*.DocSearch-Button { diff --git a/bin/importmap b/bin/importmap deleted file mode 100755 index 36502ab..0000000 --- a/bin/importmap +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby - -require_relative "../config/application" -require "importmap/commands" diff --git a/bin/vite b/bin/vite new file mode 100755 index 0000000..5da3388 --- /dev/null +++ b/bin/vite @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'vite' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("vite_ruby", "vite") diff --git a/config/environments/development.rb b/config/environments/development.rb index 68aebab..e759b03 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -56,9 +56,6 @@ # Highlight code that triggered database queries in logs. # config.active_record.verbose_query_logs = true - # Suppress logger output for asset requests. - config.assets.quiet = true - # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/environments/production.rb b/config/environments/production.rb index 871ec3d..99884ff 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -59,9 +59,6 @@ # Highlight code that triggered database queries in logs. # config.active_record.verbose_query_logs = true - # Suppress logger output for asset requests. - config.assets.quiet = true - # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/importmap.rb b/config/importmap.rb deleted file mode 100644 index 21f9201..0000000 --- a/config/importmap.rb +++ /dev/null @@ -1,17 +0,0 @@ -# Pin npm packages by running ./bin/importmap - -pin "application", preload: true -pin "anchor-js", preload: true # @5.0.0 -pin "navigations" - -# bin/importmap pin --download highlight.js/lib/core DOESN'T WORK I downloaded highlight.js/lib/core.js manually and put it in vendor with the --ed name -# highlight.js/lib/languages/ruby -pin "highlight.js/lib/core", to: "highlight.js--lib--core.js" # @11.9.0 -pin "highlight.js/lib/languages/ruby", to: "highlight.js--lib--languages--ruby.js" # @11.9.0 -pin "jquery" # @3.7.1 -pin "jquery.parallax-scroll" - -pin "lottie-player", preload: false - -pin "docsearch", preload: false # the local file we wrote. -pin "docsearch-3.5.2", preload: false diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb deleted file mode 100644 index 9cce19e..0000000 --- a/config/initializers/assets.rb +++ /dev/null @@ -1,13 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Version of your assets, change this if you want to expire all your assets. -Rails.application.config.assets.version = "1.0" -Rails.application.config.assets.paths << Rails.root.join("vendor", "stylesheet") - -# Add additional assets to the asset load path. -# Rails.application.config.assets.paths << Emoji.images_path - -# Precompile additional assets. -# application.js, application.css, and all non-JS/CSS in the app/assets -# folder are already added. -# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 54f47cf..9bc515d 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -11,7 +11,16 @@ # policy.img_src :self, :https, :data # policy.object_src :none # policy.script_src :self, :https + # Allow @vite/client to hot reload javascript changes in development +# policy.script_src *policy.script_src, :unsafe_eval, "http://#{ ViteRuby.config.host_with_port }" if Rails.env.development? + + # You may need to enable this in production as well depending on your setup. +# policy.script_src *policy.script_src, :blob if Rails.env.test? + # policy.style_src :self, :https + # Allow @vite/client to hot reload style changes in development +# policy.style_src *policy.style_src, :unsafe_inline if Rails.env.development? + # # Specify URI for violation reports # # policy.report_uri "/csp-violation-report-endpoint" # end diff --git a/config/tailwind.config.js b/config/tailwind.config.js deleted file mode 100644 index d2aefba..0000000 --- a/config/tailwind.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - content: [ - "./public/*.html", - // "./app/helpers/**/*.rb", - "./app/javascript/**/*.js", - "./app/views/**/*.erb", - "./app/concepts/**/*.erb", - "./app/controllers/views_controller.rb", - "./app/concepts/cms/*.rb", // config.rb - "section/**/*.erb", - ], - plugins: [ - require("@tailwindcss/forms") - ] -} diff --git a/config/vite.json b/config/vite.json new file mode 100644 index 0000000..5240bd2 --- /dev/null +++ b/config/vite.json @@ -0,0 +1,16 @@ +{ + "all": { + "sourceCodeDir": "app/frontend", + "watchAdditionalPaths": [] + }, + "development": { + "autoBuild": true, + "publicOutputDir": "vite-dev", + "port": 3036 + }, + "test": { + "autoBuild": true, + "publicOutputDir": "vite-test", + "port": 3037 + } +} diff --git a/dist/2.1/index.html b/dist/2.1/index.html index a07deb6..0260aea 100644 --- a/dist/2.1/index.html +++ b/dist/2.1/index.html @@ -4,8 +4,8 @@ Trailblazer - The advanced business logic framework - Trailblazer - - + + @@ -44,7 +44,7 @@ Documentation Blog About - + Chat with us @@ -55,7 +55,7 @@ Blog About → 2.0 - + @@ -126,7 +126,7 @@

- +

@@ -171,7 +171,7 @@

- +

@@ -263,7 +263,7 @@

- Our + Our abstraction layers

diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..545e96a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2422 @@ +{ + "name": "trailblazer_website", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "trailblazer_website", + "dependencies": { + "@docsearch/css": "^3.9.0", + "@docsearch/js": "^3.9.0", + "@lottiefiles/lottie-player": "^2.0.12", + "@tailwindcss/vite": "^4.1.7", + "anchor-js": "^5.0.0", + "highlight.js": "^11.11.1", + "jquery": "^3.7.1", + "tailwindcss": "^4.1.7", + "vite-plugin-ruby": "^5.1.1" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.10" + }, + "engines": { + "node": "^22.11.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", + "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", + "@algolia/autocomplete-shared": "1.17.9" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", + "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", + "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", + "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.25.0.tgz", + "integrity": "sha512-1pfQulNUYNf1Tk/svbfjfkLBS36zsuph6m+B6gDkPEivFmso/XnRgwDvjAx80WNtiHnmeNjIXdF7Gos8+OLHqQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.25.0.tgz", + "integrity": "sha512-AFbG6VDJX/o2vDd9hqncj1B6B4Tulk61mY0pzTtzKClyTDlNP0xaUiEKhl6E7KO9I/x0FJF5tDCm0Hn6v5x18A==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.25.0.tgz", + "integrity": "sha512-il1zS/+Rc6la6RaCdSZ2YbJnkQC6W1wiBO8+SH+DE6CPMWBU6iDVzH0sCKSAtMWl9WBxoN6MhNjGBnCv9Yy2bA==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.25.0.tgz", + "integrity": "sha512-blbjrUH1siZNfyCGeq0iLQu00w3a4fBXm0WRIM0V8alcAPo7rWjLbMJMrfBtzL9X5ic6wgxVpDADXduGtdrnkw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.25.0.tgz", + "integrity": "sha512-aywoEuu1NxChBcHZ1pWaat0Plw7A8jDMwjgRJ00Mcl7wGlwuPt5dJ/LTNcg3McsEUbs2MBNmw0ignXBw9Tbgow==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.25.0.tgz", + "integrity": "sha512-a/W2z6XWKjKjIW1QQQV8PTTj1TXtaKx79uR3NGBdBdGvVdt24KzGAaN7sCr5oP8DW4D3cJt44wp2OY/fZcPAVA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.25.0.tgz", + "integrity": "sha512-9rUYcMIBOrCtYiLX49djyzxqdK9Dya/6Z/8sebPn94BekT+KLOpaZCuc6s0Fpfq7nx5J6YY5LIVFQrtioK9u0g==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.25.0.tgz", + "integrity": "sha512-jJeH/Hk+k17Vkokf02lkfYE4A+EJX+UgnMhTLR/Mb+d1ya5WhE+po8p5a/Nxb6lo9OLCRl6w3Hmk1TX1e9gVbQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.25.0.tgz", + "integrity": "sha512-Ls3i1AehJ0C6xaHe7kK9vPmzImOn5zBg7Kzj8tRYIcmCWVyuuFwCIsbuIIz/qzUf1FPSWmw0TZrGeTumk2fqXg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.25.0.tgz", + "integrity": "sha512-79sMdHpiRLXVxSjgw7Pt4R1aNUHxFLHiaTDnN2MQjHwJ1+o3wSseb55T9VXU4kqy3m7TUme3pyRhLk5ip/S4Mw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.25.0.tgz", + "integrity": "sha512-JLaF23p1SOPBmfEqozUAgKHQrGl3z/Z5RHbggBu6s07QqXXcazEsub5VLonCxGVqTv6a61AAPr8J1G5HgGGjEw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.25.0.tgz", + "integrity": "sha512-rtzXwqzFi1edkOF6sXxq+HhmRKDy7tz84u0o5t1fXwz0cwx+cjpmxu/6OQKTdOJFS92JUYHsG51Iunie7xbqfQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.25.0.tgz", + "integrity": "sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", + "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.9.0.tgz", + "integrity": "sha512-4bKHcye6EkLgRE8ze0vcdshmEqxeiJM77M0JXjef7lrYZfSlMunrDOCqyLjiZyo1+c0BhUqA2QpFartIjuHIjw==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.9.0", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", + "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.9", + "@algolia/autocomplete-preset-algolia": "1.17.9", + "@docsearch/css": "3.9.0", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@lottiefiles/lottie-player": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@lottiefiles/lottie-player/-/lottie-player-2.0.12.tgz", + "integrity": "sha512-VuQnB+IFaY4ijrUTByth7jOLz9p7xK6goeYr/MtyGOVIggSl/TDCcSp6qztltdflFhyZrFpfbHEZNxeK5AiVgg==", + "license": "MIT", + "dependencies": { + "@types/pako": "^1.0.1", + "lit": "^2.1.2", + "lottie-web": "^5.12.2", + "pako": "^2.0.4", + "resize-observer-polyfill": "^1.5.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", + "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", + "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", + "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", + "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", + "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", + "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", + "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", + "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", + "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", + "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", + "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", + "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", + "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", + "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", + "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", + "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", + "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", + "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", + "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", + "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", + "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", + "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-x64": "4.1.7", + "@tailwindcss/oxide-freebsd-x64": "4.1.7", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-x64-musl": "4.1.7", + "@tailwindcss/oxide-wasm32-wasi": "4.1.7", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz", + "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", + "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz", + "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz", + "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz", + "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz", + "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz", + "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz", + "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz", + "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz", + "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.9", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz", + "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz", + "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz", + "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.7", + "@tailwindcss/oxide": "4.1.7", + "tailwindcss": "4.1.7" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/pako": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.7.tgz", + "integrity": "sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/algoliasearch": { + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.25.0.tgz", + "integrity": "sha512-n73BVorL4HIwKlfJKb4SEzAYkR3Buwfwbh+MYxg2mloFph2fFGV58E90QTzdbfzWrLn4HE5Czx/WTjI8fcHaMg==", + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.25.0", + "@algolia/client-analytics": "5.25.0", + "@algolia/client-common": "5.25.0", + "@algolia/client-insights": "5.25.0", + "@algolia/client-personalization": "5.25.0", + "@algolia/client-query-suggestions": "5.25.0", + "@algolia/client-search": "5.25.0", + "@algolia/ingestion": "1.25.0", + "@algolia/monitoring": "1.25.0", + "@algolia/recommend": "5.25.0", + "@algolia/requester-browser-xhr": "5.25.0", + "@algolia/requester-fetch": "5.25.0", + "@algolia/requester-node-http": "5.25.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/anchor-js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/anchor-js/-/anchor-js-5.0.0.tgz", + "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==", + "license": "MIT" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/lottie-web": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.13.0.tgz", + "integrity": "sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.26.6", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.6.tgz", + "integrity": "sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", + "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.0", + "@rollup/rollup-android-arm64": "4.41.0", + "@rollup/rollup-darwin-arm64": "4.41.0", + "@rollup/rollup-darwin-x64": "4.41.0", + "@rollup/rollup-freebsd-arm64": "4.41.0", + "@rollup/rollup-freebsd-x64": "4.41.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", + "@rollup/rollup-linux-arm-musleabihf": "4.41.0", + "@rollup/rollup-linux-arm64-gnu": "4.41.0", + "@rollup/rollup-linux-arm64-musl": "4.41.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", + "@rollup/rollup-linux-riscv64-gnu": "4.41.0", + "@rollup/rollup-linux-riscv64-musl": "4.41.0", + "@rollup/rollup-linux-s390x-gnu": "4.41.0", + "@rollup/rollup-linux-x64-gnu": "4.41.0", + "@rollup/rollup-linux-x64-musl": "4.41.0", + "@rollup/rollup-win32-arm64-msvc": "4.41.0", + "@rollup/rollup-win32-ia32-msvc": "4.41.0", + "@rollup/rollup-win32-x64-msvc": "4.41.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT", + "peer": true + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", + "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-ruby": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vite-plugin-ruby/-/vite-plugin-ruby-5.1.1.tgz", + "integrity": "sha512-I1dXJq2ywdvTD2Cz5LYNcYLujqQ3eUxPoCjruRdfm2QBtHBY15NEeb6x5HuPM3T5S+y8S3p9fwRsieQQCjk0gg==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fast-glob": "^3.3.2" + }, + "peerDependencies": { + "vite": ">=5.0.0" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1dd342a --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "trailblazer_website", + "private": "true", + "type": "module", + "engines": { + "node": "^22.11.0" + }, + "dependencies": { + "@docsearch/css": "^3.9.0", + "@docsearch/js": "^3.9.0", + "@lottiefiles/lottie-player": "^2.0.12", + "@tailwindcss/vite": "^4.1.7", + "anchor-js": "^5.0.0", + "highlight.js": "^11.11.1", + "jquery": "^3.7.1", + "tailwindcss": "^4.1.7", + "vite-plugin-ruby": "^5.1.1" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.10" + } +} diff --git a/section/activity/dsl/composable_variable_mapping.md.erb b/section/activity/dsl/composable_variable_mapping.md.erb index f1c99f7..59a7287 100644 --- a/section/activity/dsl/composable_variable_mapping.md.erb +++ b/section/activity/dsl/composable_variable_mapping.md.erb @@ -57,7 +57,7 @@ Picking up the example from above, here's how a mapping hash "translates" the se The `In()` filter will result in `:current_user` being renamed to `:user`. Since the policy step also needs `:model` we need to mention this variable as well, no renaming happening here. The beauty of I/O: this is only visible to `Policy::Create`! -<%= image_tag "ctx-in.png" %> +<%= vite_image_tag "images/ctx-in.png" %> To instantly see what new ctx is passed into the configured step, you could replace the original policy step with a `#show_ctx` method. @@ -119,7 +119,7 @@ Keep in mind that when not defaulting the keyword argument your filter might cra Without any output configuration on the exemplary policy step, any variable written to `ctx` will be automatically set on the outer ctx, passing along internal variabes to the following step. -<%= image_tag "ctx-out-all.png" %> +<%= vite_image_tag "images/ctx-out-all.png" %> Here, both `:status` and `:message` variables that were written in `Policy::Create` are passed into the outer ctx. The behavior is identical to the way before you were using i/o. @@ -143,7 +143,7 @@ In order to limit variables added to the outer ctx, `Out()` accepts an array sim This single `Out()` usage will result in only the `:message` variable being written to the outer ctx that is passed on. The `:status` variable is discarded. -<%= image_tag "ctx-out.png" %> +<%= vite_image_tag "images/ctx-out.png" %> You may pass any number of variables in the limiting array. diff --git a/section/activity/dsl/patching.md.erb b/section/activity/dsl/patching.md.erb index acfc257..6c5c2d9 100644 --- a/section/activity/dsl/patching.md.erb +++ b/section/activity/dsl/patching.md.erb @@ -4,7 +4,7 @@ Working with `Subprocess` and nested activities is a great way to encapsulate an Suppose the following 3-level nested activity. -<%= image_tag "patch.png", width: "63%" %> +<%= vite_image_tag "images/patch.png", width: "63%" %> The public operation `Destroy` contains `Delete` as a nested activity, which itself contains `DeleteAssets`. In order to customize the latter one and add another step `tidy_storage`, you'd normally have to subclass all three activities and override steps. @@ -24,7 +24,7 @@ patch(:delete, :delete_assets) { ... } The provided block is executed within that targeted activity and executed as if you'd extend that class. However, the entire modification will only change `Erase`, all other traversed activities are copied and then modified, leaving the original implemenation unchanged. -<%= image_tag "patch-trace.png" %> +<%= vite_image_tag "images/patch-trace.png" %> The `#patch` method is perfect when using inheritance to first copy over behavior and control flow, and then fine-tune it for the specific use case. diff --git a/section/activity/interfaces.md.erb b/section/activity/interfaces.md.erb index 8d2f9bf..460317d 100644 --- a/section/activity/interfaces.md.erb +++ b/section/activity/interfaces.md.erb @@ -163,7 +163,7 @@ You are not limited to true and falsey return values. Any subclass of `Activity: The exemplary `DatabaseError` is being passed through to the routing and interpreted. It's your job to make sure this signal is wired to a following task, track, or end (line 16). -<%= image_tag "activity-signal.png" %> +<%= vite_image_tag "images/activity-signal.png" %> Note that you don't have to use the default binary signals at all (`Left` and `Right`). /g,a=/>/g,f=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,_=/'/g,m=/"/g,g=/^(?:script|style|textarea)$/i,p=t=>function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s{var i,s,a=null!==(i=null==r?void 0:r.renderBefore)&&void 0!==i?i:e,n=a._$litPart$;if(void 0===n){var o=null!==(s=null==r?void 0:r.renderBefore)&&void 0!==s?s:null;a._$litPart$=n=new N(e.insertBefore(h$1(),o),o,void 0,null!=r?r:{})}return n._$AI(t),n},A=l$2.createTreeWalker(l$2,129,null,!1),C=(t,e)=>{for(var r,i=t.length-1,s=[],n=2===e?"":"",o=c,l=0;l"===u[0]?(o=null!=r?r:c,d=-1):void 0===u[1]?d=-2:(d=o.lastIndex-u[2].length,p=u[1],o=void 0===u[3]?f:'"'===u[3]?m:_):o===m||o===_?o=f:o===v||o===a?o=c:(o=f,r=void 0);var b=o===f&&t[l+1].startsWith("/>")?" ":"";n+=o===c?h+n$3:d>=0?(s.push(p),h.slice(0,d)+"$lit$"+h.slice(d)+e$6+b):h+e$6+(-2===d?(s.push(void 0),l):b)}var P=n+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==s$1?s$1.createHTML(P):P,s]};class E{constructor(t,e){var r,{strings:i,_$litType$:s}=t;this.parts=[];var a=0,n=0,o=i.length-1,l=this.parts,[h,p]=C(i,s);if(this.el=E.createElement(h,e),A.currentNode=this.el.content,2===s){var c=this.el.content,f=c.firstChild;f.remove(),c.append(...f.childNodes)}for(;null!==(r=A.nextNode())&&l.length0){r.textContent=i$2?i$2.emptyScript:"";for(var x=0;x2&&void 0!==arguments[2]?arguments[2]:t,o=arguments.length>3?arguments[3]:void 0;if(e===b)return e;var l=void 0!==o?null===(r=n._$Cl)||void 0===r?void 0:r[o]:n._$Cu,h=r$1(e)?void 0:e._$litDirective$;return(null==l?void 0:l.constructor)!==h&&(null===(i=null==l?void 0:l._$AO)||void 0===i||i.call(l,!1),void 0===h?l=void 0:(l=new h(t))._$AT(t,n,o),void 0!==o?(null!==(s=(a=n)._$Cl)&&void 0!==s?s:a._$Cl=[])[o]=l:n._$Cu=l),void 0!==l&&(e=P(t,l._$AS(t,e.values),l,o)),e}class V{constructor(t,e){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var e,{el:{content:r},parts:i}=this._$AD,s=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:l$2).importNode(r,!0);A.currentNode=s;for(var a=A.nextNode(),n=0,o=0,l=i[0];void 0!==l;){if(n===l.index){var h=void 0;2===l.type?h=new N(a,a.nextSibling,this,t):1===l.type?h=new l.ctor(a,l.name,l.strings,this,t):6===l.type&&(h=new L(a,this,t)),this.v.push(h),l=i[++o]}n!==(null==l?void 0:l.index)&&(a=A.nextNode(),n++)}return s}m(t){var e=0;for(var r of this.v)void 0!==r&&(void 0!==r.strings?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}}class N{constructor(t,e,r,i){var s;this.type=2,this._$AH=w,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this._$Cg=null===(s=null==i?void 0:i.isConnected)||void 0===s||s}get _$AU(){var t,e;return null!==(e=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==e?e:this._$Cg}get parentNode(){var t=this._$AA.parentNode,e=this._$AM;return void 0!==e&&11===t.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=P(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),r$1(t)?t===w||null==t||""===t?(this._$AH!==w&&this._$AR(),this._$AH=w):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.A(t):this.$(t)}M(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,e)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==w&&r$1(this._$AH)?this._$AA.nextSibling.data=t:this.S(l$2.createTextNode(t)),this._$AH=t}T(t){var e,{values:r,_$litType$:i}=t,s="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=E.createElement(i.h,this.options)),i);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===s)this._$AH.m(r);else{var a=new V(s,this),n=a.p(this.options);a.m(r),this.S(n),this._$AH=a}}_$AC(t){var e=T.get(t.strings);return void 0===e&&T.set(t.strings,e=new E(t)),e}A(t){d(this._$AH)||(this._$AH=[],this._$AR());var e,r=this._$AH,i=0;for(var s of t)i===r.length?r.push(e=new N(this.M(h$1()),this.M(h$1()),this,this.options)):e=r[i],e._$AI(s),i++;i0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,r=arguments.length>1?arguments[1]:void 0;for(null===(t=this._$AP)||void 0===t||t.call(this,!1,!0,r);e&&e!==this._$AB;){var i=e.nextSibling;e.remove(),e=i}}setConnected(t){var e;void 0===this._$AM&&(this._$Cg=t,null===(e=this._$AP)||void 0===e||e.call(this,t))}}class S{constructor(t,e,r,i,s){this.type=1,this._$AH=w,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=s,r.length>2||""!==r[0]||""!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,s=this.strings,a=!1;if(void 0===s)t=P(this,t,e,0),(a=!r$1(t)||t!==this._$AH&&t!==b)&&(this._$AH=t);else{var n,o,l=t;for(t=s[0],n=0;n1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==e?e:w)!==b){var r=this._$AH,i=t===w&&r!==w||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,s=t!==w&&(r===w||i);i&&this.element.removeEventListener(this.name,this,r),s&&this.element.addEventListener(this.name,this,t),this._$AH=t}}handleEvent(t){var e,r;"function"==typeof this._$AH?this._$AH.call(null!==(r=null===(e=this.options)||void 0===e?void 0:e.host)&&void 0!==r?r:this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}var R={P:"$lit$",V:e$6,L:o$3,I:1,N:C,R:V,D:u,j:P,H:N,O:S,F:H,B:I,W:M,Z:L},z=window.litHtmlPolyfillSupport,l$1,o$2;null==z||z(E,N),(null!==(t$2=globalThis.litHtmlVersions)&&void 0!==t$2?t$2:globalThis.litHtmlVersions=[]).push("2.1.2");var r=a$1;class s extends a$1{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e,r=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=r.firstChild),r}update(t){var e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=x(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return b}}s.finalized=!0,s._$litElement$=!0,null===(l$1=globalThis.litElementHydrateSupport)||void 0===l$1||l$1.call(globalThis,{LitElement:s});var n$2=globalThis.litElementPolyfillSupport;null==n$2||n$2({LitElement:s});var h={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(null!==(o$2=globalThis.litElementVersions)&&void 0!==o$2?o$2:globalThis.litElementVersions=[]).push("3.1.2"); -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */ -var n$1=t=>e=>"function"==typeof e?((t,e)=>(window.customElements.define(t,e),e))(t,e):((t,e)=>{var{kind:r,elements:i}=e;return{kind:r,elements:i,finisher(e){window.customElements.define(t,e)}}})(t,e) -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */,i$1=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?_objectSpread2(_objectSpread2({},e),{},{finisher(r){r.createProperty(e.key,t)}}):{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(r){r.createProperty(e.key,t)}};function e$5(t){return(e,r)=>void 0!==r?((t,e,r)=>{e.constructor.createProperty(r,t)})(t,e,r):i$1(t,e)} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function t$1(t){return e$5(_objectSpread2(_objectSpread2({},t),{},{state:!0}))} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */var e$4=(t,e,r)=>{Object.defineProperty(e,r,t)},t=(t,e)=>({kind:"method",placement:"prototype",key:e.key,descriptor:t}),o$1=t=>{var{finisher:e,descriptor:r}=t;return(t,i)=>{var s;if(void 0===i){var a=null!==(s=t.originalKey)&&void 0!==s?s:t.key,n=null!=r?{kind:"method",placement:"prototype",key:a,descriptor:r(t.key)}:_objectSpread2(_objectSpread2({},t),{},{key:a});return null!=e&&(n.finisher=function(t){e(t,a)}),n}var o=t.constructor;void 0!==r&&Object.defineProperty(t,i,r(i)),null==e||e(o,i)}},n; -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function e$3(t){return o$1({finisher:(e,r)=>{Object.assign(e.prototype[r],t)}})} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function i(t,e){return o$1({descriptor:r=>{var i={get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null},enumerable:!0,configurable:!0};if(e){var s="symbol"==typeof r?Symbol():"__"+r;i.get=function(){var e,r;return void 0===this[s]&&(this[s]=null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null),this[s]}}return i}})} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function e$2(t){return o$1({descriptor:e=>({get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelectorAll(t))&&void 0!==r?r:[]},enumerable:!0,configurable:!0})})} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function e$1(t){return o$1({descriptor:e=>({get(){var e=this;return _asyncToGenerator((function*(){var r;return yield e.updateComplete,null===(r=e.renderRoot)||void 0===r?void 0:r.querySelector(t)}))()},enumerable:!0,configurable:!0})})} -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */var e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));function l(t){var{slot:r,selector:i}=null!=t?t:{};return o$1({descriptor:s=>({get(){var s,a="slot"+(r?"[name=".concat(r,"]"):":not([name])"),n=null===(s=this.renderRoot)||void 0===s?void 0:s.querySelector(a),o=null!=n?e(n,t):[];return i?o.filter((t=>t.matches(i))):o},enumerable:!0,configurable:!0})})} -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */function o(t,e,r){var i,s=t;return"object"==typeof t?(s=t.slot,i=t):i={flatten:e},r?l({slot:s,flatten:e,selector:r}):o$1({descriptor:t=>({get(){var t,e,r="slot"+(s?"[name=".concat(s,"]"):":not([name])"),a=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(r);return null!==(e=null==a?void 0:a.assignedNodes(i))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function getDefaultExportFromNamespaceIfPresent(t){return t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function getDefaultExportFromNamespaceIfNotNamed(t){return t&&Object.prototype.hasOwnProperty.call(t,"default")&&1===Object.keys(t).length?t.default:t}function getAugmentedNamespace(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})})),e}function commonjsRequire(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var lottie$1={exports:{}};(function(module,exports){var factory;"undefined"!=typeof navigator&&(factory=function(){var svgNS="http://www.w3.org/2000/svg",locationHref="",_useWebWorker=!1,initialDefaultFrame=-999999,setWebWorker=function(t){_useWebWorker=!!t},getWebWorker=function(){return _useWebWorker},setLocationHref=function(t){locationHref=t},getLocationHref=function(){return locationHref};function createTag(t){return document.createElement(t)}function extendPrototype(t,e){var r,i,s=t.length;for(r=0;r1?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[2]+=e,r[2]>1?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[0]+=e/360,r[0]>1?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t,e,r=[];for(t=0;t<256;t+=1)e=t.toString(16),r[t]=1===e.length?"0"+e:e;return function(t,e,i){return t<0&&(t=0),e<0&&(e=0),i<0&&(i=0),"#"+r[t]+r[e]+r[i]}}(),setSubframeEnabled=function(t){subframeEnabled=!!t},getSubframeEnabled=function(){return subframeEnabled},setExpressionsPlugin=function(t){expressionsPlugin=t},getExpressionsPlugin=function(){return expressionsPlugin},setExpressionInterfaces=function(t){expressionsInterfaces=t},getExpressionInterfaces=function(){return expressionsInterfaces},setDefaultCurveSegments=function(t){defaultCurveSegments=t},getDefaultCurveSegments=function(){return defaultCurveSegments},setIdPrefix=function(t){idPrefix$1=t},getIdPrefix=function(){return idPrefix$1};function createNS(t){return document.createElementNS(svgNS,t)}function _typeof$5(t){return _typeof$5="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$5(t)}var dataManager=function(){var t,e,r=1,i=[],s={onmessage:function(){},postMessage:function(e){t({data:e})}},_workerSelf={postMessage:function(t){s.onmessage({data:t})}};function a(){e||(e=function(e){if(window.Worker&&window.Blob&&getWebWorker()){var r=new Blob(["var _workerSelf = self; self.onmessage = ",e.toString()],{type:"text/javascript"}),i=URL.createObjectURL(r);return new Worker(i)}return t=e,s}((function(t){if(_workerSelf.dataManager||(_workerSelf.dataManager=function(){function t(s,a){var n,o,l,h,p,f,u=s.length;for(o=0;o=0;e-=1)if("sh"===t[e].ty)if(t[e].ks.k.i)i(t[e].ks.k);else for(a=t[e].ks.k.length,s=0;sr[0]||!(r[0]>t[0])&&(t[1]>r[1]||!(r[1]>t[1])&&(t[2]>r[2]||!(r[2]>t[2])&&null))}var a,n=function(){var t=[4,4,14];function e(t){var e,r,i,s=t.length;for(e=0;e=0;r-=1)if("sh"===t[r].ty)if(t[r].ks.k.i)t[r].ks.k.c=t[r].closed;else for(s=t[r].ks.k.length,i=0;i500)&&(this._imageLoaded(),clearInterval(r)),e+=1}.bind(this),50)}function a(t){var e={assetData:t},r=i(t,this.assetsPath,this.path);return dataManager.loadData(r,function(t){e.img=t,this._footageLoaded()}.bind(this),function(){e.img={},this._footageLoaded()}.bind(this)),e}function n(){this._imageLoaded=e.bind(this),this._footageLoaded=r.bind(this),this.testImageLoaded=s.bind(this),this.createFootageData=a.bind(this),this.assetsPath="",this.path="",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return n.prototype={loadAssets:function(t,e){var r;this.imagesLoadedCb=e;var i=t.length;for(r=0;rthis.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e,r,i=this.animationData.layers,s=i.length,a=t.layers,n=a.length;for(r=0;rthis.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame(),this.trigger("drawnFrame")},AnimationItem.prototype.renderFrame=function(){if(!1!==this.isLoaded&&this.renderer)try{this.expressionsPlugin&&this.expressionsPlugin.resetFrame(),this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!==t||!0===this.isPaused&&(this.isPaused=!1,this.trigger("_play"),this.audioController.resume(),this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(t){t&&this.name!==t||!1===this.isPaused&&(this.isPaused=!0,this.trigger("_pause"),this._idle=!0,this.trigger("_idle"),this.audioController.pause())},AnimationItem.prototype.togglePause=function(t){t&&this.name!==t||(!0===this.isPaused?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!==t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.getMarkerData=function(t){for(var e,r=0;r=this.totalFrames-1&&this.frameModifier>0?this.loop&&this.playCount!==this.loop?e>=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(e):this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(r=!0,e=this.totalFrames-1):e<0?this.checkSegments(e%this.totalFrames)||(!this.loop||this.playCount--<=0&&!0!==this.loop?(r=!0,e=0):(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0)):this.setCurrentRawFrameValue(e),r&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.totalFrames=t[0]-t[1],this.timeCompleted=this.totalFrames,this.firstFrame=t[1],this.setCurrentRawFrameValue(this.totalFrames-.001-e)):t[1]>t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.totalFrames=t[1]-t[0],this.timeCompleted=this.totalFrames,this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(t,e){var r=-1;this.isPaused&&(this.currentRawFrame+this.firstFramee&&(r=e-t)),this.firstFrame=t,this.totalFrames=e-t,this.timeCompleted=this.totalFrames,-1!==r&&this.goToAndStop(r,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),"object"===_typeof$4(t[0])){var r,i=t.length;for(r=0;r=0;r-=1)e[r].animation.destroy(t)},t.freeze=function(){n=!0},t.unfreeze=function(){n=!1,d()},t.setVolume=function(t,r){var s;for(s=0;s=.001?function(t,e,r,i){for(var s=0;s<4;++s){var a=l(e,r,i);if(0===a)return e;e-=(o(e,r,i)-t)/a}return e}(t,h,e,i):0===p?h:function(t,e,r,i,s){var a,n,l=0;do{(a=o(n=e+(r-e)/2,i,s)-t)>0?r=n:e=n}while(Math.abs(a)>1e-7&&++l<10);return n}(t,a,a+r,e,i)}},t}(),pooling={double:function(t){return t.concat(createSizedArray(t.length))}},poolFactory=function(t,e,r){var i=0,s=t,a=createSizedArray(s);return{newElement:function(){return i?a[i-=1]:e()},release:function(t){i===s&&(a=pooling.double(a),s*=2),r&&r(t),a[i]=t,i+=1}}},bezierLengthPool=poolFactory(8,(function(){return{addedLength:0,percents:createTypedArray("float32",getDefaultCurveSegments()),lengths:createTypedArray("float32",getDefaultCurveSegments())}})),segmentsLengthPool=poolFactory(8,(function(){return{lengths:[],totalLength:0}}),(function(t){var e,r=t.lengths.length;for(e=0;e-.001&&n<.001}var r=function(t,e,r,i){var s,a,n,o,l,h,p=getDefaultCurveSegments(),c=0,f=[],u=[],d=bezierLengthPool.newElement();for(n=r.length,s=0;sn?-1:1,h=!0;h;)if(i[a]<=n&&i[a+1]>n?(o=(n-i[a])/(i[a+1]-i[a]),h=!1):a+=l,a<0||a>=s-1){if(a===s-1)return r[a];h=!1}return r[a]+(r[a+1]-r[a])*o}var l=createTypedArray("float32",8);return{getSegmentsLength:function(t){var e,i=segmentsLengthPool.newElement(),s=t.c,a=t.v,n=t.o,o=t.i,l=t._length,h=i.lengths,p=0;for(e=0;e1&&(a=1);var p,c=o(a,h),f=o(n=n>1?1:n,h),u=e.length,d=1-c,m=1-f,y=d*d*d,g=c*d*d*3,v=c*c*d*3,b=c*c*c,_=d*d*m,P=c*d*m+d*c*m+d*d*f,x=c*c*m+d*c*f+c*d*f,S=c*c*f,E=d*m*m,C=c*m*m+d*f*m+d*m*f,A=c*f*m+d*f*f+c*m*f,w=c*f*f,k=m*m*m,T=f*m*m+m*f*m+m*m*f,M=f*f*m+m*f*f+f*m*f,D=f*f*f;for(p=0;pu?f>d?f-u-d:d-u-f:d>u?d-u-f:u-f-d)>-1e-4&&c<1e-4}}}var bez=bezFunction(),initFrame=initialDefaultFrame,mathAbs=Math.abs;function interpolateValue(t,e){var r,i=this.offsetTime;"multidimensional"===this.propType&&(r=createTypedArray("float32",this.pv.length));for(var s,a,n,o,l,h,p,c,f,u=e.lastIndex,d=u,m=this.keyframes.length-1,y=!0;y;){if(s=this.keyframes[d],a=this.keyframes[d+1],d===m-1&&t>=a.t-i){s.h&&(s=a),u=0;break}if(a.t-i>t){u=d;break}d=v||t=v?_.points.length-1:0;for(l=_.points[P].point.length,o=0;o=E&&S=v?(r[0]=g[0],r[1]=g[1],r[2]=g[2]):t<=b?(r[0]=s.s[0],r[1]=s.s[1],r[2]=s.s[2]):quaternionToEuler(r,slerp(createQuaternion(s.s),createQuaternion(g),(t-b)/(v-b)));else for(d=0;d=v?h=1:t1e-6?(i=Math.acos(s),a=Math.sin(i),n=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a):(n=1-r,o=r),l[0]=n*h+o*u,l[1]=n*p+o*d,l[2]=n*c+o*m,l[3]=n*f+o*y,l}function quaternionToEuler(t,e){var r=e[0],i=e[1],s=e[2],a=e[3],n=Math.atan2(2*i*a-2*r*s,1-2*i*i-2*s*s),o=Math.asin(2*r*i+2*s*a),l=Math.atan2(2*r*a-2*i*s,1-2*r*r-2*s*s);t[0]=n/degToRads,t[1]=o/degToRads,t[2]=l/degToRads}function createQuaternion(t){var e=t[0]*degToRads,r=t[1]*degToRads,i=t[2]*degToRads,s=Math.cos(e/2),a=Math.cos(r/2),n=Math.cos(i/2),o=Math.sin(e/2),l=Math.sin(r/2),h=Math.sin(i/2);return[o*l*n+s*a*h,o*a*n+s*l*h,s*l*n-o*a*h,s*a*n-o*l*h]}function getValueAtCurrentTime(){var t=this.comp.renderedFrame-this.offsetTime,e=this.keyframes[0].t-this.offsetTime,r=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(t===this._caching.lastFrame||this._caching.lastFrame!==initFrame&&(this._caching.lastFrame>=r&&t>=r||this._caching.lastFrame=t&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var i=this.interpolateValue(t,this._caching);this.pv=i}return this._caching.lastFrame=t,this.pv}function setVValue(t){var e;if("unidimensional"===this.propType)e=t*this.mult,mathAbs(this.v-e)>1e-5&&(this.v=e,this._mdf=!0);else for(var r=0,i=this.v.length;r1e-5&&(this.v[r]=e,this._mdf=!0),r+=1}function processEffectsSequence(){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{var t;this.lock=!0,this._mdf=this._isFirstFrame;var e=this.effectsSequence.length,r=this.kf?this.pv:this.data.k;for(t=0;t=this._maxLength&&this.doubleArrayLength(),r){case"v":a=this.v;break;case"i":a=this.i;break;case"o":a=this.o;break;default:a=[]}(!a[i]||a[i]&&!s)&&(a[i]=pointPool.newElement()),a[i][0]=t,a[i][1]=e},ShapePath.prototype.setTripleAt=function(t,e,r,i,s,a,n,o){this.setXYAt(t,e,"v",n,o),this.setXYAt(r,i,"o",n,o),this.setXYAt(s,a,"i",n,o)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,r=this.o,i=this.i,s=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],i[0][0],i[0][1],r[0][0],r[0][1],0,!1),s=1);var a,n=this._length-1,o=this._length;for(a=s;a=u[u.length-1].t-this.offsetTime)i=u[u.length-1].s?u[u.length-1].s[0]:u[u.length-2].e[0],a=!0;else{for(var d,m,y,g=f,v=u.length-1,b=!0;b&&(d=u[g],!((m=u[g+1]).t-this.offsetTime>t));)g=m.t-this.offsetTime)p=1;else if(ti&&e>i)||(this._caching.lastIndex=s0||t>-1e-6&&t<0?i(1e4*t)/1e4:t}function I(){var t=this.props;return"matrix("+F(t[0])+","+F(t[1])+","+F(t[4])+","+F(t[5])+","+F(t[12])+","+F(t[13])+")"}return function(){this.reset=s,this.rotate=a,this.rotateX=n,this.rotateY=o,this.rotateZ=l,this.skew=p,this.skewFromAxis=c,this.shear=h,this.scale=f,this.setTransform=u,this.translate=d,this.transform=m,this.multiply=y,this.applyToPoint=P,this.applyToX=x,this.applyToY=S,this.applyToZ=E,this.applyToPointArray=T,this.applyToTriplePoints=k,this.applyToPointStringified=M,this.toCSS=D,this.to2dCSS=I,this.clone=b,this.cloneFromProps=_,this.equals=v,this.inversePoints=w,this.inversePoint=A,this.getInverseMatrix=C,this._t=this.transform,this.isIdentity=g,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray("float32",16),this.reset()}}();function _typeof$3(t){return _typeof$3="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$3(t)}var lottie={},standalone="__[STANDALONE]__",animationData="__[ANIMATIONDATA]__",renderer="";function setLocation(t){setLocationHref(t)}function searchAnimations(){!0===standalone?animationManager.searchAnimations(animationData,standalone,renderer):animationManager.searchAnimations()}function setSubframeRendering(t){setSubframeEnabled(t)}function setPrefix(t){setIdPrefix(t)}function loadAnimation(t){return!0===standalone&&(t.animationData=JSON.parse(animationData)),animationManager.loadAnimation(t)}function setQuality(t){if("string"==typeof t)switch(t){case"high":setDefaultCurveSegments(200);break;default:case"medium":setDefaultCurveSegments(50);break;case"low":setDefaultCurveSegments(10)}else!isNaN(t)&&t>1&&setDefaultCurveSegments(t);getDefaultCurveSegments()>=50?roundValues(!1):roundValues(!0)}function inBrowser(){return"undefined"!=typeof navigator}function installPlugin(t,e){"expressions"===t&&setExpressionsPlugin(e)}function getFactory(t){switch(t){case"propertyFactory":return PropertyFactory;case"shapePropertyFactory":return ShapePropertyFactory;case"matrix":return Matrix;default:return null}}function checkReady(){"complete"===document.readyState&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(t){for(var e=queryString.split("&"),r=0;r=1?a.push({s:t-1,e:e-1}):(a.push({s:t,e:1}),a.push({s:0,e:e-1}));var n,o,l=[],h=a.length;for(n=0;ni+r||(p=o.s*s<=i?0:(o.s*s-i)/r,c=o.e*s>=i+r?1:(o.e*s-i)/r,l.push([p,c]))}return l.length||l.push([0,0]),l},TrimModifier.prototype.releasePathsData=function(t){var e,r=t.length;for(e=0;e1?1+a:this.s.v<0?0+a:this.s.v+a)>(r=this.e.v>1?1+a:this.e.v<0?0+a:this.e.v+a)){var n=e;e=r,r=n}e=1e-4*Math.round(1e4*e),r=1e-4*Math.round(1e4*r),this.sValue=e,this.eValue=r}else e=this.sValue,r=this.eValue;var o,l,h,p,c,f=this.shapes.length,u=0;if(r===e)for(s=0;s=0;s-=1)if((d=this.shapes[s]).shape._mdf){for((m=d.localShapeCollection).releaseShapes(),2===this.m&&f>1?(g=this.calculateShapeEdges(e,r,d.totalShapeLength,_,u),_+=d.totalShapeLength):g=[[v,b]],l=g.length,o=0;o=1?y.push({s:d.totalShapeLength*(v-1),e:d.totalShapeLength*(b-1)}):(y.push({s:d.totalShapeLength*v,e:d.totalShapeLength}),y.push({s:0,e:d.totalShapeLength*(b-1)}));var P=this.addShapes(d,y[0]);if(y[0].s!==y[0].e){if(y.length>1)if(d.shape.paths.shapes[d.shape.paths._length-1].c){var x=P.pop();this.addPaths(P,m),P=this.addShapes(d,y[1],x)}else this.addPaths(P,m),P=this.addShapes(d,y[1]);this.addPaths(P,m)}}d.shape.paths=m}}},TrimModifier.prototype.addPaths=function(t,e){var r,i=t.length;for(r=0;re.e){r.c=!1;break}e.s<=d&&e.e>=d+n.addedLength?(this.addSegment(f[i].v[s-1],f[i].o[s-1],f[i].i[s],f[i].v[s],r,o,y),y=!1):(h=bez.getNewSegment(f[i].v[s-1],f[i].v[s],f[i].o[s-1],f[i].i[s],(e.s-d)/n.addedLength,(e.e-d)/n.addedLength,l[s-1]),this.addSegmentFromArray(h,r,o,y),y=!1,r.c=!1),d+=n.addedLength,o+=1}if(f[i].c&&l.length){if(n=l[s-1],d<=e.e){var g=l[s-1].addedLength;e.s<=d&&e.e>=d+g?(this.addSegment(f[i].v[s-1],f[i].o[s-1],f[i].i[0],f[i].v[0],r,o,y),y=!1):(h=bez.getNewSegment(f[i].v[s-1],f[i].v[0],f[i].o[s-1],f[i].i[0],(e.s-d)/g,(e.e-d)/g,l[s-1]),this.addSegmentFromArray(h,r,o,y),y=!1,r.c=!1)}else r.c=!1;d+=n.addedLength,o+=1}if(r._length&&(r.setXYAt(r.v[p][0],r.v[p][1],"i",p),r.setXYAt(r.v[r._length-1][0],r.v[r._length-1][1],"o",r._length-1)),d>e.e)break;i=this.p.keyframes[this.p.keyframes.length-1].t?(i=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/r,0),s=this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/r,0)):(i=this.p.pv,s=this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/r,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){i=[],s=[];var a=this.px,n=this.py;a._caching.lastFrame+a.offsetTime<=a.keyframes[0].t?(i[0]=a.getValueAtTime((a.keyframes[0].t+.01)/r,0),i[1]=n.getValueAtTime((n.keyframes[0].t+.01)/r,0),s[0]=a.getValueAtTime(a.keyframes[0].t/r,0),s[1]=n.getValueAtTime(n.keyframes[0].t/r,0)):a._caching.lastFrame+a.offsetTime>=a.keyframes[a.keyframes.length-1].t?(i[0]=a.getValueAtTime(a.keyframes[a.keyframes.length-1].t/r,0),i[1]=n.getValueAtTime(n.keyframes[n.keyframes.length-1].t/r,0),s[0]=a.getValueAtTime((a.keyframes[a.keyframes.length-1].t-.01)/r,0),s[1]=n.getValueAtTime((n.keyframes[n.keyframes.length-1].t-.01)/r,0)):(i=[a.pv,n.pv],s[0]=a.getValueAtTime((a._caching.lastFrame+a.offsetTime-.01)/r,a.offsetTime),s[1]=n.getValueAtTime((n._caching.lastFrame+n.offsetTime-.01)/r,n.offsetTime))}else i=s=t;this.v.rotate(-Math.atan2(i[1]-s[1],i[0]-s[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}},precalculateMatrix:function(){if(this.appliedTransformations=0,this.pre.reset(),!this.a.effectsSequence.length&&(this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1,!this.s.effectsSequence.length)){if(this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2,this.sk){if(this.sk.effectsSequence.length||this.sa.effectsSequence.length)return;this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3}this.r?this.r.effectsSequence.length||(this.pre.rotate(-this.r.v),this.appliedTransformations=4):this.rz.effectsSequence.length||this.ry.effectsSequence.length||this.rx.effectsSequence.length||this.or.effectsSequence.length||(this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.appliedTransformations=4)}},autoOrient:function(){}},extendPrototype([DynamicPropertyContainer],e),e.prototype.addDynamicProperty=function(t){this._addDynamicProperty(t),this.elem.addDynamicProperty(t),this._isDirty=!0},e.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty,{getTransformProperty:function(t,r,i){return new e(t,r,i)}}}();function RepeaterModifier(){}function RoundCornersModifier(){}function floatEqual(t,e){return 1e5*Math.abs(t-e)<=Math.min(Math.abs(t),Math.abs(e))}function floatZero(t){return Math.abs(t)<=1e-5}function lerp(t,e,r){return t*(1-r)+e*r}function lerpPoint(t,e,r){return[lerp(t[0],e[0],r),lerp(t[1],e[1],r)]}function quadRoots(t,e,r){if(0===t)return[];var i=e*e-4*t*r;if(i<0)return[];var s=-e/(2*t);if(0===i)return[s];var a=Math.sqrt(i)/(2*t);return[s-a,s+a]}function polynomialCoefficients(t,e,r,i){return[3*e-t-3*r+i,3*t-6*e+3*r,-3*t+3*e,t]}function singlePoint(t){return new PolynomialBezier(t,t,t,t,!1)}function PolynomialBezier(t,e,r,i,s){s&&pointEqual(t,e)&&(e=lerpPoint(t,i,1/3)),s&&pointEqual(r,i)&&(r=lerpPoint(t,i,2/3));var a=polynomialCoefficients(t[0],e[0],r[0],i[0]),n=polynomialCoefficients(t[1],e[1],r[1],i[1]);this.a=[a[0],n[0]],this.b=[a[1],n[1]],this.c=[a[2],n[2]],this.d=[a[3],n[3]],this.points=[t,e,r,i]}function extrema(t,e){var r=t.points[0][e],i=t.points[t.points.length-1][e];if(r>i){var s=i;i=r,r=s}for(var a=quadRoots(3*t.a[e],2*t.b[e],t.c[e]),n=0;n0&&a[n]<1){var o=t.point(a[n])[e];oi&&(i=o)}return{min:r,max:i}}function intersectData(t,e,r){var i=t.boundingBox();return{cx:i.cx,cy:i.cy,width:i.width,height:i.height,bez:t,t:(e+r)/2,t1:e,t2:r}}function splitData(t){var e=t.bez.split(.5);return[intersectData(e[0],t.t1,t.t),intersectData(e[1],t.t,t.t2)]}function boxIntersect(t,e){return 2*Math.abs(t.cx-e.cx)=a||t.width<=i&&t.height<=i&&e.width<=i&&e.height<=i)s.push([t.t,e.t]);else{var n=splitData(t),o=splitData(e);intersectsImpl(n[0],o[0],r+1,i,s,a),intersectsImpl(n[0],o[1],r+1,i,s,a),intersectsImpl(n[1],o[0],r+1,i,s,a),intersectsImpl(n[1],o[1],r+1,i,s,a)}}function crossProduct(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function lineIntersection(t,e,r,i){var s=[t[0],t[1],1],a=[e[0],e[1],1],n=[r[0],r[1],1],o=[i[0],i[1],1],l=crossProduct(crossProduct(s,a),crossProduct(n,o));return floatZero(l[2])?null:[l[0]/l[2],l[1]/l[2]]}function polarOffset(t,e,r){return[t[0]+Math.cos(e)*r,t[1]-Math.sin(e)*r]}function pointDistance(t,e){return Math.hypot(t[0]-e[0],t[1]-e[1])}function pointEqual(t,e){return floatEqual(t[0],e[0])&&floatEqual(t[1],e[1])}function ZigZagModifier(){}function setPoint(t,e,r,i,s,a,n){var o=r-Math.PI/2,l=r+Math.PI/2,h=e[0]+Math.cos(r)*i*s,p=e[1]-Math.sin(r)*i*s;t.setTripleAt(h,p,h+Math.cos(o)*a,p-Math.sin(o)*a,h+Math.cos(l)*n,p-Math.sin(l)*n,t.length())}function getPerpendicularVector(t,e){var r=[e[0]-t[0],e[1]-t[1]],i=.5*-Math.PI;return[Math.cos(i)*r[0]-Math.sin(i)*r[1],Math.sin(i)*r[0]+Math.cos(i)*r[1]]}function getProjectingAngle(t,e){var r=0===e?t.length()-1:e-1,i=(e+1)%t.length(),s=getPerpendicularVector(t.v[r],t.v[i]);return Math.atan2(0,1)-Math.atan2(s[1],s[0])}function zigZagCorner(t,e,r,i,s,a,n){var o=getProjectingAngle(e,r),l=e.v[r%e._length],h=e.v[0===r?e._length-1:r-1],p=e.v[(r+1)%e._length],c=2===a?Math.sqrt(Math.pow(l[0]-h[0],2)+Math.pow(l[1]-h[1],2)):0,f=2===a?Math.sqrt(Math.pow(l[0]-p[0],2)+Math.pow(l[1]-p[1],2)):0;setPoint(t,e.v[r%e._length],o,n,i,f/(2*(s+1)),c/(2*(s+1)),a)}function zigZagSegment(t,e,r,i,s,a){for(var n=0;n1&&e.length>1&&(s=getIntersection(t[0],e[e.length-1]))?[[t[0].split(s[0])[0]],[e[e.length-1].split(s[1])[1]]]:[r,i]}function pruneIntersections(t){for(var e,r=1;r1&&(e=pruneSegmentIntersection(t[t.length-1],t[0]),t[t.length-1]=e[0],t[0]=e[1]),t}function offsetSegmentSplit(t,e){var r,i,s,a,n=t.inflectionPoints();if(0===n.length)return[offsetSegment(t,e)];if(1===n.length||floatEqual(n[1],1))return r=(s=t.split(n[0]))[0],i=s[1],[offsetSegment(r,e),offsetSegment(i,e)];r=(s=t.split(n[0]))[0];var o=(n[1]-n[0])/(1-n[0]);return a=(s=s[1].split(o))[0],i=s[1],[offsetSegment(r,e),offsetSegment(a,e),offsetSegment(i,e)]}function OffsetPathModifier(){}function getFontProperties(t){for(var e=t.fStyle?t.fStyle.split(" "):[],r="normal",i="normal",s=e.length,a=0;a0;)r-=1,this._elements.unshift(e[r]);this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(t){var e,r=t.length;for(e=0;e0?Math.floor(f):Math.ceil(f),m=this.pMatrix.props,y=this.rMatrix.props,g=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var v,b,_=0;if(f>0){for(;_d;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),_-=1;u&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-u,!0),_-=u)}for(i=1===this.data.m?0:this._currentCopies-1,s=1===this.data.m?1:-1,a=this._currentCopies;a;){if(b=(r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props).length,e[e.length-1].transform.mProps._mdf=!0,e[e.length-1].transform.op._mdf=!0,e[e.length-1].transform.op.v=1===this._currentCopies?this.so.v:this.so.v+(this.eo.v-this.so.v)*(i/(this._currentCopies-1)),0!==_){for((0!==i&&1===s||i!==this._currentCopies-1&&-1===s)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8],y[9],y[10],y[11],y[12],y[13],y[14],y[15]),this.matrix.transform(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15]),this.matrix.transform(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],m[8],m[9],m[10],m[11],m[12],m[13],m[14],m[15]),v=0;v0&&i<1?[e]:[]:[e-i,e+i].filter((function(t){return t>0&&t<1}))},PolynomialBezier.prototype.split=function(t){if(t<=0)return[singlePoint(this.points[0]),this];if(t>=1)return[this,singlePoint(this.points[this.points.length-1])];var e=lerpPoint(this.points[0],this.points[1],t),r=lerpPoint(this.points[1],this.points[2],t),i=lerpPoint(this.points[2],this.points[3],t),s=lerpPoint(e,r,t),a=lerpPoint(r,i,t),n=lerpPoint(s,a,t);return[new PolynomialBezier(this.points[0],e,s,n,!0),new PolynomialBezier(n,a,i,this.points[3],!0)]},PolynomialBezier.prototype.bounds=function(){return{x:extrema(this,0),y:extrema(this,1)}},PolynomialBezier.prototype.boundingBox=function(){var t=this.bounds();return{left:t.x.min,right:t.x.max,top:t.y.min,bottom:t.y.max,width:t.x.max-t.x.min,height:t.y.max-t.y.min,cx:(t.x.max+t.x.min)/2,cy:(t.y.max+t.y.min)/2}},PolynomialBezier.prototype.intersections=function(t,e,r){void 0===e&&(e=2),void 0===r&&(r=7);var i=[];return intersectsImpl(intersectData(this,0,1),intersectData(t,0,1),0,e,i,r),i},PolynomialBezier.shapeSegment=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[e],t.o[e],t.i[r],t.v[r],!0)},PolynomialBezier.shapeSegmentInverted=function(t,e){var r=(e+1)%t.length();return new PolynomialBezier(t.v[r],t.i[r],t.o[e],t.v[e],!0)},extendPrototype([ShapeModifier],ZigZagModifier),ZigZagModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amplitude=PropertyFactory.getProp(t,e.s,0,null,this),this.frequency=PropertyFactory.getProp(t,e.r,0,null,this),this.pointsType=PropertyFactory.getProp(t,e.pt,0,null,this),this._isAnimated=0!==this.amplitude.effectsSequence.length||0!==this.frequency.effectsSequence.length||0!==this.pointsType.effectsSequence.length},ZigZagModifier.prototype.processPath=function(t,e,r,i){var s=t._length,a=shapePool.newElement();if(a.c=t.c,t.c||(s-=1),0===s)return a;var n=-1,o=PolynomialBezier.shapeSegment(t,0);zigZagCorner(a,t,0,e,r,i,n);for(var l=0;l=0;a-=1)o=PolynomialBezier.shapeSegmentInverted(t,a),h.push(offsetSegmentSplit(o,e));h=pruneIntersections(h);var p=null,c=null;for(a=0;a=55296&&r<=56319){var i=t.charCodeAt(1);i>=56320&&i<=57343&&(e=1024*(r-55296)+i-56320+65536)}return e}function o(t){var e=n(t);return e>=127462&&e<=127487}var l=function(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this._warned=!1,this.initTime=Date.now(),this.setIsLoadedBinded=this.setIsLoaded.bind(this),this.checkLoadedFontsBinded=this.checkLoadedFonts.bind(this)};l.isModifier=function(t,e){var r=t.toString(16)+e.toString(16);return-1!==i.indexOf(r)},l.isZeroWidthJoiner=function(t){return 8205===t},l.isFlagEmoji=function(t){return o(t.substr(0,2))&&o(t.substr(2,2))},l.isRegionalCode=o,l.isCombinedCharacter=function(t){return-1!==e.indexOf(t)},l.isRegionalFlag=function(t,e){var i=n(t.substr(e,2));if(i!==r)return!1;var s=0;for(e+=2;s<5;){if((i=n(t.substr(e,2)))<917601||i>917626)return!1;s+=1,e+=2}return 917631===n(t.substr(e,2))},l.isVariationSelector=function(t){return 65039===t},l.BLACK_FLAG_CODE_POINT=r;var h={addChars:function(t){if(t){var e;this.chars||(this.chars=[]);var r,i,s=t.length,a=this.chars.length;for(e=0;e0&&(p=!1),p){var c=createTag("style");c.setAttribute("f-forigin",i[r].fOrigin),c.setAttribute("f-origin",i[r].origin),c.setAttribute("f-family",i[r].fFamily),c.type="text/css",c.innerText="@font-face {font-family: "+i[r].fFamily+"; font-style: normal; src: url('"+i[r].fPath+"');}",e.appendChild(c)}}else if("g"===i[r].fOrigin||1===i[r].origin){for(l=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),h=0;ht?!0!==this.isInRange&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):!1!==this.isInRange&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var t,e=this.renderableComponents.length;for(t=0;t.1)&&this.audio.seek(this._currentTime/this.globalData.frameRate):(this.audio.play(),this.audio.seek(this._currentTime/this.globalData.frameRate),this._isPlaying=!0))},AudioElement.prototype.show=function(){},AudioElement.prototype.hide=function(){this.audio.pause(),this._isPlaying=!1},AudioElement.prototype.pause=function(){this.audio.pause(),this._isPlaying=!1,this._canPlay=!1},AudioElement.prototype.resume=function(){this._canPlay=!0},AudioElement.prototype.setRate=function(t){this.audio.rate(t)},AudioElement.prototype.volume=function(t){this._volumeMultiplier=t,this._previousVolume=t*this._volume,this.audio.volume(this._previousVolume)},AudioElement.prototype.getBaseElement=function(){return null},AudioElement.prototype.destroy=function(){},AudioElement.prototype.sourceRectAtTime=function(){},AudioElement.prototype.initExpressions=function(){},BaseRenderer.prototype.checkLayers=function(t){var e,r,i=this.layers.length;for(this.completeLayers=!0,e=i-1;e>=0;e-=1)this.elements[e]||(r=this.layers[e]).ip-r.st<=t-this.layers[e].st&&r.op-r.st>t-this.layers[e].st&&this.buildItem(e),this.completeLayers=!!this.elements[e]&&this.completeLayers;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:default:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 6:return this.createAudio(t);case 13:return this.createCamera(t);case 15:return this.createFootage(t)}},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.createAudio=function(t){return new AudioElement(t,this.globalData,this)},BaseRenderer.prototype.createFootage=function(t){return new FootageElement(t,this.globalData,this)},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t0&&(this.maskElement.setAttribute("id",y),this.element.maskedElement.setAttribute(v,"url("+getLocationHref()+"#"+y+")"),a.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}TransformElement.prototype={initTransform:function(){var t=new Matrix;this.finalTransform={mProp:this.data.ks?TransformPropertyFactory.getTransformProperty(this,this.data.ks,this):{o:0},_matMdf:!1,_localMatMdf:!1,_opMdf:!1,mat:t,localMat:t,localOpacity:1},this.data.ao&&(this.finalTransform.mProp.autoOriented=!0),this.data.ty},renderTransform:function(){if(this.finalTransform._opMdf=this.finalTransform.mProp.o._mdf||this._isFirstFrame,this.finalTransform._matMdf=this.finalTransform.mProp._mdf||this._isFirstFrame,this.hierarchy){var t,e=this.finalTransform.mat,r=0,i=this.hierarchy.length;if(!this.finalTransform._matMdf)for(;r1&&(a+=" C"+e.o[i-1][0]+","+e.o[i-1][1]+" "+e.i[0][0]+","+e.i[0][1]+" "+e.v[0][0]+","+e.v[0][1]),r.lastPath!==a){var n="";r.elem&&(e.c&&(n=t.inv?this.solidPath+a:a),r.elem.setAttribute("d",n)),r.lastPath=a}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null};var filtersFactory=function(){var t={createFilter:function(t,e){var r=createNS("filter");return r.setAttribute("id",t),!0!==e&&(r.setAttribute("filterUnits","objectBoundingBox"),r.setAttribute("x","0%"),r.setAttribute("y","0%"),r.setAttribute("width","100%"),r.setAttribute("height","100%")),r},createAlphaToLuminanceFilter:function(){var t=createNS("feColorMatrix");return t.setAttribute("type","matrix"),t.setAttribute("color-interpolation-filters","sRGB"),t.setAttribute("values","0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1"),t}};return t}(),featureSupport=function(){var t={maskType:!0,svgLumaHidden:!0,offscreenCanvas:"undefined"!=typeof OffscreenCanvas};return(/MSIE 10/i.test(navigator.userAgent)||/MSIE 9/i.test(navigator.userAgent)||/rv:11.0/i.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent))&&(t.maskType=!1),/firefox/i.test(navigator.userAgent)&&(t.svgLumaHidden=!1),t}(),registeredEffects$1={},idPrefix="filter_result_";function SVGEffects(t){var e,r,i="SourceGraphic",s=t.data.ef?t.data.ef.length:0,a=createElementID(),n=filtersFactory.createFilter(a,!0),o=0;for(this.filters=[],e=0;e=0&&!this.shapeModifiers[t].processShapes(this._isFirstFrame);t-=1);}},searchProcessedElement:function(t){for(var e=this.processedElements,r=0,i=e.length;r.01)return!1;r+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!=this.c.length/4)return!1;if(this.data.k.k[0].s)for(var t=0,e=this.data.k.k.length;t0;)l=i.transformers[d].mProps._mdf||l,u-=1,d-=1;if(l)for(u=y-i.styles[p].lvl,d=i.transformers.length-1;u>0;)f.multiply(i.transformers[d].mProps.v),u-=1,d-=1}else f=t;if(n=(c=i.sh.paths)._length,l){for(o="",a=0;a=1?v=.99:v<=-1&&(v=-.99);var b=o*v,_=Math.cos(g+e.a.v)*b+p[0],P=Math.sin(g+e.a.v)*b+p[1];l.setAttribute("fx",_),l.setAttribute("fy",P),h&&!e.g._collapsable&&(e.of.setAttribute("fx",_),e.of.setAttribute("fy",P))}}function l(t,e,r){var i=e.style,s=e.d;s&&(s._mdf||r)&&s.dashStr&&(i.pElem.setAttribute("stroke-dasharray",s.dashStr),i.pElem.setAttribute("stroke-dashoffset",s.dashoffset[0])),e.c&&(e.c._mdf||r)&&i.pElem.setAttribute("stroke","rgb("+bmFloor(e.c.v[0])+","+bmFloor(e.c.v[1])+","+bmFloor(e.c.v[2])+")"),(e.o._mdf||r)&&i.pElem.setAttribute("stroke-opacity",e.o.v),(e.w._mdf||r)&&(i.pElem.setAttribute("stroke-width",e.w.v),i.msElem&&i.msElem.setAttribute("stroke-width",e.w.v))}return{createRenderFunction:function(t){switch(t.ty){case"fl":return a;case"gf":return o;case"gs":return n;case"st":return l;case"sh":case"el":case"rc":case"sr":return s;case"tr":return r;case"no":return i;default:return null}}}}();function SVGShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(t,e,r),this.prevViewData=[]}function LetterProps(t,e,r,i,s,a){this.o=t,this.sw=e,this.sc=r,this.fc=i,this.m=s,this.p=a,this._mdf={o:!0,sw:!!e,sc:!!r,fc:!!i,m:!0,p:!0}}function TextProperty(t,e){this._frameId=initialDefaultFrame,this.pv="",this.v="",this.kf=!1,this._isFirstFrame=!0,this._mdf=!1,e.d&&e.d.sid&&(e.d=t.globalData.slotManager.getProp(e.d)),this.data=e,this.elem=t,this.comp=this.elem.comp,this.keysIndex=0,this.canResize=!1,this.minimumFontSize=1,this.effectsSequence=[],this.currentData={ascent:0,boxWidth:this.defaultBoxWidth,f:"",fStyle:"",fWeight:"",fc:"",j:"",justifyOffset:"",l:[],lh:0,lineWidths:[],ls:"",of:"",s:"",sc:"",sw:0,t:0,tr:0,sz:0,ps:null,fillColorAnim:!1,strokeColorAnim:!1,strokeWidthAnim:!1,yOffset:0,finalSize:0,finalText:[],finalLineHeight:0,__complete:!1},this.copyData(this.currentData,this.data.d.k[0].s),this.searchProperty()||this.completeTextData(this.currentData)}extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var t,e,r,i,s=this.shapes.length,a=this.stylesList.length,n=[],o=!1;for(r=0;r1&&o&&this.setShapesAsAnimated(n)}},SVGShapeElement.prototype.setShapesAsAnimated=function(t){var e,r=t.length;for(e=0;e=0;o-=1){if((f=this.searchProcessedElement(t[o]))?e[o]=r[f-1]:t[o]._render=n,"fl"===t[o].ty||"st"===t[o].ty||"gf"===t[o].ty||"gs"===t[o].ty||"no"===t[o].ty)f?e[o].style.closed=!1:e[o]=this.createStyleElement(t[o],s),t[o]._render&&e[o].style.pElem.parentNode!==i&&i.appendChild(e[o].style.pElem),m.push(e[o].style);else if("gr"===t[o].ty){if(f)for(h=e[o].it.length,l=0;l1,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(t){this.effectsSequence.push(t),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(t){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length||t){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var e=this.currentData,r=this.keysIndex;if(this.lock)this.setCurrentData(this.currentData);else{var i;this.lock=!0,this._mdf=!1;var s=this.effectsSequence.length,a=t||this.data.d.k[this.keysIndex].s;for(i=0;ie);)r+=1;return this.keysIndex!==r&&(this.keysIndex=r),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e,r,i=[],s=0,a=t.length,n=!1,o=!1,l="";s=55296&&e<=56319?FontManager.isRegionalFlag(t,s)?l=t.substr(s,14):(r=t.charCodeAt(s+1))>=56320&&r<=57343&&(FontManager.isModifier(e,r)?(l=t.substr(s,2),n=!0):l=FontManager.isFlagEmoji(t.substr(s,4))?t.substr(s,4):t.substr(s,2)):e>56319?(r=t.charCodeAt(s+1),FontManager.isVariationSelector(e)&&(n=!0)):FontManager.isZeroWidthJoiner(e)&&(n=!0,o=!0),n?(i[i.length-1]+=l,n=!1):i.push(l),s+=l.length;return i},TextProperty.prototype.completeTextData=function(t){t.__complete=!0;var e,r,i,s,a,n,o,l=this.elem.globalData.fontManager,h=this.data,p=[],c=0,f=h.m.g,u=0,d=0,m=0,y=[],g=0,v=0,b=l.getFontByName(t.f),_=0,P=getFontProperties(b);t.fWeight=P.weight,t.fStyle=P.style,t.finalSize=t.s,t.finalText=this.buildFinalText(t.t),r=t.finalText.length,t.finalLineHeight=t.lh;var x,S=t.tr/1e3*t.finalSize;if(t.sz)for(var E,C,A=!0,w=t.sz[0],k=t.sz[1];A;){E=0,g=0,r=(C=this.buildFinalText(t.t)).length,S=t.tr/1e3*t.finalSize;var T=-1;for(e=0;ew&&" "!==C[e]?(-1===T?r+=1:e=T,E+=t.finalLineHeight||1.2*t.finalSize,C.splice(e,T===e?1:0,"\r"),T=-1,g=0):(g+=_,g+=S);E+=b.ascent*t.finalSize/100,this.canResize&&t.finalSize>this.minimumFontSize&&kv?g:v,g=-2*S,s="",i=!0,m+=1):s=M,l.chars?(o=l.getCharData(M,b.fStyle,l.getFontByName(t.f).fFamily),_=i?0:o.w*t.finalSize/100):_=l.measureText(s,t.f,t.finalSize)," "===M?D+=_+S:(g+=_+S+D,D=0),p.push({l:_,an:_,add:u,n:i,anIndexes:[],val:s,line:m,animatorJustifyOffset:0}),2==f){if(u+=_,""===s||" "===s||e===r-1){for(""!==s&&" "!==s||(u-=_);d<=e;)p[d].an=u,p[d].ind=c,p[d].extra=_,d+=1;c+=1,u=0}}else if(3==f){if(u+=_,""===s||e===r-1){for(""===s&&(u-=_);d<=e;)p[d].an=u,p[d].ind=c,p[d].extra=_,d+=1;u=0,c+=1}}else p[c].ind=c,p[c].extra=0,c+=1;if(t.l=p,v=g>v?g:v,y.push(g),t.sz)t.boxWidth=t.sz[0],t.justifyOffset=0;else switch(t.boxWidth=v,t.j){case 1:t.justifyOffset=-t.boxWidth;break;case 2:t.justifyOffset=-t.boxWidth/2;break;default:t.justifyOffset=0}t.lineWidths=y;var F,I,R,L,V=h.a;n=V.length;var B=[];for(a=0;a0?s=this.ne.v/100:a=-this.ne.v/100,this.xe.v>0?n=1-this.xe.v/100:o=1+this.xe.v/100;var l=BezierFactory.getBezierEasing(s,a,n,o).get,h=0,p=this.finalS,c=this.finalE,f=this.data.sh;if(2===f)h=l(h=c===p?i>=c?1:0:t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(3===f)h=l(h=c===p?i>=c?0:1:1-t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(4===f)c===p?h=0:(h=t(0,e(.5/(c-p)+(i-p)/(c-p),1)))<.5?h*=2:h=1-2*(h-.5),h=l(h);else if(5===f){if(c===p)h=0;else{var u=c-p,d=-u/2+(i=e(t(0,i+.5-p),c-p)),m=u/2;h=Math.sqrt(1-d*d/(m*m))}h=l(h)}else 6===f?(c===p?h=0:(i=e(t(0,i+.5-p),c-p),h=(1+Math.cos(Math.PI+2*Math.PI*i/(c-p)))/2),h=l(h)):(i>=r(p)&&(h=t(0,e(i-p<0?e(c,1)-(p-i):c-i,1))),h=l(h));if(100!==this.sm.v){var y=.01*this.sm.v;0===y&&(y=1e-8);var g=.5-.5*y;h1&&(h=1)}return h*this.a.v},getValue:function(t){this.iterateDynamicProperties(),this._mdf=t||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,t&&2===this.data.r&&(this.e.v=this._currentTextLength);var e=2===this.data.r?1:100/this.data.totalChars,r=this.o.v/e,i=this.s.v/e+r,s=this.e.v/e+r;if(i>s){var a=i;i=s,s=a}this.finalS=i,this.finalE=s}},extendPrototype([DynamicPropertyContainer],i),{getTextSelectorProp:function(t,e,r){return new i(t,e,r)}}}();function TextAnimatorDataProperty(t,e,r){var i={propType:!1},s=PropertyFactory.getProp,a=e.a;this.a={r:a.r?s(t,a.r,0,degToRads,r):i,rx:a.rx?s(t,a.rx,0,degToRads,r):i,ry:a.ry?s(t,a.ry,0,degToRads,r):i,sk:a.sk?s(t,a.sk,0,degToRads,r):i,sa:a.sa?s(t,a.sa,0,degToRads,r):i,s:a.s?s(t,a.s,1,.01,r):i,a:a.a?s(t,a.a,1,0,r):i,o:a.o?s(t,a.o,0,.01,r):i,p:a.p?s(t,a.p,1,0,r):i,sw:a.sw?s(t,a.sw,0,0,r):i,sc:a.sc?s(t,a.sc,1,0,r):i,fc:a.fc?s(t,a.fc,1,0,r):i,fh:a.fh?s(t,a.fh,0,0,r):i,fs:a.fs?s(t,a.fs,0,.01,r):i,fb:a.fb?s(t,a.fb,0,.01,r):i,t:a.t?s(t,a.t,0,0,r):i},this.s=TextSelectorProp.getTextSelectorProp(t,e.s,r),this.s.t=e.s.t}function TextAnimatorProperty(t,e,r){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=t,this._renderType=e,this._elem=r,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(r)}function ITextElement(){}TextAnimatorProperty.prototype.searchProperties=function(){var t,e,r=this._textData.a.length,i=PropertyFactory.getProp;for(t=0;t=o+ot||!d?(v=(o+ot-h)/l.partialLength,O=u.point[0]+(l.point[0]-u.point[0])*v,$=u.point[1]+(l.point[1]-u.point[1])*v,E.translate(-P[0]*w[s].an*.005,-P[1]*L*.01),p=!1):d&&(h+=l.partialLength,(c+=1)>=d.length&&(c=0,m[f+=1]?d=m[f].points:_.v.c?(c=0,d=m[f=0].points):(h-=l.partialLength,d=null)),d&&(u=l,y=(l=d[c]).partialLength));B=w[s].an/2-w[s].add,E.translate(-B,0,0)}else B=w[s].an/2-w[s].add,E.translate(-B,0,0),E.translate(-P[0]*w[s].an*.005,-P[1]*L*.01,0);for(D=0;Dt?this.textSpans[t].span:createNS(l?"g":"text"),y<=t){if(n.setAttribute("stroke-linecap","butt"),n.setAttribute("stroke-linejoin","round"),n.setAttribute("stroke-miterlimit","4"),this.textSpans[t].span=n,l){var g=createNS("g");n.appendChild(g),this.textSpans[t].childSpan=g}this.textSpans[t].span=n,this.layerElement.appendChild(n)}n.style.display="inherit"}if(h.reset(),p&&(o[t].n&&(c=-d,f+=r.yOffset,f+=u?1:0,u=!1),this.applyTextPropertiesToMatrix(r,h,o[t].line,c,f),c+=o[t].l||0,c+=d),l){var v;if(1===(m=this.globalData.fontManager.getCharData(r.finalText[t],i.fStyle,this.globalData.fontManager.getFontByName(r.f).fFamily)).t)v=new SVGCompElement(m.data,this.globalData,this);else{var b=emptyShapeData;m.data&&m.data.shapes&&(b=this.buildShapeData(m.data,r.finalSize)),v=new SVGShapeElement(b,this.globalData,this)}if(this.textSpans[t].glyph){var _=this.textSpans[t].glyph;this.textSpans[t].childSpan.removeChild(_.layerElement),_.destroy()}this.textSpans[t].glyph=v,v._debug=!0,v.prepareFrame(0),v.renderFrame(),this.textSpans[t].childSpan.appendChild(v.layerElement),1===m.t&&this.textSpans[t].childSpan.setAttribute("transform","scale("+r.finalSize/100+","+r.finalSize/100+")")}else p&&n.setAttribute("transform","translate("+h.props[12]+","+h.props[13]+")"),n.textContent=o[t].val,n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve")}p&&n&&n.setAttribute("d","")}else{var P=this.textContainer,x="start";switch(r.j){case 1:x="end";break;case 2:x="middle";break;default:x="start"}P.setAttribute("text-anchor",x),P.setAttribute("letter-spacing",d);var S=this.buildTextContents(r.finalText);for(e=S.length,f=r.ps?r.ps[1]+r.ascent:0,t=0;t=0;e-=1)(this.completeLayers||this.elements[e])&&this.elements[e].prepareFrame(t-this.layers[e].st);if(this.globalData._mdf)for(e=0;e=0;r-=1)(this.completeLayers||this.elements[r])&&(this.elements[r].prepareFrame(this.renderedFrame-this.layers[r].st),this.elements[r]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var t,e=this.layers.length;for(t=0;t=0;r-=1)t.finalTransform.multiply(t.transforms[r].transform.mProps.v);t._mdf=s},processSequences:function(t){var e,r=this.sequenceList.length;for(e=0;e=1){this.buffers=[];var t=this.globalData.canvasContext,e=assetLoader.createCanvas(t.canvas.width,t.canvas.height);this.buffers.push(e);var r=assetLoader.createCanvas(t.canvas.width,t.canvas.height);this.buffers.push(r),this.data.tt>=3&&!document._isProxy&&assetLoader.loadLumaCanvas()}this.canvasContext=this.globalData.canvasContext,this.transformCanvas=this.globalData.transformCanvas,this.renderableEffectsManager=new CVEffects(this),this.searchEffectTransforms()},createContent:function(){},setBlendMode:function(){var t=this.globalData;if(t.blendMode!==this.data.bm){t.blendMode=this.data.bm;var e=getBlendMode(this.data.bm);t.canvasContext.globalCompositeOperation=e}},createRenderableComponents:function(){this.maskManager=new CVMaskElement(this.data,this),this.transformEffects=this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT)},hideElement:function(){this.hidden||this.isInRange&&!this.isTransparent||(this.hidden=!0)},showElement:function(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},clearCanvas:function(t){t.clearRect(this.transformCanvas.tx,this.transformCanvas.ty,this.transformCanvas.w*this.transformCanvas.sx,this.transformCanvas.h*this.transformCanvas.sy)},prepareLayer:function(){if(this.data.tt>=1){var t=this.buffers[0].getContext("2d");this.clearCanvas(t),t.drawImage(this.canvasContext.canvas,0,0),this.currentTransform=this.canvasContext.getTransform(),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform)}},exitLayer:function(){if(this.data.tt>=1){var t=this.buffers[1],e=t.getContext("2d");if(this.clearCanvas(e),e.drawImage(this.canvasContext.canvas,0,0),this.canvasContext.setTransform(1,0,0,1,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.setTransform(this.currentTransform),this.comp.getElementById("tp"in this.data?this.data.tp:this.data.ind-1).renderFrame(!0),this.canvasContext.setTransform(1,0,0,1,0,0),this.data.tt>=3&&!document._isProxy){var r=assetLoader.getLumaCanvas(this.canvasContext.canvas);r.getContext("2d").drawImage(this.canvasContext.canvas,0,0),this.clearCanvas(this.canvasContext),this.canvasContext.drawImage(r,0,0)}this.canvasContext.globalCompositeOperation=operationsMap[this.data.tt],this.canvasContext.drawImage(t,0,0),this.canvasContext.globalCompositeOperation="destination-over",this.canvasContext.drawImage(this.buffers[0],0,0),this.canvasContext.setTransform(this.currentTransform),this.canvasContext.globalCompositeOperation="source-over"}},renderFrame:function(t){if(!this.hidden&&!this.data.hd&&(1!==this.data.td||t)){this.renderTransform(),this.renderRenderable(),this.renderLocalTransform(),this.setBlendMode();var e=0===this.data.ty;this.prepareLayer(),this.globalData.renderer.save(e),this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity),this.renderInnerContent(),this.globalData.renderer.restore(e),this.exitLayer(),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement,CVShapeData.prototype.setAsAnimated=SVGShapeData.prototype.setAsAnimated,extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement],CVShapeElement),CVShapeElement.prototype.initElement=RenderableDOMElement.prototype.initElement,CVShapeElement.prototype.transformHelper={opacity:1,_opMdf:!1},CVShapeElement.prototype.dashResetter=[],CVShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[])},CVShapeElement.prototype.createStyleElement=function(t,e){var r={data:t,type:t.ty,preTransforms:this.transformsManager.addTransformSequence(e),transforms:[],elements:[],closed:!0===t.hd},i={};if("fl"===t.ty||"st"===t.ty?(i.c=PropertyFactory.getProp(this,t.c,1,255,this),i.c.k||(r.co="rgb("+bmFloor(i.c.v[0])+","+bmFloor(i.c.v[1])+","+bmFloor(i.c.v[2])+")")):"gf"!==t.ty&&"gs"!==t.ty||(i.s=PropertyFactory.getProp(this,t.s,1,null,this),i.e=PropertyFactory.getProp(this,t.e,1,null,this),i.h=PropertyFactory.getProp(this,t.h||{k:0},0,.01,this),i.a=PropertyFactory.getProp(this,t.a||{k:0},0,degToRads,this),i.g=new GradientProperty(this,t.g,this)),i.o=PropertyFactory.getProp(this,t.o,0,.01,this),"st"===t.ty||"gs"===t.ty){if(r.lc=lineCapEnum[t.lc||2],r.lj=lineJoinEnum[t.lj||2],1==t.lj&&(r.ml=t.ml),i.w=PropertyFactory.getProp(this,t.w,0,null,this),i.w.k||(r.wi=i.w.v),t.d){var s=new DashProperty(this,t.d,"canvas",this);i.d=s,i.d.k||(r.da=i.d.dashArray,r.do=i.d.dashoffset[0])}}else r.r=2===t.r?"evenodd":"nonzero";return this.stylesList.push(r),i.style=r,i},CVShapeElement.prototype.createGroupElement=function(){return{it:[],prevViewData:[]}},CVShapeElement.prototype.createTransformElement=function(t){return{transform:{opacity:1,_opMdf:!1,key:this.transformsManager.getNewKey(),op:PropertyFactory.getProp(this,t.o,0,.01,this),mProps:TransformPropertyFactory.getTransformProperty(this,t,this)}}},CVShapeElement.prototype.createShapeElement=function(t){var e=new CVShapeData(this,t,this.stylesList,this.transformsManager);return this.shapes.push(e),this.addShapeToModifiers(e),e},CVShapeElement.prototype.reloadShapes=function(){var t;this._isFirstFrame=!0;var e=this.itemsData.length;for(t=0;t=0;a-=1){if((l=this.searchProcessedElement(t[a]))?e[a]=r[l-1]:t[a]._shouldRender=i,"fl"===t[a].ty||"st"===t[a].ty||"gf"===t[a].ty||"gs"===t[a].ty)l?e[a].style.closed=!1:e[a]=this.createStyleElement(t[a],d),f.push(e[a].style);else if("gr"===t[a].ty){if(l)for(o=e[a].it.length,n=0;n=0;s-=1)"tr"===e[s].ty?(a=r[s].transform,this.renderShapeTransform(t,a)):"sh"===e[s].ty||"el"===e[s].ty||"rc"===e[s].ty||"sr"===e[s].ty?this.renderPath(e[s],r[s]):"fl"===e[s].ty?this.renderFill(e[s],r[s],a):"st"===e[s].ty?this.renderStroke(e[s],r[s],a):"gf"===e[s].ty||"gs"===e[s].ty?this.renderGradientFill(e[s],r[s],a):"gr"===e[s].ty?this.renderShape(a,e[s].it,r[s].it):e[s].ty;i&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(t,e){if(this._isFirstFrame||e._mdf||t.transforms._mdf){var r,i,s,a=t.trNodes,n=e.paths,o=n._length;a.length=0;var l=t.transforms.finalTransform;for(s=0;s=1?c=.99:c<=-1&&(c=-.99);var f=h*c,u=Math.cos(p+e.a.v)*f+o[0],d=Math.sin(p+e.a.v)*f+o[1];i=n.createRadialGradient(u,d,0,o[0],o[1],h)}var m=t.g.p,y=e.g.c,g=1;for(a=0;ao&&"xMidYMid slice"===l||ns&&"meet"===o||as&&"slice"===o)?(r-this.transformCanvas.w*(i/this.transformCanvas.h))/2*this.renderConfig.dpr:"xMax"===h&&(as&&"slice"===o)?(r-this.transformCanvas.w*(i/this.transformCanvas.h))*this.renderConfig.dpr:0,this.transformCanvas.ty="YMid"===p&&(a>s&&"meet"===o||as&&"meet"===o||a=0;t-=1)this.elements[t]&&this.elements[t].destroy&&this.elements[t].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRendererBase.prototype.renderFrame=function(t,e){if((this.renderedFrame!==t||!0!==this.renderConfig.clearCanvas||e)&&!this.destroyed&&-1!==t){var r;this.renderedFrame=t,this.globalData.frameNum=t-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||e,this.globalData.projectInterface.currentFrame=t;var i=this.layers.length;for(this.completeLayers||this.checkLayers(t),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].prepareFrame(t-this.layers[r].st);if(this.globalData._mdf){for(!0===this.renderConfig.clearCanvas?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].renderFrame();!0!==this.renderConfig.clearCanvas&&this.restore()}}},CanvasRendererBase.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!==this.layers[t].ty){var r=this.createItem(this.layers[t],this,this.globalData);e[t]=r,r.initExpressions()}},CanvasRendererBase.prototype.checkPendingElements=function(){for(;this.pendingElements.length;)this.pendingElements.pop().checkParenting()},CanvasRendererBase.prototype.hide=function(){this.animationItem.container.style.display="none"},CanvasRendererBase.prototype.show=function(){this.animationItem.container.style.display="block"},CVContextData.prototype.duplicate=function(){var t=2*this._length,e=0;for(e=this._length;e=0;t-=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},CVCompElement.prototype.destroy=function(){var t;for(t=this.layers.length-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy();this.layers=null,this.elements=null},CVCompElement.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},extendPrototype([CanvasRendererBase],CanvasRenderer),CanvasRenderer.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},HBaseElement.prototype={checkBlendMode:function(){},initRendererElement:function(){this.baseElement=createTag(this.data.tg||"div"),this.data.hasMask?(this.svgElement=createNS("svg"),this.layerElement=createNS("g"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),0!==this.data.bm&&this.setBlendMode()},renderElement:function(){var t=this.transformedElement?this.transformedElement.style:{};if(this.finalTransform._matMdf){var e=this.finalTransform.mat.toCSS();t.transform=e,t.webkitTransform=e}this.finalTransform._opMdf&&(t.opacity=this.finalTransform.mProp.o.v)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function(){},setMatte:function(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=BaseRenderer.prototype.buildElementParenting,extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var t;this.data.hasMask?((t=createNS("rect")).setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.svgElement.setAttribute("width",this.data.sw),this.svgElement.setAttribute("height",this.data.sh)):((t=createTag("div")).style.width=this.data.sw+"px",t.style.height=this.data.sh+"px",t.style.backgroundColor=this.data.sc),this.layerElement.appendChild(t)},extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var t;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),t=this.svgElement;else{t=createNS("svg");var e=this.comp.data?this.comp.data:this.globalData.compSize;t.setAttribute("width",e.w),t.setAttribute("height",e.h),t.appendChild(this.shapesContainer),this.layerElement.appendChild(t)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=t},HShapeElement.prototype.getTransformedPoint=function(t,e){var r,i=t.length;for(r=0;r0&&o<1&&c[f].push(this.calculateF(o,t,e,r,i,f)):(l=a*a-4*n*s)>=0&&((h=(-a+bmSqrt(l))/(2*s))>0&&h<1&&c[f].push(this.calculateF(h,t,e,r,i,f)),(p=(-a-bmSqrt(l))/(2*s))>0&&p<1&&c[f].push(this.calculateF(p,t,e,r,i,f))));this.shapeBoundingBox.left=bmMin.apply(null,c[0]),this.shapeBoundingBox.top=bmMin.apply(null,c[1]),this.shapeBoundingBox.right=bmMax.apply(null,c[0]),this.shapeBoundingBox.bottom=bmMax.apply(null,c[1])},HShapeElement.prototype.calculateF=function(t,e,r,i,s,a){return bmPow(1-t,3)*e[a]+3*bmPow(1-t,2)*t*r[a]+3*(1-t)*bmPow(t,2)*i[a]+bmPow(t,3)*s[a]},HShapeElement.prototype.calculateBoundingBox=function(t,e){var r,i=t.length;for(r=0;rr&&(r=s)}r*=t.mult}else r=t.v*t.mult;e.x-=r,e.xMax+=r,e.y-=r,e.yMax+=r},HShapeElement.prototype.currentBoxContains=function(t){return this.currentBBox.x<=t.x&&this.currentBBox.y<=t.y&&this.currentBBox.width+this.currentBBox.x>=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMax=0;t-=1){var i=this.hierarchy[t].finalTransform.mProp;this.mat.translate(-i.p.v[0],-i.p.v[1],i.p.v[2]),this.mat.rotateX(-i.or.v[0]).rotateY(-i.or.v[1]).rotateZ(i.or.v[2]),this.mat.rotateX(-i.rx.v).rotateY(-i.ry.v).rotateZ(i.rz.v),this.mat.scale(1/i.s.v[0],1/i.s.v[1],1/i.s.v[2]),this.mat.translate(i.a.v[0],i.a.v[1],i.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var s;s=this.p?[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var a=Math.sqrt(Math.pow(s[0],2)+Math.pow(s[1],2)+Math.pow(s[2],2)),n=[s[0]/a,s[1]/a,s[2]/a],o=Math.sqrt(n[2]*n[2]+n[0]*n[0]),l=Math.atan2(n[1],o),h=Math.atan2(n[0],-n[2]);this.mat.rotateY(h).rotateX(-l)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var p=!this._prevMat.equals(this.mat);if((p||this.pe._mdf)&&this.comp.threeDElements){var c,f,u;for(e=this.comp.threeDElements.length,t=0;t=t)return this.threeDElements[e].perspectiveElem;e+=1}return null},HybridRendererBase.prototype.createThreeDContainer=function(t,e){var r,i,s=createTag("div");styleDiv(s);var a=createTag("div");if(styleDiv(a),"3d"===e){(r=s.style).width=this.globalData.compSize.w+"px",r.height=this.globalData.compSize.h+"px";var n="50% 50%";r.webkitTransformOrigin=n,r.mozTransformOrigin=n,r.transformOrigin=n;var o="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)";(i=a.style).transform=o,i.webkitTransform=o}s.appendChild(a);var l={container:a,perspectiveElem:s,startPos:t,endPos:t,type:e};return this.threeDElements.push(l),l},HybridRendererBase.prototype.build3dContainers=function(){var t,e,r=this.layers.length,i="";for(t=0;t=0;t-=1)this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)},HybridRendererBase.prototype.addTo3dContainer=function(t,e){for(var r=0,i=this.threeDElements.length;rn?(t=s/this.globalData.compSize.w,e=s/this.globalData.compSize.w,r=0,i=(a-this.globalData.compSize.h*(s/this.globalData.compSize.w))/2):(t=a/this.globalData.compSize.h,e=a/this.globalData.compSize.h,r=(s-this.globalData.compSize.w*(a/this.globalData.compSize.h))/2,i=0);var o=this.resizerElem.style;o.webkitTransform="matrix3d("+t+",0,0,0,0,"+e+",0,0,0,0,1,0,"+r+","+i+",0,1)",o.transform=o.webkitTransform},HybridRendererBase.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRendererBase.prototype.hide=function(){this.resizerElem.style.display="none"},HybridRendererBase.prototype.show=function(){this.resizerElem.style.display="block"},HybridRendererBase.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var t,e=this.globalData.compSize.w,r=this.globalData.compSize.h,i=this.threeDElements.length;for(t=0;t=n;)t/=2,e/=2,r>>>=1;return(t+r)/e};return v.int32=function(){return 0|g.g(4)},v.quick=function(){return g.g(4)/4294967296},v.double=v,c(f(g.S),t),(u.pass||d||function(t,r,i,s){return s&&(s.S&&h(s,g),t.state=function(){return h(g,{})}),i?(e.random=t,r):t})(v,y,"global"in u?u.global:this==e,u.state)},c(e.random(),t)}function initialize$2(t){seedRandom([],t)}var propTypes={SHAPE:"shape"};function _typeof$1(t){return _typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof$1(t)}var ExpressionManager=function(){var ob={},Math=BMMath,window=null,document=null,XMLHttpRequest=null,fetch=null,frames=null,_lottieGlobal={};function resetFrame(){_lottieGlobal={}}function $bm_isInstanceOfArray(t){return t.constructor===Array||t.constructor===Float32Array}function isNumerable(t,e){return"number"===t||e instanceof Number||"boolean"===t||"string"===t}function $bm_neg(t){var e=_typeof$1(t);if("number"===e||t instanceof Number||"boolean"===e)return-t;if($bm_isInstanceOfArray(t)){var r,i=t.length,s=[];for(r=0;rr){var i=r;r=e,e=i}return Math.min(Math.max(t,e),r)}function radiansToDegrees(t){return t/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(t){return t*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(t,e){if("number"==typeof t||t instanceof Number)return e=e||0,Math.abs(t-e);var r;e||(e=helperLengthArray);var i=Math.min(t.length,e.length),s=0;for(r=0;r.5?h/(2-n-o):h/(n+o),n){case i:e=(s-a)/h+(s1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function hslToRgb(t){var e,r,i,s=t[0],a=t[1],n=t[2];if(0===a)e=n,i=n,r=n;else{var o=n<.5?n*(1+a):n+a-n*a,l=2*n-o;e=hue2rgb(l,o,s+1/3),r=hue2rgb(l,o,s),i=hue2rgb(l,o,s-1/3)}return[e,r,i,t[3]]}function linear(t,e,r,i,s){if(void 0!==i&&void 0!==s||(i=e,s=r,e=0,r=1),r=r)return s;var n,o=r===e?0:(t-e)/(r-e);if(!i.length)return i+(s-i)*o;var l=i.length,h=createTypedArray("float32",l);for(n=0;n1){for(i=0;i1?e=1:e<0&&(e=0);var n=t(e);if($bm_isInstanceOfArray(s)){var o,l=s.length,h=createTypedArray("float32",l);for(o=0;odata.k[e].t&&tdata.k[e+1].t-t?(r=e+2,i=data.k[e+1].t):(r=e+1,i=data.k[e].t);break}}-1===r&&(r=e+1,i=data.k[e].t)}else r=0,i=0;var a={};return a.index=r,a.time=i/elem.comp.globalData.frameRate,a}function key(t){var e,r,i;if(!data.k.length||"number"==typeof data.k[0])throw new Error("The property has no keyframe at index "+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var s=Object.prototype.hasOwnProperty.call(data.k[t],"s")?data.k[t].s:data.k[t-1].e;for(i=s.length,r=0;rh.length-1)&&(e=h.length-1),i=p-(s=h[h.length-1-e].t)),"pingpong"===t){if(Math.floor((l-s)/i)%2!=0)return this.getValueAtTime((i-(l-s)%i+s)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var c=this.getValueAtTime(s/this.comp.globalData.frameRate,0),f=this.getValueAtTime(p/this.comp.globalData.frameRate,0),u=this.getValueAtTime(((l-s)%i+s)/this.comp.globalData.frameRate,0),d=Math.floor((l-s)/i);if(this.pv.length){for(n=(o=new Array(c.length)).length,a=0;a=p)return this.pv;if(r?s=p+(i=e?Math.abs(this.elem.comp.globalData.frameRate*e):Math.max(0,this.elem.data.op-p)):((!e||e>h.length-1)&&(e=h.length-1),i=(s=h[e].t)-p),"pingpong"===t){if(Math.floor((p-l)/i)%2==0)return this.getValueAtTime(((p-l)%i+p)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var c=this.getValueAtTime(p/this.comp.globalData.frameRate,0),f=this.getValueAtTime(s/this.comp.globalData.frameRate,0),u=this.getValueAtTime((i-(p-l)%i+p)/this.comp.globalData.frameRate,0),d=Math.floor((p-l)/i)+1;if(this.pv.length){for(n=(o=new Array(c.length)).length,a=0;a1?(s+t-a)/(e-1):1,o=0,l=0;for(r=this.pv.length?createTypedArray("float32",this.pv.length):0;on){var p=o,c=r.c&&o===l-1?0:o+1,f=(n-h)/a[o].addedLength;i=bez.getPointInSegment(r.v[p],r.v[c],r.o[p],r.i[c],f,a[o]);break}h+=a[o].addedLength,o+=1}return i||(i=r.c?[r.v[0][0],r.v[0][1]]:[r.v[r._length-1][0],r.v[r._length-1][1]]),i},vectorOnPath:function(t,e,r){1==t?t=this.v.c:0==t&&(t=.999);var i=this.pointOnPath(t,e),s=this.pointOnPath(t+.001,e),a=s[0]-i[0],n=s[1]-i[1],o=Math.sqrt(Math.pow(a,2)+Math.pow(n,2));return 0===o?[0,0]:"tangent"===r?[a/o,n/o]:[-n/o,a/o]},tangentOnPath:function(t,e){return this.vectorOnPath(t,e,"tangent")},normalOnPath:function(t,e){return this.vectorOnPath(t,e,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([h],o),extendPrototype([h],l),l.prototype.getValueAtTime=function(t){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shapePool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime=h?u<0?i:s:i+f*Math.pow((a-t)/u,1/r),p[c]=n,c+=1,o+=256/255;return p.join(" ")},SVGProLevelsFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e,r=this.filterManager.effectElements;this.feFuncRComposed&&(t||r[3].p._mdf||r[4].p._mdf||r[5].p._mdf||r[6].p._mdf||r[7].p._mdf)&&(e=this.getTableValue(r[3].p.v,r[4].p.v,r[5].p.v,r[6].p.v,r[7].p.v),this.feFuncRComposed.setAttribute("tableValues",e),this.feFuncGComposed.setAttribute("tableValues",e),this.feFuncBComposed.setAttribute("tableValues",e)),this.feFuncR&&(t||r[10].p._mdf||r[11].p._mdf||r[12].p._mdf||r[13].p._mdf||r[14].p._mdf)&&(e=this.getTableValue(r[10].p.v,r[11].p.v,r[12].p.v,r[13].p.v,r[14].p.v),this.feFuncR.setAttribute("tableValues",e)),this.feFuncG&&(t||r[17].p._mdf||r[18].p._mdf||r[19].p._mdf||r[20].p._mdf||r[21].p._mdf)&&(e=this.getTableValue(r[17].p.v,r[18].p.v,r[19].p.v,r[20].p.v,r[21].p.v),this.feFuncG.setAttribute("tableValues",e)),this.feFuncB&&(t||r[24].p._mdf||r[25].p._mdf||r[26].p._mdf||r[27].p._mdf||r[28].p._mdf)&&(e=this.getTableValue(r[24].p.v,r[25].p.v,r[26].p.v,r[27].p.v,r[28].p.v),this.feFuncB.setAttribute("tableValues",e)),this.feFuncA&&(t||r[31].p._mdf||r[32].p._mdf||r[33].p._mdf||r[34].p._mdf||r[35].p._mdf)&&(e=this.getTableValue(r[31].p.v,r[32].p.v,r[33].p.v,r[34].p.v,r[35].p.v),this.feFuncA.setAttribute("tableValues",e))}},extendPrototype([SVGComposableEffect],SVGDropShadowEffect),SVGDropShadowEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){if((t||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute("stdDeviation",this.filterManager.effectElements[4].p.v/4),t||this.filterManager.effectElements[0].p._mdf){var e=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute("flood-color",rgbToHex(Math.round(255*e[0]),Math.round(255*e[1]),Math.round(255*e[2])))}if((t||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute("flood-opacity",this.filterManager.effectElements[1].p.v/255),t||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var r=this.filterManager.effectElements[3].p.v,i=(this.filterManager.effectElements[2].p.v-90)*degToRads,s=r*Math.cos(i),a=r*Math.sin(i);this.feOffset.setAttribute("dx",s),this.feOffset.setAttribute("dy",a)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(t,e,r){this.initialized=!1,this.filterManager=e,this.filterElem=t,this.elem=r,r.matteElement=createNS("g"),r.matteElement.appendChild(r.layerElement),r.matteElement.appendChild(r.transformedElement),r.baseElement=r.matteElement}function SVGGaussianBlurEffect(t,e,r,i){t.setAttribute("x","-100%"),t.setAttribute("y","-100%"),t.setAttribute("width","300%"),t.setAttribute("height","300%"),this.filterManager=e;var s=createNS("feGaussianBlur");s.setAttribute("result",i),t.appendChild(s),this.feGaussianBlur=s}function TransformEffect(){}function SVGTransformEffect(t,e){this.init(e)}function CVTransformEffect(t){this.init(t)}return SVGMatte3Effect.prototype.findSymbol=function(t){for(var e=0,r=_svgMatteSymbols.length;e=4",lerna:"^4.0.0","lint-staged":"^12.3.2","parcel-bundler":"^1.12.4",prettier:"^2.3.0",rollup:"^2.23.0","rollup-plugin-copy":"^3.3.0","rollup-plugin-filesize":"^9.0.2","rollup-plugin-serve":"^1.0.3","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.31.1","rollup-plugin-uglify":"^6.0.4","rollup-plugin-visualizer":"^5.5.4","semantic-release":"^19.0.2",shx:"^0.3.4","source-map-support":"^0.5.21","ts-node":"^10.4.0",typescript:"^4.5.5","unicode-canonical-property-names-ecmascript":"^2.0.0"},files=["dist/"],keywords=["lottie","animation","lottiefiles","web component","component","lit-element","player","telegram sticker","tgs"],browserslist=["> 3%"],publishConfig={access:"public",provenance:!0},husky={hooks:{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},nyc={extends:"@istanbuljs/nyc-config-typescript",all:!0},packageManager="yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447",_package={name:name,version:version,description:description,main:main,module:module,types:types,homepage:homepage,repository:repository,bugs:bugs,author:author,license:license,scripts:scripts,dependencies:dependencies,devDependencies:devDependencies,files:files,keywords:keywords,browserslist:browserslist,publishConfig:publishConfig,husky:husky,"lint-staged":{"src/**/*.{css,scss,md}":["prettier --write"],"src/**/*.{js,jsx,ts,tsx,json}":["eslint . --ext .ts,.tsx,.js --fix"]},nyc:nyc,packageManager:packageManager},_templateObject,_templateObject2,_templateObject3,_templateObject4,_templateObject5,PlayerState,PlayMode,PlayerEvents;function parseSrc(t){if("object"==typeof t)return t;try{return JSON.parse(t)}catch(e){return new URL(t,window.location.href).toString()}}function isLottie(t){return["v","ip","op","layers","fr","w","h"].every((e=>Object.prototype.hasOwnProperty.call(t,e)))}function fromURL(t){return _fromURL.apply(this,arguments)}function _fromURL(){return(_fromURL=_asyncToGenerator((function*(t){if("string"!=typeof t)throw new Error("The url value must be a string");var e;try{var r=new URL(t),i=yield fetch(r.toString());e=yield i.json()}catch(t){throw new Error("An error occurred while trying to load the Lottie file from URL")}return e}))).apply(this,arguments)}exports.PlayerState=void 0,PlayerState=exports.PlayerState||(exports.PlayerState={}),PlayerState.Destroyed="destroyed",PlayerState.Error="error",PlayerState.Frozen="frozen",PlayerState.Loading="loading",PlayerState.Paused="paused",PlayerState.Playing="playing",PlayerState.Stopped="stopped",exports.PlayMode=void 0,PlayMode=exports.PlayMode||(exports.PlayMode={}),PlayMode.Bounce="bounce",PlayMode.Normal="normal",exports.PlayerEvents=void 0,PlayerEvents=exports.PlayerEvents||(exports.PlayerEvents={}),PlayerEvents.Complete="complete",PlayerEvents.Destroyed="destroyed",PlayerEvents.Error="error",PlayerEvents.Frame="frame",PlayerEvents.Freeze="freeze",PlayerEvents.Load="load",PlayerEvents.Loop="loop",PlayerEvents.Pause="pause",PlayerEvents.Play="play",PlayerEvents.Ready="ready",PlayerEvents.Rendered="rendered",PlayerEvents.Stop="stop",exports.LottiePlayer=class extends s{constructor(){super(...arguments),this.autoplay=!1,this.background="transparent",this.controls=!1,this.currentState=exports.PlayerState.Loading,this.description="Lottie animation",this.direction=1,this.disableCheck=!1,this.disableShadowDOM=!1,this.hover=!1,this.intermission=1,this.loop=!1,this.mode=exports.PlayMode.Normal,this.preserveAspectRatio="xMidYMid meet",this.renderer="svg",this.speed=1,this._io=void 0,this._counter=1,this._onVisibilityChange=()=>{!0===document.hidden&&this.currentState===exports.PlayerState.Playing?this.freeze():this.currentState===exports.PlayerState.Frozen&&this.play()}}load(t){var e=this;return _asyncToGenerator((function*(){var r={container:e.container,loop:!1,autoplay:!1,renderer:e.renderer,rendererSettings:Object.assign({preserveAspectRatio:e.preserveAspectRatio,clearCanvas:!1,progressiveLoad:!0,hideOnTransparent:!0},e.viewBoxSize&&{viewBoxSize:e.viewBoxSize})};try{var i=parseSrc(t),s={},a="string"==typeof i?"path":"animationData";e._lottie&&e._lottie.destroy(),e.webworkers&&lottie$1.exports.useWebWorker(!0),e._lottie=lottie$1.exports.loadAnimation(Object.assign(Object.assign({},r),{[a]:i})),e._attachEventListeners(),e.disableCheck||("path"===a?(s=yield fromURL(i),a="animationData"):s=i,isLottie(s)||(e.currentState=exports.PlayerState.Error,e.dispatchEvent(new CustomEvent(exports.PlayerEvents.Error))))}catch(t){e.currentState=exports.PlayerState.Error,e.dispatchEvent(new CustomEvent(exports.PlayerEvents.Error))}}))()}getLottie(){return this._lottie}getVersions(){return{lottieWebVersion:dependencies["lottie-web"],lottiePlayerVersion:version}}play(){this._lottie&&(this._lottie.play(),this.currentState=exports.PlayerState.Playing,this.dispatchEvent(new CustomEvent(exports.PlayerEvents.Play)))}pause(){this._lottie&&(this._lottie.pause(),this.currentState=exports.PlayerState.Paused,this.dispatchEvent(new CustomEvent(exports.PlayerEvents.Pause)))}stop(){this._lottie&&(this._counter=1,this._lottie.stop(),this.currentState=exports.PlayerState.Stopped,this.dispatchEvent(new CustomEvent(exports.PlayerEvents.Stop)))}destroy(){this._lottie&&(this._lottie.destroy(),this._lottie=null,this.currentState=exports.PlayerState.Destroyed,this.dispatchEvent(new CustomEvent(exports.PlayerEvents.Destroyed)),this.remove())}seek(t){if(this._lottie){var e=/^(\d+)(%?)$/.exec(t.toString());if(e){var r="%"===e[2]?this._lottie.totalFrames*Number(e[1])/100:Number(e[1]);this.seeker=r,this.currentState===exports.PlayerState.Playing?this._lottie.goToAndPlay(r,!0):(this._lottie.goToAndStop(r,!0),this._lottie.pause())}}}snapshot(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.shadowRoot){var e=this.shadowRoot.querySelector(".animation svg"),r=(new XMLSerializer).serializeToString(e);if(t){var i=document.createElement("a");i.href="data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(r)),i.download="download_".concat(this.seeker,".svg"),document.body.appendChild(i),i.click(),document.body.removeChild(i)}return r}}setSpeed(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this._lottie&&this._lottie.setSpeed(t)}setDirection(t){this._lottie&&this._lottie.setDirection(t)}setLooping(t){this._lottie&&(this.loop=t,this._lottie.loop=t)}togglePlay(){return this.currentState===exports.PlayerState.Playing?this.pause():this.play()}toggleLooping(){this.setLooping(!this.loop)}resize(){this._lottie&&this._lottie.resize()}static get styles(){return styles}disconnectedCallback(){this.isConnected||(this._io&&(this._io.disconnect(),this._io=void 0),document.removeEventListener("visibilitychange",this._onVisibilityChange),this.destroy())}render(){var t=this.controls?"main controls":"main",e=this.controls?"animation controls":"animation";return $(_templateObject||(_templateObject=_taggedTemplateLiteral([' \n \n ',"\n

\n ","\n
"])),t,this.description,e,this.background,this.currentState===exports.PlayerState.Error?$(_templateObject2||(_templateObject2=_taggedTemplateLiteral(['
⚠️
']))):void 0,this.controls&&!this.disableShadowDOM?this.renderControls():void 0)}createRenderRoot(){return this.disableShadowDOM&&(this.style.display="block"),this.disableShadowDOM?this:super.createRenderRoot()}firstUpdated(){"IntersectionObserver"in window&&(this._io=new IntersectionObserver((t=>{t[0].isIntersecting?this.currentState===exports.PlayerState.Frozen&&this.play():this.currentState===exports.PlayerState.Playing&&this.freeze()})),this._io.observe(this.container)),void 0!==document.hidden&&document.addEventListener("visibilitychange",this._onVisibilityChange),this.src&&this.load(this.src),this.dispatchEvent(new CustomEvent(exports.PlayerEvents.Rendered))}renderControls(){var t=this.currentState===exports.PlayerState.Playing,e=this.currentState===exports.PlayerState.Paused,r=this.currentState===exports.PlayerState.Stopped;return $(_templateObject3||(_templateObject3=_taggedTemplateLiteral(['\n \n \n ','\n \n \n \n \n \n \n \n \n
\n '])),this.togglePlay,t||e?"active":"",$(t?_templateObject4||(_templateObject4=_taggedTemplateLiteral(['