@playpilot/tpi 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.github/workflows/tests.yml +22 -0
  2. package/.prettierignore +4 -0
  3. package/.prettierrc +16 -0
  4. package/README.md +38 -0
  5. package/dist/link-injections.js +7 -0
  6. package/eslint.config.js +33 -0
  7. package/index.html +11 -0
  8. package/jsconfig.json +19 -0
  9. package/package.json +35 -0
  10. package/src/app.d.ts +13 -0
  11. package/src/app.html +12 -0
  12. package/src/demo.spec.js +7 -0
  13. package/src/lib/api.js +160 -0
  14. package/src/lib/array.js +15 -0
  15. package/src/lib/auth.js +84 -0
  16. package/src/lib/constants.js +2 -0
  17. package/src/lib/enums/TrackingEvent.js +15 -0
  18. package/src/lib/fakeData.js +140 -0
  19. package/src/lib/genres.json +420 -0
  20. package/src/lib/global.css +37 -0
  21. package/src/lib/hash.js +15 -0
  22. package/src/lib/html.js +21 -0
  23. package/src/lib/index.js +1 -0
  24. package/src/lib/linkInjection.js +275 -0
  25. package/src/lib/search.js +24 -0
  26. package/src/lib/text.js +61 -0
  27. package/src/lib/tracking.js +32 -0
  28. package/src/lib/variables.css +16 -0
  29. package/src/main.js +45 -0
  30. package/src/routes/+layout.svelte +54 -0
  31. package/src/routes/+page.svelte +96 -0
  32. package/src/routes/components/AfterArticlePlaylinks.svelte +90 -0
  33. package/src/routes/components/ContextMenu.svelte +67 -0
  34. package/src/routes/components/Description.svelte +47 -0
  35. package/src/routes/components/Editorial/Alert.svelte +18 -0
  36. package/src/routes/components/Editorial/DragHandle.svelte +134 -0
  37. package/src/routes/components/Editorial/Editor.svelte +277 -0
  38. package/src/routes/components/Editorial/EditorItem.svelte +260 -0
  39. package/src/routes/components/Editorial/ManualInjection.svelte +192 -0
  40. package/src/routes/components/Editorial/PlaylinkTypeSelect.svelte +132 -0
  41. package/src/routes/components/Editorial/Search/TitleSearch.svelte +176 -0
  42. package/src/routes/components/Editorial/Switch.svelte +76 -0
  43. package/src/routes/components/Editorial/TextInput.svelte +29 -0
  44. package/src/routes/components/Genres.svelte +41 -0
  45. package/src/routes/components/Icons/IconAlign.svelte +12 -0
  46. package/src/routes/components/Icons/IconBack.svelte +3 -0
  47. package/src/routes/components/Icons/IconBookmark.svelte +3 -0
  48. package/src/routes/components/Icons/IconChevron.svelte +18 -0
  49. package/src/routes/components/Icons/IconClose.svelte +3 -0
  50. package/src/routes/components/Icons/IconContinue.svelte +3 -0
  51. package/src/routes/components/Icons/IconDots.svelte +5 -0
  52. package/src/routes/components/Icons/IconEnlarge.svelte +12 -0
  53. package/src/routes/components/Icons/IconIMDb.svelte +3 -0
  54. package/src/routes/components/Icons/IconNewTab.svelte +3 -0
  55. package/src/routes/components/Modal.svelte +106 -0
  56. package/src/routes/components/Participants.svelte +44 -0
  57. package/src/routes/components/Playlinks.svelte +155 -0
  58. package/src/routes/components/Popover.svelte +95 -0
  59. package/src/routes/components/RoundButton.svelte +38 -0
  60. package/src/routes/components/SkeletonText.svelte +33 -0
  61. package/src/routes/components/Title.svelte +180 -0
  62. package/src/routes/components/TitleModal.svelte +24 -0
  63. package/src/routes/components/TitlePopover.svelte +17 -0
  64. package/src/tests/helpers.js +18 -0
  65. package/src/tests/lib/api.test.js +162 -0
  66. package/src/tests/lib/array.test.js +14 -0
  67. package/src/tests/lib/auth.test.js +115 -0
  68. package/src/tests/lib/hash.test.js +28 -0
  69. package/src/tests/lib/html.test.js +16 -0
  70. package/src/tests/lib/linkInjection.test.js +754 -0
  71. package/src/tests/lib/search.test.js +42 -0
  72. package/src/tests/lib/text.test.js +94 -0
  73. package/src/tests/lib/tracking.test.js +71 -0
  74. package/src/tests/routes/+page.test.js +109 -0
  75. package/src/tests/routes/components/AfterArticlePlaylinks.test.js +115 -0
  76. package/src/tests/routes/components/ContextMenu.test.js +37 -0
  77. package/src/tests/routes/components/Description.test.js +58 -0
  78. package/src/tests/routes/components/Editorial/Alert.test.js +17 -0
  79. package/src/tests/routes/components/Editorial/DragHandle.test.js +55 -0
  80. package/src/tests/routes/components/Editorial/Editor.test.js +64 -0
  81. package/src/tests/routes/components/Editorial/EditorItem.test.js +142 -0
  82. package/src/tests/routes/components/Editorial/ManualInjection.test.js +114 -0
  83. package/src/tests/routes/components/Editorial/PlaylinkTypeSelect.test.js +63 -0
  84. package/src/tests/routes/components/Editorial/Search/TitleSearch.test.js +58 -0
  85. package/src/tests/routes/components/Editorial/Switch.test.js +60 -0
  86. package/src/tests/routes/components/Editorial/TextInput.test.js +30 -0
  87. package/src/tests/routes/components/Genres.test.js +37 -0
  88. package/src/tests/routes/components/Modal.test.js +84 -0
  89. package/src/tests/routes/components/Participants.test.js +33 -0
  90. package/src/tests/routes/components/Playlinks.test.js +101 -0
  91. package/src/tests/routes/components/Popover.test.js +66 -0
  92. package/src/tests/routes/components/RoundButton.test.js +35 -0
  93. package/src/tests/routes/components/SkeletonText.test.js +12 -0
  94. package/src/tests/routes/components/Title.test.js +82 -0
  95. package/src/tests/routes/components/TitleModal.test.js +33 -0
  96. package/src/tests/routes/components/TitlePopover.test.js +23 -0
  97. package/src/tests/setup.js +53 -0
  98. package/src/typedefs.js +72 -0
  99. package/static/favicon.png +0 -0
  100. package/svelte.config.js +13 -0
  101. package/vite.config.js +61 -0
