turbo_boost-commands 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of turbo_boost-commands might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +167 -133
- data/app/assets/builds/@turbo-boost/commands.js +1 -5
- data/app/assets/builds/@turbo-boost/commands.js.map +4 -4
- data/app/assets/builds/@turbo-boost/commands.metafile.json +1 -0
- data/app/assets/images/hopsoft.webp +0 -0
- data/app/javascript/activity.js +4 -4
- data/app/javascript/confirmation.js +33 -0
- data/app/javascript/delegates.js +6 -8
- data/app/javascript/drivers/form.js +1 -1
- data/app/javascript/drivers/frame.js +1 -1
- data/app/javascript/drivers/index.js +4 -7
- data/app/javascript/drivers/method.js +1 -1
- data/app/javascript/drivers/window.js +15 -24
- data/app/javascript/elements.js +6 -8
- data/app/javascript/events.js +9 -7
- data/app/javascript/index.js +9 -8
- data/app/javascript/lifecycle.js +3 -11
- data/app/javascript/logger.js +4 -4
- data/app/javascript/meta.js +4 -4
- data/app/javascript/renderer.js +2 -2
- data/app/javascript/schema.js +2 -1
- data/app/javascript/state/index.js +5 -5
- data/app/javascript/state/observable.js +4 -5
- data/app/javascript/turbo.js +5 -18
- data/app/javascript/urls.js +1 -1
- data/app/javascript/uuids.js +2 -5
- data/lib/turbo_boost/commands/attribute_set.rb +1 -1
- data/lib/turbo_boost/commands/engine.rb +1 -1
- data/lib/turbo_boost/commands/runner.rb +27 -4
- data/lib/turbo_boost/commands/version.rb +1 -1
- metadata +6 -18
- data/app/javascript/drivers/turbo_form.js +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64d4d3c756cccd1a4e53855864586cfc175cf056521d19b0009ea4d63bc6595b
|
4
|
+
data.tar.gz: dc3d11b4d8bed4f981f6ef20a2b5074cee988f1d5eea5b82bfa1a9e34a66d5c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcc4725b4dc5788f42fc68b7e6f867e759049af0a2e387c06e7c772b3a0a95df3f7202e074db6add75f1f615c1c0a22b524f99d50866549b01b8395e3a6a9cc3
|
7
|
+
data.tar.gz: 4385ade2b9cf0d440946b79c146545ed804d562268cba963bc0feb5e61cd6e17a6563fa6c69ceb10699bdfe26ed766cee7404ccd675ac3a938bb46a466a85877
|
data/README.md
CHANGED
@@ -59,29 +59,29 @@
|
|
59
59
|
|
60
60
|
## Table of Contents
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
62
|
+
- [Why TurboBoost Commands?](#why-turboboost-commands)
|
63
|
+
- [Sponsors](#sponsors)
|
64
|
+
- [Dependencies](#dependencies)
|
65
|
+
- [Setup](#setup)
|
66
|
+
- [Usage](#usage)
|
67
|
+
- [Event Delegates](#event-delegates)
|
68
|
+
- [Lifecycle Events](#lifecycle-events)
|
69
|
+
- [Targeting Frames](#targeting-frames)
|
70
|
+
- [Working with Forms](#working-with-forms)
|
71
|
+
- [Server Side Commands](#server-side-commands)
|
72
|
+
- [Appending Turbo Streams](#appending-turbo-streams)
|
73
|
+
- [Setting Instance Variables](#setting-instance-variables)
|
74
|
+
- [Prevent Controller Action](#prevent-controller-action)
|
75
|
+
- [Broadcasting Turbo Streams](#broadcasting-turbo-streams)
|
76
|
+
- [Community](#community)
|
77
|
+
- [Developing](#developing)
|
78
|
+
- [Notable Files](#notable-files)
|
79
|
+
- [Deploying](#deploying)
|
80
|
+
- [Notable Files](#notable-files-1)
|
81
|
+
- [How to Deploy](#how-to-deploy)
|
82
|
+
- [Releasing](#releasing)
|
83
|
+
- [About TurboBoost](#about-turboboost)
|
84
|
+
- [License](#license)
|
85
85
|
|
86
86
|
<!-- Tocer[finish]: Auto-generated, don't remove. -->
|
87
87
|
|
@@ -91,11 +91,11 @@ Commands help you build robust reactive applications with Rails & Hotwire.
|
|
91
91
|
They allow you to declaratively specify server methods that will execute whenever client side events are triggered by users.
|
92
92
|
|
93
93
|
TurboBoost Commands work with Hotwire's Turbo Frames.
|
94
|
-
|
94
|
+
**They also work independent of frames.**
|
95
95
|
|
96
|
-
Commands let you
|
96
|
+
Commands let you _sprinkle_ ✨ in reactive functionality and skip the ceremony of the typical
|
97
97
|
[REST semantics](https://en.wikipedia.org/wiki/Representational_state_transfer)
|
98
|
-
imposed by Rails conventions and Turbo Frames i.e. boilerplate
|
98
|
+
imposed by Rails conventions and Turbo Frames i.e. boilerplate _(routes, controllers, actions, etc...)_.
|
99
99
|
|
100
100
|
Commands are great for features adjacent to traditional RESTful resources.
|
101
101
|
Things like making selections, toggling switches, adding filters, etc...
|
@@ -108,9 +108,9 @@ Namely,
|
|
108
108
|
1. **Trigger an event**
|
109
109
|
2. **Change state**
|
110
110
|
3. **(Re)render to reflect the new state**
|
111
|
-
4.
|
111
|
+
4. _repeat..._
|
112
112
|
|
113
|
-
|
113
|
+
_The primary distinction being that **state is wholly managed by the server**._
|
114
114
|
|
115
115
|
Commands are executed via a Rails `before_action` which means that reactivity runs over HTTP.
|
116
116
|
_**Web sockets are NOT used for the reactive critical path!** 🎉_
|
@@ -138,97 +138,108 @@ Commands can be tested in isolation as well as with standard Rails controller, i
|
|
138
138
|
|
139
139
|
## Setup
|
140
140
|
|
141
|
+
Complete the steps below, or use [this RailsByte](https://railsbytes.com/templates/xkjsbB):
|
142
|
+
|
143
|
+
```sh
|
144
|
+
rails app:template LOCATION='https://railsbytes.com/script/xkjsbB'
|
145
|
+
```
|
146
|
+
|
141
147
|
1. Add TurboBoost Commands dependencies
|
142
148
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
149
|
+
```diff
|
150
|
+
# Gemfile
|
151
|
+
gem "turbo-rails", ">= 1.1", "< 2"
|
152
|
+
+gem "turbo_boost-commands", "~> VERSION"
|
153
|
+
```
|
148
154
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
+
```diff
|
156
|
+
# package.json
|
157
|
+
"dependencies": {
|
158
|
+
"@hotwired/turbo-rails": ">=7.2",
|
159
|
+
+ "@turbo-boost/commands": "^VERSION"
|
160
|
+
```
|
155
161
|
|
156
|
-
|
162
|
+
_Be sure to install the **same version** of the Ruby and JavaScript libraries._
|
157
163
|
|
158
164
|
2. Import TurboBoost Commands in your JavaScript app
|
159
165
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
166
|
+
```diff
|
167
|
+
# app/javascript/application.js
|
168
|
+
import '@hotwired/turbo-rails'
|
169
|
+
+import '@turbo-boost/commands'
|
170
|
+
```
|
171
|
+
|
172
|
+
3. Add TurboBoost to your Rails app
|
173
|
+
|
174
|
+
```diff
|
175
|
+
# app/views/layouts/application.html.erb
|
176
|
+
<html>
|
177
|
+
<head>
|
178
|
+
+ <%= turbo_boost.meta_tag %>
|
179
|
+
</head>
|
180
|
+
<body>
|
181
|
+
</body>
|
182
|
+
</html>
|
183
|
+
```
|
178
184
|
|
179
185
|
## Usage
|
180
186
|
|
181
187
|
This example illustrates how to use TurboBoost Commands to manage upvotes on a Post.
|
182
188
|
|
183
|
-
1. **Trigger an event** -
|
189
|
+
1. **Trigger an event** - _register an element to listen for client side events that trigger server side commands_
|
184
190
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
191
|
+
```erb
|
192
|
+
<!-- app/views/posts/show.html.erb -->
|
193
|
+
<%= turbo_frame_tag dom_id(@post) do %>
|
194
|
+
<a href="#" data-turbo-command="PostCommand#upvote">Upvote</a>
|
195
|
+
Upvote Count: <%= @post.votes %>
|
196
|
+
<% end %>
|
197
|
+
```
|
192
198
|
|
193
|
-
2. **Change state** -
|
199
|
+
2. **Change state** - _create a server side command that modifies state_
|
194
200
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
201
|
+
```ruby
|
202
|
+
# app/commands/post_command.rb
|
203
|
+
class PostCommand < TurboBoost::Commands::Command
|
204
|
+
def upvote
|
205
|
+
Post.find(controller.params[:id]).increment! :votes
|
206
|
+
end
|
207
|
+
end
|
208
|
+
```
|
203
209
|
|
204
|
-
3. **(Re)render to reflect the new state** -
|
210
|
+
3. **(Re)render to reflect the new state** - _normal Rails / Turbo Frame behavior runs and (re)renders the frame_
|
205
211
|
|
206
212
|
### Event Delegates
|
207
213
|
|
208
214
|
TurboBoost Commands use [event delegation](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_delegation) to capture client side events that invoke server side commands.
|
209
215
|
|
210
|
-
Here is the list of default **event delegates**
|
216
|
+
Here is the list of default **event delegates** _(DOM event name + CSS selectors)_ that TurboBoost Commands monitors.
|
211
217
|
|
212
218
|
- **`change`** - `input[data-turbo-command],select[data-turbo-command],textarea[data-turbo-command]`
|
213
219
|
- **`submit`** - `form[data-turbo-command]`
|
214
220
|
- **`click`** - `[data-turbo-command]`
|
215
221
|
|
216
222
|
Note that the list of event delegates is ordinal.
|
217
|
-
Matches are identified by scanning the list of delegates top to bottom
|
223
|
+
Matches are identified by scanning the list of delegates top to bottom _(first match wins)_.
|
218
224
|
|
219
225
|
It's possible to override the default event delegates.
|
220
226
|
Just note that registered events are required to [bubble up through the DOM tree](https://developer.mozilla.org/en-US/docs/Web/API/Event/bubbles).
|
221
227
|
|
222
|
-
**IMPORTANT:**
|
228
|
+
**IMPORTANT:** _New entries and overrides are prepended to the list of delegates and will match before defaults._
|
223
229
|
|
224
230
|
```js
|
225
231
|
// restrict `click` monitoring to <a> and <button> elements
|
226
|
-
TurboBoost.Commands.registerEventDelegate('click', [
|
232
|
+
TurboBoost.Commands.registerEventDelegate('click', [
|
233
|
+
'a[data-turbo-command]',
|
234
|
+
'button[data-command]'
|
235
|
+
])
|
227
236
|
```
|
228
237
|
|
229
238
|
```js
|
230
239
|
// append selectors to the `change` event
|
231
|
-
const delegate = TurboBoost.Commands.eventDelegates.find(
|
240
|
+
const delegate = TurboBoost.Commands.eventDelegates.find(
|
241
|
+
e => e.name === 'change'
|
242
|
+
)
|
232
243
|
const selectors = [...delegate.selectors, '.example[data-turbo-command]']
|
233
244
|
TurboBoost.Commands.registerEventDelegate('change', selectors)
|
234
245
|
```
|
@@ -237,7 +248,9 @@ You can also register custom events and elements.
|
|
237
248
|
Here's an example that sets up monitoring for the `sl-change` event on the `sl-switch` element from the [Shoelace web component library](https://shoelace.style/).
|
238
249
|
|
239
250
|
```js
|
240
|
-
TurboBoost.Commands.registerEventDelegate('sl-change', [
|
251
|
+
TurboBoost.Commands.registerEventDelegate('sl-change', [
|
252
|
+
'sl-switch[data-turbo-command]'
|
253
|
+
])
|
241
254
|
```
|
242
255
|
|
243
256
|
### Lifecycle Events
|
@@ -255,19 +268,19 @@ but you can also explicitly target other frames just like you normally would wit
|
|
255
268
|
|
256
269
|
1. Look for `data-turbo-frame` on the command element
|
257
270
|
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
271
|
+
```erb
|
272
|
+
<input type="checkbox"
|
273
|
+
data-turbo-command="ExampleCommand#work"
|
274
|
+
data-turbo-frame="some-frame-id">
|
275
|
+
```
|
263
276
|
|
264
277
|
1. Find the closest `<turbo-frame>` to the command element
|
265
278
|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
279
|
+
```erb
|
280
|
+
<turbo-frame id="example-frame">
|
281
|
+
<input type="checkbox" data-turbo-command="ExampleCommand#work">
|
282
|
+
</turbo-frame>
|
283
|
+
```
|
271
284
|
|
272
285
|
### Working with Forms
|
273
286
|
|
@@ -297,7 +310,7 @@ Just specify the `data-turbo-command` attribute on the form.
|
|
297
310
|
### Server Side Commands
|
298
311
|
|
299
312
|
The client side DOM attribute `data-turbo-command` indicates what Ruby class and method to invoke.
|
300
|
-
|
313
|
+
_The attribute value is specified with RDoc notation. i.e. `ClassName#method_name`_
|
301
314
|
|
302
315
|
Here's an example.
|
303
316
|
|
@@ -378,7 +391,7 @@ class DemoCommand < TurboBoost::Commands::Command
|
|
378
391
|
end
|
379
392
|
```
|
380
393
|
|
381
|
-
|
394
|
+
_This proves especially powerful when paired with [TurboBoost Streams](https://github.com/hopsoft/turbo_boost-streams)._
|
382
395
|
|
383
396
|
> 📘 **NOTE:** `turbo_stream.invoke` is a [TurboBoost Streams](https://github.com/hopsoft/turbo_boost-streams#usage) feature.
|
384
397
|
|
@@ -472,76 +485,97 @@ class DemoCommand < TurboBoost::Commands::Command
|
|
472
485
|
end
|
473
486
|
```
|
474
487
|
|
475
|
-
|
476
|
-
[hotwired/turbo-rails](https://github.com/hotwired/turbo-rails/blob/main/app/models/concerns/turbo/broadcastable.rb) source code
|
488
|
+
_Learn more about Turbo Stream broadcasting by reading through the
|
489
|
+
[hotwired/turbo-rails](https://github.com/hotwired/turbo-rails/blob/main/app/models/concerns/turbo/broadcastable.rb) source code._
|
477
490
|
|
478
491
|
> 📘 **NOTE:** `broadcast_invoke_later_to` is a [TurboBoost Streams](https://github.com/hopsoft/turbo_boost-streams#broadcasting) feature.
|
479
492
|
|
480
|
-
|
493
|
+
## Community
|
481
494
|
|
482
|
-
|
483
|
-
Be sure to clone the library and run the test application.
|
484
|
-
Then dig into the internals.
|
495
|
+
Come join the party with over 2200+ like-minded friendly Rails/Hotwire enthusiasts on our [Discord server](https://discord.gg/stimulus-reflex).
|
485
496
|
|
486
|
-
|
497
|
+
## Developing
|
487
498
|
|
488
|
-
|
489
|
-
git clone https://github.com/hopsoft/turbo_boost-commands.git
|
490
|
-
cd turbo_boost-commands
|
491
|
-
bundle
|
492
|
-
cd test/dummy
|
493
|
-
bin/rails s
|
494
|
-
# View the app in a browser at http://localhost:3000
|
495
|
-
```
|
499
|
+
This project supports a fully Dockerized development experience.
|
496
500
|
|
497
|
-
|
501
|
+
1. Simply run the following commands to get started.
|
498
502
|
|
499
|
-
|
503
|
+
```sh
|
504
|
+
git clone -o github https://github.com/hopsoft/turbo_boost-streams.git
|
505
|
+
cd turbo_boost-streams
|
506
|
+
```
|
500
507
|
|
501
|
-
```sh
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
```
|
508
|
+
```sh
|
509
|
+
docker compose up -d # start the envionment (will take a few minutes on 1st run)
|
510
|
+
docker exec -it turbo_boost-streams-web rake # run the test suite
|
511
|
+
open http://localhost:3000 # open the `test/dummy` app in a browser
|
512
|
+
```
|
507
513
|
|
508
|
-
|
509
|
-
*Feel free to add some demos and submit a pull request while you're in there.*
|
514
|
+
And, if you're using the [containers gem (WIP)](https://github.com/hopsoft/containers).
|
510
515
|
|
511
|
-
|
516
|
+
```sh
|
517
|
+
containers up # start the envionment (will take a few minutes on 1st run)
|
518
|
+
containers rake # run the test suite
|
519
|
+
open http://localhost:3000 # open the `test/dummy` app in a browser
|
520
|
+
```
|
521
|
+
|
522
|
+
1. Edit files using your preferred tools on the host machine.
|
523
|
+
|
524
|
+
1. That's it!
|
512
525
|
|
513
|
-
|
526
|
+
#### Notable Files
|
514
527
|
|
515
|
-
|
528
|
+
- [Dockerfile](https://github.com/hopsoft/turbo_boost-streams/blob/main/Dockerfile)
|
529
|
+
- [docker-compose.yml](https://github.com/hopsoft/turbo_boost-streams/blob/main/docker-compose.yml)
|
530
|
+
- [bin/docker/run/local](https://github.com/hopsoft/turbo_boost-streams/blob/main/bin/docker/run/local)
|
516
531
|
|
517
|
-
|
532
|
+
## Deploying
|
518
533
|
|
519
|
-
|
534
|
+
This project supports Dockerized deployment via the same configurtation used for development,
|
535
|
+
and... it actually runs the [`test/dummy`](https://github.com/hopsoft/turbo_boost-streams/tree/main/test/dummy) application in "production". 🤯
|
520
536
|
|
521
|
-
|
522
|
-
|
523
|
-
|
537
|
+
The `test/dummy` app serves the following purposes.
|
538
|
+
|
539
|
+
- Test app for the Rails engine
|
540
|
+
- Documentation and marketing site with interactive demos
|
541
|
+
|
542
|
+
You can [**see it in action** here.](https://hopsoft.io/@turbo-boost/streams)
|
543
|
+
_How's that for innovative simplicity?_
|
544
|
+
|
545
|
+
#### Notable Files
|
546
|
+
|
547
|
+
- [Dockerfile](https://github.com/hopsoft/turbo_boost-streams/blob/main/Dockerfile)
|
548
|
+
- [fly.toml](https://github.com/hopsoft/turbo_boost-streams/blob/main/fly.toml)
|
549
|
+
- [bin/docker/run/remote](https://github.com/hopsoft/turbo_boost-streams/blob/main/bin/docker/run/remote)
|
550
|
+
|
551
|
+
#### How to Deploy
|
552
|
+
|
553
|
+
```sh
|
554
|
+
fly deploy
|
555
|
+
```
|
524
556
|
|
525
557
|
## Releasing
|
526
558
|
|
527
|
-
1. Run `yarn
|
528
|
-
1. Bump version number at `lib/turbo_boost-
|
529
|
-
1. Run `bin/standardize`
|
559
|
+
1. Run `yarn` and `bundle` to pick up the latest
|
560
|
+
1. Bump version number at `lib/turbo_boost-streams/version.rb`. Pre-release versions use `.preN`
|
530
561
|
1. Run `rake build` and `yarn build`
|
562
|
+
1. Run `bin/standardize`
|
531
563
|
1. Commit and push changes to GitHub
|
532
564
|
1. Run `rake release`
|
533
565
|
1. Run `yarn publish --no-git-tag-version --access public`
|
534
566
|
1. Yarn will prompt you for the new version. Pre-release versions use `-preN`
|
535
|
-
1. Commit and push
|
536
|
-
1. Create a new release on GitHub ([here](https://github.com/hopsoft/turbo_boost-
|
567
|
+
1. Commit and push changes to GitHub
|
568
|
+
1. Create a new release on GitHub ([here](https://github.com/hopsoft/turbo_boost-streams/releases)) and generate the changelog for the stable release for it
|
537
569
|
|
538
570
|
## About TurboBoost
|
539
571
|
|
540
|
-
TurboBoost is a suite of
|
572
|
+
TurboBoost is a suite of libraries that enhance Rails, Hotwire, and Turbo... making them even more powerful and boosing your productivity.
|
541
573
|
Be sure to check out all of the various the libraries.
|
542
574
|
|
543
575
|
- [Streams](https://github.com/hopsoft/turbo_boost-streams)
|
544
576
|
- [Commands](https://github.com/hopsoft/turbo_boost-commands)
|
577
|
+
- [Elements](https://github.com/hopsoft/turbo_boost-elements)
|
578
|
+
- [Devtools](https://github.com/hopsoft/turbo_boost-devtools)
|
545
579
|
- Coming soon...
|
546
580
|
|
547
581
|
## License
|
@@ -1,6 +1,2 @@
|
|
1
|
-
var Qn=Object.defineProperty,eo=Object.defineProperties;var to=Object.getOwnPropertyDescriptors;var lr=Object.getOwnPropertySymbols;var ro=Object.prototype.hasOwnProperty,no=Object.prototype.propertyIsEnumerable;var ur=(e,t,r)=>t in e?Qn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,x=(e,t)=>{for(var r in t||(t={}))ro.call(t,r)&&ur(e,r,t[r]);if(lr)for(var r of lr(t))no.call(t,r)&&ur(e,r,t[r]);return e},D=(e,t)=>eo(e,to(t));var oo=Object.defineProperty,io=Object.defineProperties,ao=Object.getOwnPropertyDescriptors,cr=Object.getOwnPropertySymbols,so=Object.prototype.hasOwnProperty,lo=Object.prototype.propertyIsEnumerable,fr=(e,t,r)=>t in e?oo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Te=(e,t)=>{for(var r in t||(t={}))so.call(t,r)&&fr(e,r,t[r]);if(cr)for(var r of cr(t))lo.call(t,r)&&fr(e,r,t[r]);return e},yr=(e,t)=>io(e,ao(t)),gt=!1,bt=!1,oe=[];function uo(e){co(e)}function co(e){oe.includes(e)||oe.push(e),fo()}function wr(e){let t=oe.indexOf(e);t!==-1&&oe.splice(t,1)}function fo(){!bt&&!gt&&(gt=!0,queueMicrotask(po))}function po(){gt=!1,bt=!0;for(let e=0;e<oe.length;e++)oe[e]();oe.length=0,bt=!1}var _e,ve,$e,Er,xt=!0;function mo(e){xt=!1,e(),xt=!0}function ho(e){_e=e.reactive,$e=e.release,ve=t=>e.effect(t,{scheduler:r=>{xt?uo(r):r()}}),Er=e.raw}function dr(e){ve=e}function _o(e){let t=()=>{};return[r=>{let n=ve(r);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o())}),e._x_effects.add(n),t=()=>{n!==void 0&&(e._x_effects.delete(n),$e(n))},n},()=>{t()}]}var kr=[],Ar=[],Or=[];function vo(e){Or.push(e)}function Cr(e,t){typeof t=="function"?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,Ar.push(t))}function go(e){kr.push(e)}function bo(e,t,r){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(r)}function Sr(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([r,n])=>{(t===void 0||t.includes(r))&&(n.forEach(o=>o()),delete e._x_attributeCleanups[r])})}var Nt=new MutationObserver(Rt),Pt=!1;function Mt(){Nt.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),Pt=!0}function Tr(){xo(),Nt.disconnect(),Pt=!1}var Oe=[],mt=!1;function xo(){Oe=Oe.concat(Nt.takeRecords()),Oe.length&&!mt&&(mt=!0,queueMicrotask(()=>{yo(),mt=!1}))}function yo(){Rt(Oe),Oe.length=0}function $(e){if(!Pt)return e();Tr();let t=e();return Mt(),t}var Bt=!1,Ve=[];function wo(){Bt=!0}function Eo(){Bt=!1,Rt(Ve),Ve=[]}function Rt(e){if(Bt){Ve=Ve.concat(e);return}let t=[],r=[],n=new Map,o=new Map;for(let i=0;i<e.length;i++)if(!e[i].target._x_ignoreMutationObserver&&(e[i].type==="childList"&&(e[i].addedNodes.forEach(a=>a.nodeType===1&&t.push(a)),e[i].removedNodes.forEach(a=>a.nodeType===1&&r.push(a))),e[i].type==="attributes")){let a=e[i].target,s=e[i].attributeName,l=e[i].oldValue,u=()=>{n.has(a)||n.set(a,[]),n.get(a).push({name:s,value:a.getAttribute(s)})},f=()=>{o.has(a)||o.set(a,[]),o.get(a).push(s)};a.hasAttribute(s)&&l===null?u():a.hasAttribute(s)?(f(),u()):f()}o.forEach((i,a)=>{Sr(a,i)}),n.forEach((i,a)=>{kr.forEach(s=>s(a,i))});for(let i of r)if(!t.includes(i)&&(Ar.forEach(a=>a(i)),i._x_cleanups))for(;i._x_cleanups.length;)i._x_cleanups.pop()();t.forEach(i=>{i._x_ignoreSelf=!0,i._x_ignore=!0});for(let i of t)r.includes(i)||i.isConnected&&(delete i._x_ignoreSelf,delete i._x_ignore,Or.forEach(a=>a(i)),i._x_ignore=!0,i._x_ignoreSelf=!0);t.forEach(i=>{delete i._x_ignoreSelf,delete i._x_ignore}),t=null,r=null,n=null,o=null}function jr(e){return Ne(pe(e))}function Le(e,t,r){return e._x_dataStack=[t,...pe(r||e)],()=>{e._x_dataStack=e._x_dataStack.filter(n=>n!==t)}}function pr(e,t){let r=e._x_dataStack[0];Object.entries(t).forEach(([n,o])=>{r[n]=o})}function pe(e){return e._x_dataStack?e._x_dataStack:typeof ShadowRoot=="function"&&e instanceof ShadowRoot?pe(e.host):e.parentNode?pe(e.parentNode):[]}function Ne(e){let t=new Proxy({},{ownKeys:()=>Array.from(new Set(e.flatMap(r=>Object.keys(r)))),has:(r,n)=>e.some(o=>o.hasOwnProperty(n)),get:(r,n)=>(e.find(o=>{if(o.hasOwnProperty(n)){let i=Object.getOwnPropertyDescriptor(o,n);if(i.get&&i.get._x_alreadyBound||i.set&&i.set._x_alreadyBound)return!0;if((i.get||i.set)&&i.enumerable){let a=i.get,s=i.set,l=i;a=a&&a.bind(t),s=s&&s.bind(t),a&&(a._x_alreadyBound=!0),s&&(s._x_alreadyBound=!0),Object.defineProperty(o,n,yr(Te({},l),{get:a,set:s}))}return!0}return!1})||{})[n],set:(r,n,o)=>{let i=e.find(a=>a.hasOwnProperty(n));return i?i[n]=o:e[e.length-1][n]=o,!0}});return t}function $r(e){let t=n=>typeof n=="object"&&!Array.isArray(n)&&n!==null,r=(n,o="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([i,{value:a,enumerable:s}])=>{if(s===!1||a===void 0)return;let l=o===""?i:`${o}.${i}`;typeof a=="object"&&a!==null&&a._x_interceptor?n[i]=a.initialize(e,l,i):t(a)&&a!==n&&!(a instanceof Element)&&r(a,l)})};return r(e)}function Lr(e,t=()=>{}){let r={initialValue:void 0,_x_interceptor:!0,initialize(n,o,i){return e(this.initialValue,()=>ko(n,o),a=>Nr(n,o,a),o,i)}};return t(r),n=>{if(typeof n=="object"&&n!==null&&n._x_interceptor){let o=r.initialize.bind(r);r.initialize=(i,a,s)=>{let l=n.initialize(i,a,s);return r.initialValue=l,o(i,a,s)}}else r.initialValue=n;return r}}function ko(e,t){return t.split(".").reduce((r,n)=>r[n],e)}function Nr(e,t,r){if(typeof t=="string"&&(t=t.split(".")),t.length===1)e[t[0]]=r;else{if(t.length===0)throw error;return e[t[0]]||(e[t[0]]={}),Nr(e[t[0]],t.slice(1),r)}}var Pr={};function F(e,t){Pr[e]=t}function yt(e,t){return Object.entries(Pr).forEach(([r,n])=>{Object.defineProperty(e,`$${r}`,{get(){let[o,i]=Ir(t);return o=Te({interceptor:Lr},o),Cr(t,i),n(t,o)},enumerable:!1})}),e}function Ao(e,t,r,...n){try{return r(...n)}catch(o){je(o,e,t)}}function je(e,t,r=void 0){Object.assign(e,{el:t,expression:r}),console.warn(`Alpine Expression Error: ${e.message}
|
2
|
-
|
3
|
-
${r?'Expression: "'+r+`"
|
4
|
-
|
5
|
-
`:""}`,t),setTimeout(()=>{throw e},0)}var We=!0;function Oo(e){let t=We;We=!1,e(),We=t}function de(e,t,r={}){let n;return M(e,t)(o=>n=o,r),n}function M(...e){return Mr(...e)}var Mr=Br;function Co(e){Mr=e}function Br(e,t){let r={};yt(r,e);let n=[r,...pe(e)];if(typeof t=="function")return So(n,t);let o=jo(n,t,e);return Ao.bind(null,e,t,o)}function So(e,t){return(r=()=>{},{scope:n={},params:o=[]}={})=>{let i=t.apply(Ne([n,...e]),o);He(r,i)}}var ht={};function To(e,t){if(ht[e])return ht[e];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e)||/^(let|const)\s/.test(e)?`(async()=>{ ${e} })()`:e,o=(()=>{try{return new r(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`)}catch(i){return je(i,t,e),Promise.resolve()}})();return ht[e]=o,o}function jo(e,t,r){let n=To(t,r);return(o=()=>{},{scope:i={},params:a=[]}={})=>{n.result=void 0,n.finished=!1;let s=Ne([i,...e]);if(typeof n=="function"){let l=n(n,s).catch(u=>je(u,r,t));n.finished?(He(o,n.result,s,a,r),n.result=void 0):l.then(u=>{He(o,u,s,a,r)}).catch(u=>je(u,r,t)).finally(()=>n.result=void 0)}}}function He(e,t,r,n,o){if(We&&typeof t=="function"){let i=t.apply(r,n);i instanceof Promise?i.then(a=>He(e,a,r,n)).catch(a=>je(a,o,t)):e(i)}else typeof t=="object"&&t instanceof Promise?t.then(i=>e(i)):e(t)}var Dt="x-";function ge(e=""){return Dt+e}function $o(e){Dt=e}var wt={};function O(e,t){return wt[e]=t,{before(r){var n;if(!wt[r]){console.warn("Cannot find directive `${directive}`. `${name}` will use the default order of execution");return}let o=(n=ne.indexOf(r))!=null?n:ne.indexOf("DEFAULT");o>=0&&ne.splice(o,0,e)}}}function It(e,t,r){if(t=Array.from(t),e._x_virtualDirectives){let o=Object.entries(e._x_virtualDirectives).map(([a,s])=>({name:a,value:s})),i=Rr(o);o=o.map(a=>i.find(s=>s.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),t=t.concat(o)}let n={};return t.map(Fr((o,i)=>n[o]=i)).filter(Vr).map(Po(n,r)).sort(Mo).map(o=>No(e,o))}function Rr(e){return Array.from(e).map(Fr()).filter(t=>!Vr(t))}var Et=!1,Ae=new Map,Dr=Symbol();function Lo(e){Et=!0;let t=Symbol();Dr=t,Ae.set(t,[]);let r=()=>{for(;Ae.get(t).length;)Ae.get(t).shift()();Ae.delete(t)},n=()=>{Et=!1,r()};e(r),n()}function Ir(e){let t=[],r=i=>t.push(i),[n,o]=_o(e);return t.push(o),[{Alpine:Me,effect:n,cleanup:r,evaluateLater:M.bind(M,e),evaluate:de.bind(de,e)},()=>t.forEach(i=>i())]}function No(e,t){let r=()=>{},n=wt[t.type]||r,[o,i]=Ir(e);bo(e,t.original,i);let a=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,o),n=n.bind(n,e,t,o),Et?Ae.get(Dr).push(n):n())};return a.runCleanups=i,a}var qr=(e,t)=>({name:r,value:n})=>(r.startsWith(e)&&(r=r.replace(e,t)),{name:r,value:n}),zr=e=>e;function Fr(e=()=>{}){return({name:t,value:r})=>{let{name:n,value:o}=Wr.reduce((i,a)=>a(i),{name:t,value:r});return n!==t&&e(n,t),{name:n,value:o}}}var Wr=[];function qt(e){Wr.push(e)}function Vr({name:e}){return Hr().test(e)}var Hr=()=>new RegExp(`^${Dt}([^:^.]+)\\b`);function Po(e,t){return({name:r,value:n})=>{let o=r.match(Hr()),i=r.match(/:([a-zA-Z0-9\-:]+)/),a=r.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],s=t||e[r]||r;return{type:o?o[1]:null,value:i?i[1]:null,modifiers:a.map(l=>l.replace(".","")),expression:n,original:s}}}var kt="DEFAULT",ne=["ignore","ref","data","id","radio","tabs","switch","disclosure","menu","listbox","combobox","bind","init","for","mask","model","modelable","transition","show","if",kt,"teleport"];function Mo(e,t){let r=ne.indexOf(e.type)===-1?kt:e.type,n=ne.indexOf(t.type)===-1?kt:t.type;return ne.indexOf(r)-ne.indexOf(n)}function Ce(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function Z(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(o=>Z(o,t));return}let r=!1;if(t(e,()=>r=!0),r)return;let n=e.firstElementChild;for(;n;)Z(n,t,!1),n=n.nextElementSibling}function me(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}function Bo(){document.body||me("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?"),Ce(document,"alpine:init"),Ce(document,"alpine:initializing"),Mt(),vo(t=>Y(t,Z)),Cr(t=>Gr(t)),go((t,r)=>{It(t,r).forEach(n=>n())});let e=t=>!Ke(t.parentElement,!0);Array.from(document.querySelectorAll(Xr())).filter(e).forEach(t=>{Y(t)}),Ce(document,"alpine:initialized")}var zt=[],Ur=[];function Jr(){return zt.map(e=>e())}function Xr(){return zt.concat(Ur).map(e=>e())}function Kr(e){zt.push(e)}function Zr(e){Ur.push(e)}function Ke(e,t=!1){return Ze(e,r=>{if((t?Xr():Jr()).some(n=>r.matches(n)))return!0})}function Ze(e,t){if(e){if(t(e))return e;if(e._x_teleportBack&&(e=e._x_teleportBack),!!e.parentElement)return Ze(e.parentElement,t)}}function Ro(e){return Jr().some(t=>e.matches(t))}var Yr=[];function Do(e){Yr.push(e)}function Y(e,t=Z,r=()=>{}){Lo(()=>{t(e,(n,o)=>{r(n,o),Yr.forEach(i=>i(n,o)),It(n,n.attributes).forEach(i=>i()),n._x_ignore&&o()})})}function Gr(e){Z(e,t=>Sr(t))}var At=[],Ft=!1;function Wt(e=()=>{}){return queueMicrotask(()=>{Ft||setTimeout(()=>{Ot()})}),new Promise(t=>{At.push(()=>{e(),t()})})}function Ot(){for(Ft=!1;At.length;)At.shift()()}function Io(){Ft=!0}function Vt(e,t){return Array.isArray(t)?mr(e,t.join(" ")):typeof t=="object"&&t!==null?qo(e,t):typeof t=="function"?Vt(e,t()):mr(e,t)}function mr(e,t){let r=i=>i.split(" ").filter(Boolean),n=i=>i.split(" ").filter(a=>!e.classList.contains(a)).filter(Boolean),o=i=>(e.classList.add(...i),()=>{e.classList.remove(...i)});return t=t===!0?t="":t||"",o(n(t))}function qo(e,t){let r=s=>s.split(" ").filter(Boolean),n=Object.entries(t).flatMap(([s,l])=>l?r(s):!1).filter(Boolean),o=Object.entries(t).flatMap(([s,l])=>l?!1:r(s)).filter(Boolean),i=[],a=[];return o.forEach(s=>{e.classList.contains(s)&&(e.classList.remove(s),a.push(s))}),n.forEach(s=>{e.classList.contains(s)||(e.classList.add(s),i.push(s))}),()=>{a.forEach(s=>e.classList.add(s)),i.forEach(s=>e.classList.remove(s))}}function Ye(e,t){return typeof t=="object"&&t!==null?zo(e,t):Fo(e,t)}function zo(e,t){let r={};return Object.entries(t).forEach(([n,o])=>{r[n]=e.style[n],n.startsWith("--")||(n=Wo(n)),e.style.setProperty(n,o)}),setTimeout(()=>{e.style.length===0&&e.removeAttribute("style")}),()=>{Ye(e,r)}}function Fo(e,t){let r=e.getAttribute("style",t);return e.setAttribute("style",t),()=>{e.setAttribute("style",r||"")}}function Wo(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Ct(e,t=()=>{}){let r=!1;return function(){r?t.apply(this,arguments):(r=!0,e.apply(this,arguments))}}O("transition",(e,{value:t,modifiers:r,expression:n},{evaluate:o})=>{typeof n=="function"&&(n=o(n)),n?Vo(e,n,t):Ho(e,r,t)});function Vo(e,t,r){Qr(e,Vt,""),{enter:n=>{e._x_transition.enter.during=n},"enter-start":n=>{e._x_transition.enter.start=n},"enter-end":n=>{e._x_transition.enter.end=n},leave:n=>{e._x_transition.leave.during=n},"leave-start":n=>{e._x_transition.leave.start=n},"leave-end":n=>{e._x_transition.leave.end=n}}[r](t)}function Ho(e,t,r){Qr(e,Ye);let n=!t.includes("in")&&!t.includes("out")&&!r,o=n||t.includes("in")||["enter"].includes(r),i=n||t.includes("out")||["leave"].includes(r);t.includes("in")&&!n&&(t=t.filter((b,k)=>k<t.indexOf("out"))),t.includes("out")&&!n&&(t=t.filter((b,k)=>k>t.indexOf("out")));let a=!t.includes("opacity")&&!t.includes("scale"),s=a||t.includes("opacity"),l=a||t.includes("scale"),u=s?0:1,f=l?Ee(t,"scale",95)/100:1,d=Ee(t,"delay",0),h=Ee(t,"origin","center"),A="opacity, transform",q=Ee(t,"duration",150)/1e3,ue=Ee(t,"duration",75)/1e3,p="cubic-bezier(0.4, 0.0, 0.2, 1)";o&&(e._x_transition.enter.during={transformOrigin:h,transitionDelay:d,transitionProperty:A,transitionDuration:`${q}s`,transitionTimingFunction:p},e._x_transition.enter.start={opacity:u,transform:`scale(${f})`},e._x_transition.enter.end={opacity:1,transform:"scale(1)"}),i&&(e._x_transition.leave.during={transformOrigin:h,transitionDelay:d,transitionProperty:A,transitionDuration:`${ue}s`,transitionTimingFunction:p},e._x_transition.leave.start={opacity:1,transform:"scale(1)"},e._x_transition.leave.end={opacity:u,transform:`scale(${f})`})}function Qr(e,t,r={}){e._x_transition||(e._x_transition={enter:{during:r,start:r,end:r},leave:{during:r,start:r,end:r},in(n=()=>{},o=()=>{}){St(e,t,{during:this.enter.during,start:this.enter.start,end:this.enter.end},n,o)},out(n=()=>{},o=()=>{}){St(e,t,{during:this.leave.during,start:this.leave.start,end:this.leave.end},n,o)}})}window.Element.prototype._x_toggleAndCascadeWithTransitions=function(e,t,r,n){let o=document.visibilityState==="visible"?requestAnimationFrame:setTimeout,i=()=>o(r);if(t){e._x_transition&&(e._x_transition.enter||e._x_transition.leave)?e._x_transition.enter&&(Object.entries(e._x_transition.enter.during).length||Object.entries(e._x_transition.enter.start).length||Object.entries(e._x_transition.enter.end).length)?e._x_transition.in(r):i():e._x_transition?e._x_transition.in(r):i();return}e._x_hidePromise=e._x_transition?new Promise((a,s)=>{e._x_transition.out(()=>{},()=>a(n)),e._x_transitioning.beforeCancel(()=>s({isFromCancelledTransition:!0}))}):Promise.resolve(n),queueMicrotask(()=>{let a=en(e);a?(a._x_hideChildren||(a._x_hideChildren=[]),a._x_hideChildren.push(e)):o(()=>{let s=l=>{let u=Promise.all([l._x_hidePromise,...(l._x_hideChildren||[]).map(s)]).then(([f])=>f());return delete l._x_hidePromise,delete l._x_hideChildren,u};s(e).catch(l=>{if(!l.isFromCancelledTransition)throw l})})})};function en(e){let t=e.parentNode;if(t)return t._x_hidePromise?t:en(t)}function St(e,t,{during:r,start:n,end:o}={},i=()=>{},a=()=>{}){if(e._x_transitioning&&e._x_transitioning.cancel(),Object.keys(r).length===0&&Object.keys(n).length===0&&Object.keys(o).length===0){i(),a();return}let s,l,u;Uo(e,{start(){s=t(e,n)},during(){l=t(e,r)},before:i,end(){s(),u=t(e,o)},after:a,cleanup(){l(),u()}})}function Uo(e,t){let r,n,o,i=Ct(()=>{$(()=>{r=!0,n||t.before(),o||(t.end(),Ot()),t.after(),e.isConnected&&t.cleanup(),delete e._x_transitioning})});e._x_transitioning={beforeCancels:[],beforeCancel(a){this.beforeCancels.push(a)},cancel:Ct(function(){for(;this.beforeCancels.length;)this.beforeCancels.shift()();i()}),finish:i},$(()=>{t.start(),t.during()}),Io(),requestAnimationFrame(()=>{if(r)return;let a=Number(getComputedStyle(e).transitionDuration.replace(/,.*/,"").replace("s",""))*1e3,s=Number(getComputedStyle(e).transitionDelay.replace(/,.*/,"").replace("s",""))*1e3;a===0&&(a=Number(getComputedStyle(e).animationDuration.replace("s",""))*1e3),$(()=>{t.before()}),n=!0,requestAnimationFrame(()=>{r||($(()=>{t.end()}),Ot(),setTimeout(e._x_transitioning.finish,a+s),o=!0)})})}function Ee(e,t,r){if(e.indexOf(t)===-1)return r;let n=e[e.indexOf(t)+1];if(!n||t==="scale"&&isNaN(n))return r;if(t==="duration"){let o=n.match(/([0-9]+)ms/);if(o)return o[1]}return t==="origin"&&["top","right","left","center","bottom"].includes(e[e.indexOf(t)+2])?[n,e[e.indexOf(t)+2]].join(" "):n}var Ue=!1;function Pe(e,t=()=>{}){return(...r)=>Ue?t(...r):e(...r)}function Jo(e){return(...t)=>Ue&&e(...t)}function Xo(e,t){t._x_dataStack||(t._x_dataStack=e._x_dataStack),Ue=!0,Zo(()=>{Ko(t)}),Ue=!1}function Ko(e){let t=!1;Y(e,(r,n)=>{Z(r,(o,i)=>{if(t&&Ro(o))return i();t=!0,n(o,i)})})}function Zo(e){let t=ve;dr((r,n)=>{let o=t(r);return $e(o),()=>{}}),e(),dr(t)}function tn(e,t,r,n=[]){switch(e._x_bindings||(e._x_bindings=_e({})),e._x_bindings[t]=r,t=n.includes("camel")?ni(t):t,t){case"value":Yo(e,r);break;case"style":Qo(e,r);break;case"class":Go(e,r);break;default:ei(e,t,r);break}}function Yo(e,t){if(e.type==="radio")e.attributes.value===void 0&&(e.value=t),window.fromModel&&(e.checked=hr(e.value,t));else if(e.type==="checkbox")Number.isInteger(t)?e.value=t:!Number.isInteger(t)&&!Array.isArray(t)&&typeof t!="boolean"&&![null,void 0].includes(t)?e.value=String(t):Array.isArray(t)?e.checked=t.some(r=>hr(r,e.value)):e.checked=!!t;else if(e.tagName==="SELECT")ri(e,t);else{if(e.value===t)return;e.value=t}}function Go(e,t){e._x_undoAddedClasses&&e._x_undoAddedClasses(),e._x_undoAddedClasses=Vt(e,t)}function Qo(e,t){e._x_undoAddedStyles&&e._x_undoAddedStyles(),e._x_undoAddedStyles=Ye(e,t)}function ei(e,t,r){[null,void 0,!1].includes(r)&&oi(t)?e.removeAttribute(t):(rn(t)&&(r=t),ti(e,t,r))}function ti(e,t,r){e.getAttribute(t)!=r&&e.setAttribute(t,r)}function ri(e,t){let r=[].concat(t).map(n=>n+"");Array.from(e.options).forEach(n=>{n.selected=r.includes(n.value)})}function ni(e){return e.toLowerCase().replace(/-(\w)/g,(t,r)=>r.toUpperCase())}function hr(e,t){return e==t}function rn(e){return["disabled","checked","required","readonly","hidden","open","selected","autofocus","itemscope","multiple","novalidate","allowfullscreen","allowpaymentrequest","formnovalidate","autoplay","controls","loop","muted","playsinline","default","ismap","reversed","async","defer","nomodule"].includes(e)}function oi(e){return!["aria-pressed","aria-checked","aria-expanded","aria-selected"].includes(e)}function ii(e,t,r){if(e._x_bindings&&e._x_bindings[t]!==void 0)return e._x_bindings[t];let n=e.getAttribute(t);return n===null?typeof r=="function"?r():r:n===""?!0:rn(t)?!![t,"true"].includes(n):n}function nn(e,t){var r;return function(){var n=this,o=arguments,i=function(){r=null,e.apply(n,o)};clearTimeout(r),r=setTimeout(i,t)}}function on(e,t){let r;return function(){let n=this,o=arguments;r||(e.apply(n,o),r=!0,setTimeout(()=>r=!1,t))}}function ai(e){e(Me)}var re={},_r=!1;function si(e,t){if(_r||(re=_e(re),_r=!0),t===void 0)return re[e];re[e]=t,typeof t=="object"&&t!==null&&t.hasOwnProperty("init")&&typeof t.init=="function"&&re[e].init(),$r(re[e])}function li(){return re}var an={};function ui(e,t){let r=typeof t!="function"?()=>t:t;e instanceof Element?sn(e,r()):an[e]=r}function ci(e){return Object.entries(an).forEach(([t,r])=>{Object.defineProperty(e,t,{get(){return(...n)=>r(...n)}})}),e}function sn(e,t,r){let n=[];for(;n.length;)n.pop()();let o=Object.entries(t).map(([a,s])=>({name:a,value:s})),i=Rr(o);o=o.map(a=>i.find(s=>s.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),It(e,o,r).map(a=>{n.push(a.runCleanups),a()})}var ln={};function fi(e,t){ln[e]=t}function di(e,t){return Object.entries(ln).forEach(([r,n])=>{Object.defineProperty(e,r,{get(){return(...o)=>n.bind(t)(...o)},enumerable:!1})}),e}var pi={get reactive(){return _e},get release(){return $e},get effect(){return ve},get raw(){return Er},version:"3.11.1",flushAndStopDeferringMutations:Eo,dontAutoEvaluateFunctions:Oo,disableEffectScheduling:mo,startObservingMutations:Mt,stopObservingMutations:Tr,setReactivityEngine:ho,closestDataStack:pe,skipDuringClone:Pe,onlyDuringClone:Jo,addRootSelector:Kr,addInitSelector:Zr,addScopeToNode:Le,deferMutations:wo,mapAttributes:qt,evaluateLater:M,interceptInit:Do,setEvaluator:Co,mergeProxies:Ne,findClosest:Ze,closestRoot:Ke,destroyTree:Gr,interceptor:Lr,transition:St,setStyles:Ye,mutateDom:$,directive:O,throttle:on,debounce:nn,evaluate:de,initTree:Y,nextTick:Wt,prefixed:ge,prefix:$o,plugin:ai,magic:F,store:si,start:Bo,clone:Xo,bound:ii,$data:jr,walk:Z,data:fi,bind:ui},Me=pi;function un(e,t){let r=Object.create(null),n=e.split(",");for(let o=0;o<n.length;o++)r[n[o]]=!0;return t?o=>!!r[o.toLowerCase()]:o=>!!r[o]}var mi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Xa=un(mi+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),hi=Object.freeze({}),Ka=Object.freeze([]),cn=Object.assign,_i=Object.prototype.hasOwnProperty,Ge=(e,t)=>_i.call(e,t),ie=Array.isArray,Se=e=>fn(e)==="[object Map]",vi=e=>typeof e=="string",Ht=e=>typeof e=="symbol",Qe=e=>e!==null&&typeof e=="object",gi=Object.prototype.toString,fn=e=>gi.call(e),dn=e=>fn(e).slice(8,-1),Ut=e=>vi(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,et=e=>{let t=Object.create(null);return r=>t[r]||(t[r]=e(r))},bi=/-(\w)/g,Za=et(e=>e.replace(bi,(t,r)=>r?r.toUpperCase():"")),xi=/\B([A-Z])/g,Ya=et(e=>e.replace(xi,"-$1").toLowerCase()),pn=et(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ga=et(e=>e?`on${pn(e)}`:""),mn=(e,t)=>e!==t&&(e===e||t===t),Tt=new WeakMap,ke=[],V,ae=Symbol("iterate"),jt=Symbol("Map key iterate");function yi(e){return e&&e._isEffect===!0}function wi(e,t=hi){yi(e)&&(e=e.raw);let r=Ai(e,t);return t.lazy||r(),r}function Ei(e){e.active&&(hn(e),e.options.onStop&&e.options.onStop(),e.active=!1)}var ki=0;function Ai(e,t){let r=function(){if(!r.active)return e();if(!ke.includes(r)){hn(r);try{return Ci(),ke.push(r),V=r,e()}finally{ke.pop(),_n(),V=ke[ke.length-1]}}};return r.id=ki++,r.allowRecurse=!!t.allowRecurse,r._isEffect=!0,r.active=!0,r.raw=e,r.deps=[],r.options=t,r}function hn(e){let{deps:t}=e;if(t.length){for(let r=0;r<t.length;r++)t[r].delete(e);t.length=0}}var he=!0,Jt=[];function Oi(){Jt.push(he),he=!1}function Ci(){Jt.push(he),he=!0}function _n(){let e=Jt.pop();he=e===void 0?!0:e}function z(e,t,r){if(!he||V===void 0)return;let n=Tt.get(e);n||Tt.set(e,n=new Map);let o=n.get(r);o||n.set(r,o=new Set),o.has(V)||(o.add(V),V.deps.push(o),V.options.onTrack&&V.options.onTrack({effect:V,target:e,type:t,key:r}))}function G(e,t,r,n,o,i){let a=Tt.get(e);if(!a)return;let s=new Set,l=f=>{f&&f.forEach(d=>{(d!==V||d.allowRecurse)&&s.add(d)})};if(t==="clear")a.forEach(l);else if(r==="length"&&ie(e))a.forEach((f,d)=>{(d==="length"||d>=n)&&l(f)});else switch(r!==void 0&&l(a.get(r)),t){case"add":ie(e)?Ut(r)&&l(a.get("length")):(l(a.get(ae)),Se(e)&&l(a.get(jt)));break;case"delete":ie(e)||(l(a.get(ae)),Se(e)&&l(a.get(jt)));break;case"set":Se(e)&&l(a.get(ae));break}let u=f=>{f.options.onTrigger&&f.options.onTrigger({effect:f,target:e,key:r,type:t,newValue:n,oldValue:o,oldTarget:i}),f.options.scheduler?f.options.scheduler(f):f()};s.forEach(u)}var Si=un("__proto__,__v_isRef,__isVue"),vn=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(Ht)),Ti=tt(),ji=tt(!1,!0),$i=tt(!0),Li=tt(!0,!0),Je={};["includes","indexOf","lastIndexOf"].forEach(e=>{let t=Array.prototype[e];Je[e]=function(...r){let n=w(this);for(let i=0,a=this.length;i<a;i++)z(n,"get",i+"");let o=t.apply(n,r);return o===-1||o===!1?t.apply(n,r.map(w)):o}});["push","pop","shift","unshift","splice"].forEach(e=>{let t=Array.prototype[e];Je[e]=function(...r){Oi();let n=t.apply(this,r);return _n(),n}});function tt(e=!1,t=!1){return function(r,n,o){if(n==="__v_isReactive")return!e;if(n==="__v_isReadonly")return e;if(n==="__v_raw"&&o===(e?t?Fi:$n:t?zi:jn).get(r))return r;let i=ie(r);if(!e&&i&&Ge(Je,n))return Reflect.get(Je,n,o);let a=Reflect.get(r,n,o);return(Ht(n)?vn.has(n):Si(n))||(e||z(r,"get",n),t)?a:$t(a)?!i||!Ut(n)?a.value:a:Qe(a)?e?Ln(a):Yt(a):a}}var Ni=gn(),Pi=gn(!0);function gn(e=!1){return function(t,r,n,o){let i=t[r];if(!e&&(n=w(n),i=w(i),!ie(t)&&$t(i)&&!$t(n)))return i.value=n,!0;let a=ie(t)&&Ut(r)?Number(r)<t.length:Ge(t,r),s=Reflect.set(t,r,n,o);return t===w(o)&&(a?mn(n,i)&&G(t,"set",r,n,i):G(t,"add",r,n)),s}}function Mi(e,t){let r=Ge(e,t),n=e[t],o=Reflect.deleteProperty(e,t);return o&&r&&G(e,"delete",t,void 0,n),o}function Bi(e,t){let r=Reflect.has(e,t);return(!Ht(t)||!vn.has(t))&&z(e,"has",t),r}function Ri(e){return z(e,"iterate",ie(e)?"length":ae),Reflect.ownKeys(e)}var bn={get:Ti,set:Ni,deleteProperty:Mi,has:Bi,ownKeys:Ri},xn={get:$i,set(e,t){return console.warn(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0},deleteProperty(e,t){return console.warn(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0}},Qa=cn({},bn,{get:ji,set:Pi}),es=cn({},xn,{get:Li}),Xt=e=>Qe(e)?Yt(e):e,Kt=e=>Qe(e)?Ln(e):e,Zt=e=>e,rt=e=>Reflect.getPrototypeOf(e);function nt(e,t,r=!1,n=!1){e=e.__v_raw;let o=w(e),i=w(t);t!==i&&!r&&z(o,"get",t),!r&&z(o,"get",i);let{has:a}=rt(o),s=n?Zt:r?Kt:Xt;if(a.call(o,t))return s(e.get(t));if(a.call(o,i))return s(e.get(i));e!==o&&e.get(t)}function ot(e,t=!1){let r=this.__v_raw,n=w(r),o=w(e);return e!==o&&!t&&z(n,"has",e),!t&&z(n,"has",o),e===o?r.has(e):r.has(e)||r.has(o)}function it(e,t=!1){return e=e.__v_raw,!t&&z(w(e),"iterate",ae),Reflect.get(e,"size",e)}function yn(e){e=w(e);let t=w(this);return rt(t).has.call(t,e)||(t.add(e),G(t,"add",e,e)),this}function wn(e,t){t=w(t);let r=w(this),{has:n,get:o}=rt(r),i=n.call(r,e);i?Tn(r,n,e):(e=w(e),i=n.call(r,e));let a=o.call(r,e);return r.set(e,t),i?mn(t,a)&&G(r,"set",e,t,a):G(r,"add",e,t),this}function En(e){let t=w(this),{has:r,get:n}=rt(t),o=r.call(t,e);o?Tn(t,r,e):(e=w(e),o=r.call(t,e));let i=n?n.call(t,e):void 0,a=t.delete(e);return o&&G(t,"delete",e,void 0,i),a}function kn(){let e=w(this),t=e.size!==0,r=Se(e)?new Map(e):new Set(e),n=e.clear();return t&&G(e,"clear",void 0,void 0,r),n}function at(e,t){return function(r,n){let o=this,i=o.__v_raw,a=w(i),s=t?Zt:e?Kt:Xt;return!e&&z(a,"iterate",ae),i.forEach((l,u)=>r.call(n,s(l),s(u),o))}}function Fe(e,t,r){return function(...n){let o=this.__v_raw,i=w(o),a=Se(i),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=o[e](...n),f=r?Zt:t?Kt:Xt;return!t&&z(i,"iterate",l?jt:ae),{next(){let{value:d,done:h}=u.next();return h?{value:d,done:h}:{value:s?[f(d[0]),f(d[1])]:f(d),done:h}},[Symbol.iterator](){return this}}}}function K(e){return function(...t){{let r=t[0]?`on key "${t[0]}" `:"";console.warn(`${pn(e)} operation ${r}failed: target is readonly.`,w(this))}return e==="delete"?!1:this}}var An={get(e){return nt(this,e)},get size(){return it(this)},has:ot,add:yn,set:wn,delete:En,clear:kn,forEach:at(!1,!1)},On={get(e){return nt(this,e,!1,!0)},get size(){return it(this)},has:ot,add:yn,set:wn,delete:En,clear:kn,forEach:at(!1,!0)},Cn={get(e){return nt(this,e,!0)},get size(){return it(this,!0)},has(e){return ot.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:at(!0,!1)},Sn={get(e){return nt(this,e,!0,!0)},get size(){return it(this,!0)},has(e){return ot.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:at(!0,!0)},Di=["keys","values","entries",Symbol.iterator];Di.forEach(e=>{An[e]=Fe(e,!1,!1),Cn[e]=Fe(e,!0,!1),On[e]=Fe(e,!1,!0),Sn[e]=Fe(e,!0,!0)});function st(e,t){let r=t?e?Sn:On:e?Cn:An;return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(Ge(r,o)&&o in n?r:n,o,i)}var Ii={get:st(!1,!1)},ts={get:st(!1,!0)},qi={get:st(!0,!1)},rs={get:st(!0,!0)};function Tn(e,t,r){let n=w(r);if(n!==r&&t.call(e,n)){let o=dn(e);console.warn(`Reactive ${o} contains both the raw and reactive versions of the same object${o==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}var jn=new WeakMap,zi=new WeakMap,$n=new WeakMap,Fi=new WeakMap;function Wi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Vi(e){return e.__v_skip||!Object.isExtensible(e)?0:Wi(dn(e))}function Yt(e){return e&&e.__v_isReadonly?e:Nn(e,!1,bn,Ii,jn)}function Ln(e){return Nn(e,!0,xn,qi,$n)}function Nn(e,t,r,n,o){if(!Qe(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;let i=o.get(e);if(i)return i;let a=Vi(e);if(a===0)return e;let s=new Proxy(e,a===2?n:r);return o.set(e,s),s}function w(e){return e&&w(e.__v_raw)||e}function $t(e){return Boolean(e&&e.__v_isRef===!0)}F("nextTick",()=>Wt);F("dispatch",e=>Ce.bind(Ce,e));F("watch",(e,{evaluateLater:t,effect:r})=>(n,o)=>{let i=t(n),a=!0,s,l=r(()=>i(u=>{JSON.stringify(u),a?s=u:queueMicrotask(()=>{o(u,s),s=u}),a=!1}));e._x_effects.delete(l)});F("store",li);F("data",e=>jr(e));F("root",e=>Ke(e));F("refs",e=>(e._x_refs_proxy||(e._x_refs_proxy=Ne(Hi(e))),e._x_refs_proxy));function Hi(e){let t=[],r=e;for(;r;)r._x_refs&&t.push(r._x_refs),r=r.parentNode;return t}var _t={};function Pn(e){return _t[e]||(_t[e]=0),++_t[e]}function Ui(e,t){return Ze(e,r=>{if(r._x_ids&&r._x_ids[t])return!0})}function Ji(e,t){e._x_ids||(e._x_ids={}),e._x_ids[t]||(e._x_ids[t]=Pn(t))}F("id",e=>(t,r=null)=>{let n=Ui(e,t),o=n?n._x_ids[t]:Pn(t);return r?`${t}-${o}-${r}`:`${t}-${o}`});F("el",e=>e);Mn("Focus","focus","focus");Mn("Persist","persist","persist");function Mn(e,t,r){F(t,n=>me(`You can't use [$${directiveName}] without first installing the "${e}" plugin here: https://alpinejs.dev/plugins/${r}`,n))}function Xi({get:e,set:t},{get:r,set:n}){let o=!0,i,a,s,l,u=ve(()=>{let f,d;o?(f=e(),n(f),d=r(),o=!1):(f=e(),d=r(),s=JSON.stringify(f),l=JSON.stringify(d),s!==i?(d=r(),n(f),d=f):(t(d),f=d)),i=JSON.stringify(f),a=JSON.stringify(d)});return()=>{$e(u)}}O("modelable",(e,{expression:t},{effect:r,evaluateLater:n,cleanup:o})=>{let i=n(t),a=()=>{let f;return i(d=>f=d),f},s=n(`${t} = __placeholder`),l=f=>s(()=>{},{scope:{__placeholder:f}}),u=a();l(u),queueMicrotask(()=>{if(!e._x_model)return;e._x_removeModelListeners.default();let f=e._x_model.get,d=e._x_model.set,h=Xi({get(){return f()},set(A){d(A)}},{get(){return a()},set(A){l(A)}});o(h)})});var Ki=document.createElement("div");O("teleport",(e,{modifiers:t,expression:r},{cleanup:n})=>{e.tagName.toLowerCase()!=="template"&&me("x-teleport can only be used on a <template> tag",e);let o=Pe(()=>document.querySelector(r),()=>Ki)();o||me(`Cannot find x-teleport element for selector: "${r}"`);let i=e.content.cloneNode(!0).firstElementChild;e._x_teleport=i,i._x_teleportBack=e,e._x_forwardEvents&&e._x_forwardEvents.forEach(a=>{i.addEventListener(a,s=>{s.stopPropagation(),e.dispatchEvent(new s.constructor(s.type,s))})}),Le(i,{},e),$(()=>{t.includes("prepend")?o.parentNode.insertBefore(i,o):t.includes("append")?o.parentNode.insertBefore(i,o.nextSibling):o.appendChild(i),Y(i),i._x_ignore=!0}),n(()=>i.remove())});var Bn=()=>{};Bn.inline=(e,{modifiers:t},{cleanup:r})=>{t.includes("self")?e._x_ignoreSelf=!0:e._x_ignore=!0,r(()=>{t.includes("self")?delete e._x_ignoreSelf:delete e._x_ignore})};O("ignore",Bn);O("effect",(e,{expression:t},{effect:r})=>r(M(e,t)));function Lt(e,t,r,n){let o=e,i=l=>n(l),a={},s=(l,u)=>f=>u(l,f);if(r.includes("dot")&&(t=Zi(t)),r.includes("camel")&&(t=Yi(t)),r.includes("passive")&&(a.passive=!0),r.includes("capture")&&(a.capture=!0),r.includes("window")&&(o=window),r.includes("document")&&(o=document),r.includes("prevent")&&(i=s(i,(l,u)=>{u.preventDefault(),l(u)})),r.includes("stop")&&(i=s(i,(l,u)=>{u.stopPropagation(),l(u)})),r.includes("self")&&(i=s(i,(l,u)=>{u.target===e&&l(u)})),(r.includes("away")||r.includes("outside"))&&(o=document,i=s(i,(l,u)=>{e.contains(u.target)||u.target.isConnected!==!1&&(e.offsetWidth<1&&e.offsetHeight<1||e._x_isShown!==!1&&l(u))})),r.includes("once")&&(i=s(i,(l,u)=>{l(u),o.removeEventListener(t,i,a)})),i=s(i,(l,u)=>{Qi(t)&&ea(u,r)||l(u)}),r.includes("debounce")){let l=r[r.indexOf("debounce")+1]||"invalid-wait",u=Xe(l.split("ms")[0])?Number(l.split("ms")[0]):250;i=nn(i,u)}if(r.includes("throttle")){let l=r[r.indexOf("throttle")+1]||"invalid-wait",u=Xe(l.split("ms")[0])?Number(l.split("ms")[0]):250;i=on(i,u)}return o.addEventListener(t,i,a),()=>{o.removeEventListener(t,i,a)}}function Zi(e){return e.replace(/-/g,".")}function Yi(e){return e.toLowerCase().replace(/-(\w)/g,(t,r)=>r.toUpperCase())}function Xe(e){return!Array.isArray(e)&&!isNaN(e)}function Gi(e){return[" ","_"].includes(e)?e:e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[_\s]/,"-").toLowerCase()}function Qi(e){return["keydown","keyup"].includes(e)}function ea(e,t){let r=t.filter(o=>!["window","document","prevent","stop","once"].includes(o));if(r.includes("debounce")){let o=r.indexOf("debounce");r.splice(o,Xe((r[o+1]||"invalid-wait").split("ms")[0])?2:1)}if(r.includes("throttle")){let o=r.indexOf("throttle");r.splice(o,Xe((r[o+1]||"invalid-wait").split("ms")[0])?2:1)}if(r.length===0||r.length===1&&vr(e.key).includes(r[0]))return!1;let n=["ctrl","shift","alt","meta","cmd","super"].filter(o=>r.includes(o));return r=r.filter(o=>!n.includes(o)),!(n.length>0&&n.filter(o=>((o==="cmd"||o==="super")&&(o="meta"),e[`${o}Key`])).length===n.length&&vr(e.key).includes(r[0]))}function vr(e){if(!e)return[];e=Gi(e);let t={ctrl:"control",slash:"/",space:" ",spacebar:" ",cmd:"meta",esc:"escape",up:"arrow-up",down:"arrow-down",left:"arrow-left",right:"arrow-right",period:".",equal:"=",minus:"-",underscore:"_"};return t[e]=e,Object.keys(t).map(r=>{if(t[r]===e)return r}).filter(r=>r)}O("model",(e,{modifiers:t,expression:r},{effect:n,cleanup:o})=>{let i=e;t.includes("parent")&&(i=e.parentNode);let a=M(i,r),s;typeof r=="string"?s=M(i,`${r} = __placeholder`):typeof r=="function"&&typeof r()=="string"?s=M(i,`${r()} = __placeholder`):s=()=>{};let l=()=>{let h;return a(A=>h=A),gr(h)?h.get():h},u=h=>{let A;a(q=>A=q),gr(A)?A.set(h):s(()=>{},{scope:{__placeholder:h}})};typeof r=="string"&&e.type==="radio"&&$(()=>{e.hasAttribute("name")||e.setAttribute("name",r)});var f=e.tagName.toLowerCase()==="select"||["checkbox","radio"].includes(e.type)||t.includes("lazy")?"change":"input";let d=Lt(e,f,t,h=>{u(ta(e,t,h,l()))});if(e._x_removeModelListeners||(e._x_removeModelListeners={}),e._x_removeModelListeners.default=d,o(()=>e._x_removeModelListeners.default()),e.form){let h=Lt(e.form,"reset",[],A=>{Wt(()=>e._x_model&&e._x_model.set(e.value))});o(()=>h())}e._x_model={get(){return l()},set(h){u(h)}},e._x_forceModelUpdate=h=>{h=h===void 0?l():h,h===void 0&&typeof r=="string"&&r.match(/\./)&&(h=""),window.fromModel=!0,$(()=>tn(e,"value",h)),delete window.fromModel},n(()=>{let h=l();t.includes("unintrusive")&&document.activeElement.isSameNode(e)||e._x_forceModelUpdate(h)})});function ta(e,t,r,n){return $(()=>{if(r instanceof CustomEvent&&r.detail!==void 0)return typeof r.detail<"u"?r.detail:r.target.value;if(e.type==="checkbox")if(Array.isArray(n)){let o=t.includes("number")?vt(r.target.value):r.target.value;return r.target.checked?n.concat([o]):n.filter(i=>!ra(i,o))}else return r.target.checked;else{if(e.tagName.toLowerCase()==="select"&&e.multiple)return t.includes("number")?Array.from(r.target.selectedOptions).map(o=>{let i=o.value||o.text;return vt(i)}):Array.from(r.target.selectedOptions).map(o=>o.value||o.text);{let o=r.target.value;return t.includes("number")?vt(o):t.includes("trim")?o.trim():o}}})}function vt(e){let t=e?parseFloat(e):null;return na(t)?t:e}function ra(e,t){return e==t}function na(e){return!Array.isArray(e)&&!isNaN(e)}function gr(e){return e!==null&&typeof e=="object"&&typeof e.get=="function"&&typeof e.set=="function"}O("cloak",e=>queueMicrotask(()=>$(()=>e.removeAttribute(ge("cloak")))));Zr(()=>`[${ge("init")}]`);O("init",Pe((e,{expression:t},{evaluate:r})=>typeof t=="string"?!!t.trim()&&r(t,{},!1):r(t,{},!1)));O("text",(e,{expression:t},{effect:r,evaluateLater:n})=>{let o=n(t);r(()=>{o(i=>{$(()=>{e.textContent=i})})})});O("html",(e,{expression:t},{effect:r,evaluateLater:n})=>{let o=n(t);r(()=>{o(i=>{$(()=>{e.innerHTML=i,e._x_ignoreSelf=!0,Y(e),delete e._x_ignoreSelf})})})});qt(qr(":",zr(ge("bind:"))));O("bind",(e,{value:t,modifiers:r,expression:n,original:o},{effect:i})=>{if(!t){let s={};ci(s),M(e,n)(l=>{sn(e,l,o)},{scope:s});return}if(t==="key")return oa(e,n);let a=M(e,n);i(()=>a(s=>{s===void 0&&typeof n=="string"&&n.match(/\./)&&(s=""),$(()=>tn(e,t,s,r))}))});function oa(e,t){e._x_keyExpression=t}Kr(()=>`[${ge("data")}]`);O("data",Pe((e,{expression:t},{cleanup:r})=>{t=t===""?"{}":t;let n={};yt(n,e);let o={};di(o,n);let i=de(e,t,{scope:o});i===void 0&&(i={}),yt(i,e);let a=_e(i);$r(a);let s=Le(e,a);a.init&&de(e,a.init),r(()=>{a.destroy&&de(e,a.destroy),s()})}));O("show",(e,{modifiers:t,expression:r},{effect:n})=>{let o=M(e,r);e._x_doHide||(e._x_doHide=()=>{$(()=>{e.style.setProperty("display","none",t.includes("important")?"important":void 0)})}),e._x_doShow||(e._x_doShow=()=>{$(()=>{e.style.length===1&&e.style.display==="none"?e.removeAttribute("style"):e.style.removeProperty("display")})});let i=()=>{e._x_doHide(),e._x_isShown=!1},a=()=>{e._x_doShow(),e._x_isShown=!0},s=()=>setTimeout(a),l=Ct(d=>d?a():i(),d=>{typeof e._x_toggleAndCascadeWithTransitions=="function"?e._x_toggleAndCascadeWithTransitions(e,d,a,i):d?s():i()}),u,f=!0;n(()=>o(d=>{!f&&d===u||(t.includes("immediate")&&(d?s():i()),l(d),u=d,f=!1)}))});O("for",(e,{expression:t},{effect:r,cleanup:n})=>{let o=aa(t),i=M(e,o.items),a=M(e,e._x_keyExpression||"index");e._x_prevKeys=[],e._x_lookup={},r(()=>ia(e,o,i,a)),n(()=>{Object.values(e._x_lookup).forEach(s=>s.remove()),delete e._x_prevKeys,delete e._x_lookup})});function ia(e,t,r,n){let o=a=>typeof a=="object"&&!Array.isArray(a),i=e;r(a=>{sa(a)&&a>=0&&(a=Array.from(Array(a).keys(),p=>p+1)),a===void 0&&(a=[]);let s=e._x_lookup,l=e._x_prevKeys,u=[],f=[];if(o(a))a=Object.entries(a).map(([p,b])=>{let k=br(t,b,p,a);n(T=>f.push(T),{scope:Te({index:p},k)}),u.push(k)});else for(let p=0;p<a.length;p++){let b=br(t,a[p],p,a);n(k=>f.push(k),{scope:Te({index:p},b)}),u.push(b)}let d=[],h=[],A=[],q=[];for(let p=0;p<l.length;p++){let b=l[p];f.indexOf(b)===-1&&A.push(b)}l=l.filter(p=>!A.includes(p));let ue="template";for(let p=0;p<f.length;p++){let b=f[p],k=l.indexOf(b);if(k===-1)l.splice(p,0,b),d.push([ue,p]);else if(k!==p){let T=l.splice(p,1)[0],j=l.splice(k-1,1)[0];l.splice(p,0,j),l.splice(k,0,T),h.push([T,j])}else q.push(b);ue=b}for(let p=0;p<A.length;p++){let b=A[p];s[b]._x_effects&&s[b]._x_effects.forEach(wr),s[b].remove(),s[b]=null,delete s[b]}for(let p=0;p<h.length;p++){let[b,k]=h[p],T=s[b],j=s[k],te=document.createElement("div");$(()=>{j.after(te),T.after(j),j._x_currentIfEl&&j.after(j._x_currentIfEl),te.before(T),T._x_currentIfEl&&T.after(T._x_currentIfEl),te.remove()}),pr(j,u[f.indexOf(k)])}for(let p=0;p<d.length;p++){let[b,k]=d[p],T=b==="template"?i:s[b];T._x_currentIfEl&&(T=T._x_currentIfEl);let j=u[k],te=f[k],X=document.importNode(i.content,!0).firstElementChild;Le(X,_e(j),i),$(()=>{T.after(X),Y(X)}),typeof te=="object"&&me("x-for key cannot be an object, it must be a string or an integer",i),s[te]=X}for(let p=0;p<q.length;p++)pr(s[q[p]],u[f.indexOf(q[p])]);i._x_prevKeys=f})}function aa(e){let t=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,r=/^\s*\(|\)\s*$/g,n=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,o=e.match(n);if(!o)return;let i={};i.items=o[2].trim();let a=o[1].replace(r,"").trim(),s=a.match(t);return s?(i.item=a.replace(t,"").trim(),i.index=s[1].trim(),s[2]&&(i.collection=s[2].trim())):i.item=a,i}function br(e,t,r,n){let o={};return/^\[.*\]$/.test(e.item)&&Array.isArray(t)?e.item.replace("[","").replace("]","").split(",").map(i=>i.trim()).forEach((i,a)=>{o[i]=t[a]}):/^\{.*\}$/.test(e.item)&&!Array.isArray(t)&&typeof t=="object"?e.item.replace("{","").replace("}","").split(",").map(i=>i.trim()).forEach(i=>{o[i]=t[i]}):o[e.item]=t,e.index&&(o[e.index]=r),e.collection&&(o[e.collection]=n),o}function sa(e){return!Array.isArray(e)&&!isNaN(e)}function Rn(){}Rn.inline=(e,{expression:t},{cleanup:r})=>{let n=Ke(e);n._x_refs||(n._x_refs={}),n._x_refs[t]=e,r(()=>delete n._x_refs[t])};O("ref",Rn);O("if",(e,{expression:t},{effect:r,cleanup:n})=>{let o=M(e,t),i=()=>{if(e._x_currentIfEl)return e._x_currentIfEl;let s=e.content.cloneNode(!0).firstElementChild;return Le(s,{},e),$(()=>{e.after(s),Y(s)}),e._x_currentIfEl=s,e._x_undoIf=()=>{Z(s,l=>{l._x_effects&&l._x_effects.forEach(wr)}),s.remove(),delete e._x_currentIfEl},s},a=()=>{e._x_undoIf&&(e._x_undoIf(),delete e._x_undoIf)};r(()=>o(s=>{s?i():a()})),n(()=>e._x_undoIf&&e._x_undoIf())});O("id",(e,{expression:t},{evaluate:r})=>{r(t).forEach(n=>Ji(e,n))});qt(qr("@",zr(ge("on:"))));O("on",Pe((e,{value:t,modifiers:r,expression:n},{cleanup:o})=>{let i=n?M(e,n):()=>{};e.tagName.toLowerCase()==="template"&&(e._x_forwardEvents||(e._x_forwardEvents=[]),e._x_forwardEvents.includes(t)||e._x_forwardEvents.push(t));let a=Lt(e,t,r,s=>{i(()=>{},{scope:{$event:s},params:[s]})});o(()=>a())}));lt("Collapse","collapse","collapse");lt("Intersect","intersect","intersect");lt("Focus","trap","focus");lt("Mask","mask","mask");function lt(e,t,r){O(t,n=>me(`You can't use [x-${t}] without first installing the "${e}" plugin here: https://alpinejs.dev/plugins/${r}`,n))}Me.setEvaluator(Br);Me.setReactivityEngine({reactive:Yt,effect:wi,release:Ei,raw:w});var la=Me,Dn=la;function ua(e){let t=document.createElement("template");return t.innerHTML=e,t.content.firstElementChild}function ca(e){return e.nodeType===3||e.nodeType===8}var y={replace(e,t,r){let n=e.indexOf(t);if(n===-1)throw"Cant find element in children";return t.replaceWith(r),e[n]=r,e},before(e,t,r){let n=e.indexOf(t);if(n===-1)throw"Cant find element in children";return t.before(r),e.splice(n,0,r),e},append(e,t,r){let n=e[e.length-1];return r(t),e.push(t),e},remove(e,t){if(e.indexOf(t)===-1)throw"Cant find element in children";return t.remove(),e.filter(r=>r!==t)},first(e){return this.teleportTo(e[0])},next(e,t){let r=e.indexOf(t);if(r!==-1)return this.teleportTo(this.teleportBack(e[r+1]))},teleportTo(e){return e&&(e._x_teleport?e._x_teleport:e)},teleportBack(e){return e&&(e._x_teleportBack?e._x_teleportBack:e)}},fa=()=>{},da=()=>{};function Gt(e,t,r){let n,o,i,a,s,l,u,f,d,h;function A(c={}){let m=S=>S.getAttribute("key"),g=()=>{};s=c.updating||g,l=c.updated||g,u=c.removing||g,f=c.removed||g,d=c.adding||g,h=c.added||g,i=c.key||m,a=c.lookahead||!1}function q(c,m){if(ue(c,m))return p(c,m);let g=!1;if(!ce(s,c,m,()=>g=!0)){if(window.Alpine&&pa(c,m,()=>g=!0),ca(m)){b(c,m),l(c,m);return}g||k(c,m),l(c,m),T(Array.from(c.childNodes),Array.from(m.childNodes),S=>{c.appendChild(S)})}}function ue(c,m){return c.nodeType!=m.nodeType||c.nodeName!=m.nodeName||j(c)!=j(m)}function p(c,m){if(ce(u,c))return;let g=m.cloneNode(!0);ce(d,g)||(y.replace([c],c,g),f(c),h(g))}function b(c,m){let g=m.nodeValue;c.nodeValue!==g&&(c.nodeValue=g)}function k(c,m){if(c._x_isShown&&!m._x_isShown||!c._x_isShown&&m._x_isShown)return;let g=Array.from(c.attributes),S=Array.from(m.attributes);for(let L=g.length-1;L>=0;L--){let v=g[L].name;m.hasAttribute(v)||c.removeAttribute(v)}for(let L=S.length-1;L>=0;L--){let v=S[L].name,_=S[L].value;c.getAttribute(v)!==_&&c.setAttribute(v,_)}}function T(c,m,g){let S={},L={},v=y.first(m),_=y.first(c);for(;v;){let R=j(v),W=j(_);if(!_)if(R&&L[R]){let E=L[R];c=y.append(c,E,g),_=E}else{if(!ce(d,v)){let E=v.cloneNode(!0);c=y.append(c,E,g),h(E)}v=y.next(m,v);continue}let qe=E=>E.nodeType===8&&E.textContent===" __BLOCK__ ",ze=E=>E.nodeType===8&&E.textContent===" __ENDBLOCK__ ";if(qe(v)&&qe(_)){let E=[],we,U=0;for(;_;){let N=y.next(c,_);if(qe(N))U++;else if(ze(N)&&U>0)U--;else if(ze(N)&&U===0){_=y.next(c,N),we=N;break}E.push(N),_=N}let sr=[];for(U=0;v;){let N=y.next(m,v);if(qe(N))U++;else if(ze(N)&&U>0)U--;else if(ze(N)&&U===0){v=y.next(m,N);break}sr.push(N),v=N}T(E,sr,N=>we.before(N));continue}if(_.nodeType===1&&a){let E=y.next(m,v),we=!1;for(;!we&&E;)_.isEqualNode(E)&&(we=!0,[c,_]=X(c,v,_),W=j(_)),E=y.next(m,E)}if(R!==W){if(!R&&W){L[W]=_,[c,_]=X(c,v,_),c=y.remove(c,L[W]),_=y.next(c,_),v=y.next(m,v);continue}if(R&&!W&&S[R]&&(c=y.replace(c,_,S[R]),_=S[R]),R&&W){let E=S[R];if(E)L[W]=_,c=y.replace(c,_,E),_=E;else{L[W]=_,[c,_]=X(c,v,_),c=y.remove(c,L[W]),_=y.next(c,_),v=y.next(m,v);continue}}}let Gn=_&&y.next(c,_);q(_,v),v=v&&y.next(m,v),_=Gn}let pt=[];for(;_;)ce(u,_)||pt.push(_),_=y.next(c,_);for(;pt.length;){let R=pt.shift();R.remove(),f(R)}}function j(c){return c&&c.nodeType===1&&i(c)}function te(c){let m={};return c.forEach(g=>{let S=j(g);S&&(m[S]=g)}),m}function X(c,m,g){if(!ce(d,m)){let S=m.cloneNode(!0);return c=y.before(c,g,S),h(S),[c,S]}return[c,m]}return A(r),n=e,o=typeof t=="string"?ua(t):t,window.Alpine&&window.Alpine.closestDataStack&&!e._x_dataStack&&(o._x_dataStack=window.Alpine.closestDataStack(e),o._x_dataStack&&window.Alpine.clone(e,o)),q(e,o),n=void 0,o=void 0,e}Gt.step=()=>fa();Gt.log=e=>{da=e};function ce(e,...t){let r=!1;return e(...t,()=>r=!0),r}function pa(e,t,r){e.nodeType===1&&e._x_dataStack&&window.Alpine.clone(e,t)}function ma(e){e.morph=Gt}var ha=ma;Dn.plugin(ha);var _a=/INPUT/i,va=/date|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/i,ga=/TEXTAREA/i;function ba(e,t,r,n){if(!(e.nodeType!==Node.ELEMENT_NODE||e!==document.activeElement)&&(e.tagName.match(ga)||e.tagName.match(_a)&&e.getAttribute("type").match(va)))return n()}function xa(e,t){Dn.morph(e,t,{updating:ba})}var fe={before:"turbo-boost:stream:before-invoke",after:"turbo-boost:stream:after-invoke",finish:"turbo-boost:stream:finish-invoke"};function ut(e,t,r){let{object:n,target:o}=e;t=t||{},t=yr(Te({},t),{object:e.object});let i={detail:t,bubbles:!0};o.dispatchEvent(new CustomEvent(fe.before,i));let{delay:a}=t.invoke||{};a=a||0;let s=()=>{let l=r(n);i.detail.result=l,o.dispatchEvent(new CustomEvent(fe.after,i));let u;l instanceof Animation&&(u=l.finished),l instanceof Promise&&(u=l),u?u.then(()=>{i.detail.promise="fulfilled",o.dispatchEvent(new CustomEvent(fe.finish,i))},()=>{i.detail.promise="rejected",o.dispatchEvent(new CustomEvent(fe.finish,i))}):o.dispatchEvent(new CustomEvent(fe.finish,i))};a>0?setTimeout(s,a):s()}function ya(e,t,r){let n=t[0],o=t[1],i={method:e,eventName:n,eventOptions:o};r.forEach(a=>ut(a,i,s=>s.dispatchEvent(new CustomEvent(n,o))))}function wa(e,t,r){let n=t[0],o={method:e,html:n};r.forEach(i=>ut(i,o,a=>xa(a,n)))}function Ea(e,t,r){let n=e.slice(0,-1).trim(),o=t[0],i={method:e,property:n,value:o};r.forEach(a=>ut(a,i,s=>s[n]=o))}function ka(e,t,r){let n={method:e,args:t};r.forEach(o=>ut(o,n,i=>i[e].apply(i,t)))}function xr(e,t,r){return e.match(/^dispatch(Event)?$/)?ya(e,t,r):e.match(/^morph|mutate$/)?wa(e,t,r):e.endsWith("=")?Ea(e,t,r):ka(e,t,r)}function In(){let e=JSON.parse(this.templateContent.textContent),{id:t,selector:r,receiver:n,method:o,args:i,delay:a}=e,s=[{object:self,target:self}];r&&(s=Array.from(document.querySelectorAll(r)).map(l=>({object:l,target:l}))),n&&(s=s.map(l=>{let{object:u,target:f}=l,d=n.split(".");for(;d.length>0;)u=u[d.shift()],u.dispatchEvent&&(f=u);return{object:u,target:f}})),a>0?setTimeout(()=>xr(o,i,s),a):xr(o,i,s)}if(!self.Turbo)throw new Error("`Turbo` is not defined! Be sure to import `@turbo-boost/streams` after `@hotwired/turbo` or `@hotwired/turbo-rails`.");if(!Turbo.StreamActions)throw new Error("`Turbo.StreamActions` is not defined! Verify that you are running >= `7.2.0` of `@hotwired/turbo`.");Turbo.StreamActions.invoke=In;self.TurboBoost=self.TurboBoost||{};self.TurboBoost.Streams={invoke:In,invokeEvents:fe};console.info("@turbo-boost/streams has initialized and registered new stream actions with Turbo.");var ns=self.TurboBoost.Streams;var Qt=class{get element(){return document.querySelector('meta[name="turbo-boost"]')}get token(){return this.element.getAttribute("content")}get busy(){return this.element.dataset.busy==="true"}set busy(t){return this.element.dataset.busy=!!t}},C=new Qt;var B={start:"turbo-boost:command:start",success:"turbo-boost:command:success",finish:"turbo-boost:command:finish",abort:"turbo-boost:command:abort",clientError:"turbo-boost:command:client-error",serverError:"turbo-boost:command:server-error"},H={stateLoad:"turbo-boost:state:load",stateChange:"turbo-boost:state:change"},J=x(x({},B),H);function P(e,t,r={}){r=r||{},r.detail=r.detail||{},t=t||document;let n=new CustomEvent(e,D(x({},r),{bubbles:!0}));return t.dispatchEvent(n),n}var er;function ct(e,t=null){if(!e||typeof e!="object")return e;let r=new Proxy(e,{deleteProperty(n,o){return delete n[o],P(H.stateChange,C.element,{detail:{state:er}}),!0},set(n,o,i,a){return n[o]=ct(i,this),P(H.stateChange,C.element,{detail:{state:er}}),!0}});if(Array.isArray(e))e.forEach((n,o)=>e[o]=ct(n,r));else if(typeof e=="object")for(let[n,o]of Object.entries(e))e[n]=ct(o,r);return t||(er=r),r}var qn=ct;var tr,be,Be,zn;function Fn(){if(!C.element)return xe();let e=atob(C.element.dataset.state);Be={},be=qn(JSON.parse(e)),tr=x({},be),delete C.element.dataset.clientStateChange,setTimeout(()=>P(H.stateLoad,C.element,{detail:{state:be}}))}function xe(){clearTimeout(zn),zn=setTimeout(Fn,10)}tr||Fn();addEventListener("DOMContentLoaded",xe);addEventListener("load",xe);addEventListener("turbo:load",xe);addEventListener("turbo:frame-load",xe);addEventListener(B.success,xe);addEventListener(H.stateChange,e=>{Be={};for(let[t,r]of Object.entries(be))tr[t]!==r&&(Be[t]=r);C.element.dataset.clientStateChange=!0,C.element.dataset.state=btoa(JSON.stringify(be))});var se={events:H,get current(){return be},get delta(){return Be},get payloadChunks(){return btoa(JSON.stringify(Be)).match(/.{1,2000}/g)}};function Aa(e){let t="<html",r="</html",n=e.indexOf(t),o=e.lastIndexOf(r);if(n>=0&&o>=0){let i=e.slice(e.indexOf(">",n)+1,o);document.documentElement.innerHTML=i}}function Oa(e){document.body.insertAdjacentHTML("beforeend",e)}var le={append:Oa,replaceDocument:Aa};var ft={};function Ca(e){ft[e.id]=e}function Sa(e){delete ft[e]}var dt={add:Ca,remove:Sa,get commands(){return[...Object.values(ft)]},get length(){return Object.keys(ft).length}};function Wn(e){e.detail.endedAt=Date.now(),e.detail.milliseconds=e.detail.endedAt-e.detail.startedAt,setTimeout(()=>P(B.finish,e.target,{detail:e.detail}),25)}addEventListener(B.serverError,Wn);addEventListener(B.success,Wn);addEventListener(B.finish,e=>dt.remove(e.detail.id),!0);var Re={events:B};var rr={};addEventListener("turbo:before-fetch-request",e=>{let t=e.target.closest("turbo-frame"),{fetchOptions:r}=e.detail;if(C.busy){let n=["text/vnd.turbo-boost.html",r.headers.Accept];n=n.filter(o=>o&&o.trim().length>0).join(", "),r.headers.Accept=n,r.headers["TurboBoost-Token"]=C.token}se.payloadChunks.forEach((n,o)=>{r.headers[`TurboBoost-State-${o.toString().padStart(4,"0")}`]=n})});addEventListener("turbo:before-fetch-response",e=>{let t=e.target.closest("turbo-frame"),{fetchResponse:r}=e.detail;if(t&&(rr[t.id]=t.src),r.header("TurboBoost")){if(r.statusCode<200||r.statusCode>399){let n=`Server returned a ${r.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`;P(Re.events.clientError,document,{detail:D(x({},e.detail),{error:n})},!0)}r.header("TurboBoost")==="Append"&&(e.preventDefault(),r.responseText.then(n=>le.append(n)))}});addEventListener("turbo:frame-load",e=>{let t=e.target.closest("turbo-frame");t.dataset.turboBoostSrc=rr[t.id]||t.src||t.dataset.turboBoostSrc,delete rr[t.id]});var Ta={frameAttribute:"data-turbo-frame",methodAttribute:"data-turbo-method",commandAttribute:"data-turbo-command"},I=x({},Ta);var Q=[],Vn;function ja(e,t){let r=Q.find(n=>n.name===e);return r&&Q.splice(Q.indexOf(r),1),Q=[{name:e,selectors:t},...Q],document.addEventListener(e,Vn,!0),x({},Q.find(n=>n.name===e))}function $a(e){return Q.find(t=>t.selectors.find(r=>Array.from(document.querySelectorAll(r)).find(n=>n===e)))}function La(e,t){let r=$a(t);return r&&r.name===e}var ee={register:ja,isRegisteredForElement:La,get events(){return[...Q]},set handler(e){Vn=e}};function Na(e){return e.closest(`[${I.commandAttribute}]`)}function Pa(e){return e.closest("turbo-frame[src]")||e.closest("turbo-frame[data-turbo-frame-src]")||e.closest("turbo-frame")}function Ma(e,t={}){if(e.tagName.toLowerCase()!=="select")return t.value=e.value||null;if(!e.multiple)return t.value=e.options[e.selectedIndex].value;t.values=Array.from(e.options).reduce((r,n)=>(n.selected&&r.push(n.value),r),[])}function Ba(e){let t=Array.from(e.attributes).reduce((r,n)=>{let o=n.value;return r[n.name]=o,r},{});return t.tag=e.tagName,t.checked=!!e.checked,t.disabled=!!e.disabled,Ma(e,t),delete t.class,delete t.action,delete t.href,delete t[I.commandAttribute],delete t[I.frameAttribute],t}var De={buildAttributePayload:Ba,findClosestCommand:Na,findClosestFrameWithSource:Pa};function Ra(e,t={}){t.token=C.token;let r=document.createElement("input");r.type="hidden",r.name="turbo_boost_command",r.value=JSON.stringify(t),e.appendChild(r)}var Hn={invokeCommand:Ra};function Da(e,t={}){let r=document.createElement("a");r.href=e;let n=new URL(r);return n.searchParams.set("turbo_boost_command",JSON.stringify(t)),n}var ye={build:Da};function Ia(e,t){let r=t.src;t=x({},t),delete t.src,e.src=ye.build(r,t)}var nr={invokeCommand:Ia};function qa(e,t={}){let r=t.src;t=x({},t),delete t.src,delete t.href,e.setAttribute("href",ye.build(r,t))}var Un={invokeCommand:qa};function za(e){let t=e.target;P(Re.events.abort,document,{detail:D(x({},e.detail),{xhr:t})})}function or(e){let t=e.target;t.getResponseHeader("TurboBoost")==="Append"?le.append(t.responseText):le.replaceDocument(t.responseText);let r=`Server returned a ${t.status} status code! TurboBoost Commands require 2XX-3XX status codes.`;P(Re.events.clientError,document,{detail:D(x({},e.detail),{error:r,xhr:t})},!0)}function Fa(e){let t=e.target;if(t.status<200||t.status>399)return or(e);let r=t.responseText;t.getResponseHeader("TurboBoost")==="Append"?le.append(t.responseText):le.replaceDocument(t.responseText)}function Wa(e){let t=e.src;e=x({},e),delete e.src;try{let r=new XMLHttpRequest;r.open("GET",ye.build(t,e),!0),r.setRequestHeader("Accept","text/vnd.turbo-boost.html, text/html, application/xhtml+xml"),r.setRequestHeader("TurboBoost-Token",C.token),se.payloadChunks.forEach((n,o)=>r.setRequestHeader(`TurboBoost-State-${o.toString().padStart(4,"0")}`,n)),r.addEventListener("abort",za),r.addEventListener("error",or),r.addEventListener("load",Fa),r.send()}catch(r){let n=`Unexpected error sending HTTP request! ${r.message}`;or(r,{detail:{message:n}})}}var Jn={invokeCommand:Wa};function ir(e,t){return t=t||{dataset:{}},e.href||t.src||t.dataset.turboBoostSrc||location.href}function Va(e){let t=De.findClosestFrameWithSource(e),{turboFrame:r,turboMethod:n}=e.dataset;return e.tagName.toLowerCase()==="form"?{name:"form",reason:"Element is a form.",frame:t,src:e.action,invokeCommand:Hn.invokeCommand}:n&&n.length>0?{name:"method",reason:"Element defines data-turbo-method.",frame:t,src:e.href,invokeCommand:Un.invokeCommand}:r&&r!=="_self"?(t=document.getElementById(r),{name:"frame",reason:"element targets a frame that is not _self",frame:t,src:ir(e,t),invokeCommand:nr.invokeCommand}):(!r||r==="_self")&&t?{name:"frame",reason:"element does NOT target a frame or targets _self and is contained by a frame",frame:t,src:ir(e,t),invokeCommand:nr.invokeCommand}:{name:"window",reason:"element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)",frame:null,src:ir(e),invokeCommand:Jn.invokeCommand}}var ar={find:Va};var Ie="unknown",Xn={debug:Object.values(J),info:Object.values(J),warn:[J.abort,J.clientError,J.serverError],error:[J.clientError,J.serverError],unknown:[]};Object.values(J).forEach(e=>{addEventListener(e,t=>{Xn[Ie].includes(t.type)&&console[Ie==="debug"?"log":Ie](t.type,{target:t.target,detail:t.detail})})});var Kn={get level(){return Ie},set level(e){return Object.keys(Xn).includes(e)||(e="unknown"),Ie=e}};function Ha(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var Zn={v4:Ha};function Yn(e,t){return{id:e,name:t.getAttribute(I.commandAttribute),elementId:t.id.length>0?t.id:null,elementAttributes:De.buildAttributePayload(t),startedAt:Date.now()}}function Ua(e){let t,r={};try{if(t=De.findClosestCommand(e.target),!t||!ee.isRegisteredForElement(e.type,t))return;let n=`turbo-command-${Zn.v4()}`,o=ar.find(t),i=D(x({},Yn(n,t)),{driver:o.name,frameId:o.frame?o.frame.id:null,src:o.src}),a=P(B.start,t,{cancelable:!0,detail:i});if(a.defaultPrevented)return P(B.abort,t,{detail:{message:`An event handler for '${B.start}' prevented default behavior and blocked command invocation!`,source:a}});switch(o=ar.find(t),i=D(x({},Yn(n,t)),{driver:o.name,frameId:o.frame?o.frame.id:null,src:o.src}),dt.add(i),["frame","window"].includes(o.name)&&e.preventDefault(),C.busy=!0,setTimeout(()=>C.busy=!1,10),o.name){case"method":return o.invokeCommand(t,i);case"form":return o.invokeCommand(t,i);case"frame":return o.invokeCommand(o.frame,i);case"window":return o.invokeCommand(i)}}catch(n){P(B.clientError,t,{detail:D(x({},r),{error:n})})}}ee.handler=Ua;ee.register("click",[`[${I.commandAttribute}]`]);ee.register("submit",[`form[${I.commandAttribute}]`]);ee.register("change",[`input[${I.commandAttribute}]`,`select[${I.commandAttribute}]`,`textarea[${I.commandAttribute}]`]);self.TurboBoost=self.TurboBoost||{};self.TurboBoost=D(x({},self.TurboBoost),{stateEvents:H,get state(){return se.current},get stateDelta(){return se.delta}});self.TurboBoost.Commands={logger:Kn,schema:I,events:B,registerEventDelegate:ee.register,get eventDelegates(){return ee.events}};var El=self.TurboBoost.Commands;export{El as default};
|
1
|
+
var Z=Object.defineProperty,ee=Object.defineProperties;var te=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var re=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var X=(e,t,r)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,a=(e,t)=>{for(var r in t||(t={}))re.call(t,r)&&X(e,r,t[r]);if(I)for(var r of I(t))oe.call(t,r)&&X(e,r,t[r]);return e},u=(e,t)=>ee(e,te(t));var O=class{get element(){return document.querySelector('meta[name="turbo-boost"]')}get token(){return this.element.getAttribute("content")}get busy(){return this.element.dataset.busy==="true"}set busy(t){return this.element.dataset.busy=!!t}},s=new O;var i={start:"turbo-boost:command:start",success:"turbo-boost:command:success",finish:"turbo-boost:command:finish",abort:"turbo-boost:command:abort",clientError:"turbo-boost:command:client-error",serverError:"turbo-boost:command:server-error"},l={stateLoad:"turbo-boost:state:load",stateChange:"turbo-boost:state:change"},f=a(a({},i),l);function d(e,t,r={}){return new Promise(o=>{r=r||{},r.detail=r.detail||{},t=t||document;let n=new CustomEvent(e,u(a({},r),{bubbles:!0}));t.dispatchEvent(n),o(n)})}var B;function k(e,t=null){if(!e||typeof e!="object")return e;let r=new Proxy(e,{deleteProperty(o,n){return delete o[n],d(l.stateChange,s.element,{detail:{state:B}}),!0},set(o,n,c,A){return o[n]=k(c,this),d(l.stateChange,s.element,{detail:{state:B}}),!0}});if(Array.isArray(e))e.forEach((o,n)=>e[n]=k(o,r));else if(typeof e=="object")for(let[o,n]of Object.entries(e))e[o]=k(n,r);return t||(B=r),r}var _=k;var D,g,C,N;function F(){if(!s.element)return E();let e=atob(s.element.dataset.state);C={},g=_(JSON.parse(e)),D=a({},g),delete s.element.dataset.clientStateChange,setTimeout(()=>d(l.stateLoad,s.element,{detail:{state:g}}))}function E(){clearTimeout(N),N=setTimeout(F,10)}D||F();addEventListener("DOMContentLoaded",E);addEventListener("load",E);addEventListener("turbo:load",E);addEventListener("turbo:frame-load",E);addEventListener(i.success,E);addEventListener(l.stateChange,e=>{C={};for(let[t,r]of Object.entries(g))D[t]!==r&&(C[t]=r);s.element.dataset.clientStateChange=!0,s.element.dataset.state=btoa(JSON.stringify(g))});var h={events:l,get current(){return g},get delta(){return C},get payloadChunks(){return btoa(JSON.stringify(C)).match(/.{1,2000}/g)}};function ne(e){let t="<html",r="</html",o=e.indexOf(t),n=e.lastIndexOf(r);if(o>=0&&n>=0){let c=e.slice(e.indexOf(">",o)+1,n);document.documentElement.innerHTML=c}}function ae(e){document.body.insertAdjacentHTML("beforeend",e)}var v={append:ae,replaceDocument:ne};var L={};function se(e){L[e.id]=e}function ie(e){delete L[e]}var S={add:se,remove:ie,get commands(){return[...Object.values(L)]},get length(){return Object.keys(L).length}};function J(e){e.detail.endedAt=Date.now(),e.detail.milliseconds=e.detail.endedAt-e.detail.startedAt,setTimeout(()=>d(i.finish,e.target,{detail:e.detail}),25)}addEventListener(i.serverError,J);addEventListener(i.success,J);addEventListener(i.finish,e=>S.remove(e.detail.id),!0);var T={events:i};var R={};addEventListener("turbo:before-fetch-request",e=>{let t=e.target.closest("turbo-frame"),{fetchOptions:r}=e.detail;if(s.busy){let o=["text/vnd.turbo-boost.html",r.headers.Accept];o=o.filter(n=>n&&n.trim().length>0).join(", "),r.headers.Accept=o,r.headers["TurboBoost-Token"]=s.token}h.payloadChunks.forEach((o,n)=>{r.headers[`TurboBoost-State-${n.toString().padStart(4,"0")}`]=o})});addEventListener("turbo:before-fetch-response",e=>{let t=e.target.closest("turbo-frame"),{fetchResponse:r}=e.detail;if(t&&(R[t.id]=t.src),r.header("TurboBoost")){if(r.statusCode<200||r.statusCode>399){let o=`Server returned a ${r.statusCode} status code! TurboBoost Commands require 2XX-3XX status codes.`;d(T.events.clientError,document,{detail:u(a({},e.detail),{error:o})},!0)}r.header("TurboBoost")==="Append"&&(e.preventDefault(),r.responseText.then(o=>v.append(o)))}});addEventListener("turbo:frame-load",e=>{let t=e.target.closest("turbo-frame");t.dataset.turboBoostSrc=R[t.id]||t.src||t.dataset.turboBoostSrc,delete R[t.id]});var de={frameAttribute:"data-turbo-frame",methodAttribute:"data-turbo-method",commandAttribute:"data-turbo-command",confirmAttribute:"data-turbo-confirm"},m=a({},de);var M={method:e=>Promise.resolve(confirm(e))},me=e=>e.detail.driver==="method",ue=e=>{if(e.detail.driver!=="form")return!1;let t=e.target,r=t.closest("turbo-frame"),o=t.closest(`[${m.frameAttribute}]`);return!!(r||o)},ce=e=>me(e)||ue(e);document.addEventListener(i.start,async e=>{let t=e.target.getAttribute(m.confirmAttribute);if(!t||(e.detail.confirmation=!0,ce(e)))return;await M.method(t)||e.preventDefault()});var j=M;var b=[],W;function le(e,t){let r=b.find(o=>o.name===e);return r&&b.splice(b.indexOf(r),1),b=[{name:e,selectors:t},...b],document.addEventListener(e,W,!0),a({},b.find(o=>o.name===e))}function fe(e){return b.find(t=>t.selectors.find(r=>Array.from(document.querySelectorAll(r)).find(o=>o===e)))}function be(e,t){let r=fe(t);return r&&r.name===e}var p={register:le,isRegisteredForElement:be,get events(){return[...b]},set handler(e){W=e}};function pe(e){return e.closest(`[${m.commandAttribute}]`)}function he(e){return e.closest("turbo-frame[src]")||e.closest("turbo-frame[data-turbo-frame-src]")||e.closest("turbo-frame")}function ve(e,t={}){if(e.tagName.toLowerCase()!=="select")return t.value=e.value||null;if(!e.multiple)return t.value=e.options[e.selectedIndex].value;t.values=Array.from(e.options).reduce((r,o)=>(o.selected&&r.push(o.value),r),[])}function ge(e){let t=Array.from(e.attributes).reduce((r,o)=>{let n=o.value;return r[o.name]=n,r},{});return t.tag=e.tagName,t.checked=!!e.checked,t.disabled=!!e.disabled,ve(e,t),delete t.class,delete t.action,delete t.href,delete t[m.commandAttribute],delete t[m.frameAttribute],t}var y={buildAttributePayload:ge,findClosestCommand:pe,findClosestFrameWithSource:he};function Ee(e,t={}){t.token=s.token;let r=document.createElement("input");r.type="hidden",r.name="turbo_boost_command",r.value=JSON.stringify(t),e.appendChild(r)}var U={invokeCommand:Ee};function xe(e,t={}){let r=document.createElement("a");r.href=e;let o=new URL(r);return o.searchParams.set("turbo_boost_command",JSON.stringify(t)),o}var x={build:xe};function Ce(e,t){let r=t.src;t=a({},t),delete t.src,e.src=x.build(r,t)}var $={invokeCommand:Ce};function Te(e,t={}){let r=t.src;t=a({},t),delete t.src,delete t.href,e.setAttribute("href",x.build(r,t))}var V={invokeCommand:Te};function ye(e){let t=e.target;d(T.events.abort,document,{detail:u(a({},e.detail),{xhr:t})})}function H(e){let t=e.target;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?v.append(t.responseText):v.replaceDocument(t.responseText);let o=`Server returned a ${t.status} status code! TurboBoost Commands require 2XX-3XX status codes.`;d(T.events.clientError,document,{detail:u(a({},e.detail),{error:o,xhr:t})},!0)}function Ae(e){let t=e.target;if(t.status<200||t.status>399)return H(e);let r=t.responseText;t.getResponseHeader("TurboBoost")==="Append"||t.getResponseHeader("Content-Type").startsWith("text/vnd.turbo-boost.html")?v.append(t.responseText):v.replaceDocument(t.responseText)}function ke(e){let t=e.src;e=a({},e),delete e.src;try{let r=new XMLHttpRequest;r.open("GET",x.build(t,e),!0),r.setRequestHeader("Accept","text/vnd.turbo-boost.html, text/html, application/xhtml+xml"),r.setRequestHeader("TurboBoost-Token",s.token),h.payloadChunks.forEach((o,n)=>r.setRequestHeader(`TurboBoost-State-${n.toString().padStart(4,"0")}`,o)),r.addEventListener("abort",ye),r.addEventListener("error",H),r.addEventListener("load",Ae),r.send()}catch(r){let o=`Unexpected error sending HTTP request! ${r.message}`;H(r,{detail:{message:o}})}}var G={invokeCommand:ke};function P(e,t){return t=t||{dataset:{}},e.href||t.src||t.dataset.turboBoostSrc||location.href}function Le(e){let t=y.findClosestFrameWithSource(e),{turboFrame:r,turboMethod:o}=e.dataset;return e.tagName.toLowerCase()==="form"?{name:"form",reason:"Element is a form.",frame:t,src:e.action,invokeCommand:U.invokeCommand}:o&&o.length>0?{name:"method",reason:"Element defines data-turbo-method.",frame:t,src:e.href,invokeCommand:V.invokeCommand}:r&&r!=="_self"?(t=document.getElementById(r),{name:"frame",reason:"element targets a frame that is not _self",frame:t,src:P(e,t),invokeCommand:$.invokeCommand}):(!r||r==="_self")&&t?{name:"frame",reason:"element does NOT target a frame or targets _self and is contained by a frame",frame:t,src:P(e,t),invokeCommand:$.invokeCommand}:{name:"window",reason:"element matches one or more of the following conditions (targets _top, does NOT target a frame, is NOT contained by a frame)",frame:null,src:P(e),invokeCommand:G.invokeCommand}}var q={find:Le};var w="unknown",z={debug:Object.values(f),info:Object.values(f),warn:[f.abort,f.clientError,f.serverError],error:[f.clientError,f.serverError],unknown:[]};Object.values(f).forEach(e=>{addEventListener(e,t=>{if(z[w].includes(t.type)){let{target:r,detail:o}=t;console[w](t.type,{target:r,detail:o})}})});var K={get level(){return w},set level(e){return Object.keys(z).includes(e)||(e="unknown"),w=e}};function Se(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var Q={v4:Se};function Y(e,t){return{id:e,name:t.getAttribute(m.commandAttribute),elementId:t.id.length>0?t.id:null,elementAttributes:y.buildAttributePayload(t),startedAt:Date.now()}}async function we(e){let t,r={};try{if(t=y.findClosestCommand(e.target),!t||!p.isRegisteredForElement(e.type,t))return;let o=`turbo-command-${Q.v4()}`,n=q.find(t),c=u(a({},Y(o,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),A=await d(i.start,t,{cancelable:!0,detail:c});if(A.defaultPrevented||A.detail.confirmation&&e.defaultPrevented)return d(i.abort,t,{detail:{message:`An event handler for '${i.start}' prevented default behavior and blocked command invocation!`,source:A}});switch(n=q.find(t),c=u(a({},Y(o,t)),{driver:n.name,frameId:n.frame?n.frame.id:null,src:n.src}),S.add(c),["frame","window"].includes(n.name)&&e.preventDefault(),s.busy=!0,setTimeout(()=>s.busy=!1,10),n.name){case"method":return n.invokeCommand(t,c);case"form":return n.invokeCommand(t,c);case"frame":return n.invokeCommand(n.frame,c);case"window":return n.invokeCommand(c)}}catch(o){d(i.clientError,t,{detail:u(a({},r),{error:o})})}}p.handler=we;p.register("click",[`[${m.commandAttribute}]`]);p.register("submit",[`form[${m.commandAttribute}]`]);p.register("change",[`input[${m.commandAttribute}]`,`select[${m.commandAttribute}]`,`textarea[${m.commandAttribute}]`]);self.TurboBoost=self.TurboBoost||{};self.TurboBoost=u(a({},self.TurboBoost),{stateEvents:l,get state(){return h.current},get stateDelta(){return h.delta}});self.TurboBoost.Commands={confirmation:j,logger:K,schema:m,events:i,registerEventDelegate:p.register,get eventDelegates(){return p.events}};var Qt=self.TurboBoost.Commands;export{Qt as default};
|
6
2
|
//# sourceMappingURL=commands.js.map
|