@@ -0,0 +1,22 @@
1
+ name: Tests
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ unit-tests:
7
+ name: Run unit tests
8
+
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+
14
+ - name: Use Node.js
15
+ uses: actions/setup-node@v3
16
+ with:
17
+ node-version: '20 || >=22'
18
+
19
+ - run: npm ci
20
+
21
+ - name: Run tests
22
+ run: npm run test:unit
@@ -0,0 +1,4 @@
1
+ # Package Managers
2
+ package-lock.json
3
+ pnpm-lock.yaml
4
+ yarn.lock
package/.prettierrc ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "useTabs": false,
3
+ "tabWidth": 2,
4
+ "singleQuote": true,
5
+ "trailingComma": "none",
6
+ "printWidth": 100,
7
+ "plugins": ["prettier-plugin-svelte"],
8
+ "overrides": [
9
+ {
10
+ "files": "*.svelte",
11
+ "options": {
12
+ "parser": "svelte"
13
+ }
14
+ }
15
+ ]
16
+ }
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # sv
2
+
3
+ Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
4
+
5
+ ## Creating a project
6
+
7
+ If you're seeing this, you've probably already done this step. Congrats!
8
+
9
+ ```bash
10
+ # create a new project in the current directory
11
+ npx sv create
12
+
13
+ # create a new project in my-app
14
+ npx sv create my-app
15
+ ```
16
+
17
+ ## Developing
18
+
19
+ Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
20
+
21
+ ```bash
22
+ npm run dev
23
+
24
+ # or start the server and open the app in a new browser tab
25
+ npm run dev -- --open
26
+ ```
27
+
28
+ ## Building
29
+
30
+ To create a production version of your app:
31
+
32
+ ```bash
33
+ npm run build
34
+ ```
35
+
36
+ You can preview the production build with `npm run preview`.
37
+
38
+ > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
@@ -0,0 +1,7 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('@import"https://fonts.googleapis.com/css?family=Poppins:400,600,700";.popover.svelte-1oxrzdm{--offset: .5rem;position:absolute;top:calc((var(--offset) - 1px) * -1);left:0;width:calc(100vw - 2rem);max-width:20rem;padding:var(--offset) 0;transform:translateY(calc(-100% + var(--offset)));z-index:999}.popover.flip.svelte-1oxrzdm{top:auto;bottom:calc(var(--offset) + 1px);transform:translateY(calc(100% + var(--offset)))}.dialog.svelte-1oxrzdm{cursor:default;position:relative;border-radius:var(--playpilot-popover-border-radius, 1rem);background:var(--playpilot-popover-background, var(--playpilot-light));box-shadow:var(--playpilot-popover-shadow, var(--playpilot-shadow-large));max-height:min(var(--max-height),35rem);scrollbar-width:thin;overflow-y:overlay;overflow-x:hidden}.genre.svelte-xt0923{display:flex;flex-wrap:wrap;background:var(--playpilot-genre-background, var(--playpilot-content));border:0;border-radius:var(--playpilot-genre-border-radius, 1rem);padding:.25rem .5rem;font-family:var(--playpilot-genre-font-family, inherit);text-transform:var(--playpilot-genre-text-transform, none);color:var(--playpilot-genre-text-color, var(--playpilot-text-color-alt));line-height:1;font-size:inherit}button.genre.svelte-xt0923:hover{cursor:pointer;filter:var(--playpilot-genre-hover-filter, brightness(1.1));background:var(--playpilot-genre-hover-background, var(--playpilot-genre-background))}h2.svelte-168541k{margin:0;color:var(--playpilot-playlinks-title-color, var(--playpilot-text-color-alt));font-family:var(--playpilot-playlinks-title-font-family, inherit);font-weight:var(--playpilot-playlinks-title-font-weight, lighter);font-size:var(--playpilot-playlinks-title-font-size, 14px)}img.svelte-168541k{border-radius:.5rem;background:#00000040}@media (min-width: 640px){img.svelte-168541k{height:2.5rem;width:2.5rem}.list.svelte-168541k img:where(.svelte-168541k){height:2rem;width:2rem}}.playlinks.svelte-168541k{box-sizing:border-box;display:flex;gap:.5rem;width:calc(100% + 2rem);padding:.5rem 1rem;margin:0 -1rem;overflow:auto;scrollbar-width:none}.playlinks.svelte-168541k::-webkit-scrollbar{display:none}.list.svelte-168541k{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.playlink.svelte-168541k{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--playpilot-playlink-background, var(--playpilot-lighter));box-shadow:var(--playpilot-playlink-shadow, var(--playpilot-shadow));border-radius:var(--playpilot-playlink-border-radius, .5rem);color:var(--playpilot-playlink-text-color, var(--playpilot-text-color-alt))!important;text-decoration:none!important;white-space:nowrap;font-size:.75rem;line-height:1}.playlink.svelte-168541k img:where(.svelte-168541k){margin:0}.list.svelte-168541k .playlink:where(.svelte-168541k){padding:.5rem;gap:.5rem}.playlink.svelte-168541k:hover,.playlink.svelte-168541k:active{filter:var(--playpilot-playlink-hover-filter, brightness(1.1));background:var(--playpilot-playlink-hover-background, var(--playpilot-playlink-background, var(--playpilot-lighter)));text-decoration:none!important}.name.svelte-168541k{font-weight:var(--playpilot-playlink-font-weight, inherit);font-family:var(--playpilot-playlink-font-family, inherit)}.category.svelte-168541k{margin-top:.5rem;font-size:.625rem;color:var(--playpilot-playlink-category-text-color, var(--playpilot-text-color));font-weight:var(--playpilot-playlink-category-font-weight, inherit);font-family:var(--playpilot-playlink-category-font-family, inherit)}.empty.svelte-168541k{white-space:initial;line-height:1.35}.arrow.svelte-168541k{margin-left:auto;padding:0 .5rem}p.svelte-fzu5af,.paragraph.svelte-fzu5af{display:block;margin:1rem 0 0}.show-more.svelte-fzu5af{display:inline;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;background:transparent;border:0;color:var(--playpilot-read-more-text-color, var(--playpilot-text-color-alt));font-weight:var(--playpilot-read-more-font-weight, inherit);font-family:inherit;font-size:inherit}.show-more.svelte-fzu5af:hover{text-decoration:underline;text-decoration-thickness:2px;cursor:pointer}h2.svelte-1u6ln8t{margin:1.5rem 0 1rem;font-size:var(--playpilot-cast-title-font-size, 18px);font-weight:inherit}.participants.svelte-1u6ln8t{display:flex;gap:1rem;width:calc(100% + 2rem);padding:0 1rem;margin:0 -1rem;overflow:auto;white-space:nowrap;scrollbar-width:none}.participants.svelte-1u6ln8t::-webkit-scrollbar{display:none}.character.svelte-1u6ln8t{color:var(--playpilot-cast-character-text-color, var(--playpilot-text-color-alt));font-style:italic}h1.svelte-n8rmi0{margin:.5rem 0;font-family:var(--playpilot-detail-title-font-family, inherit);font-weight:var(--playpilot-detail-title-font-weight, lighter);font-size:var(--playpilot-detail-title-font-size, 1.5rem);color:var(--playpilot-detail-title-text-color, #fff)}.small.svelte-n8rmi0 h1:where(.svelte-n8rmi0){font-size:var(--playpilot-detail-title-font-size-small, 1.125rem)}.compact.svelte-n8rmi0 h1:where(.svelte-n8rmi0){margin-top:0}.content.svelte-n8rmi0{z-index:1;position:relative;padding:1rem;color:var(--playpilot-detail-text-color, var(--playpilot-text-color));font-family:var(--playpilot-detail-font-family, var(--playpilot-font-family));font-size:var(--playpilot-detail-font-size, 14px)}.content.small.svelte-n8rmi0{font-size:var(--playpilot-detail-font-size, 12px);line-height:1.45;padding-bottom:.5rem}.header.svelte-n8rmi0{padding:2rem 0 1rem}.small.svelte-n8rmi0 .header:where(.svelte-n8rmi0){padding-top:1rem}.compact.svelte-n8rmi0 .header:where(.svelte-n8rmi0){padding:0 0 1rem}.top.svelte-n8rmi0{display:flex;justify-content:space-between;align-items:flex-end}.poster.svelte-n8rmi0{display:block;width:4.5rem;margin:0;aspect-ratio:2 / 3;border-radius:var(--playpilot-detail-image-border-radius, .5rem);background:var(--playpilot-detail-image-background, var(--playpilot-content));box-shadow:var(--playpilot-detail-image-shadow, var(--playpilot-shadow))}.info.svelte-n8rmi0{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.small.svelte-n8rmi0 .info:where(.svelte-n8rmi0){gap:.5rem .75rem}.imdb.svelte-n8rmi0{display:flex;align-items:center;gap:.25rem}.imdb.svelte-n8rmi0 svg{margin-top:-.125rem}.small.svelte-n8rmi0 .imdb:where(.svelte-n8rmi0) svg{margin-top:0;width:.75rem;height:.75rem}.background.svelte-n8rmi0{position:absolute;top:0;left:0;width:100%;height:12rem;overflow:hidden;background:var(--playpilot-detail-background, var(--playpilot-lighter))}.background.svelte-n8rmi0:before{content:"";display:block;position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,var(--playpilot-detail-background, var(--playpilot-light)),transparent 40%)}.background.svelte-n8rmi0 img:where(.svelte-n8rmi0){width:100%;height:100%;object-fit:cover;object-position:center;margin:0}.faded.svelte-n8rmi0{opacity:.15}.capitalize.svelte-n8rmi0{text-transform:capitalize}span.svelte-1q8ybgz{display:block}button.svelte-1q8ybgz{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--playpilot-after-article-button-padding, .25rem .75rem);margin:var(--playpilot-after-article-button-margin, .25rem 0 0);background:var(--playpilot-after-article-button-background, transparent);border:var(--playpilot-after-article-button-border, 2px solid currentColor);border-radius:var(--playpilot-after-article-button-border-radius, 1rem);color:var(--playpilot-after-article-button-text-color, inherit);font-weight:var(--playpilot-after-article-button-font-weight, bold);font-size:var(--playpilot-after-article-button-font-size, 1rem);cursor:pointer;transition:all 50ms}button.svelte-1q8ybgz:hover{background:var(--playpilot-after-article-button-background-hover, transparent);border:var(--playpilot-after-article-button-border-hover, 2px solid currentColor);color:var(--playpilot-after-article-button-text-color-hover, inherit);transform:var(--playpilot-after-article-button-transform-hover, scale(1.02))}.button.svelte-oturfj{display:flex;align-items:center;justify-content:center;flex:0 0 var(--size);width:var(--size);height:var(--size);border-radius:50%;border:0;padding:0;background:var(--playpilot-button-background, var(--playpilot-content));box-shadow:var(--playpilot-button-shadow, var(--playpilot-shadow));color:var(--playpilot-button-text-color, var(--playpilot-text-color-alt));cursor:pointer;transition:transform 50ms}.button.svelte-oturfj:hover{filter:brightness(1.2);transform:scale(1.05)}.modal.svelte-6ptja1{z-index:9999;position:fixed;display:flex;justify-content:center;align-items:flex-start;top:0;left:0;width:100%;height:100%;background:var(--playpilot-detail-backdrop, rgba(0, 0, 0, .65))}@media (min-width: 600px){.modal.svelte-6ptja1{padding:2rem}}.dialog.svelte-6ptja1{position:relative;width:100%;max-width:600px;max-height:80vh;overflow:auto;margin-top:auto;border-radius:var(--playpilot-detail-border-radius, 1rem 1rem 0 0);background:var(--playpilot-detail-background, var(--playpilot-light))}@media (min-width: 600px){.dialog.svelte-6ptja1{margin-top:0;border-radius:var(--playpilot-detail-border-radius, 1rem);max-height:100%}}.backdrop.svelte-6ptja1{position:absolute;top:0;right:0;bottom:0;left:0}.close.svelte-6ptja1{z-index:5;position:absolute;top:1rem;right:1rem}.close.svelte-6ptja1:hover{filter:brightness(1.1)}svg.svelte-s6opl5{transition:transform .1s}.expanded.svelte-s6opl5{transform:rotate(180deg)}.switch.svelte-gowieu{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;border:0;padding:0;background:transparent;cursor:pointer}.fullwidth.svelte-gowieu{width:100%;justify-content:space-between}.label.svelte-gowieu{display:flex;align-items:center;gap:.5rem;margin-right:.5rem;font-family:var(--playpilot-font-family);color:var(--playpilot-text-color-alt);font-size:.75rem}.switch.svelte-gowieu:hover .label:where(.svelte-gowieu){color:var(--playpilot-text-color)}.track.svelte-gowieu{position:relative;width:2rem;height:1.25rem;border-radius:1rem;background:var(--playpilot-content);transition:background-color .1s}.active.svelte-gowieu .track:where(.svelte-gowieu){background:var(--playpilot-green)}.knob.svelte-gowieu{position:absolute;top:.125rem;left:.125rem;height:1rem;width:1rem;border-radius:50%;background:#fff;transition:left .1s}.active.svelte-gowieu .knob:where(.svelte-gowieu){left:.875rem}input.svelte-1vyh00d{width:100%;padding:.5rem 1rem;border:0;border-radius:2rem;background:var(--playpilot-light);color:var(--playpilot-text-color-alt);font-size:.75rem;font-family:var(--playpilot-font-family)}input.svelte-1vyh00d:focus{background:var(--playpilot-lighter);outline:1px solid white}input.svelte-1vyh00d::placeholder{color:var(--playpilot-text-color-alt);opacity:.75}.switches.svelte-t0i7hj{display:flex;flex-direction:column;gap:.75rem}button.svelte-t0i7hj{z-index:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;display:flex;align-items:center;justify-content:center;gap:.5rem;border:0;border-radius:2rem;padding:.5rem;background:transparent;font-family:var(--playpilot-font-family);font-size:.65rem;color:var(--playpilot-text-color-alt);cursor:pointer}button.svelte-t0i7hj:hover,button.active.svelte-t0i7hj{color:var(--playpilot-text-color)}.group.svelte-t0i7hj{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:.5rem;width:100%;padding:.25rem;border:0;border-radius:2rem;background:var(--playpilot-light);color:var(--playpilot-text-color-alt);font-size:.75rem;font-family:var(--playpilot-font-family)}.active-marker.svelte-t0i7hj{z-index:0;position:absolute;width:calc(50% - .5rem);height:calc(100% - .5rem);left:.25rem;top:.25rem;border-radius:2rem;background:var(--playpilot-content);transition:left .1s}.right.svelte-t0i7hj{left:calc(50% + .25rem)}.label.svelte-t0i7hj{margin:.675rem 0 .25rem;opacity:.75;font-size:.675rem;color:var(--playpilot-text-color-alt)}.alert.svelte-fxeml2{padding:.5rem;border-radius:.5rem;border:1px solid var(--playpilot-error);background:var(--playpilot-error-dark);font-size:.75rem}button.svelte-1vxyp7u{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:.25rem;background:transparent;color:var(--playpilot-text-color-alt)}button.svelte-1vxyp7u:hover{cursor:pointer;color:#fff}.context-menu.svelte-1vxyp7u{position:relative}.content.svelte-1vxyp7u{z-index:1;position:absolute;top:100%;right:0;max-height:5rem;max-width:10rem;border-radius:.5rem;background:var(--playpilot-lighter)}.item.svelte-14xzbrm{padding:1rem .5rem;border-bottom:1px solid var(--playpilot-lighter);transition:outline-offset .1s}.item.svelte-14xzbrm:hover,.item.highlighted.svelte-14xzbrm{border-radius:.5rem;border-color:transparent;outline:2px solid var(--playpilot-content);outline-offset:1px}.item.highlighted.svelte-14xzbrm{outline:2px solid var(--playpilot-primary)}.header.svelte-14xzbrm{display:flex;gap:1rem;width:100%}.poster.svelte-14xzbrm{display:block;width:2rem;height:3rem;border-radius:.25rem;background:var(--playpilot-content)}.title.svelte-14xzbrm{font-size:.875rem;word-break:break-word}.meta.svelte-14xzbrm{display:flex;gap:.5rem;font-size:.75rem;color:var(--playpilot-text-color-alt)}.meta.svelte-14xzbrm span:where(.svelte-14xzbrm){display:flex;align-items:center}.meta.svelte-14xzbrm svg{display:block;margin:-.125rem .125rem 0 0;height:1em}.content.svelte-14xzbrm{padding-top:1rem}.context-menu.svelte-14xzbrm{margin:0 -.25rem 0 auto}.context-menu-action.svelte-14xzbrm{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:1rem;font-family:inherit;color:var(--playpilot-text-color-alt);cursor:pointer}.context-menu-action.svelte-14xzbrm:hover{color:var(--playpilot-text-color)}.actions.svelte-14xzbrm{display:flex;align-items:center;justify-content:space-between;width:100%}.expand.svelte-14xzbrm{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border:0;border-radius:50%;background:var(--playpilot-content);color:var(--playpilot-text-color);box-shadow:var(--playpilot-shadow);cursor:pointer}.expand.svelte-14xzbrm:hover{filter:brightness(1.2)}.expanded.svelte-14xzbrm{padding-top:1rem}.type-select.svelte-14xzbrm{margin-top:.5rem}.label.svelte-14xzbrm{margin-bottom:.25rem;opacity:.75;font-size:.675rem;color:var(--playpilot-text-color-alt)}.offset.svelte-14xzbrm{margin-top:.75rem}.drag-handle.svelte-ojw6hd{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;top:0;left:30%;width:40%;height:1rem;background:transparent;border:0;cursor:grab}.drag-handle.svelte-ojw6hd:active{cursor:grabbing}.drag-handle.svelte-ojw6hd:before{display:block;content:"";position:absolute;top:40%;right:0;bottom:40%;left:0;border-radius:1rem;background:var(--playpilot-text-color);opacity:.15;transition:opacity .1s,transform 50ms}.drag-handle.svelte-ojw6hd:hover:before{opacity:.65;transform:scale(1.05)}.drag-handle.svelte-ojw6hd:active:before{opacity:.9;transform:scale(.95)}.search.svelte-mr5c1j{position:relative}.results.svelte-mr5c1j{z-index:1;position:absolute;top:calc(100% + .5rem);left:0;right:0;height:30vh;max-height:10rem;border-radius:.5rem;background:var(--playpilot-light);scrollbar-width:thin;overflow:auto}.item.svelte-mr5c1j{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:flex-start;gap:1rem;width:100%;background:transparent;border:0;padding:.5rem;border-bottom:1px solid var(--playpilot-content);color:var(--playpilot-text-color-alt);font-family:inherit;text-align:left}.item.svelte-mr5c1j:hover{background:var(--playpilot-lighter)}.item.svelte-mr5c1j:last-child{border-bottom:0}.poster.svelte-mr5c1j{width:1.75rem;border-radius:.25rem;height:auto;background:var(--playpilot-dark)}.name.svelte-mr5c1j{color:var(--playpilot-text-color)}.meta.svelte-mr5c1j{display:flex;flex-wrap:wrap;gap:0 .5rem;font-size:.75rem}.imdb.svelte-mr5c1j{display:flex;align-items:center;gap:.25rem}.empty.svelte-mr5c1j{padding:.5rem;font-size:.75rem;color:var(--playpilot-text-color-alt)}.open-in-new-tab.svelte-mr5c1j{margin-left:auto;color:var(--playpilot-text-color-alt)}.open-in-new-tab.svelte-mr5c1j:hover{color:vaR(--playpilot-text-color)}h2.svelte-1sr8iw0{margin:0;font-size:1rem;font-weight:400}p.svelte-1sr8iw0,label.svelte-1sr8iw0{font-size:.75rem;max-width:15rem;color:var(--playpilot-text-color-alt)}label.svelte-1sr8iw0{display:block;margin-top:1rem}.layout.svelte-1sr8iw0{height:100%;display:flex;flex-direction:column}.header.svelte-1sr8iw0{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.error.svelte-1sr8iw0{margin-top:.5rem}.save.svelte-1sr8iw0{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;margin-top:auto;padding:.5rem;border:0;border-radius:2rem;background:var(--playpilot-content);transition:opacity .1s;font-family:inherit;color:var(--playpilot-text-color-alt)}.save.svelte-1sr8iw0:not([disabled]):hover{background:var(--playpilot-content-light);color:var(--playpilot-text-color)}.save[disabled].svelte-1sr8iw0{cursor:default;opacity:.5}h1.svelte-7vh28x{margin:0 .75rem 0 0;font-size:1.25rem;font-weight:400}.editor.svelte-7vh28x{z-index:1000;display:flex;flex-direction:column;position:fixed;bottom:1rem;right:1rem;width:100%;max-width:20rem;max-height:min(50vh,50rem);min-height:25rem;padding:1rem;border-radius:1.5rem;background:var(--playpilot-dark);box-shadow:var(--playpilot-shadow-large);color:var(--playpilot-text-color);font-family:var(--playpilot-font-family);transition:border-radius .1s;overflow-y:auto;overflow-x:hidden}.panel-open.svelte-7vh28x{overflow:hidden}.loading.svelte-7vh28x{min-height:0;border-radius:2rem;margin-left:auto;padding-right:.5rem;color:var(--playpilot-text-color-alt);font-size:.85rem}.drag-handle.svelte-7vh28x{opacity:0;transition:opacity .15s}.editor.svelte-7vh28x:hover .drag-handle:where(.svelte-7vh28x){opacity:1}.header.svelte-7vh28x{z-index:5;position:sticky;top:-1rem;margin:-1rem -1rem 0;padding:1rem 1rem 1rem 1.5rem;background:var(--playpilot-dark);display:flex;align-items:center}.loading.svelte-7vh28x .header:where(.svelte-7vh28x){margin:-1rem}.bubble.svelte-7vh28x{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.5rem;height:1.5rem;border:0;padding:0;margin-right:auto;border-radius:50%;background:var(--playpilot-green);line-height:1.5rem;text-align:center;font-size:.85rem}.items.svelte-7vh28x{padding-top:.5rem;margin-bottom:auto}.empty.svelte-7vh28x{padding:.5rem;font-size:.85rem;font-style:italic;color:var(--playpilot-text-color-alt)}.save.svelte-7vh28x{z-index:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;position:sticky;bottom:0;left:0;width:100%;margin-top:1rem;padding:.5rem;border:0;border-radius:2rem;background:var(--playpilot-content);box-shadow:0 0 1rem 1rem var(--playpilot-dark);transition:opacity .1s;font-family:inherit;color:var(--playpilot-text-color-alt);cursor:pointer}.save.svelte-7vh28x:hover{background:var(--playpilot-content-light);color:var(--playpilot-text-color)}.save[disabled].svelte-7vh28x{opacity:.75}.error.svelte-7vh28x{margin-top:.5rem}.panel.svelte-7vh28x{z-index:10;position:absolute;top:0;left:0;width:100%;height:100%;padding:1.5rem;background:var(--playpilot-dark);overflow-y:auto}:root{--playpilot-primary: #fa548a;--playpilot-dark: #101426;--playpilot-light: #1b2743;--playpilot-lighter: #233257;--playpilot-content: #354367;--playpilot-content-light: #4b5b82;--playpilot-green: #53bca0;--playpilot-font-family: "Poppins", sans-serif;--playpilot-text-color: #fff;--playpilot-text-color-alt: #c8d4de;--playpilot-shadow: .2rem .15rem .15rem rgba(0, 0, 0, .2);--playpilot-shadow-large: .15rem .15rem .2rem rgba(0, 0, 0, .05), .2rem .35rem .35rem rgba(0, 0, 0, .1), .1rem .1rem .75rem rgba(0, 0, 0, .25);--playpilot-error: #ea5a5a;--playpilot-error-dark: #442533}[data-playpilot-injection-key]{position:relative}[data-playpilot-injection-key].injection-highlight{outline:.25rem solid var(--playpilot-primary)!important;outline-offset:.5rem!important;border-radius:.05rem;scroll-margin:5rem}.playpilot-styled-scrollbar{scrollbar-color:var(--playpilot-content-light) var(--playpilot-lighter);scrollbar-width:thin}.playpilot-styled-scrollbed::-webkit-scrollbar{width:.75rem}.playpilot-styled-scrollbed::-webkit-scrollbar-track{background:var(--playpilot-light)}.playpilot-styled-scrollbed::-webkit-scrollbar-thumb{border:2px solid var(--playpilot-light);border-radius:1rem;background:var(--playpilot-lighter)}.playpilot-styled-scrollbed::-webkit-scrollbar-thumb:hover{background:var(--playpilot-content-light)}.playpilot-styled-scrollbed::-webkit-scrollbar-thumb:active{background:var(--playpilot-text-color-alt)}.playpilot-link-injections.svelte-168nsap *{box-sizing:border-box}.playpilot-link-injections.svelte-168nsap button,.playpilot-link-injections.svelte-168nsap input{transition:outline-offset .1s}.playpilot-link-injections.svelte-168nsap button:focus-visible,.playpilot-link-injections.svelte-168nsap input:focus-visible{outline:2px solid white;outline-offset:2px}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();const zt=!1;var Xt=Array.isArray,Pr=Array.prototype.indexOf,Qt=Array.from,Ir=Object.defineProperty,Be=Object.getOwnPropertyDescriptor,Ar=Object.getOwnPropertyDescriptors,Lr=Object.prototype,jr=Array.prototype,An=Object.getPrototypeOf;function Mr(e){return typeof e=="function"}const Ne=()=>{};function Nr(e){for(var t=0;t<e.length;t++)e[t]()}const ge=2,Ln=4,ut=8,Ct=16,pe=32,vt=64,Vt=128,qe=256,wt=512,fe=1024,Ie=2048,St=4096,ye=8192,Ge=16384,jn=32768,Ze=65536,Or=1<<17,Rr=1<<19,Mn=1<<20,tt=Symbol("$state"),Hr=Symbol("legacy props"),Fr=Symbol("");function Nn(e){return e===this.v}function Dr(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function en(e){return!Dr(e,this.v)}function qr(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function zr(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Vr(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Br(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function $r(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Ur(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Wr(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Yr(){throw new Error("https://svelte.dev/e/state_unsafe_local_read")}function Kr(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}let Je=!1,Gr=!1;function Zr(){Je=!0}const tn=1,nn=2,On=4,Jr=8,Xr=16,Qr=1,ei=2,ti=4,ni=8,ri=16,ii=1,ai=2,oi=4,li=1,si=2,le=Symbol(),Rn="http://www.w3.org/2000/svg";function ue(e,t){var n={f:0,v:e,reactions:null,equals:Nn,rv:0,wv:0};return n}function B(e){return ci(ue(e))}function Hn(e,t=!1){var r;const n=ue(e);return t||(n.equals=en),Je&&V!==null&&V.l!==null&&((r=V.l).s??(r.s=[])).push(n),n}function ci(e){return z!==null&&z.f&ge&&(ke===null?bi([e]):ke.push(e)),e}function L(e,t){return z!==null&&At()&&z.f&(ge|Ct)&&(ke===null||!ke.includes(e))&&Kr(),Bt(e,t)}function Bt(e,t){return e.equals(t)||(e.v,e.v=t,e.wv=tr(),Fn(e,Ie),At()&&j!==null&&j.f&fe&&!(j.f&pe)&&(ae!==null&&ae.includes(e)?(Ee(j,Ie),Mt(j)):Pe===null?xi([e]):Pe.push(e))),t}function Fn(e,t){var n=e.reactions;if(n!==null)for(var r=At(),i=n.length,a=0;a<i;a++){var o=n[a],f=o.f;f&Ie||!r&&o===j||(Ee(o,t),f&(fe|qe)&&(f&ge?Fn(o,St):Mt(o)))}}let ui=!1;function Z(e,t=null,n){if(typeof e!="object"||e===null||tt in e)return e;const r=An(e);if(r!==Lr&&r!==jr)return e;var i=new Map,a=Xt(e),o=ue(0);a&&i.set("length",ue(e.length));var f;return new Proxy(e,{defineProperty(u,s,l){(!("value"in l)||l.configurable===!1||l.enumerable===!1||l.writable===!1)&&Ur();var v=i.get(s);return v===void 0?(v=ue(l.value),i.set(s,v)):L(v,Z(l.value,f)),!0},deleteProperty(u,s){var l=i.get(s);if(l===void 0)s in u&&i.set(s,ue(le));else{if(a&&typeof s=="string"){var v=i.get("length"),c=Number(s);Number.isInteger(c)&&c<v.v&&L(v,c)}L(l,le),gn(o)}return!0},get(u,s,l){var h;if(s===tt)return e;var v=i.get(s),c=s in u;if(v===void 0&&(!c||(h=Be(u,s))!=null&&h.writable)&&(v=ue(Z(c?u[s]:le,f)),i.set(s,v)),v!==void 0){var d=_(v);return d===le?void 0:d}return Reflect.get(u,s,l)},getOwnPropertyDescriptor(u,s){var l=Reflect.getOwnPropertyDescriptor(u,s);if(l&&"value"in l){var v=i.get(s);v&&(l.value=_(v))}else if(l===void 0){var c=i.get(s),d=c==null?void 0:c.v;if(c!==void 0&&d!==le)return{enumerable:!0,configurable:!0,value:d,writable:!0}}return l},has(u,s){var d;if(s===tt)return!0;var l=i.get(s),v=l!==void 0&&l.v!==le||Reflect.has(u,s);if(l!==void 0||j!==null&&(!v||(d=Be(u,s))!=null&&d.writable)){l===void 0&&(l=ue(v?Z(u[s],f):le),i.set(s,l));var c=_(l);if(c===le)return!1}return v},set(u,s,l,v){var g;var c=i.get(s),d=s in u;if(a&&s==="length")for(var h=l;h<c.v;h+=1){var m=i.get(h+"");m!==void 0?L(m,le):h in u&&(m=ue(le),i.set(h+"",m))}c===void 0?(!d||(g=Be(u,s))!=null&&g.writable)&&(c=ue(void 0),L(c,Z(l,f)),i.set(s,c)):(d=c.v!==le,L(c,Z(l,f)));var p=Reflect.getOwnPropertyDescriptor(u,s);if(p!=null&&p.set&&p.set.call(v,l),!d){if(a&&typeof s=="string"){var k=i.get("length"),y=Number(s);Number.isInteger(y)&&y>=k.v&&L(k,y+1)}gn(o)}return!0},ownKeys(u){_(o);var s=Reflect.ownKeys(u).filter(c=>{var d=i.get(c);return d===void 0||d.v!==le});for(var[l,v]of i)v.v!==le&&!(l in u)&&s.push(l);return s},setPrototypeOf(){Wr()}})}function gn(e,t=1){L(e,e.v+t)}var he,Dn,qn;function vi(){if(he===void 0){he=window;var e=Element.prototype,t=Node.prototype;Dn=Be(t,"firstChild").get,qn=Be(t,"nextSibling").get,e.__click=void 0,e.__className="",e.__attributes=null,e.__styles=null,e.__e=void 0,Text.prototype.__t=void 0}}function ft(e=""){return document.createTextNode(e)}function We(e){return Dn.call(e)}function Pt(e){return qn.call(e)}function b(e,t){return We(e)}function Q(e,t){{var n=We(e);return n instanceof Comment&&n.data===""?Pt(n):n}}function E(e,t=1,n=!1){let r=e;for(;t--;)r=Pt(r);return r}function fi(e){e.textContent=""}function ne(e){var t=ge|Ie;j===null?t|=qe:j.f|=Mn;var n=z!==null&&z.f&ge?z:null;const r={children:null,ctx:V,deps:null,equals:Nn,f:t,fn:e,reactions:null,rv:0,v:null,wv:0,parent:n??j};return n!==null&&(n.children??(n.children=[])).push(r),r}function di(e){const t=ne(e);return t.equals=en,t}function zn(e){var t=e.children;if(t!==null){e.children=null;for(var n=0;n<t.length;n+=1){var r=t[n];r.f&ge?rn(r):be(r)}}}function _i(e){for(var t=e.parent;t!==null;){if(!(t.f&ge))return t;t=t.parent}return null}function Vn(e){var t,n=j;_e(_i(e));try{zn(e),t=nr(e)}finally{_e(n)}return t}function Bn(e){var t=Vn(e),n=(Re||e.f&qe)&&e.deps!==null?St:fe;Ee(e,n),e.equals(t)||(e.v=t,e.wv=tr())}function rn(e){zn(e),ot(e,0),Ee(e,Ge),e.v=e.children=e.deps=e.ctx=e.reactions=null}function mi(e){j===null&&z===null&&Vr(),z!==null&&z.f&qe&&zr(),ln&&qr()}function hi(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Xe(e,t,n,r=!0){var i=(e&vt)!==0,a=j,o={ctx:V,deps:null,deriveds:null,nodes_start:null,nodes_end:null,f:e|Ie,first:null,fn:t,last:null,next:null,parent:i?null:a,prev:null,teardown:null,transitions:null,wv:0};if(n){var f=$e;try{pn(!0),jt(o),o.f|=jn}catch(l){throw be(o),l}finally{pn(f)}}else t!==null&&Mt(o);var u=n&&o.deps===null&&o.first===null&&o.nodes_start===null&&o.teardown===null&&(o.f&Mn)===0;if(!u&&!i&&r&&(a!==null&&hi(o,a),z!==null&&z.f&ge)){var s=z;(s.children??(s.children=[])).push(o)}return o}function gi(e){const t=Xe(ut,null,!1);return Ee(t,fe),t.teardown=e,t}function an(e){mi();var t=j!==null&&(j.f&pe)!==0&&V!==null&&!V.m;if(t){var n=V;(n.e??(n.e=[])).push({fn:e,effect:j,reaction:z})}else{var r=It(e);return r}}function pi(e){const t=Xe(vt,e,!0);return(n={})=>new Promise(r=>{n.outro?nt(t,()=>{be(t),r(void 0)}):(be(t),r(void 0))})}function It(e){return Xe(Ln,e,!1)}function $n(e){return Xe(ut,e,!0)}function H(e){return dt(e)}function dt(e,t=0){return Xe(ut|Ct|t,e,!0)}function He(e,t=!0){return Xe(ut|pe,e,!0,t)}function Un(e){var t=e.teardown;if(t!==null){const n=ln,r=z;yn(!0),xe(null);try{t.call(null)}finally{yn(n),xe(r)}}}function Wn(e){var t=e.deriveds;if(t!==null){e.deriveds=null;for(var n=0;n<t.length;n+=1)rn(t[n])}}function Yn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){var r=n.next;be(n,t),n=r}}function yi(e){for(var t=e.first;t!==null;){var n=t.next;t.f&pe||be(t),t=n}}function be(e,t=!0){var n=!1;if((t||e.f&Rr)&&e.nodes_start!==null){for(var r=e.nodes_start,i=e.nodes_end;r!==null;){var a=r===i?null:Pt(r);r.remove(),r=a}n=!0}Yn(e,t&&!n),Wn(e),ot(e,0),Ee(e,Ge);var o=e.transitions;if(o!==null)for(const u of o)u.stop();Un(e);var f=e.parent;f!==null&&f.first!==null&&Kn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=null}function Kn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function nt(e,t){var n=[];on(e,n,!0),Gn(n,()=>{be(e),t&&t()})}function Gn(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var i of e)i.out(r)}else t()}function on(e,t,n){if(!(e.f&ye)){if(e.f^=ye,e.transitions!==null)for(const o of e.transitions)(o.is_global||n)&&t.push(o);for(var r=e.first;r!==null;){var i=r.next,a=(r.f&Ze)!==0||(r.f&pe)!==0;on(r,t,a?n:!1),r=i}}}function rt(e){Zn(e,!0)}function Zn(e,t){if(e.f&ye){mt(e)&&jt(e),e.f^=ye;for(var n=e.first;n!==null;){var r=n.next,i=(n.f&Ze)!==0||(n.f&pe)!==0;Zn(n,i?t:!1),n=r}if(e.transitions!==null)for(const a of e.transitions)(a.is_global||t)&&a.in()}}let bt=!1,$t=[];function Jn(){bt=!1;const e=$t.slice();$t=[],Nr(e)}function _t(e){bt||(bt=!0,queueMicrotask(Jn)),$t.push(e)}function ki(){bt&&Jn()}function Xn(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}const Qn=0,wi=1;let yt=!1,kt=Qn,it=!1,at=null,$e=!1,ln=!1;function pn(e){$e=e}function yn(e){ln=e}let Oe=[],Ue=0;let z=null;function xe(e){z=e}let j=null;function _e(e){j=e}let ke=null;function bi(e){ke=e}let ae=null,ce=0,Pe=null;function xi(e){Pe=e}let er=1,Ut=0,Re=!1,V=null;function tr(){return++er}function At(){return!Je||V!==null&&V.l===null}function mt(e){var s;var t=e.f;if(t&Ie)return!0;if(t&St){var n=e.deps,r=(t&qe)!==0;if(n!==null){var i,a,o=(t&wt)!==0,f=r&&j!==null&&!Re,u=n.length;if(o||f){for(i=0;i<u;i++)a=n[i],(o||!((s=a==null?void 0:a.reactions)!=null&&s.includes(e)))&&(a.reactions??(a.reactions=[])).push(e);o&&(e.f^=wt)}for(i=0;i<u;i++)if(a=n[i],mt(a)&&Bn(a),a.wv>e.wv)return!0}(!r||j!==null&&!Re)&&Ee(e,fe)}return!1}function Ei(e,t){for(var n=t;n!==null;){if(n.f&Vt)try{n.fn(e);return}catch{n.f^=Vt}n=n.parent}throw yt=!1,e}function Ti(e){return(e.f&Ge)===0&&(e.parent===null||(e.parent.f&Vt)===0)}function Lt(e,t,n,r){if(yt){if(n===null&&(yt=!1),Ti(t))throw e;return}n!==null&&(yt=!0);{Ei(e,t);return}}function nr(e){var c;var t=ae,n=ce,r=Pe,i=z,a=Re,o=ke,f=V,u=e.f;ae=null,ce=0,Pe=null,z=u&(pe|vt)?null:e,Re=!$e&&(u&qe)!==0,ke=null,V=e.ctx,Ut++;try{var s=(0,e.fn)(),l=e.deps;if(ae!==null){var v;if(ot(e,ce),l!==null&&ce>0)for(l.length=ce+ae.length,v=0;v<ae.length;v++)l[ce+v]=ae[v];else e.deps=l=ae;if(!Re)for(v=ce;v<l.length;v++)((c=l[v]).reactions??(c.reactions=[])).push(e)}else l!==null&&ce<l.length&&(ot(e,ce),l.length=ce);return s}finally{ae=t,ce=n,Pe=r,z=i,Re=a,ke=o,V=f}}function Ci(e,t){let n=t.reactions;if(n!==null){var r=Pr.call(n,e);if(r!==-1){var i=n.length-1;i===0?n=t.reactions=null:(n[r]=n[i],n.pop())}}n===null&&t.f&ge&&(ae===null||!ae.includes(t))&&(Ee(t,St),t.f&(qe|wt)||(t.f^=wt),ot(t,0))}function ot(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Ci(e,n[r])}function jt(e){var t=e.f;if(!(t&Ge)){Ee(e,fe);var n=j,r=V;j=e;try{t&Ct?yi(e):Yn(e),Wn(e),Un(e);var i=nr(e);e.teardown=typeof i=="function"?i:null,e.wv=er;var a=e.deps,o;zt&&Gr&&e.f&Ie}catch(f){Lt(f,e,n,r||e.ctx)}finally{j=n}}}function rr(){if(Ue>1e3){Ue=0;try{Br()}catch(e){if(at!==null)Lt(e,at,null);else throw e}}Ue++}function ir(e){var t=e.length;if(t!==0){rr();var n=$e;$e=!0;try{for(var r=0;r<t;r++){var i=e[r];i.f&fe||(i.f^=fe);var a=[];ar(i,a),Si(a)}}finally{$e=n}}}function Si(e){var t=e.length;if(t!==0)for(var n=0;n<t;n++){var r=e[n];if(!(r.f&(Ge|ye)))try{mt(r)&&(jt(r),r.deps===null&&r.first===null&&r.nodes_start===null&&(r.teardown===null?Kn(r):r.fn=null))}catch(i){Lt(i,r,null,r.ctx)}}}function Pi(){if(it=!1,Ue>1001)return;const e=Oe;Oe=[],ir(e),it||(Ue=0,at=null)}function Mt(e){kt===Qn&&(it||(it=!0,queueMicrotask(Pi))),at=e;for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(n&(vt|pe)){if(!(n&fe))return;t.f^=fe}}Oe.push(t)}function ar(e,t){var n=e.first,r=[];e:for(;n!==null;){var i=n.f,a=(i&pe)!==0,o=a&&(i&fe)!==0,f=n.next;if(!o&&!(i&ye))if(i&ut){if(a)n.f^=fe;else try{mt(n)&&jt(n)}catch(v){Lt(v,n,null,n.ctx)}var u=n.first;if(u!==null){n=u;continue}}else i&Ln&&r.push(n);if(f===null){let v=n.parent;for(;v!==null;){if(e===v)break e;var s=v.next;if(s!==null){n=s;continue e}v=v.parent}}n=f}for(var l=0;l<r.length;l++)u=r[l],t.push(u),ar(u,t)}function or(e){var t=kt,n=Oe;try{rr();const i=[];kt=wi,Oe=i,it=!1,ir(n);var r=e==null?void 0:e();return ki(),(Oe.length>0||i.length>0)&&or(),Ue=0,at=null,r}finally{kt=t,Oe=n}}async function kn(){await Promise.resolve(),or()}function _(e){var l;var t=e.f,n=(t&ge)!==0;if(n&&t&Ge){var r=Vn(e);return rn(e),r}if(z!==null){ke!==null&&ke.includes(e)&&Yr();var i=z.deps;e.rv<Ut&&(e.rv=Ut,ae===null&&i!==null&&i[ce]===e?ce++:ae===null?ae=[e]:ae.push(e),Pe!==null&&j!==null&&j.f&fe&&!(j.f&pe)&&Pe.includes(e)&&(Ee(j,Ie),Mt(j)))}else if(n&&e.deps===null)for(var a=e,o=a.parent,f=a;o!==null;)if(o.f&ge){var u=o;f=u,o=u.parent}else{var s=o;(l=s.deriveds)!=null&&l.includes(f)||(s.deriveds??(s.deriveds=[])).push(f);break}return n&&(a=e,mt(a)&&Bn(a)),e.v}function Ye(e){const t=z;try{return z=null,e()}finally{z=t}}const Ii=-7169;function Ee(e,t){e.f=e.f&Ii|t}function Ai(e){return sr().get(e)}function lr(e,t){return sr().set(e,t),t}function sr(e){return V===null&&Xn(),V.c??(V.c=new Map(Li(V)||void 0))}function Li(e){let t=e.p;for(;t!==null;){const n=t.c;if(n!==null)return n;t=t.p}return null}function J(e,t=!1,n){V={p:V,c:null,e:null,m:!1,s:e,x:null,l:null},Je&&!t&&(V.l={s:null,u:null,r1:[],r2:ue(!1)})}function X(e){const t=V;if(t!==null){const o=t.e;if(o!==null){var n=j,r=z;t.e=null;try{for(var i=0;i<o.length;i++){var a=o[i];_e(a.effect),xe(a.reaction),It(a.fn)}}finally{_e(n),xe(r)}}V=t.p,t.m=!0}return{}}function ji(e){return e.endsWith("capture")&&e!=="gotpointercapture"&&e!=="lostpointercapture"}const Mi=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function Ni(e){return Mi.includes(e)}const Oi={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject"};function Ri(e){return e=e.toLowerCase(),Oi[e]??e}const Hi=["touchstart","touchmove"];function Fi(e){return Hi.includes(e)}function Di(e,t){if(t){const n=document.body;e.autofocus=!0,_t(()=>{document.activeElement===n&&e.focus()})}}let wn=!1;function qi(){wn||(wn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n.__on_r)==null||t.call(n)})},{capture:!0}))}function cr(e){var t=z,n=j;xe(null),_e(null);try{return e()}finally{xe(t),_e(n)}}function zi(e,t,n,r=n){e.addEventListener(t,()=>cr(n));const i=e.__on_r;i?e.__on_r=()=>{i(),r(!0)}:e.__on_r=()=>r(!0),qi()}const ur=new Set,Wt=new Set;function vr(e,t,n,r){function i(a){if(r.capture||et.call(t,a),!a.cancelBubble)return cr(()=>n.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?_t(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function ve(e,t,n,r,i){var a={capture:r,passive:i},o=vr(e,t,n,a);(t===document.body||t===window||t===document)&&gi(()=>{t.removeEventListener(e,o,a)})}function oe(e){for(var t=0;t<e.length;t++)ur.add(e[t]);for(var n of Wt)n(e)}function et(e){var y;var t=this,n=t.ownerDocument,r=e.type,i=((y=e.composedPath)==null?void 0:y.call(e))||[],a=i[0]||e.target,o=0,f=e.__root;if(f){var u=i.indexOf(f);if(u!==-1&&(t===document||t===window)){e.__root=t;return}var s=i.indexOf(t);if(s===-1)return;u<=s&&(o=u)}if(a=i[o]||e.target,a!==t){Ir(e,"currentTarget",{configurable:!0,get(){return a||n}});var l=z,v=j;xe(null),_e(null);try{for(var c,d=[];a!==null;){var h=a.assignedSlot||a.parentNode||a.host||null;try{var m=a["__"+r];if(m!==void 0&&!a.disabled)if(Xt(m)){var[p,...k]=m;p.apply(a,[e,...k])}else m.call(a,e)}catch(g){c?d.push(g):c=g}if(e.cancelBubble||h===t||h===null)break;a=h}if(c){for(let g of d)queueMicrotask(()=>{throw g});throw c}}finally{e.__root=t,delete e.currentTarget,xe(l),_e(v)}}}function fr(e){var t=document.createElement("template");return t.innerHTML=e,t.content}function Ke(e,t){var n=j;n.nodes_start===null&&(n.nodes_start=e,n.nodes_end=t)}function S(e,t){var n=(t&li)!==0,r=(t&si)!==0,i,a=!e.startsWith("<!>");return()=>{i===void 0&&(i=fr(a?e:"<!>"+e),n||(i=We(i)));var o=r?document.importNode(i,!0):i.cloneNode(!0);if(n){var f=We(o),u=o.lastChild;Ke(f,u)}else Ke(o,o);return o}}function Te(e,t,n="svg"){var r=!e.startsWith("<!>"),i=`<${n}>${r?e:"<!>"+e}</${n}>`,a;return()=>{if(!a){var o=fr(i),f=We(o);a=We(f)}var u=a.cloneNode(!0);return Ke(u,u),u}}function Ae(e=""){{var t=ft(e+"");return Ke(t,t),t}}function lt(){var e=document.createDocumentFragment(),t=document.createComment(""),n=ft();return e.append(t,n),Ke(t,n),e}function w(e,t){e!==null&&e.before(t)}let xt=!0;function bn(e){xt=e}function q(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=n==null?"":n+"")}function sn(e,t){return Vi(e,t)}const Ve=new Map;function Vi(e,{target:t,anchor:n,props:r={},events:i,context:a,intro:o=!0}){vi();var f=new Set,u=v=>{for(var c=0;c<v.length;c++){var d=v[c];if(!f.has(d)){f.add(d);var h=Fi(d);t.addEventListener(d,et,{passive:h});var m=Ve.get(d);m===void 0?(document.addEventListener(d,et,{passive:h}),Ve.set(d,1)):Ve.set(d,m+1)}}};u(Qt(ur)),Wt.add(u);var s=void 0,l=pi(()=>{var v=n??t.appendChild(ft());return He(()=>{if(a){J({});var c=V;c.c=a}i&&(r.$$events=i),xt=o,s=e(v,r)||{},xt=!0,a&&X()}),()=>{var h;for(var c of f){t.removeEventListener(c,et);var d=Ve.get(c);--d===0?(document.removeEventListener(c,et),Ve.delete(c)):Ve.set(c,d)}Wt.delete(u),v!==n&&((h=v.parentNode)==null||h.removeChild(v))}});return Yt.set(s,l),s}let Yt=new WeakMap;function dr(e,t){const n=Yt.get(e);return n?(Yt.delete(e),n(t)):Promise.resolve()}function F(e,t,n=!1){var r=e,i=null,a=null,o=le,f=n?Ze:0,u=!1;const s=(v,c=!0)=>{u=!0,l(c,v)},l=(v,c)=>{o!==(o=v)&&(o?(i?rt(i):c&&(i=He(()=>c(r))),a&&nt(a,()=>{a=null})):(a?rt(a):c&&(a=He(()=>c(r))),i&&nt(i,()=>{i=null})))};dt(()=>{u=!1,t(s),u||l(null,null)},f)}function st(e,t){return t}function Bi(e,t,n,r){for(var i=[],a=t.length,o=0;o<a;o++)on(t[o].e,i,!0);var f=a>0&&i.length===0&&n!==null;if(f){var u=n.parentNode;fi(u),u.append(n),r.clear(),Se(e,t[0].prev,t[a-1].next)}Gn(i,()=>{for(var s=0;s<a;s++){var l=t[s];f||(r.delete(l.k),Se(e,l.prev,l.next)),be(l.e,!f)}})}function Fe(e,t,n,r,i,a=null){var o=e,f={flags:t,items:new Map,first:null},u=(t&On)!==0;if(u){var s=e;o=s.appendChild(ft())}var l=null,v=!1;dt(()=>{var c=n(),d=Xt(c)?c:c==null?[]:Qt(c),h=d.length;if(!(v&&h===0)){v=h===0;{var m=z;$i(d,f,o,i,t,(m.f&ye)!==0,r)}a!==null&&(h===0?l?rt(l):l=He(()=>a(o)):l!==null&&nt(l,()=>{l=null})),n()}})}function $i(e,t,n,r,i,a,o,f){var re,te,ie,D;var u=(i&Jr)!==0,s=(i&(tn|nn))!==0,l=e.length,v=t.items,c=t.first,d=c,h,m=null,p,k=[],y=[],g,T,x,C;if(u)for(C=0;C<l;C+=1)g=e[C],T=o(g,C),x=v.get(T),x!==void 0&&((re=x.a)==null||re.measure(),(p??(p=new Set)).add(x));for(C=0;C<l;C+=1){if(g=e[C],T=o(g,C),x=v.get(T),x===void 0){var N=d?d.e.nodes_start:n;m=Wi(N,t,m,m===null?t.first:m.next,g,T,C,r,i),v.set(T,m),k=[],y=[],d=m.next;continue}if(s&&Ui(x,g,C,i),x.e.f&ye&&(rt(x.e),u&&((te=x.a)==null||te.unfix(),(p??(p=new Set)).delete(x))),x!==d){if(h!==void 0&&h.has(x)){if(k.length<y.length){var I=y[0],R;m=I.prev;var U=k[0],A=k[k.length-1];for(R=0;R<k.length;R+=1)xn(k[R],I,n);for(R=0;R<y.length;R+=1)h.delete(y[R]);Se(t,U.prev,A.next),Se(t,m,U),Se(t,A,I),d=I,m=A,C-=1,k=[],y=[]}else h.delete(x),xn(x,d,n),Se(t,x.prev,x.next),Se(t,x,m===null?t.first:m.next),Se(t,m,x),m=x;continue}for(k=[],y=[];d!==null&&d.k!==T;)(a||!(d.e.f&ye))&&(h??(h=new Set)).add(d),y.push(d),d=d.next;if(d===null)continue;x=d}k.push(x),m=x,d=x.next}if(d!==null||h!==void 0){for(var P=h===void 0?[]:Qt(h);d!==null;)(a||!(d.e.f&ye))&&P.push(d),d=d.next;var O=P.length;if(O>0){var W=i&On&&l===0?n:null;if(u){for(C=0;C<O;C+=1)(ie=P[C].a)==null||ie.measure();for(C=0;C<O;C+=1)(D=P[C].a)==null||D.fix()}Bi(t,P,W,v)}}u&&_t(()=>{var Y;if(p!==void 0)for(x of p)(Y=x.a)==null||Y.apply()}),j.first=t.first&&t.first.e,j.last=m&&m.e}function Ui(e,t,n,r){r&tn&&Bt(e.v,t),r&nn?Bt(e.i,n):e.i=n}function Wi(e,t,n,r,i,a,o,f,u,s){var l=(u&tn)!==0,v=(u&Xr)===0,c=l?v?Hn(i):ue(i):i,d=u&nn?ue(o):o,h={i:d,v:c,k:a,a:null,e:null,prev:n,next:r};try{return h.e=He(()=>f(e,c,d),ui),h.e.prev=n&&n.e,h.e.next=r&&r.e,n===null?t.first=h:(n.next=h,n.e.next=h.e),r!==null&&(r.prev=h,r.e.prev=h.e),h}finally{}}function xn(e,t,n){for(var r=e.next?e.next.e.nodes_start:n,i=t?t.e.nodes_start:n,a=e.e.nodes_start;a!==r;){var o=Pt(a);i.before(a),a=o}}function Se(e,t,n){t===null?e.first=n:(t.next=n,t.e.next=n&&n.e),n!==null&&(n.prev=t,n.e.prev=t&&t.e)}function Qe(e,t,...n){var r=e,i=Ne,a;dt(()=>{i!==(i=t())&&(a&&(be(a),a=null),a=He(()=>i(r,...n)))},Ze)}function Yi(e,t,n,r,i,a){var o,f,u=null,s=e,l;dt(()=>{const v=t()||null;var c=v==="svg"?Rn:null;v!==o&&(l&&(v===null?nt(l,()=>{l=null,f=null}):v===f?rt(l):(be(l),bn(!1))),v&&v!==f&&(l=He(()=>{u=c?document.createElementNS(c,v):document.createElement(v),Ke(u,u);{var d=u.appendChild(ft());r(u,d)}j.nodes_end=u,s.before(u)})),o=v,o&&(f=o),bn(!0))},Ze)}function _r(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=_r(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Ki(){for(var e,t,n=0,r="",i=arguments.length;n<i;n++)(e=arguments[n])&&(t=_r(e))&&(r&&(r+=" "),r+=t);return r}function Gi(e){return typeof e=="object"?Ki(e):e??""}function Zi(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function K(e,t,n,r){var i=e.__attributes??(e.__attributes={});i[t]!==(i[t]=n)&&(t==="style"&&"__styles"in e&&(e.__styles={}),t==="loading"&&(e[Fr]=n),n==null?e.removeAttribute(t):typeof n!="string"&&mr(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Ji(e,t,n,r,i=!1,a=!1,o=!1){var f=t||{},u=e.tagName==="OPTION";for(var s in t)s in n||(n[s]=null);n.class&&(n.class=Gi(n.class)),n.class=n.class?n.class+" "+r:r;var l=mr(e),v=e.__attributes??(e.__attributes={});for(const y in n){let g=n[y];if(u&&y==="value"&&g==null){e.value=e.__value="",f[y]=g;continue}var c=f[y];if(g!==c){f[y]=g;var d=y[0]+y[1];if(d!=="$$"){if(d==="on"){const T={},x="$$"+y;let C=y.slice(2);var h=Ni(C);if(ji(C)&&(C=C.slice(0,-7),T.capture=!0),!h&&c){if(g!=null)continue;e.removeEventListener(C,f[x],T),f[x]=null}if(g!=null)if(h)e[`__${C}`]=g,oe([C]);else{let N=function(I){f[y].call(this,I)};var k=N;f[x]=vr(C,e,N,T)}else h&&(e[`__${C}`]=void 0)}else if(y==="style"&&g!=null)e.style.cssText=g+"";else if(y==="autofocus")Di(e,!!g);else if(y==="__value"||y==="value"&&g!=null)e.value=e[y]=e.__value=g;else if(y==="selected"&&u)Zi(e,g);else{var m=y;i||(m=Ri(m));var p=m==="defaultValue"||m==="defaultChecked";if(g==null&&!a&&!p)if(v[y]=null,m==="value"||m==="checked"){let T=e;if(m==="value"){let x=T.defaultValue;T.removeAttribute(m),T.defaultValue=x}else{let x=T.defaultChecked;T.removeAttribute(m),T.defaultChecked=x}}else e.removeAttribute(y);else p||l.includes(m)&&(a||typeof g!="string")?e[m]=g:typeof g!="function"&&K(e,m,g)}y==="style"&&"__styles"in e&&(e.__styles={})}}}return f}var En=new Map;function mr(e){var t=En.get(e.nodeName);if(t)return t;En.set(e.nodeName,t=[]);for(var n,r=e,i=Element.prototype;i!==r;){n=Ar(r);for(var a in n)n[a].set&&t.push(a);r=An(r)}return t}function se(e,t,n){if(n){if(e.classList.contains(t))return;e.classList.add(t)}else{if(!e.classList.contains(t))return;e.classList.remove(t)}}function cn(e,t,n,r){var i=e.__styles??(e.__styles={});i[t]!==n&&(i[t]=n,n==null?e.style.removeProperty(t):e.style.setProperty(t,n,""))}const Xi=()=>performance.now(),Ce={tick:e=>requestAnimationFrame(e),now:()=>Xi(),tasks:new Set};function hr(){const e=Ce.now();Ce.tasks.forEach(t=>{t.c(e)||(Ce.tasks.delete(t),t.f())}),Ce.tasks.size!==0&&Ce.tick(hr)}function Qi(e){let t;return Ce.tasks.size===0&&Ce.tick(hr),{promise:new Promise(n=>{Ce.tasks.add(t={c:e,f:n})}),abort(){Ce.tasks.delete(t)}}}function gt(e,t){e.dispatchEvent(new CustomEvent(t))}function ea(e){if(e==="float")return"cssFloat";if(e==="offset")return"cssOffset";if(e.startsWith("--"))return e;const t=e.split("-");return t.length===1?t[0]:t[0]+t.slice(1).map(n=>n[0].toUpperCase()+n.slice(1)).join("")}function Tn(e){const t={},n=e.split(";");for(const r of n){const[i,a]=r.split(":");if(!i||a===void 0)break;const o=ea(i.trim());t[o]=a.trim()}return t}const ta=e=>e;function we(e,t,n,r){var i=(e&ii)!==0,a=(e&ai)!==0,o=i&&a,f=(e&oi)!==0,u=o?"both":i?"in":"out",s,l=t.inert,v,c;function d(){var y=z,g=j;xe(null),_e(null);try{return s??(s=n()(t,(r==null?void 0:r())??{},{direction:u}))}finally{xe(y),_e(g)}}var h={is_global:f,in(){var y;if(t.inert=l,!i){c==null||c.abort(),(y=c==null?void 0:c.reset)==null||y.call(c);return}a||v==null||v.abort(),gt(t,"introstart"),v=Kt(t,d(),c,1,()=>{gt(t,"introend"),v==null||v.abort(),v=s=void 0})},out(y){if(!a){y==null||y(),s=void 0;return}t.inert=!0,gt(t,"outrostart"),c=Kt(t,d(),v,0,()=>{gt(t,"outroend"),y==null||y()})},stop:()=>{v==null||v.abort(),c==null||c.abort()}},m=j;if((m.transitions??(m.transitions=[])).push(h),i&&xt){var p=f;if(!p){for(var k=m.parent;k&&k.f&Ze;)for(;(k=k.parent)&&!(k.f&Ct););p=!k||(k.f&jn)!==0}p&&It(()=>{Ye(()=>h.in())})}}function Kt(e,t,n,r,i){var a=r===1;if(Mr(t)){var o,f=!1;return _t(()=>{if(!f){var p=t({direction:a?"in":"out"});o=Kt(e,p,n,r,i)}}),{abort:()=>{f=!0,o==null||o.abort()},deactivate:()=>o.deactivate(),reset:()=>o.reset(),t:()=>o.t()}}if(n==null||n.deactivate(),!(t!=null&&t.duration))return i(),{abort:Ne,deactivate:Ne,reset:Ne,t:()=>r};const{delay:u=0,css:s,tick:l,easing:v=ta}=t;var c=[];if(a&&n===void 0&&(l&&l(0,1),s)){var d=Tn(s(0,1));c.push(d,d)}var h=()=>1-r,m=e.animate(c,{duration:u});return m.onfinish=()=>{var p=(n==null?void 0:n.t())??1-r;n==null||n.abort();var k=r-p,y=t.duration*Math.abs(k),g=[];if(y>0){if(s)for(var T=Math.ceil(y/16.666666666666668),x=0;x<=T;x+=1){var C=p+k*v(x/T),N=s(C,1-C);g.push(Tn(N))}h=()=>{var I=m.currentTime;return p+k*v(I/y)},l&&Qi(()=>{if(m.playState!=="running")return!1;var I=h();return l(I,1-I),!0})}m=e.animate(g,{duration:y,fill:"forwards"}),m.onfinish=()=>{h=()=>r,l==null||l(r,1-r),i()}},{abort:()=>{m&&(m.cancel(),m.effect=null,m.onfinish=Ne)},deactivate:()=>{i=Ne},reset:()=>{r===0&&(l==null||l(1,0))},t:()=>h()}}function na(e,t,n=t){var r=At();zi(e,"input",i=>{var a=i?e.defaultValue:e.value;if(a=Ft(e)?Dt(a):a,n(a),r&&a!==(a=t())){var o=e.selectionStart,f=e.selectionEnd;e.value=a??"",f!==null&&(e.selectionStart=o,e.selectionEnd=Math.min(f,e.value.length))}}),Ye(t)==null&&e.value&&n(Ft(e)?Dt(e.value):e.value),$n(()=>{var i=t();Ft(e)&&i===Dt(e.value)||e.type==="date"&&!i&&!e.value||i!==e.value&&(e.value=i??"")})}function Ft(e){var t=e.type;return t==="number"||t==="range"}function Dt(e){return e===""?null:+e}function Cn(e,t){return e===t||(e==null?void 0:e[tt])===t}function Nt(e={},t,n,r){return It(()=>{var i,a;return $n(()=>{i=a,a=[],Ye(()=>{e!==n(...a)&&(t(e,...a),i&&Cn(n(...i),e)&&t(null,...i))})}),()=>{_t(()=>{a&&Cn(n(...a),e)&&t(null,...a)})}}),e}let pt=!1;function ra(e){var t=pt;try{return pt=!1,[e(),pt]}finally{pt=t}}const ia={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function aa(e,t,n){return new Proxy({props:e,exclude:t},ia)}function Sn(e){for(var t=j,n=j;t!==null&&!(t.f&(pe|vt));)t=t.parent;try{return _e(t),e()}finally{_e(n)}}function M(e,t,n,r){var N;var i=(n&Qr)!==0,a=!Je||(n&ei)!==0,o=(n&ni)!==0,f=(n&ri)!==0,u=!1,s;o?[s,u]=ra(()=>e[t]):s=e[t];var l=tt in e||Hr in e,v=o&&(((N=Be(e,t))==null?void 0:N.set)??(l&&t in e&&(I=>e[t]=I)))||void 0,c=r,d=!0,h=!1,m=()=>(h=!0,d&&(d=!1,f?c=Ye(r):c=r),c);s===void 0&&r!==void 0&&(v&&a&&$r(),s=m(),v&&v(s));var p;if(a)p=()=>{var I=e[t];return I===void 0?m():(d=!0,h=!1,I)};else{var k=Sn(()=>(i?ne:di)(()=>e[t]));k.f|=Or,p=()=>{var I=_(k);return I!==void 0&&(c=void 0),I===void 0?c:I}}if(!(n&ti))return p;if(v){var y=e.$$legacy;return function(I,R){return arguments.length>0?((!a||!R||y||u)&&v(R?p():I),I):p()}}var g=!1,T=!1,x=Hn(s),C=Sn(()=>ne(()=>{var I=p(),R=_(x);return g?(g=!1,T=!0,R):(T=!1,x.v=I)}));return i||(C.equals=en),function(I,R){if(arguments.length>0){const U=R?_(C):a&&o?Z(I):I;return C.equals(U)||(g=!0,L(x,U),h&&c!==void 0&&(c=U),Ye(()=>_(C))),I}return _(C)}}function ht(e){V===null&&Xn(),Je&&V.l!==null?oa(V).m.push(e):an(()=>{const t=Ye(e);if(typeof t=="function")return t})}function oa(e){var t=e.l;return t.u??(t.u={a:[],b:[],m:[]})}const la="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(la);const gr="https://www.playpilot.com",un="https://partner-api.playpilot.tech/1.0.0",pr="EncryptedToken",sa="articleReplacementEditToken";async function yr(e=window.location.href){const t=new Headers({"Content-Type":"application/json"});try{const n=vn();if(!n)throw new Error("No token was provided");const r=kr(e);if(!r)throw new Error("Could not be authenticated");const i=await fetch(un+`/external-pages/edit-authorization?api-token=${n}`,{headers:t,method:"POST",body:JSON.stringify({private_token:r})});if(!i.ok)throw i;return ca(r),!0}catch(n){console.error(n)}return!1}function kr(e=""){var r,i;const t=(r=window==null?void 0:window.PlayPilotLinkInjections)==null?void 0:r.editorial_token;if(t)return t;if(e){const a=new URL(e).searchParams.get(sa);if(a)return decodeURI(a)}return((i=("; "+document.cookie).split(`; ${pr}=`).pop())==null?void 0:i.split(";")[0])||""}function ca(e){const t=new Date;t.setTime(t.getTime()+30*24*60*60*1e3);const r="expires="+t.toUTCString();document.cookie=pr+"="+e+";"+r+";path=/"}function wr(){var t;const e=(t=window==null?void 0:window.PlayPilotLinkInjections)==null?void 0:t.editorial_token;return new URLSearchParams(window.location.search).get("playpilot-editorial-mode")==="true"||!!e}function br(e){let t=0;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);t=t*31+r>>>0}return t.toString(16)}let qt=null;async function xr(e,t,{hash:n=br(t),params:r={}}={}){const i=new Headers({"Content-Type":"application/json"}),a=vn(),o=wr()?await yr():!1;if(!a)throw new Error("No token was provided");const f=await fetch(un+`/external-pages/?api-token=${a}&include_title_details=true${o?"&editorial_mode_enabled=true":""}`,{headers:i,method:"POST",body:JSON.stringify({hash:n,url:e,page_text:t,...r})});if(!f.ok)throw f;return await f.json()}async function ua(e,t,n=3e3,r=600){let i=br(t),a=0;qt&&clearTimeout(qt);const o=async(f,u)=>{try{const s=await xr(e,t,{hash:i});if(s.injections_enabled===!1){f([]);return}if(s.injections_ready){s.link_injections&&(s.link_injections=fa(s.link_injections)),f(s.link_injections||[]);return}throw new Error}catch{if(a++,a>=r){console.error("Max poll limit exceeded. Please return later."),f();return}qt=setTimeout(()=>o(f),n)}};return new Promise(o)}async function va(e,t){var a;const n=(a=window.PlayPilotLinkInjections)==null?void 0:a.selector,r=e.map(o=>({sid:o.sid,title:o.title,sentence:o.sentence,playpilot_url:o.playpilot_url,after_article:!!o.after_article,after_article_style:o.after_article_style||null,in_text:o.in_text??!0,inactive:!!o.inactive}));if(!await xr(window.location.host+location.pathname,t,{params:{private_token:kr(),automation_enabled:!1,link_injections:r,text_selector:n}}))throw new Error("saveLinkInjections response was faulty");return e}function fa(e){return e.map(t=>({...t,key:Er(t.sid)}))}function Er(e){return e+"-"+(Math.random()+1).toString(36).substring(7)}function vn(){var e;return(e=window.PlayPilotLinkInjections)==null?void 0:e.token}const Le=Object.freeze({ArticlePageView:"ali_article_page_view",TitleModalView:"ali_title_modal_view",TitleModalScroll:"ali_title_modal_scroll",TitleModalPlaylinkClick:"ali_title_modal_playlink_click",TitleModalSaveClick:"ali_title_modal_save_click",TitlePopoverView:"ali_title_popover_view",TitlePopoverSaveClick:"ali_title_popover_save_click",TitlePopoverPlaylinkClick:"ali_title_popover_playlink_click",AfterArticlePlaylinkClick:"ali_after_article_playlink_click",AfterArticleModalButtonClick:"ali_after_article_modal_button_click"}),da="https://insights.playpilot.net";async function De(e,t=null,n={}){const r=new Headers({"Content-Type":"application/json"});t&&(n={original_title:t.original_title,title_sid:t.sid,...n}),n.url=window.location.href,fetch(da,{headers:r,method:"POST",body:JSON.stringify({event:e,payload:n,source:"ali"})})}const _a=e=>e;function fn(e){const t=e-1;return t*t*t+1}function Pn(e){const t=typeof e=="string"&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||"px"]:[e,"px"]}function ma(e,{delay:t=0,duration:n=400,easing:r=_a}={}){const i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:a=>`opacity: ${a*i}`}}function Ot(e,{delay:t=0,duration:n=400,easing:r=fn,x:i=0,y:a=0,opacity:o=0}={}){const f=getComputedStyle(e),u=+f.opacity,s=f.transform==="none"?"":f.transform,l=u*(1-o),[v,c]=Pn(i),[d,h]=Pn(a);return{delay:t,duration:n,easing:r,css:(m,p)=>`
3
+ transform: ${s} translate(${(1-m)*v}${c}, ${(1-m)*d}${h});
4
+ opacity: ${u-l*p}`}}function ct(e,{delay:t=0,duration:n=400,easing:r=fn,axis:i="y"}={}){const a=getComputedStyle(e),o=+a.opacity,f=i==="y"?"height":"width",u=parseFloat(a[f]),s=i==="y"?["top","bottom"]:["left","right"],l=s.map(k=>`${k[0].toUpperCase()}${k.slice(1)}`),v=parseFloat(a[`padding${l[0]}`]),c=parseFloat(a[`padding${l[1]}`]),d=parseFloat(a[`margin${l[0]}`]),h=parseFloat(a[`margin${l[1]}`]),m=parseFloat(a[`border${l[0]}Width`]),p=parseFloat(a[`border${l[1]}Width`]);return{delay:t,duration:n,easing:r,css:k=>`overflow: hidden;opacity: ${Math.min(k*20,1)*o};${f}: ${k*u}px;padding-${s[0]}: ${k*v}px;padding-${s[1]}: ${k*c}px;margin-${s[0]}: ${k*d}px;margin-${s[1]}: ${k*h}px;border-${s[0]}-width: ${k*m}px;border-${s[1]}-width: ${k*p}px;min-${f}: 0`}}function ha(e,{delay:t=0,duration:n=400,easing:r=fn,start:i=0,opacity:a=0}={}){const o=getComputedStyle(e),f=+o.opacity,u=o.transform==="none"?"":o.transform,s=1-i,l=f*(1-a);return{delay:t,duration:n,easing:r,css:(v,c)=>`
5
+ transform: ${u} scale(${1-s*c});
6
+ opacity: ${f-l*c}
7
+ `}}var ga=S('<div class="popover svelte-1oxrzdm" tabindex="-1" aria-hidden="true"><div class="dialog svelte-1oxrzdm"><!></div></div>');function pa(e,t){J(t,!0);let n=M(t,"maxHeight",15);lr("scope","popover");let r=B(null),i=B(!1);ht(async()=>{await kn(),a(),await kn(),o()});function a(){if(!_(r))return;const{top:v,right:c}=_(r).getBoundingClientRect(),d=f();L(i,v-d<0);const h=window.innerWidth-c-d;c+d>window.innerWidth&&(_(r).style.left=`${h}px`)}function o(){if(!_(r))return;const{top:v}=_(r).getBoundingClientRect(),c=f();n(Math.min(window.innerHeight-v-c,window.innerHeight*.8))}function f(){return parseFloat(getComputedStyle(document.documentElement).fontSize)}var u=ga(),s=b(u),l=b(s);Qe(l,()=>t.children),Nt(u,v=>L(r,v),()=>_(r)),H(()=>{se(u,"flip",_(i)),cn(u,"--max-height",n()?n()+"px":null)}),we(3,s,()=>Ot,()=>({duration:100,y:10})),w(e,u),X()}const ya=[{slug:"100",name:"All",categories:{movie:100,series:100,documentary:100,kids:100,cinema:100,podcasts:100}},{slug:"999",name:"Unscripted",categories:{},media_format:"video"},{slug:"900",name:"Independent",categories:{},media_format:"video"},{slug:"113",name:"Game Show",categories:{series:36,kids:28},media_format:"video"},{slug:"112",name:"Film Noir",categories:{movie:37},media_format:"video"},{slug:"212",name:"Entertainment",categories:{kids:80,series:42,movie:42},media_format:"video"},{slug:"120",name:"News",categories:{series:26,documentary:36,kids:38},media_format:"video"},{slug:"208",name:"Short",categories:{movie:21,documentary:30,kids:36},media_format:"video"},{slug:"902",name:"Bollywood",categories:{},media_format:"video"},{slug:"240",name:"Concert",categories:{movie:45},media_format:"video"},{slug:"901",name:"Arthouse",categories:{},media_format:"video"},{slug:"903",name:"Alternate Version",categories:{},media_format:"video"},{slug:"121",name:"Reality TV",categories:{series:24},media_format:"video"},{slug:"202",name:"Culture",categories:{kids:40,documentary:84,series:44},media_format:"video"},{slug:"107",name:"Drama",categories:{series:82,movie:82,cinema:88,documentary:44},media_format:"video"},{slug:"105",name:"Crime",categories:{series:84,documentary:86,cinema:64,movie:84},media_format:"video"},{slug:"128",name:"Western",categories:{movie:12,series:12,documentary:24},media_format:"video"},{slug:"127",name:"Thriller",categories:{series:70,documentary:28,cinema:80,movie:70},media_format:"video"},{slug:"102",name:"Animation",categories:{series:50,cinema:50,kids:90,documentary:48,movie:50},media_format:"video"},{slug:"119",name:"Mystery",categories:{movie:76,cinema:70,kids:26,documentary:38,series:76},media_format:"video"},{slug:"227",name:"Science",categories:{series:22,kids:46,documentary:74},media_format:"video"},{slug:"108",name:"Nature",categories:{kids:48,documentary:76,series:28},media_format:"video"},{slug:"116",name:"War",categories:{movie:14,documentary:68,series:14,cinema:66},media_format:"video"},{slug:"123",name:"Sci-Fi",categories:{series:72,movie:72,cinema:68,kids:70,documentary:32},media_format:"video"},{slug:"106",name:"Documentary",categories:{kids:50},media_format:"video"},{slug:"232",name:"Stand-up",categories:{movie:18,series:18},media_format:"video"},{slug:"126",name:"Talk Show",categories:{kids:34,series:16},media_format:"video"},{slug:"111",name:"Fantasy",categories:{kids:78,cinema:74,documentary:42,movie:38,series:38},media_format:"video"},{slug:"114",name:"History",categories:{movie:35,kids:44,cinema:10,series:80,documentary:90},media_format:"video"},{slug:"109",name:"Adventure",categories:{kids:88,cinema:86,documentary:82,series:88,movie:88},media_format:"video"},{slug:"101",name:"Action",categories:{documentary:50,kids:86,series:90,cinema:90,movie:90},media_format:"video"},{slug:"124",name:"Horror",categories:{cinema:76,documentary:40,series:78,movie:80},media_format:"video"},{slug:"115",name:"Comedy",categories:{cinema:84,documentary:46,series:86,kids:82,movie:86},media_format:"video"},{slug:"104",name:"Biography",categories:{series:46,documentary:88,cinema:10,movie:46},media_format:"video"},{slug:"118",name:"Music",categories:{kids:72,cinema:9,documentary:78,movie:32,series:32},media_format:"video"},{slug:"125",name:"Sport",categories:{cinema:7,kids:68,series:20,documentary:70,movie:20},media_format:"video"},{slug:"122",name:"Romance",categories:{documentary:34,cinema:78,movie:74,series:74},media_format:"video"},{slug:"103",name:"Kids",categories:{kids:76},media_format:"video"},{slug:"222",name:"Lifestyle",categories:{documentary:80,kids:74,series:34},media_format:"video"},{slug:"117",name:"Musical",categories:{kids:30,movie:78,cinema:8,series:30},media_format:"video"},{slug:"129",name:"Anime",categories:{cinema:5,movie:48,kids:84,series:48},media_format:"video"},{slug:"110",name:"Family",categories:{series:40,cinema:40,movie:40},media_format:"video"}];var ka=S('<div class="genre svelte-xt0923"> </div>'),wa=(e,t)=>L(t,!0),ba=S('<button class="genre expand svelte-xt0923"> </button>'),xa=S("<!> <!>",1);function Ea(e,t){J(t,!0);let n=B(!1),r=ne(()=>_(n)?t.genres:[t.genres[0]]);var i=xa(),a=Q(i);Fe(a,17,()=>_(r),st,(u,s)=>{var l=ka(),v=b(l);H(()=>{var c;return q(v,(c=ya.find(d=>d.slug===_(s)))==null?void 0:c.name)}),w(u,l)});var o=E(a,2);{var f=u=>{var s=ba();s.__click=[wa,n];var l=b(s);H(()=>q(l,`+${t.genres.length-1}`)),w(u,s)};F(o,u=>{!_(n)&&t.genres.length>1&&u(f)})}w(e,i),X()}oe(["click"]);Zr();var Ta=Te('<svg width="6" height="12" viewBox="0 0 6 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 11L5 6L0 1" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg>');function Ca(e){var t=Ta();w(e,t)}var Sa=(e,t,n)=>t(n()),Pa=S('<div class="arrow svelte-168541k"><!></div>'),Ia=S('<a target="_blank" class="playlink svelte-168541k" rel="sponsored"><img alt="" height="32" width="32" class="svelte-168541k"> <div><span class="name svelte-168541k"> </span> <div class="category svelte-168541k"> </div></div> <!></a>'),Aa=S(`<div class="playlink empty svelte-168541k">This title is not currently available to stream. Save it and we'll notify you when it's available.</div>`),La=S('<h2 class="svelte-168541k">Where to stream online</h2> <div class="playlinks svelte-168541k"><!> <!></div>',1);function ja(e,t){J(t,!0);const n=M(t,"list",3,!1),r=Ai("scope")==="modal";let i=ne(()=>t.playlinks.filter(c=>!!c.logo_url));const a={SVOD:"Stream",BUY:"Buy",RENT:"Rent"};function o(c){De(r?Le.TitleModalPlaylinkClick:Le.TitlePopoverPlaylinkClick,t.title,{playlink:c})}var f=La(),u=E(Q(f),2),s=b(u);Fe(s,17,()=>_(i),st,(c,d)=>{let h=()=>_(d).name,m=()=>_(d).url,p=()=>_(d).logo_url,k=()=>_(d).extra_info.category;var y=Ia();y.__click=[Sa,o,h];var g=b(y),T=E(g,2),x=b(T),C=b(x),N=E(x,2),I=b(N),R=E(T,2);{var U=A=>{var P=Pa(),O=b(P);Ca(O),w(A,P)};F(R,A=>{n()&&A(U)})}H(()=>{K(y,"href",m()),K(y,"data-playlink",h()),K(g,"src",p()),q(C,h()),q(I,a[k()]||"Stream")}),w(c,y)});var l=E(s,2);{var v=c=>{var d=Aa();w(c,d)};F(l,c=>{t.playlinks.length||c(v)})}H(()=>se(u,"list",n())),w(e,f),X()}oe(["click"]);var Ma=(e,t)=>L(t,!0),Na=S('<button class="show-more svelte-fzu5af">Show more</button>'),Oa=S('<p class="svelte-fzu5af"> </p>'),Ra=S('<div><span class="paragraph svelte-fzu5af"> <!> <!></span> <!></div>');function Ha(e,t){J(t,!0);const n=M(t,"blurb",3,""),r=M(t,"limit",3,200);let i=B(!1),a=ne(()=>t.text.slice(0,r()));var o=Ra(),f=b(o),u=b(f),s=E(u);{var l=m=>{var p=Ae("...");w(m,p)};F(s,m=>{!_(i)&&t.text.length>r()&&m(l)})}var v=E(s,2);{var c=m=>{var p=Na();p.__click=[Ma,i],w(m,p)};F(v,m=>{!_(i)&&(t.text.length>r()||n())&&m(c)})}var d=E(f,2);{var h=m=>{var p=Oa(),k=b(p);H(()=>q(k,n())),w(m,p)};F(d,m=>{_(i)&&m(h)})}H(()=>q(u,_(i)?t.text:_(a))),w(e,o),X()}oe(["click"]);var Fa=S('<div class="participant"> <div class="character svelte-1u6ln8t"> <!></div></div>'),Da=S('<h2 class="svelte-1u6ln8t">Cast</h2> <div class="participants svelte-1u6ln8t"></div>',1);function qa(e,t){var n=Da(),r=E(Q(n),2);Fe(r,21,()=>t.participants,st,(i,a)=>{var o=Fa(),f=b(o),u=E(f),s=b(u);H(()=>{var c;return q(s,((c=_(a).character)==null?void 0:c.slice(0,20))||"")});var l=E(s);{var v=c=>{var d=Ae("...");w(c,d)};F(l,c=>{var d;(d=_(a).character)!=null&&d.length&&c(v)})}H(()=>q(f,`${_(a).name??""} `)),w(i,o)}),w(e,n)}var za=Te('<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7 0.351929L9.163 4.72803L14 5.43408L10.5 8.8385L11.326 13.648L7 11.3761L2.674 13.648L3.5 8.8385L0 5.43408L4.837 4.72803L7 0.351929Z" fill="#F6C045"></path></svg>');function dn(e){var t=za();w(e,t)}var Va=S('<div class="top svelte-n8rmi0"><img class="poster svelte-n8rmi0"></div>'),Ba=S("<div> </div>"),$a=S("<!> <!>",1),Ua=S('<div class="content svelte-n8rmi0" data-playpilot-link-injections-title=""><header class="header svelte-n8rmi0"><!> <h1 class="svelte-n8rmi0"> </h1> <div class="info svelte-n8rmi0"><div class="imdb svelte-n8rmi0"><!> </div> <!> <div> </div> <div class="capitalize svelte-n8rmi0"> </div> <!></div></header> <main class="main"><!> <!></main></div> <div class="background svelte-n8rmi0"><img alt="" class="svelte-n8rmi0"></div>',1);function Tr(e,t){J(t,!0);const n=M(t,"small",3,!1),r=M(t,"compact",3,!1);var i=Ua(),a=Q(i),o=b(a),f=b(o);{var u=P=>{var O=Va(),W=b(O);H(()=>{K(W,"src",t.title.standing_poster),K(W,"alt",`Movie poster for '${t.title.title??""}'`)}),w(P,O)};F(f,P=>{r()||P(u)})}var s=E(f,2),l=b(s),v=E(s,2),c=b(v),d=b(c);dn(d);var h=E(d),m=E(c,2);Ea(m,{get genres(){return t.title.genres}});var p=E(m,2),k=b(p),y=E(p,2),g=b(y),T=E(y,2);{var x=P=>{var O=Ba(),W=b(O);H(()=>q(W,`${t.title.length??""} minutes`)),w(P,O)};F(T,P=>{t.title.length&&P(x)})}var C=E(o,2),N=b(C);ja(N,{get playlinks(){return t.title.providers},get title(){return t.title},list:!0});var I=E(N,2);{var R=P=>{var O=$a(),W=Q(O);Ha(W,{get text(){return t.title.description},get blurb(){return t.title.blurb}});var re=E(W,2);{var te=ie=>{qa(ie,{get participants(){return t.title.participants}})};F(re,ie=>{var D;(D=t.title.participants)!=null&&D.length&&ie(te)})}w(P,O)};F(I,P=>{n()||P(R)})}var U=E(a,2),A=b(U);H(()=>{K(a,"data-playpilot-original-title",t.title.original_title),se(a,"small",n()),se(a,"compact",r()),q(l,t.title.title),q(h,` ${t.title.imdb_score??""}`),q(k,t.title.year),q(g,t.title.type),se(U,"faded",r()),K(A,"src",t.title.medium_poster)}),w(e,i),X()}function Wa(e,t){J(t,!0);let n=B(0);De(Le.TitlePopoverView,t.title),pa(e,{get maxHeight(){return _(n)},set maxHeight(r){L(n,Z(r))},children:(r,i)=>{var a=ne(()=>_(n)<250);Tr(r,{get title(){return t.title},small:!0,get compact(){return _(a)}})},$$slots:{default:!0}}),X()}var Ya=(e,t,n,r)=>t(_(n).title_details,_(r)),Ka=S(' <span class="svelte-1q8ybgz"><button class="svelte-1q8ybgz">View streaming options</button></span>',1),Ga=(e,t,n,r)=>t(_(n).title_details,r()),Za=S('<!> <a target="_blank"> </a>',1),Ja=S(" <!>.",1),Xa=S("<!> <br>",1),Qa=S(" <br>",1),eo=S('<span class="svelte-1q8ybgz"><!></span>'),to=S("<p></p>");function no(e,t){J(t,!0);const n=M(t,"onclickmodal",3,u=>null);function r(u,s){De(Le.AfterArticlePlaylinkClick,u,{playlink:s})}function i(u,s){De(Le.AfterArticleModalButtonClick,u),n()(s)}var a=lt(),o=Q(a);{var f=u=>{var s=to();Fe(s,21,()=>t.linkInjections,st,(l,v)=>{var c=eo();const d=ne(()=>{const{key:y,title:g,title_details:T,after_article_style:x}=_(v);return{key:y,title:g,title_details:T,after_article_style:x}}),h=ne(()=>{var y;return((y=_(d).title_details)==null?void 0:y.providers)||[]});var m=b(c);{var p=y=>{var g=Xa(),T=Q(g);{var x=N=>{var I=Ka(),R=Q(I),U=E(R),A=b(U);A.__click=[Ya,i,d,v],H(()=>q(R,`"${_(d).title??""}" is available to stream. `)),w(N,I)},C=N=>{var I=Ja(),R=Q(I),U=E(R);Fe(U,17,()=>_(h),st,(A,P,O)=>{let W=()=>_(P).name,re=()=>_(P).url;var te=Za(),ie=Q(te);{var D=me=>{var je=Ae();H(()=>q(je,O===_(h).length-1?", and":",")),w(me,je)};F(ie,me=>{O&&me(D)})}var Y=E(ie,2);Y.__click=[Ga,r,d,W];var de=b(Y);H(()=>{K(Y,"href",re()),q(de,W())}),w(A,te)}),H(()=>q(R,`"${_(d).title??""}" is available to stream on `)),w(N,I)};F(T,N=>{_(d).after_article_style==="modal_button"?N(x):N(C,!1)})}w(y,g)},k=y=>{var g=Qa(),T=Q(g);H(()=>q(T,`"${_(d).title??""}" is not currently available to stream. `)),w(y,g)};F(m,y=>{_(h).length?y(p):y(k,!1)})}H(()=>K(c,"data-playpilot-injection-key",_(d).key)),w(l,c)}),w(u,s)};F(o,u=>{t.linkInjections.length&&u(f)})}w(e,a),X()}oe(["click"]);function ro(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Cr(e){const t=document.createElement("div");return t.innerHTML=e,t.textContent||""}function io(e,t,n=[]){var a,o;const r=document.createTreeWalker(t);let i;for(;(i=r.nextNode())&&!((a=i.nodeValue)!=null&&a.includes(e)&&!n.includes(((o=i.parentNode)==null?void 0:o.nodeName)||"")););return i}function ao(e){const t=e.parentNode;return t?t.nodeName==="A"||!!t.closest("a"):!1}function oo(e,t,n,r){const i=ro(t),a=Cr(t),o=e.slice(0,r),f=e.slice(r),u=/[-/\\^$*+?.()|[\]{}]/g,s=new RegExp(`${a.replace(u,"\\$&")}|${i.replace(u,"\\$&")}`),l=f.replace(s,n);return o+l}function lo(e){let t=0;for(let n=0;n<e.length;n++)e[n]>t&&(t=e[n]);return t}const Et={};let Gt=null;function so(e){let t=[],n=[...e.children];for(;n.length>0;){const r=n.shift();if(/^(A|BUTTON|SCRIPT|NOSCRIPT|STYLE|IFRAME|H[1-6])$/.test(r.tagName))continue;Array.from(r.childNodes).some(a=>{var o;return a.nodeType===Node.TEXT_NODE&&((o=a.nodeValue)==null?void 0:o.trim())!==""})?t.push(r):n.push(...r.children)}return t}function co(){var t;const e=(t=window.PlayPilotLinkInjections)==null?void 0:t.selector;if(e){const n=e.replace(/(:)/g,"\\$1"),r=document.querySelector(n);if(r)return r}return document.querySelector("article")||document.querySelector("main")||document.body}function uo(e,t,n){var s;const r=e.map(l=>l.innerText).join(" "),i=t.filter(l=>l.in_text!==!1&&!l.inactive),a=i.filter(l=>r.includes(l.sentence)),o={};for(const l of a){const v=e.findIndex(k=>k.innerText.includes(l.sentence)),c=e[v];if(!c)continue;const d=io(l.title,c,["A"]);if(!d||ao(d))continue;const h=document.createElement("a");h.innerText=l.title,h.href=l.playpilot_url,h.dataset.playpilotInjectionKey=l.key,h.dataset.playpilotOriginalTitle=(s=l.title_details)==null?void 0:s.original_title,h.target="_blank",h.rel="noopener nofollow noreferrer";const m=lo(Object.values(o).filter(k=>k.elementIndex===v).map(k=>k.to));c.innerHTML=oo(c.innerHTML,l.title,h.outerHTML,m);const p=c.innerHTML.indexOf(h.outerHTML);o[l.key]={elementIndex:v,from:p,to:p+h.outerHTML.length}}vo(i,n);const f=t.filter(l=>l.after_article&&!l.inactive);return f.length&&mo(e,f,n),go(t,o).map(l=>{const v=!l.inactive&&!l.after_article&&!document.querySelector(`[data-playpilot-injection-key="${l.key}"]`);return{...l,inactive:!!l.inactive,failed:v}})}function vo(e,t){document.querySelectorAll("[data-playpilot-injection-key]").forEach(r=>{const i=r.dataset.playpilotInjectionKey,a=e.find(o=>i===o.key);a&&(r.addEventListener("click",o=>fo(o,a,t)),r.addEventListener("mouseenter",o=>_o(o,a)),r.addEventListener("mouseleave",()=>Tt(a)))})}function fo(e,t,n){e.ctrlKey||e.metaKey||e.button!==0||(e.preventDefault(),e.target.closest(".popover"))||(n(t),Tt(t))}function _o(e,t){if(window.matchMedia("(pointer: coarse)").matches)return;const n=e.currentTarget,r=sn(Wa,{target:n,props:{title:t.title_details}});Et[t.key]={injection:t,component:r}}function Tt(e,t=!0){const n=Et[e.key];n&&dr(n.component,{outro:t})}function mo(e,t,n){if(!t.length)return;const r=document.createElement("div");r.dataset.playpilotAfterArticlePlaylinks="true",e[e.length-1].insertAdjacentElement("afterend",r),Gt=sn(no,{target:r,props:{linkInjections:t,onclickmodal:n}})}function ho(){var e;Gt&&(dr(Gt),(e=document.querySelector("[data-playpilot-after-article-playlinks"))==null||e.remove())}function Zt(){Object.values(Et).forEach(t=>Tt(t.injection)),document.querySelectorAll("[data-playpilot-injection-key]").forEach(t=>t.outerHTML=t.textContent||""),Object.values(Et).forEach(({injection:t})=>Tt(t,!1)),ho()}function go(e,t){return e.sort((n,r)=>{const i=t[n.key],a=t[r.key];return!i&&a?1:i&&!a?-1:!i&&!a?0:(i==null?void 0:i.elementIndex)!==(a==null?void 0:a.elementIndex)?((i==null?void 0:i.elementIndex)||0)-((a==null?void 0:a.elementIndex)||0):((i==null?void 0:i.from)||0)-((a==null?void 0:a.from)||0)})}var po=Te('<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M14 2L2 14M2 2L14 14" stroke="currentColor" stroke-width="1.33" stroke-linecap="round" stroke-linejoin="round"></path></svg>');function yo(e){var t=po();w(e,t)}function _n(e,t){J(t,!0);const n=M(t,"children",3,null),r=M(t,"size",3,"2rem"),i=M(t,"onclick",3,()=>null),a=aa(t,["$$slots","$$events","$$legacy","children","size","onclick"]);var o=lt(),f=Q(o);Yi(f,()=>t.href?"a":"button",!1,(u,s)=>{let l;H(()=>{l=Ji(u,l,{role:t.href?"link":"button",onclick:i(),class:"button",...a},"svelte-oturfj",u.namespaceURI===Rn,u.nodeName.includes("-")),cn(u,"--size",r())});var v=lt(),c=Q(v);Qe(c,()=>n()??Ne),w(s,v)}),w(e,o),X()}var ko=(e,t)=>t()(),wo=S('<div class="modal svelte-6ptja1"><div class="dialog svelte-6ptja1" role="dialog"><div class="close svelte-6ptja1"><!></div> <!></div> <div class="backdrop svelte-6ptja1"></div></div>');function bo(e,t){J(t,!0);const n=M(t,"onclose",3,()=>null),r=M(t,"onscroll",3,()=>null);lr("scope","modal"),ht(()=>{const v=document.body.style.overflowY;return document.body.style.overflowY="hidden",()=>document.body.style.overflowY=v||""});function i(v){return window.innerWidth<600?Ot(v,{duration:250,y:window.innerHeight}):ha(v,{duration:150,start:.85})}var a=wo();ve("keydown",he,({key:v})=>{v==="Escape"&&n()()});var o=b(a),f=b(o),u=b(f);_n(u,{onclick:()=>n()(),children:(v,c)=>{yo(v)},$$slots:{default:!0}});var s=E(f,2);Qe(s,()=>t.children);var l=E(o,2);l.__click=[ko,n],ve("scroll",o,function(...v){var c;(c=r())==null||c.apply(this,v)}),we(3,o,()=>i),we(3,a,()=>ma,()=>({duration:150})),w(e,a),X()}oe(["click"]);function xo(e,t){J(t,!0),De(Le.TitleModalView,t.title);let n=!1;function r(){n||(De(Le.TitleModalScroll,t.title),n=!0)}bo(e,{get onclose(){return t.onclose},onscroll:r,children:(i,a)=>{Tr(i,{get title(){return t.title}})},$$slots:{default:!0}}),X()}var Eo=Te('<svg width="8" height="4" viewBox="0 0 8 4" fill="none" class="svelte-s6opl5"><path d="M1 0.5L4 3.5L7 0.5" stroke="currentColor" stroke-width="0.9975" stroke-linecap="round" stroke-linejoin="round"></path></svg>');function To(e,t){const n=M(t,"expanded",3,!1);var r=Eo();H(()=>se(r,"expanded",n())),w(e,r)}function Co(e,t,n){t(!t()),n()(t())}var So=S('<button class="switch svelte-gowieu"><div class="label svelte-gowieu"><!></div> <div class="track svelte-gowieu"><div class="knob svelte-gowieu"></div></div></button>');function Jt(e,t){J(t,!0);let n=M(t,"active",15),r=M(t,"fullwidth",3,!1),i=M(t,"label",3,""),a=M(t,"onclick",3,()=>null);var o=So();o.__click=[Co,n,a];var f=b(o),u=b(f);Qe(u,()=>t.children),H(()=>{K(o,"aria-label",`Toggle ${i()??""} ${(n()?"off":"on")??""}`),se(o,"active",n()),se(o,"fullwidth",r())}),w(e,o),X()}oe(["click"]);var Po=S('<input type="text" class="svelte-1vyh00d">');function mn(e,t){let n=M(t,"value",15),r=M(t,"label",3,""),i=M(t,"name",3,""),a=M(t,"readonly",3,!1),o=M(t,"oninput",3,()=>null);var f=Po();f.__input=function(...u){var s;(s=o())==null||s.apply(this,u)},H(()=>{K(f,"name",i()),K(f,"aria-label",r()),K(f,"placeholder",r()),f.readOnly=a()}),na(f,n),w(e,f)}oe(["input"]);var Io=Te('<path d="M13.5833 13.6667L4.41667 13.6667M5.5 1.5H12.5C13.9001 1.5 14.6002 1.5 15.135 1.77248C15.6054 2.01217 15.9878 2.39462 16.2275 2.86502C16.5 3.3998 16.5 4.09987 16.5 5.5V12.5C16.5 13.9001 16.5 14.6002 16.2275 15.135C15.9878 15.6054 15.6054 15.9878 15.135 16.2275C14.6002 16.5 13.9001 16.5 12.5 16.5H5.5C4.09987 16.5 3.3998 16.5 2.86502 16.2275C2.39462 15.9878 2.01217 15.6054 1.77248 15.135C1.5 14.6002 1.5 13.9001 1.5 12.5V5.5C1.5 4.09987 1.5 3.3998 1.77248 2.86502C2.01217 2.39462 2.39462 2.01217 2.86502 1.77248C3.3998 1.5 4.09987 1.5 5.5 1.5Z" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path>'),Ao=Te('<path d="M13.5833 8.58342H4.41667M5.5 1.50009H12.5C13.9001 1.50009 14.6002 1.50009 15.135 1.77258C15.6054 2.01226 15.9878 2.39471 16.2275 2.86512C16.5 3.39989 16.5 4.09996 16.5 5.50009V12.5001C16.5 13.9002 16.5 14.6003 16.2275 15.1351C15.9878 15.6055 15.6054 15.9879 15.135 16.2276C14.6002 16.5001 13.9001 16.5001 12.5 16.5001H5.5C4.09987 16.5001 3.3998 16.5001 2.86502 16.2276C2.39462 15.9879 2.01217 15.6055 1.77248 15.1351C1.5 14.6003 1.5 13.9002 1.5 12.5001V5.50009C1.5 4.09996 1.5 3.39989 1.77248 2.86512C2.01217 2.39471 2.39462 2.01226 2.86502 1.77258C3.3998 1.50009 4.09987 1.50009 5.5 1.50009Z" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"></path>'),Lo=Te('<svg width="18" height="18" viewBox="0 0 18 18" fill="none"><!></svg>');function In(e,t){let n=M(t,"align",3,"bottom");var r=Lo(),i=b(r);{var a=f=>{var u=Io();w(f,u)},o=f=>{var u=lt(),s=Q(u);{var l=v=>{var c=Ao();w(v,c)};F(s,v=>{n()==="center"&&v(l)},!0)}w(f,u)};F(i,f=>{n()==="bottom"?f(a):f(o,!1)})}w(e,r)}var jo=S("<!> In-text Playlink",1),Mo=S("<!> Bottom Playlink",1),No=(e,t)=>t().after_article_style="playlinks",Oo=(e,t)=>t().after_article_style="modal_button",Ro=S('<div><div class="label svelte-t0i7hj">Bottom playlinks style</div> <div class="group svelte-t0i7hj" role="listbox" tabindex="0" aria-label="Playlink type"><button role="option" id="playlinks-in-text" class="svelte-t0i7hj">Playlinks sentence</button> <button role="option" id="playlinks-after-article" class="svelte-t0i7hj">Modal button</button> <div class="active-marker svelte-t0i7hj"></div></div></div>'),Ho=S('<div class="switches svelte-t0i7hj"><!> <!></div> <!>',1);function Fo(e,t){J(t,!0);let n=M(t,"linkInjection",7),r=ne(()=>n().after_article_style==="modal_button");var i=Ho(),a=Q(i),o=b(a),f=ne(()=>n().in_text??!0);Jt(o,{fullwidth:!0,get active(){return _(f)},onclick:c=>n().in_text=c,label:"In-text Playlink",children:(c,d)=>{var h=jo(),m=Q(h);In(m,{align:"center"}),w(c,h)},$$slots:{default:!0}});var u=E(o,2),s=ne(()=>n().after_article??!1);Jt(u,{fullwidth:!0,get active(){return _(s)},onclick:c=>n().after_article=c,label:"Bottom Playlink",children:(c,d)=>{var h=Mo(),m=Q(h);In(m,{align:"bottom"}),w(c,h)},$$slots:{default:!0}});var l=E(a,2);{var v=c=>{var d=Ro(),h=E(b(d),2),m=b(h);m.__click=[No,n];var p=E(m,2);p.__click=[Oo,n];var k=E(p,2);H(()=>{K(h,"aria-activedescendant",`playlinks-${(_(r)?"after-article":"in-text")??""}`),K(m,"aria-selected",!_(r)||null),se(m,"active",!_(r)),K(p,"aria-selected",_(r)||null),se(p,"active",_(r)),se(k,"right",_(r))}),we(3,d,()=>ct,()=>({duration:100})),w(c,d)};F(l,c=>{n().after_article&&c(v)})}w(e,i),X()}oe(["click"]);var Do=S('<div class="alert svelte-fxeml2"><!></div>');function hn(e,t){J(t,!0);var n=Do(),r=b(n);Qe(r,()=>t.children),w(e,n),X()}var qo=Te('<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.99984 10.8333C10.4601 10.8333 10.8332 10.4602 10.8332 10C10.8332 9.53977 10.4601 9.16668 9.99984 9.16668C9.5396 9.16668 9.1665 9.53977 9.1665 10C9.1665 10.4602 9.5396 10.8333 9.99984 10.8333Z" stroke="currentColor" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path><path d="M9.99984 5.00001C10.4601 5.00001 10.8332 4.62691 10.8332 4.16668C10.8332 3.70644 10.4601 3.33334 9.99984 3.33334C9.5396 3.33334 9.1665 3.70644 9.1665 4.16668C9.1665 4.62691 9.5396 5.00001 9.99984 5.00001Z" stroke="currentColor" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path><path d="M9.99984 16.6667C10.4601 16.6667 10.8332 16.2936 10.8332 15.8333C10.8332 15.3731 10.4601 15 9.99984 15C9.5396 15 9.1665 15.3731 9.1665 15.8333C9.1665 16.2936 9.5396 16.6667 9.99984 16.6667Z" stroke="currentColor" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path></svg>');function zo(e){var t=qo();w(e,t)}var Vo=(e,t)=>L(t,!_(t)),Bo=S('<div class="content svelte-1vxyp7u"><!></div>'),$o=S('<div class="context-menu svelte-1vxyp7u"><button class="svelte-1vxyp7u"><!></button> <!></div>');function Uo(e,t){J(t,!0);let n=B(!1),r=B(null);function i(l){var c;const v=l.target;v===_(r)||(c=_(r))!=null&&c.contains(v)||L(n,!1)}var a=$o();ve("click",he,i);var o=b(a);o.__click=[Vo,n];var f=b(o);zo(f),Nt(o,l=>L(r,l),()=>_(r));var u=E(o,2);{var s=l=>{var v=Bo(),c=b(v);Qe(c,()=>t.children),we(1,v,()=>Ot,()=>({duration:150,y:5})),w(l,v)};F(u,l=>{_(n)&&l(s)})}H(()=>{K(o,"aria-label",t.ariaLabel),K(o,"aria-expanded",_(n))}),w(e,a),X()}oe(["click"]);function Wo(e,t,n){requestAnimationFrame(()=>t());const r=e.target;if(["BUTTON","INPUT"].includes(r.nodeName)||r.closest("button")||r.closest("input"))return;const i=n()[0];i&&i.scrollIntoView({behavior:"smooth"})}var Yo=S('<span data-testid="length" class="svelte-14xzbrm"> </span>'),Ko=S('<button class="context-menu-action svelte-14xzbrm">Remove</button>'),Go=(e,t)=>L(t,!_(t)),Zo=S('<div class="actions svelte-14xzbrm"><button class="expand svelte-14xzbrm" aria-label="Expand"><!></button> <!></div>'),Jo=S('<div class="expanded svelte-14xzbrm"><div class="label svelte-14xzbrm">Link URL</div> <!> <div class="label offset svelte-14xzbrm">Layout options</div> <div class="type-select svelte-14xzbrm"><!></div></div>'),Xo=S('<div class="item svelte-14xzbrm"><div class="header svelte-14xzbrm"><img class="poster svelte-14xzbrm" alt=""> <div class="info"><div class="title svelte-14xzbrm"> </div> <div class="meta svelte-14xzbrm"><span class="svelte-14xzbrm"><!> 7.1</span> <span class="svelte-14xzbrm"> </span> <span class="svelte-14xzbrm"> </span> <!></div></div> <div class="context-menu svelte-14xzbrm"><!></div></div> <div class="content svelte-14xzbrm"><!> <!></div></div>');function Qo(e,t){J(t,!0);const n=M(t,"linkInjection",15),r=M(t,"onremove",3,()=>null),i=M(t,"onhighlight",3,()=>null),a=ne(()=>n()||{}),o=ne(()=>_(a).key),f=ne(()=>_(a).title_details),u=ne(()=>_(a).failed),s=ne(()=>_(f));let l=B(!1),v=B(!1),c=B(null);function d($=!0){m().forEach(ee=>{ee.classList.toggle("injection-highlight",$)})}function h($){let G=$.target,ee=G==null?void 0:G.dataset.playpilotInjectionKey;G&&!ee&&(G=G.closest(`[data-playpilot-injection-key="${_(o)}"]`),ee=G==null?void 0:G.dataset.playpilotInjectionKey),L(v,ee===_(o)),_(c)&&_(v)&&i()(_(c))}function m(){return Array.from(document.querySelectorAll(`[data-playpilot-injection-key="${_(o)}"]`))}var p=Xo();ve("mouseover",he,h),p.__click=[Wo,d,m];var k=b(p),y=b(k),g=E(y,2),T=b(g),x=b(T),C=E(T,2),N=b(C),I=b(N);dn(I);var R=E(N,2),U=b(R),A=E(R,2),P=b(A),O=E(A,2);{var W=$=>{var G=Yo(),ee=b(G);H(()=>q(ee,`${_(s).length??""}m`)),w($,G)};F(O,$=>{_(s).length&&$(W)})}var re=E(g,2),te=b(re);Uo(te,{ariaLabel:"More options",children:($,G)=>{var ee=Ko();ee.__click=function(...Me){var ze;(ze=r())==null||ze.apply(this,Me)},w($,ee)},$$slots:{default:!0}});var ie=E(k,2),D=b(ie);{var Y=$=>{hn($,{children:(G,ee)=>{var Me=Ae("A match was found, but the link could not be injected.");w(G,Me)},$$slots:{default:!0}})},de=$=>{var G=Zo(),ee=b(G);ee.__click=[Go,l];var Me=b(ee);To(Me,{get expanded(){return _(l)}});var ze=E(ee,2),Rt=ne(()=>!n().inactive);Jt(ze,{label:"Visible",get active(){return _(Rt)},onclick:Ht=>n(n().inactive=!Ht,!0),children:(Ht,Ml)=>{var Sr=Ae("Visible");w(Ht,Sr)},$$slots:{default:!0}}),H(()=>K(ee,"aria-expanded",_(l))),w($,G)};F(D,$=>{_(u)?$(Y):$(de,!1)})}var me=E(D,2);{var je=$=>{var G=Jo(),ee=E(b(G),2);mn(ee,{label:"Playlink URL",get value(){return n().playpilot_url},set value(Rt){n(n().playpilot_url=Rt,!0)}});var Me=E(ee,4),ze=b(Me);Fo(ze,{get linkInjection(){return n()}}),we(3,G,()=>ct,()=>({duration:100})),w($,G)};F(me,$=>{_(l)&&$(je)})}Nt(p,$=>L(c,$),()=>_(c)),H(()=>{se(p,"highlighted",_(v)),K(y,"src",_(s).standing_poster),q(x,_(s).title),q(U,_(s).year),q(P,_(s).type)}),ve("mouseenter",p,()=>d(!0)),ve("mouseleave",p,()=>d(!1)),we(6,p,()=>ct,()=>({duration:200})),w(e,p),X()}oe(["click"]);var el=S('<button class="drag-handle svelte-ojw6hd" aria-label="Move editor"></button>');function tl(e,t){J(t,!0);let n=M(t,"element",7),r=M(t,"position",23,()=>({x:0,y:0})),i=M(t,"limit",19,()=>({x:0,y:0})),a=M(t,"onchange",3,()=>null),o=!1,f={x:0,y:0},u=r();ht(()=>{s(r().x,r().y)});function s(m,p){const k=window.innerWidth,y=window.innerHeight,g=n().clientWidth,T=n().clientHeight;m=Math.min(Math.max(m,i().x),k-g-i().x),p=Math.min(Math.max(p,i().y),y-T-i().y),n().style.right=m+"px",n().style.bottom=Math.max(p,i().y)+"px",r({x:m,y:p}),a()(r())}function l(m){var p,k;return{x:m.pageX||((p=m.touches)==null?void 0:p[0].pageX)||0,y:m.pageY||((k=m.touches)==null?void 0:k[0].pageY)||0}}function v(m){o=!0,f=l(m),u=r()}function c(m){if(!o)return;const p=l(m),k=p.x-f.x,y=p.y-f.y,g=u.x-k,T=u.y-y;s(g,T)}function d(){o&&(o=!1)}var h=el();ve("mousemove",he,c),ve("touchmove",he,c,void 0,!0),ve("mouseup",he,d),ve("touchend",he,d),ve("resize",he,()=>s(r().x,r().y)),h.__mousedown=v,h.__touchstart=v,w(e,h),X()}oe(["mousedown","touchstart"]);var nl=Te('<svg width="4" height="8" viewBox="0 0 4 8" fill="none"><path d="M3.5 7L0.5 4L3.5 1" stroke="currentcolor" stroke-width="0.9975" stroke-linecap="round" stroke-linejoin="round"></path></svg>');function rl(e){var t=nl();w(e,t)}async function il(e){const t=new Headers({"Content-Type":"application/json"}),n=vn();if(!n)throw new Error("No token was provided");const r=await fetch(un+`/search/titles/?api-token=${n}&query=${e}`,{headers:t});if(!r.ok)throw r;return await r.json()}var al=Te('<svg viewBox="0 -960 960 960" width="18" height="18"><path fill="currentColor" d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z"></path></svg>');function ol(e){var t=al();w(e,t)}var ll=(e,t,n)=>t(_(n)),sl=S("<div> </div>"),cl=e=>e.stopImmediatePropagation(),ul=S('<button class="item svelte-mr5c1j"><img class="poster svelte-mr5c1j" alt="" width="28" height="42"> <div class="content"><div class="name svelte-mr5c1j"> </div> <div class="meta svelte-mr5c1j"><div class="imdb svelte-mr5c1j"><!> </div> <div> </div> <div> </div> <!></div></div> <a target="_blank" class="open-in-new-tab svelte-mr5c1j"><!></a></button>'),vl=S('<em class="empty svelte-mr5c1j">No results found</em>'),fl=S('<div class="results svelte-mr5c1j"></div>'),dl=S('<div class="search svelte-mr5c1j"><!> <!></div>');function _l(e,t){J(t,!0);let n=M(t,"onselect",3,()=>null),r=M(t,"query",15),i=B(Z([])),a=B(null),o=B(!1);an(()=>{r()&&f(r())});async function f(d){L(o,!0),L(a,null);try{L(i,Z(await il(d)))}finally{L(o,!1)}}function u(d){r(d.title),L(a,Z(d)),n()(d)}var s=dl(),l=b(s);mn(l,{name:"search",label:"Search...",get value(){return r()},set value(d){r(d)}});var v=E(l,2);{var c=d=>{var h=fl();Fe(h,21,()=>_(i),m=>m.sid,(m,p)=>{var k=ul();k.__click=[ll,u,p];var y=b(k),g=E(y,2),T=b(g),x=b(T),C=E(T,2),N=b(C),I=b(N);dn(I);var R=E(I),U=E(N,2),A=b(U),P=E(U,2),O=b(P),W=E(P,2);{var re=D=>{var Y=sl(),de=b(Y);H(()=>q(de,`${_(p).length??""} min`)),w(D,Y)};F(W,D=>{_(p).length&&D(re)})}var te=E(g,2);te.__click=[cl];var ie=b(te);ol(ie),H(()=>{K(y,"src",_(p).standing_poster),q(x,_(p).title),q(R,` ${_(p).imdb_score??""}`),q(A,_(p).year),q(O,_(p).type),K(te,"href",`${gr}/${_(p).type??""}/${_(p).slug??""}`)}),w(m,k)},m=>{var p=lt(),k=Q(p);{var y=g=>{var T=vl();w(g,T)};F(k,g=>{_(o)||g(y)})}w(m,p)}),w(d,h)};F(v,d=>{r()&&!_(a)&&d(c)})}w(e,s),X()}oe(["click"]);function ml(e,t,n,r,i,a){if(!_(t)||!_(n))return;const o=_(n).type==="movie"?"movie":"show",f=gr+`/${o}/${_(n).slug}`,u={sid:_(n).sid,title:_(t),sentence:_(r),playpilot_url:f,key:Er(_(n).sid),title_details:_(n)};i.onsave(u),a()()}var hl=S('<div class="error svelte-1sr8iw0"><!></div>'),gl=S('<section class="layout svelte-1sr8iw0"><div class="header svelte-1sr8iw0"><!> <h2 class="svelte-1sr8iw0">Add Playlink manually</h2></div> <p class="svelte-1sr8iw0">Highlight the text section in your post that you want to turn into a Playlink.</p> <label for="text" class="svelte-1sr8iw0">Selected text</label> <!> <!> <label for="text" class="svelte-1sr8iw0">Paired title</label> <!> <button class="save svelte-1sr8iw0">Add playlink</button></section>');function pl(e,t){J(t,!0);let n=M(t,"htmlString",3,""),r=M(t,"onclose",3,()=>null),i=B(""),a=B(""),o=B(null),f=B(""),u=B("");ht(s);function s(){const g=window.getSelection();if(!g)return;const T=g.toString().trim();if(!T)return;L(f,""),L(i,Z(T)),L(u,Z(_(i))),L(a,Z(l(g,T)));const x=g.getRangeAt(0).commonAncestorContainer.textContent,C=Cr(n());(!x||!C.includes(x))&&L(f,"Selection was not inside of given content")}function l(g,T){const x=g.getRangeAt(0);let C=x.startContainer;if((C.textContent||"").length<=T.length*2&&x.startContainer.parentNode&&(C=x.startContainer.parentNode),!C)return"";const N=C.textContent||"",I=x.startOffset,R=x.endOffset,U=N.slice(0,I).lastIndexOf("."),A=N.slice(R).search(/[.!?]/),P=U===-1?0:U+1,O=A===-1?N.length:R+A+1;return N.slice(P,O).trim()}var v=gl();ve("mouseup",he,s);var c=b(v),d=b(c);_n(d,{get onclick(){return r()},size:"1.5rem",children:(g,T)=>{rl(g)},$$slots:{default:!0}});var h=E(c,6);mn(h,{get value(){return _(i)},label:"Select text on the page",name:"selected-text",readonly:!0});var m=E(h,2);{var p=g=>{var T=hl(),x=b(T);hn(x,{children:(C,N)=>{var I=Ae();H(()=>q(I,_(f))),w(C,I)},$$slots:{default:!0}}),w(g,T)};F(m,g=>{_(f)&&g(p)})}var k=E(m,4);_l(k,{onselect:g=>L(o,Z(g)),get query(){return _(u)},set query(g){L(u,Z(g))}});var y=E(k,2);y.__click=[ml,i,o,a,t,r],H(()=>y.disabled=!_(i)||!_(o)),w(e,v),X()}oe(["click"]);async function yl(e,t,n,r,i){try{L(t,!0),L(n,!1),r(await va(r(),i()))}catch{L(n,!0)}finally{L(t,!1)}}var kl=S('<div class="drag-handle svelte-7vh28x"><!></div>'),wl=S('<div class="loading svelte-7vh28x">Loading...</div>'),bl=S('<div class="bubble svelte-7vh28x"> </div> <!>',1),xl=S('<div class="error svelte-7vh28x"><!></div>'),El=S("<div><!></div>"),Tl=S('<div class="empty svelte-7vh28x">No link injections are present</div>'),Cl=S('<button class="save svelte-7vh28x"> </button>'),Sl=S('<!> <div class="items svelte-7vh28x"></div> <!>',1),Pl=S('<div class="panel svelte-7vh28x"><!></div>'),Il=S('<section class="editor playpilot-styled-scrollbar svelte-7vh28x"><!> <header class="header svelte-7vh28x"><h1 class="svelte-7vh28x">Playlinks</h1> <!></header> <!> <!></section>');function Al(e,t){J(t,!0);let n=M(t,"linkInjections",15),r=M(t,"htmlString",3,""),i=M(t,"loading",3,!1);const a="editor-position";let o=B(null),f=Z(JSON.parse(localStorage.getItem(a)||'{ "x": 0, "y": 0 }')),u=B(!1),s=B(!1),l=B(!1),v=B(0);function c(A){localStorage.setItem(a,JSON.stringify(A))}function d(A){n(n().filter(P=>P.key!==A))}function h(A){if(!_(o))return;const P=A.offsetTop,O=P+A.offsetHeight,W=_(o).scrollTop,re=W+_(o).clientHeight;P>=W&&O<=re||_(o).scrollTo({top:P-_(o).clientHeight/2,behavior:"smooth"})}function m(A){const P=A.target;L(v,Z(P.scrollTop))}var p=Il(),k=b(p);{var y=A=>{var P=kl(),O=b(P);tl(O,{get element(){return _(o)},get position(){return f},limit:{x:16,y:16},onchange:c}),w(A,P)};F(k,A=>{_(o)&&A(y)})}var g=E(k,2),T=E(b(g),2);{var x=A=>{var P=wl();w(A,P)},C=A=>{var P=bl(),O=Q(P),W=b(O),re=E(O,2);_n(re,{onclick:()=>L(u,!0),size:"2rem","aria-label":"Add manual injection",children:(te,ie)=>{var D=Ae("+");w(te,D)},$$slots:{default:!0}}),H(()=>{K(O,"aria-label",`${n().length??""} found playlinks`),q(W,n().length)}),w(A,P)};F(T,A=>{i()?A(x):A(C,!1)})}var N=E(g,2);{var I=A=>{var P=Sl(),O=Q(P);{var W=D=>{var Y=xl(),de=b(Y);hn(de,{children:(me,je)=>{var $=Ae("Something went wrong, check your links below.");w(me,$)},$$slots:{default:!0}}),we(7,Y,()=>ct,()=>({duration:150})),w(D,Y)};F(O,D=>{_(l)&&D(W)})}var re=E(O,2);Fe(re,23,n,D=>D.key,(D,Y,de)=>{var me=El(),je=b(me);Qo(je,{onremove:()=>d(_(Y).key),onhighlight:h,get linkInjection(){return n()[_(de)]},set linkInjection($){n(n()[_(de)]=$,!0)}}),we(3,me,()=>ct,()=>({duration:100})),w(D,me)},D=>{var Y=Tl();w(D,Y)});var te=E(re,2);{var ie=D=>{var Y=Cl();Y.__click=[yl,s,l,n,r];var de=b(Y);H(()=>{Y.disabled=_(s),q(de,_(s)?"Saving...":"Save links")}),w(D,Y)};F(te,D=>{n().length&&D(ie)})}w(A,P)};F(N,A=>{i()||A(I)})}var R=E(N,2);{var U=A=>{var P=Pl(),O=b(P);pl(O,{get htmlString(){return r()},onclose:()=>L(u,!1),onsave:W=>n().push(W)}),H(()=>cn(P,"top",`${_(v)??""}px`)),we(3,P,()=>Ot,()=>({x:Math.min(window.innerWidth,320),duration:200,opacity:1})),w(A,P)};F(R,A=>{_(u)&&A(U)})}Nt(p,A=>L(o,A),()=>_(o)),H(()=>{se(p,"panel-open",_(u)),se(p,"loading",i())}),ve("scroll",p,m),w(e,p),X()}oe(["click"]);var Ll=S('<div class="playpilot-link-injections svelte-168nsap"><!> <!></div>');function jl(e,t){J(t,!0);const n=co(),r=so(n),i=r.map(g=>g.outerHTML).join(""),a=wr();let o=B(Z([])),f=B(null),u=B(!1),s=B(!0);an(()=>{a&&v()}),ht(()=>(De(Le.ArticlePageView),l(),()=>Zt()));async function l(){a&&L(u,Z(await yr()));const g=location.protocol+"//"+location.host+location.pathname,T=await ua(g,i)||[];L(o,Z(T.filter(x=>x.title_details))),c(),L(s,!1)}function v(){Zt(),c()}function c(){if(!_(o).length)return;const g=uo(r,_(o),d);JSON.stringify(_(o))!==JSON.stringify(g)&&L(o,Z(g))}function d(g){L(f,Z(g))}var h=Ll(),m=b(h);{var p=g=>{Al(g,{htmlString:i,get loading(){return _(s)},get linkInjections(){return _(o)},set linkInjections(T){L(o,Z(T))}})};F(m,g=>{a&&_(u)&&g(p)})}var k=E(m,2);{var y=g=>{xo(g,{get title(){return _(f).title_details},onclose:()=>L(f,null)})};F(k,g=>{_(f)&&_(f).title_details&&g(y)})}w(e,h),X()}window.PlayPilotLinkInjections={token:"",editorial_token:"",selector:"",app:null,initialize(e={token:"",selector:"",editorial_token:""}){if(!e.token){console.error("An API token is required.");return}this.token=e.token,this.editorial_token=e.editorial_token,this.selector=e.selector,this.app&&this.destroy();const t=document.createElement("div");t.id="playpilot-link-injection",document.body.insertAdjacentElement("beforeend",t),this.app=sn(jl,{target:t})},destroy(){if(!this.app)return;this.app=null;const e=document.getElementById("playpilot-link-injection");e&&e.remove(),Zt()}};
@@ -0,0 +1,33 @@
1
+ import prettier from 'eslint-config-prettier'
2
+ import js from '@eslint/js'
3
+ import svelte from 'eslint-plugin-svelte'
4
+ import globals from 'globals'
5
+
6
+ /** @type {import('eslint').Linter.Config[]} */
7
+ export default [
8
+ js.configs.recommended,
9
+ ...svelte.configs['flat/recommended'],
10
+ prettier,
11
+ ...svelte.configs['flat/prettier'],
12
+ {
13
+ languageOptions: {
14
+ globals: {
15
+ ...globals.browser,
16
+ ...globals.node,
17
+ PlayPilotLinkInjections: 'writable',
18
+ },
19
+ },
20
+ },
21
+ {
22
+ ignores: ['build/', '.svelte-kit/', 'dist/'],
23
+ },
24
+ {
25
+ rules: {
26
+ semi: ['error', 'never'],
27
+ quotes: ['error', 'single'],
28
+ 'comma-dangle': ['error', 'always-multiline'],
29
+ 'no-trailing-spaces': ['error'],
30
+ 'indent': ['warn', 2],
31
+ },
32
+ },
33
+ ]
package/index.html ADDED
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ </head>
7
+ <body>
8
+ <div id="app"></div>
9
+ <script type="module" src="/src/main.js"></script>
10
+ </body>
11
+ </html>
package/jsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "./.svelte-kit/tsconfig.json",
3
+ "compilerOptions": {
4
+ "allowJs": true,
5
+ "checkJs": true,
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "resolveJsonModule": true,
9
+ "skipLibCheck": true,
10
+ "sourceMap": true,
11
+ "strict": true,
12
+ "moduleResolution": "bundler"
13
+ }
14
+ // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
15
+ // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
16
+ //
17
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
18
+ // from the referenced tsconfig.json - TypeScript does not merge them in
19
+ }
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@playpilot/tpi",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "dev": "vite dev",
7
+ "build": "vite build",
8
+ "preview": "vite preview",
9
+ "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json",
10
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch",
11
+ "format": "prettier --write .",
12
+ "lint": "prettier --check . && eslint .",
13
+ "test:unit": "vitest",
14
+ "test": "npm run test:unit -- --run"
15
+ },
16
+ "devDependencies": {
17
+ "@sveltejs/adapter-auto": "^3.0.0",
18
+ "@sveltejs/kit": "^2.0.0",
19
+ "@sveltejs/vite-plugin-svelte": "^4.0.0",
20
+ "@testing-library/svelte": "^5.2.6",
21
+ "eslint": "^9.7.0",
22
+ "eslint-config-prettier": "^9.1.0",
23
+ "eslint-plugin-svelte": "^2.36.0",
24
+ "globals": "^15.0.0",
25
+ "happy-dom": "^16.5.3",
26
+ "prettier": "^3.3.2",
27
+ "prettier-plugin-svelte": "^3.2.6",
28
+ "svelte": "^5.0.0",
29
+ "svelte-check": "^4.0.0",
30
+ "typescript": "^5.0.0",
31
+ "vite": "^5.0.3",
32
+ "vite-plugin-css-injected-by-js": "^3.5.2",
33
+ "vitest": "^2.1.8"
34
+ }
35
+ }
package/src/app.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ // See https://svelte.dev/docs/kit/types#app.d.ts
2
+ // for information about these interfaces
3
+ declare global {
4
+ namespace App {
5
+ // interface Error {}
6
+ // interface Locals {}
7
+ // interface PageData {}
8
+ // interface PageState {}
9
+ // interface Platform {}
10
+ }
11
+ }
12
+
13
+ export {};
package/src/app.html ADDED
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ %sveltekit.head%
8
+ </head>
9
+ <body data-sveltekit-preload-data="hover">
10
+ <div style="display: contents">%sveltekit.body%</div>
11
+ </body>
12
+ </html>
@@ -0,0 +1,7 @@
1
+ import { describe, it, expect } from 'vitest'
2
+
3
+ describe('sum test', () => {
4
+ it('adds 1 + 2 to equal 3', () => {
5
+ expect(1 + 2).toBe(3)
6
+ })
7
+ })
package/src/lib/api.js ADDED
@@ -0,0 +1,160 @@
1
+ import { authorize, getAuthToken, isEditorialModeEnabled } from './auth'
2
+ import { apiBaseUrl } from './constants'
3
+ import { stringToHash } from './hash'
4
+
5
+ /** @type {NodeJS.Timeout | number | null} */
6
+ let pollTimeout = null
7
+
8
+ /**
9
+ * Fetch link injections for a URL.
10
+ * @param {string} url URL of the given article
11
+ * @param {string} html HTML to be crawled
12
+ * @param {object} options
13
+ * @param {boolean} [options.automation] Enable automation, disable when inserting into editorial
14
+ * @param {string} [options.hash] unique key to identify the HTML
15
+ * @param {object} [options.params] Any rest params to include in the request body
16
+ * @returns {Promise<LinkInjectionResponse>}
17
+ */
18
+ export async function fetchLinkInjections(url, html, { hash = stringToHash(html), params = {} } = {}) {
19
+ const headers = new Headers({ 'Content-Type': 'application/json' })
20
+ const apiToken = getApiToken()
21
+ const isEditorialMode = isEditorialModeEnabled() ? await authorize() : false
22
+
23
+ if (!apiToken) throw new Error('No token was provided')
24
+
25
+ const response = await fetch(apiBaseUrl + `/external-pages/?api-token=${apiToken}&include_title_details=true${isEditorialMode ? '&editorial_mode_enabled=true' : ''}`, {
26
+ headers,
27
+ method: 'POST',
28
+ body: JSON.stringify(({
29
+ hash,
30
+ url,
31
+ page_text: html,
32
+ ...params,
33
+ })),
34
+ })
35
+
36
+ if (!response.ok) throw response
37
+
38
+ const parsed = await response.json()
39
+
40
+ return parsed
41
+ }
42
+
43
+ /**
44
+ * Link injections take a while to be ready. During this time we poll the endpoint until it returns the result we want.
45
+ * The results return `injections_ready=false` while the injections are not yet ready.
46
+ * @param {string} url URL of the given article
47
+ * @param {string} html HTML to be crawled
48
+ * @returns {Promise<LinkInjection[]>}
49
+ */
50
+ export async function pollLinkInjections(url, html, pollInterval = 3000, maxTries = 600) {
51
+ let hash = stringToHash(html)
52
+ let currentTry = 0
53
+
54
+ // Clear pollTimeout if it is already running to prevent multiple timeouts from running at the same time
55
+ // This is mostly handy during HMR, but also during navigation changes
56
+ if (pollTimeout) clearTimeout(pollTimeout)
57
+
58
+ /**
59
+ * Polls the endpoint recursively until it is ready.
60
+ * @param {Function} resolve Injections are ready and returned as expected
61
+ * @param {Function} reject Injections are not yet ready
62
+ * @returns {Promise<void>}
63
+ */
64
+ const poll = async (resolve, reject) => {
65
+ try {
66
+ const response = await fetchLinkInjections(url, html, { hash })
67
+
68
+ // Temporary solution to disallow pages that don't have link injections enabled.
69
+ // Specifically checking against false to exclude responses without the property.
70
+ if (response.injections_enabled === false) {
71
+ resolve([])
72
+ return
73
+ }
74
+
75
+ if (response.injections_ready) {
76
+ if (response.link_injections) {
77
+ response.link_injections = insertRandomKeys(response.link_injections)
78
+ }
79
+
80
+ resolve(response.link_injections || [])
81
+ return
82
+ }
83
+
84
+ throw new Error
85
+ } catch {
86
+ currentTry++
87
+
88
+ if (currentTry >= maxTries) {
89
+ console.error('Max poll limit exceeded. Please return later.')
90
+ resolve()
91
+ return
92
+ }
93
+
94
+ pollTimeout = setTimeout(() => poll(resolve, reject), pollInterval)
95
+ }
96
+ }
97
+
98
+ return new Promise(poll)
99
+ }
100
+
101
+ /**
102
+ * @param {LinkInjection[]} linkInjections
103
+ * @param {string} html HTML to be crawled
104
+ * @returns {Promise<LinkInjection[]>}
105
+ */
106
+ export async function saveLinkInjections(linkInjections, html) {
107
+ // @ts-ignore
108
+ const selector = window.PlayPilotLinkInjections?.selector
109
+
110
+ const newLinkInjections = linkInjections.map((/** @type {any} */linkInjection) => ({
111
+ sid: linkInjection.sid,
112
+ title: linkInjection.title,
113
+ sentence: linkInjection.sentence,
114
+ playpilot_url: linkInjection.playpilot_url,
115
+ after_article: !!linkInjection.after_article,
116
+ after_article_style: linkInjection.after_article_style || null,
117
+ in_text: linkInjection.in_text ?? true,
118
+ inactive: !!linkInjection.inactive,
119
+ }))
120
+
121
+ const response = await fetchLinkInjections(window.location.host + location.pathname, html, {
122
+ params: {
123
+ private_token: getAuthToken(),
124
+ automation_enabled: false,
125
+ link_injections: newLinkInjections,
126
+ text_selector: selector,
127
+ },
128
+ })
129
+
130
+ if (!response) throw new Error('saveLinkInjections response was faulty')
131
+
132
+ return linkInjections
133
+ }
134
+
135
+ /**
136
+ * Insert random keys into link injections. These are used to identify the links on the page.
137
+ * We can't just use SIDs, as a page might include multiple links of the same title
138
+ * @param {LinkInjection[]} linkInjections
139
+ * @returns {LinkInjection[]}
140
+ */
141
+ function insertRandomKeys(linkInjections) {
142
+ return linkInjections.map(linkInjection => ({
143
+ ...linkInjection,
144
+ key: generateInjectionKey(linkInjection.sid),
145
+ }))
146
+ }
147
+
148
+ /**
149
+ * Generate a key for a linkInjection. This is used to match an injection to it's element on the page.
150
+ * @param {string} sid Sid of the title linked to the injection
151
+ * @returns {string} Random string preprending with title sid.
152
+ */
153
+ export function generateInjectionKey(sid) {
154
+ return sid + '-' + (Math.random() + 1).toString(36).substring(7)
155
+ }
156
+
157
+ export function getApiToken() {
158
+ // @ts-ignore
159
+ return window.PlayPilotLinkInjections?.token
160
+ }