lido-player 0.0.2-beta-18-dev → 0.0.2-beta-21-dev

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 (232) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/{decode-DUZYNXIv.js → decode-Buln7Iaf.js} +1 -1
  3. package/dist/cjs/{index-BEjUmVtH.js → index-Bb_TFgTA.js} +137 -64
  4. package/dist/cjs/{index-DnqQXD5x.js → index-DBCFoh1I.js} +12 -53
  5. package/dist/cjs/index.cjs.js +2 -2
  6. package/dist/cjs/lido-avatar_22.cjs.entry.js +139 -50
  7. package/dist/cjs/lido-player.cjs.js +2 -2
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/collection-manifest.json +1 -1
  10. package/dist/collection/components/avatar/lido-avatar.css +4 -4
  11. package/dist/collection/components/avatar/lido-avatar.js +1 -1
  12. package/dist/collection/components/avatar/lido-avatar.tsx +207 -207
  13. package/dist/collection/components/avatar/readme.md +49 -49
  14. package/dist/collection/components/calculator/lido-calculator.css +89 -89
  15. package/dist/collection/components/calculator/lido-calculator.js +2 -2
  16. package/dist/collection/components/canvas/lido-canvas.css +33 -33
  17. package/dist/collection/components/canvas/lido-canvas.js +1 -1
  18. package/dist/collection/components/cell/lido-cell.css +100 -100
  19. package/dist/collection/components/cell/lido-cell.js +12 -12
  20. package/dist/collection/components/column/lido-col.css +19 -19
  21. package/dist/collection/components/column/lido-col.js +6 -6
  22. package/dist/collection/components/container/lido-container.css +10 -10
  23. package/dist/collection/components/container/lido-container.js +8 -8
  24. package/dist/collection/components/flashCard/lido-flash-card.css +28 -28
  25. package/dist/collection/components/flashCard/lido-flash-card.js +4 -4
  26. package/dist/collection/components/float/lido-float.css +30 -30
  27. package/dist/collection/components/float/lido-float.js +2 -2
  28. package/dist/collection/components/home/lido-home.css +309 -309
  29. package/dist/collection/components/home/lido-home.js +5 -5
  30. package/dist/collection/components/image/lido-image.css +17 -17
  31. package/dist/collection/components/image/lido-image.js +6 -6
  32. package/dist/collection/components/keyboard/lido-keyboard.css +38 -38
  33. package/dist/collection/components/keyboard/lido-keyboard.js +3 -3
  34. package/dist/collection/components/mathMatrix/lido-math-matrix.css +56 -56
  35. package/dist/collection/components/mathMatrix/lido-math-matrix.js +1 -1
  36. package/dist/collection/components/position/lido-pos.css +16 -16
  37. package/dist/collection/components/position/lido-pos.js +2 -2
  38. package/dist/collection/components/random/lido-random.css +8 -8
  39. package/dist/collection/components/random/lido-random.js +2 -2
  40. package/dist/collection/components/root/lido-root.js +5 -5
  41. package/dist/collection/components/row/lido-row.css +10 -10
  42. package/dist/collection/components/row/lido-row.js +6 -6
  43. package/dist/collection/components/scale/assets/Shadow.svg +9 -9
  44. package/dist/collection/components/scale/lido-balance.css +145 -145
  45. package/dist/collection/components/scale/lido-balance.js +13 -13
  46. package/dist/collection/components/shape/lido-shape.css +216 -216
  47. package/dist/collection/components/shape/lido-shape.js +6 -6
  48. package/dist/collection/components/slideFill/lido-slide-fill.css +3 -3
  49. package/dist/collection/components/slideFill/lido-slide-fill.js +13 -13
  50. package/dist/collection/components/text/lido-text.css +53 -53
  51. package/dist/collection/components/text/lido-text.js +5 -5
  52. package/dist/collection/components/trace/assets/Tracing-hand.svg +8 -8
  53. package/dist/collection/components/trace/lido-trace.css +97 -97
  54. package/dist/collection/components/trace/lido-trace.js +108 -19
  55. package/dist/collection/components/wrap/lido-wrap.css +18 -18
  56. package/dist/collection/components/wrap/lido-wrap.js +6 -6
  57. package/dist/collection/css/animation.css +211 -211
  58. package/dist/collection/css/index.css +324 -315
  59. package/dist/collection/stories/Templates/Fill-Up/fill-up.stories.js +61 -61
  60. package/dist/collection/stories/Templates/LetterPairing/LetterPairing.stories.js +123 -123
  61. package/dist/collection/stories/Templates/RocketGame/rocketGame.stories.js +48 -48
  62. package/dist/collection/stories/Templates/Tag/tagGame.stories.js +39 -39
  63. package/dist/collection/stories/Templates/arrangeLetters/arrangeLetters.stories.js +44 -44
  64. package/dist/collection/stories/Templates/balancing/balancing.stories.js +35 -35
  65. package/dist/collection/stories/Templates/balloonPop/balloonPop.stories.js +38 -38
  66. package/dist/collection/stories/Templates/blender/blender.stories.js +59 -59
  67. package/dist/collection/stories/Templates/bubbleType/bubbleType.stories.js +42 -42
  68. package/dist/collection/stories/Templates/calculator/calculator.stories.js +28 -28
  69. package/dist/collection/stories/Templates/categorize/categorize.stories.js +37 -37
  70. package/dist/collection/stories/Templates/categorize2/categorize2.stories.js +67 -67
  71. package/dist/collection/stories/Templates/checker-block/checkerBlock.stories.js +29 -29
  72. package/dist/collection/stories/Templates/checkerBlock/checkerBlock.stories.js +13 -13
  73. package/dist/collection/stories/Templates/create-sentence/createSentence.stories.js +74 -74
  74. package/dist/collection/stories/Templates/dragAndDrop/drag-drop.stories.js +69 -69
  75. package/dist/collection/stories/Templates/fillAnswer/fill-answer.stories.js +43 -43
  76. package/dist/collection/stories/Templates/fillBlank/fill-blank.stories.js +282 -282
  77. package/dist/collection/stories/Templates/foodJar/food-jar.stories.js +35 -35
  78. package/dist/collection/stories/Templates/grid/grid.stories.js +118 -118
  79. package/dist/collection/stories/Templates/gridGame/grid-game.stories.js +57 -57
  80. package/dist/collection/stories/Templates/imageMatch/imageMatch.stories.js +44 -44
  81. package/dist/collection/stories/Templates/jumpSentence/jumpSentence.stories.js +41 -41
  82. package/dist/collection/stories/Templates/letterboard/letterboard.stories.js +183 -183
  83. package/dist/collection/stories/Templates/makeSentence/make-sentence.stories.js +36 -36
  84. package/dist/collection/stories/Templates/matchBox/matchBox.stories.js +69 -69
  85. package/dist/collection/stories/Templates/matchBox/matchBox2.stories.js +84 -84
  86. package/dist/collection/stories/Templates/matchingCard/matching-card.stories.js +31 -31
  87. package/dist/collection/stories/Templates/multipleOption/mcqWithQuestionImage.stories.js +112 -112
  88. package/dist/collection/stories/Templates/multipleOption/multiple-option.stories.js +47 -47
  89. package/dist/collection/stories/Templates/multiplyBeeds/multiplyBeeds.stories.js +57 -57
  90. package/dist/collection/stories/Templates/nimbleTable/nimbleTable.stories.js +53 -53
  91. package/dist/collection/stories/Templates/numberBoard/numberBoard.stories.js +46 -46
  92. package/dist/collection/stories/Templates/numberBoardTwo/numberBoardTwo.stories.js +45 -45
  93. package/dist/collection/stories/Templates/numberIdentification/numberIdentificationimageTotext.stories.js +56 -56
  94. package/dist/collection/stories/Templates/numberIdentification/numberIdentificationtextTotext.stories.js +53 -53
  95. package/dist/collection/stories/Templates/numberPair/numberPair.stories.js +127 -127
  96. package/dist/collection/stories/Templates/openwindow/openwindow.stories.js +47 -47
  97. package/dist/collection/stories/Templates/openwindow/openwindow2.stories.js +38 -38
  98. package/dist/collection/stories/Templates/order-tractor/order-tractor-ascending-order.stories.js +97 -97
  99. package/dist/collection/stories/Templates/order-tractor/order-tractor.stories.js +90 -90
  100. package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaMultiOption.stories.js +63 -63
  101. package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaSumTogether.stories.js +45 -45
  102. package/dist/collection/stories/Templates/palEgmaPatternMatching/palEgmaPatternMatching.stories.js +63 -63
  103. package/dist/collection/stories/Templates/palEgmaWordProblem/palEgmaWordProblem.stories.js +79 -79
  104. package/dist/collection/stories/Templates/palEgraInventedSpelling/pal_egra_invented_spelling_schema.stories.js +32 -32
  105. package/dist/collection/stories/Templates/palEgraMCQWithImage/palEgraMCQWithImage.stories.js +42 -42
  106. package/dist/collection/stories/Templates/palEgraOptionWithAudio/palEgraOptionWithAudio.stories.js +63 -63
  107. package/dist/collection/stories/Templates/palEgraStoryMaking/pal_egra_story_making.stories.js +44 -44
  108. package/dist/collection/stories/Templates/palEgraTemplate1/palEgraLetterIdentification.stories.js +34 -34
  109. package/dist/collection/stories/Templates/palEgraWordMatch/palEgraWordMatch.stories.js +52 -52
  110. package/dist/collection/stories/Templates/palEgra_OddOneOut/palEgra_oddOneOut.stories.js +33 -33
  111. package/dist/collection/stories/Templates/palEgra_arrange_pictures/palEgra_arrange_pictures.stories.js +40 -40
  112. package/dist/collection/stories/Templates/palEgra_build_word/palEgra_build_word.stories.js +48 -48
  113. package/dist/collection/stories/Templates/palEgra_word_formation/palEgra_WordFormation.stories.js +48 -48
  114. package/dist/collection/stories/Templates/palStorytale/palStorytale.stories.js +18 -18
  115. package/dist/collection/stories/Templates/phonic-tractor/phonic-tractor.stories.js +44 -44
  116. package/dist/collection/stories/Templates/pictureClues/pictureClues.stories.js +34 -34
  117. package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch1.stories.js +36 -36
  118. package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch2.stories.js +30 -30
  119. package/dist/collection/stories/Templates/picturemeaning/pictureMeaningCocos.stories.js +20 -20
  120. package/dist/collection/stories/Templates/puzzleGame/puzzleGame.stories.js +17 -17
  121. package/dist/collection/stories/Templates/questionBoard/questionBoard.stories.js +58 -58
  122. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracy.stories.js +50 -50
  123. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWithText.stories.js +36 -36
  124. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWord.stories.js +43 -43
  125. package/dist/collection/stories/Templates/quizMaths/quizMaths.stories.js +631 -631
  126. package/dist/collection/stories/Templates/reorder/reorder.stories.js +63 -63
  127. package/dist/collection/stories/Templates/rowBlocks/rowBlocks.stories.js +47 -47
  128. package/dist/collection/stories/Templates/sentenceMatch/sentenceMatch.stories.js +29 -29
  129. package/dist/collection/stories/Templates/sequenceBox/sequenceBox1.stories.js +64 -64
  130. package/dist/collection/stories/Templates/sequenceBox/sequenceBox2.stories.js +62 -62
  131. package/dist/collection/stories/Templates/shapePair/shape-pair.stories.js +106 -106
  132. package/dist/collection/stories/Templates/shapeTractor/shape-tractor.stories.js +50 -50
  133. package/dist/collection/stories/Templates/spellDoor/spellDoor.stories.js +41 -41
  134. package/dist/collection/stories/Templates/storyTale/storyTale.stories.js +39 -39
  135. package/dist/collection/stories/Templates/substraction/substractionWithimg.stories.js +62 -62
  136. package/dist/collection/stories/Templates/substraction/substractionWithoutImg.stories.js +42 -42
  137. package/dist/collection/stories/Templates/sumTogether/sumTogether.stories.js +50 -50
  138. package/dist/collection/stories/Templates/tenBox/tenBox.stories.js +88 -88
  139. package/dist/collection/stories/Templates/total/total.stories.js +28 -28
  140. package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithimg.stories.js +35 -35
  141. package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithoutimg.stories.js +34 -34
  142. package/dist/collection/stories/Templates/writeCard/writeCard.stories.js +31 -31
  143. package/dist/collection/stories/Templates/writeLetter/writeLetter.stories.js +58 -58
  144. package/dist/collection/stories/Templates/writeNumber/writeNumber.stories.js +44 -44
  145. package/dist/collection/stories/Templates/writeSet/writeSet.stories.js +31 -31
  146. package/dist/collection/stories/Templates/writeWord/writeWord.stories.js +34 -34
  147. package/dist/collection/stories/components/flash-card.stories.js +48 -48
  148. package/dist/collection/stories/components/keyboard.stories.js +10 -10
  149. package/dist/collection/stories/components/slider.stories.js +4 -4
  150. package/dist/collection/stories/components/trace.stories.js +5 -5
  151. package/dist/collection/utils/audioPlayer.js +2 -5
  152. package/dist/collection/utils/utils.js +49 -9
  153. package/dist/collection/utils/utilsHandlers/dragDropHandler.js +10 -10
  154. package/dist/collection/utils/utilsHandlers/highlightHandler.js +54 -54
  155. package/dist/collection/utils/utilsHandlers/sortHandler.js +53 -15
  156. package/dist/components/index.js +1 -1
  157. package/dist/components/lido-avatar.js +1 -1
  158. package/dist/components/lido-balance.js +1 -1
  159. package/dist/components/lido-calculator.js +1 -1
  160. package/dist/components/lido-canvas.js +1 -1
  161. package/dist/components/lido-cell.js +1 -1
  162. package/dist/components/lido-col.js +1 -1
  163. package/dist/components/lido-container.js +1 -1
  164. package/dist/components/lido-flash-card.js +1 -1
  165. package/dist/components/lido-float.js +1 -1
  166. package/dist/components/lido-home.js +1 -1
  167. package/dist/components/lido-keyboard.js +1 -1
  168. package/dist/components/lido-math-matrix.js +1 -1
  169. package/dist/components/lido-pos.js +1 -1
  170. package/dist/components/lido-random.js +1 -1
  171. package/dist/components/lido-root.js +1 -1
  172. package/dist/components/lido-row.js +1 -1
  173. package/dist/components/lido-shape.js +1 -1
  174. package/dist/components/lido-slide-fill.js +1 -1
  175. package/dist/components/lido-text.js +1 -1
  176. package/dist/components/lido-trace.js +1 -1
  177. package/dist/components/lido-wrap.js +1 -1
  178. package/dist/components/{p-yT7udDfd.js → p-B4YAipq-.js} +1 -1
  179. package/dist/components/{p-DdQ1eqJr.js → p-B8nzzM8c.js} +1 -1
  180. package/dist/components/p-BAfFgI9q.js +1 -0
  181. package/dist/components/{p-Sl9R-E6h.js → p-BBHM059l.js} +1 -1
  182. package/dist/components/{p-SPZTb5fI.js → p-BJMjg5wu.js} +1 -1
  183. package/dist/components/{p-Cj-6tqzU.js → p-BOQDbCrm.js} +1 -1
  184. package/dist/components/{p-CwDTdXe5.js → p-BeRr8u5m.js} +1 -1
  185. package/dist/components/{p-CjdDpXfk.js → p-BfqihbR6.js} +1 -1
  186. package/dist/components/{p-CPYnt0P-.js → p-C5WmmkI6.js} +1 -1
  187. package/dist/components/{p-useuhkjH.js → p-C70ykycD.js} +1 -1
  188. package/dist/components/{p-BE25wHoo.js → p-CCR42e0i.js} +1 -1
  189. package/dist/components/{p-BfwUqpXc.js → p-CTlcpv4a.js} +1 -1
  190. package/dist/components/{p-CyGxEcn7.js → p-CXHPZN3m.js} +1 -1
  191. package/dist/components/{p-Bw-OC9iR.js → p-CgsPIpg0.js} +1 -1
  192. package/dist/components/{p-D54c-ybm.js → p-CljvnHkI.js} +1 -1
  193. package/dist/components/p-CwIlwnQk.js +1 -0
  194. package/dist/components/p-DLyacZap.js +1 -0
  195. package/dist/components/p-DONbWJGn.js +1 -0
  196. package/dist/components/p-DVTigdH_.js +1 -0
  197. package/dist/components/{p-BNNX1Pew.js → p-wF7SBGpr.js} +2 -2
  198. package/dist/esm/{decode-BgBfbPZu.js → decode-B_VrYFdJ.js} +1 -1
  199. package/dist/esm/{index-D-29PaRa.js → index-B-VyHxJa.js} +137 -64
  200. package/dist/esm/{index-BeHFCsWf.js → index-mMpK8062.js} +12 -53
  201. package/dist/esm/index.js +2 -2
  202. package/dist/esm/lido-avatar_22.entry.js +139 -50
  203. package/dist/esm/lido-player.js +3 -3
  204. package/dist/esm/loader.js +2 -2
  205. package/dist/lido-player/assets/Shadow.svg +9 -9
  206. package/dist/lido-player/assets/Tracing-hand.svg +8 -8
  207. package/dist/lido-player/index.esm.js +1 -1
  208. package/dist/lido-player/lido-avatar.css +4 -4
  209. package/dist/lido-player/lido-avatar.tsx +207 -207
  210. package/dist/lido-player/lido-player.css +8 -8
  211. package/dist/lido-player/lido-player.esm.js +1 -1
  212. package/dist/lido-player/{p-856e1956.entry.js → p-744dee1c.entry.js} +2 -2
  213. package/dist/lido-player/p-BK926Rl3.js +1 -0
  214. package/dist/lido-player/{p-BA2X6O7O.js → p-Cw84dpIR.js} +1 -1
  215. package/dist/lido-player/p-mMpK8062.js +2 -0
  216. package/dist/lido-player/readme.md +49 -49
  217. package/dist/types/components/trace/lido-trace.d.ts +9 -1
  218. package/dist/types/stencil-public-runtime.d.ts +0 -12
  219. package/dist/types/types/json.d.ts +3 -3
  220. package/dist/types/utils/utils.d.ts +1 -1
  221. package/dist/types/utils/utilsHandlers/dragDropHandler.d.ts +1 -0
  222. package/dist/types/utils/utilsHandlers/sortHandler.d.ts +2 -0
  223. package/loader/index.d.ts +1 -1
  224. package/package.json +74 -74
  225. package/readme.md +113 -113
  226. package/dist/components/p-BSV5U72F.js +0 -1
  227. package/dist/components/p-CTlwn9r7.js +0 -1
  228. package/dist/components/p-D-B1groh.js +0 -1
  229. package/dist/components/p-DbR5sNOj.js +0 -1
  230. package/dist/components/p-leIEepjl.js +0 -1
  231. package/dist/lido-player/p-BeHFCsWf.js +0 -3
  232. package/dist/lido-player/p-TuBmCgtK.js +0 -1
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, H as Host, a as getElement, c as getAssetPath, d as createEvent } from './index-BeHFCsWf.js';
2
- import { R as RiveService, s as setVisibilityWithDelay, i as initEventsForElement, c as convertUrlToRelative, p as parseProp, e as equationCheck, S as SelectedValuesKey, a as storingEachActivityScore, A as AudioPlayer, b as executeActions, d as calculateScore, t as triggerNextContainer, C as CalculatorOk, h as handlingChildElements, f as attachSpeakIcon, L as LIDO_INTERACTION_CLEANUP_EVENT, T as TemplateID, j as calculateScale, k as highlightElement, l as Timer, r as resetFloatState, m as handleFloatElementPosition, n as handleElementClick, o as commonjsGlobal, g as getDefaultExportFromCjs, q as generateUUIDFallback, u as ActivityScoreKey, v as dispatchActivityChangeEvent, G as GameScore, w as dispatchGameExitEvent, x as speakUrl, y as nextUrl, z as prevUrl, B as exitUrl, N as NextContainerKey, P as PrevContainerKey, D as LIDO_COMMON_AUDIO_PATH, E as LidoContainer$1, F as getCancelBtnPopup, H as matchStringPattern, I as triggerPrevcontainer, J as setActiveZipAssets, K as clearActiveZipAssets, M as setCancelBtnPopup, O as tinycolor, Q as stopHighlightForSpeakingElement, U as DropAction, V as validateObjectiveStatus, W as fraction, X as LIDO_COMMON_AUDIO_READY_EVENT, Y as TraceMode, Z as speakIcon, _ as fingerUrl } from './index-D-29PaRa.js';
1
+ import { r as registerInstance, h, H as Host, a as getElement, c as getAssetPath, d as createEvent } from './index-mMpK8062.js';
2
+ import { R as RiveService, s as setVisibilityWithDelay, i as initEventsForElement, c as convertUrlToRelative, p as parseProp, e as equationCheck, S as SelectedValuesKey, a as storingEachActivityScore, A as AudioPlayer, b as executeActions, d as calculateScore, t as triggerNextContainer, C as CalculatorOk, h as handlingChildElements, f as attachSpeakIcon, L as LIDO_INTERACTION_CLEANUP_EVENT, T as TemplateID, j as calculateScale, k as highlightElement, l as Timer, r as resetFloatState, m as handleFloatElementPosition, n as handleElementClick, o as commonjsGlobal, g as getDefaultExportFromCjs, q as generateUUIDFallback, u as ActivityScoreKey, v as dispatchActivityChangeEvent, G as GameScore, w as dispatchGameExitEvent, x as speakUrl, y as nextUrl, z as prevUrl, B as exitUrl, N as NextContainerKey, P as PrevContainerKey, D as LIDO_COMMON_AUDIO_PATH, E as LidoContainer$1, F as getCancelBtnPopup, H as matchStringPattern, I as triggerPrevcontainer, J as setActiveZipAssets, K as clearActiveZipAssets, M as setCancelBtnPopup, O as tinycolor, Q as stopHighlightForSpeakingElement, U as DropAction, V as validateObjectiveStatus, W as fraction, X as LIDO_COMMON_AUDIO_READY_EVENT, Y as TraceMode, Z as speakIcon, _ as fingerUrl } from './index-B-VyHxJa.js';
3
3
 
4
4
  var rive$1 = {exports: {}};
5
5
 
@@ -8158,7 +8158,7 @@ const LidoAvatar = class {
8158
8158
  display: this.visible ? 'flex' : 'none',
8159
8159
  zIndex: this.z,
8160
8160
  };
8161
- return (h(Host, { key: '14599bbd626e766d35b9611f80dd401ee76717b4', id: this.id, type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, src: this.src }, h("canvas", { key: '6f128e61bee6797c0cf83c15b3fd3ba4d1d7b1ea', class: "lido-canvas" })));
8161
+ return (h(Host, { key: 'bb967cb7f353a454adce62c2bb18590f47697110', id: this.id, type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, src: this.src }, h("canvas", { key: '09824386b4f1c3622111abc86d66ddedb5980bc6', class: "lido-canvas" })));
8162
8162
  }
8163
8163
  static get assetsDirs() { return ["."]; }
8164
8164
  get el() { return getElement(this); }
@@ -8382,7 +8382,7 @@ const LidoBalance = class {
8382
8382
  };
8383
8383
  }
8384
8384
  render() {
8385
- return (h(Host, { key: '24eaa92142462fb2177b164d1f4f773deba5abc7', id: "lido-balance", "bg-color": "red", onEntry: this.onEntry, class: "lido-balance", tilt: this.tilt.toString(), style: this.style, operation: this.operation.toString(), "pivot-image": this.pivotSvg, "scale-image": this.scaleSvg, "handler-image": this.handlerSvg }, h("div", { key: 'b8f95e748f8286cbedc45d1a7d54d8fdb671520f', innerHTML: this.pivotSvg, id: "pivotimg", class: "pivot" }), h("div", { key: '8877a0eee0f9662a2ef65fe6fc5f8426b3fa1d67', innerHTML: this.scaleSvg, id: "scaleimg", class: "scale", ref: (el) => (this.scaleEl = el) }), h("div", { key: '9e93a52334facad8b582041185c89db879844ac1', innerHTML: this.handlerSvg, id: "handlerimg", class: "handler", ref: (el) => (this.leftHandleEl = el) }), h("div", { key: '3a8bdea23a2a7cd8d923637186ae71fc39eeedb3', innerHTML: this.handlerSvg, id: "handimg", class: "hand", ref: (el) => (this.rightHandleEl = el) }), h("div", { key: '0d0967805aa8b3e86e1220c53a18610f7106d425', id: "balanceSymbol", class: "lido-balance-symbol", "aria-hidden": !this.showSymbol }, this.showSymbol ? this.balanceSymbol : '')));
8385
+ return (h(Host, { key: 'dea6f583bb2de36cfe7ee5bf401cdcaf975685b8', id: "lido-balance", "bg-color": "red", onEntry: this.onEntry, class: "lido-balance", tilt: this.tilt.toString(), style: this.style, operation: this.operation.toString(), "pivot-image": this.pivotSvg, "scale-image": this.scaleSvg, "handler-image": this.handlerSvg }, h("div", { key: 'da588147b7aeafc8a529c8f8399e5acbabbf3bb7', innerHTML: this.pivotSvg, id: "pivotimg", class: "pivot" }), h("div", { key: 'f1a0aa6b8f080a0db945c44b2a1cbb715541db4f', innerHTML: this.scaleSvg, id: "scaleimg", class: "scale", ref: (el) => (this.scaleEl = el) }), h("div", { key: 'e1c742d85d924a6c24c6c8103dcfcf2d41533b88', innerHTML: this.handlerSvg, id: "handlerimg", class: "handler", ref: (el) => (this.leftHandleEl = el) }), h("div", { key: 'c1ea8165c0d2c590616edee9b189e8a3d4198c1a', innerHTML: this.handlerSvg, id: "handimg", class: "hand", ref: (el) => (this.rightHandleEl = el) }), h("div", { key: 'd666d445b0a5fd04394c335ea1494ac7e80f1b07', id: "balanceSymbol", class: "lido-balance-symbol", "aria-hidden": !this.showSymbol }, this.showSymbol ? this.balanceSymbol : '')));
8386
8386
  }
8387
8387
  static get assetsDirs() { return ["assets"]; }
8388
8388
  get el() { return getElement(this); }
@@ -8575,7 +8575,7 @@ const LidoCalculator = class {
8575
8575
  }
8576
8576
  render() {
8577
8577
  const numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '←', '0', 'OK'];
8578
- return (h(Host, { key: 'e8249dda090212d327b68b47d42a123de6a890c9', onEntry: this.onEntry, id: "lidoCalculator", style: { width: this.width, height: this.height, backgroundColor: this.bgColor, left: this.x, top: this.y } }, h("lido-cell", { key: '54d093a3dd6a6e5850c881d224290bd6cf9c3690', visible: "true", height: "94px", width: "60px" }, h("lido-text", { key: '7145c80b2477493a8a87f6d098164293732861bf', visible: "true", id: "lido-calculator-penIcon", type: "click", height: "80px", x: "204%", width: "89px", onEntry: "this.position='relative';", class: "top-icon" }, h("img", { key: '7242feedd5172b555df683c747bbef778a9cdcd7', src: convertUrlToRelative(this.penIcon), alt: "pen", style: { width: '100%', height: '100%' } }))), h("div", { key: '6145a4f89da352c3576e6d51a1e260e335778fbb', class: "lido-calculator-displayParent" }, h("div", { key: '04e07b724d912d43b08c7a1e15c605d0fd30c7be', class: "lido-calculator-display" }, this.displayValue)), h("div", { key: '19839d02863ca1e27fddb4093f191171e237f143', class: "lido-calculator-buttons" }, numbers.map((num, i) => (h("lido-text", { id: `btn-${i}`, string: num, visible: "true", type: "click", class: {
8578
+ return (h(Host, { key: 'ae833326069dd4cf9588701995962b0d1b3b0091', onEntry: this.onEntry, id: "lidoCalculator", style: { width: this.width, height: this.height, backgroundColor: this.bgColor, left: this.x, top: this.y } }, h("lido-cell", { key: '135b08be24862393217a0a93d4afd3ec8647547c', visible: "true", height: "94px", width: "60px" }, h("lido-text", { key: 'e6fb20b06bef347d68e427748669bb176c30b7a3', visible: "true", id: "lido-calculator-penIcon", type: "click", height: "80px", x: "204%", width: "89px", onEntry: "this.position='relative';", class: "top-icon" }, h("img", { key: '2b6077ffad1046fdedb816402fdcb906539afa5c', src: convertUrlToRelative(this.penIcon), alt: "pen", style: { width: '100%', height: '100%' } }))), h("div", { key: '96dfabdab176f66e16d6b03efb2e8ecad74c9d45', class: "lido-calculator-displayParent" }, h("div", { key: '9c711dd53ada73ca9ddac1c37b0719c5c746a591', class: "lido-calculator-display" }, this.displayValue)), h("div", { key: '5d595bf410fc1a75fa57c485fd08a8e97064016a', class: "lido-calculator-buttons" }, numbers.map((num, i) => (h("lido-text", { id: `btn-${i}`, string: num, visible: "true", type: "click", class: {
8579
8579
  'lido-calculator-btn-special': num === '←' || num === 'OK',
8580
8580
  'lido-calculator-btn-default': num !== '←' && num !== 'OK'
8581
8581
  }, onClick: () => this.handleClick(num) }))))));
@@ -8689,7 +8689,7 @@ const LidoCanvas = class {
8689
8689
  this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
8690
8690
  }
8691
8691
  render() {
8692
- return (h(Host, { key: '6bb47f06656ce667d23236e9f3c3a8f383885a43', id: "lido-canvas", class: "lido-canvas", style: this.style }, h("button", { key: 'fd0d1217bda63071fbf6496c2538c2a944b14181', id: "lido-exit-button", onClick: () => this.clearCanvas() }), h("canvas", { key: 'ed0333972bb7ce0fc4e14c81bb466ea895ce65e0', id: "lido-canvas" })));
8692
+ return (h(Host, { key: 'ca88c99317fe079d25b16410d78cbd63e13d712c', id: "lido-canvas", class: "lido-canvas", style: this.style }, h("button", { key: '3e1085ff4be21ca281483367a41b51ba4ff49736', id: "lido-exit-button", onClick: () => this.clearCanvas() }), h("canvas", { key: '9c1f485a2a84b2da9468e8b83f1962cce7852efc', id: "lido-canvas" })));
8693
8693
  }
8694
8694
  get el() { return getElement(this); }
8695
8695
  };
@@ -8948,7 +8948,7 @@ const LidoCell = class {
8948
8948
  this.el.className = `lido-${parseProp(this.layout, orientation)}`;
8949
8949
  }
8950
8950
  render() {
8951
- return (h(Host, { key: '73bdf9dd33fdd8322c35465de011697da112193a', id: this.id, class: "lido-cell", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "flex-direction": this.flexDirection, "disable-speak": this.disableSpeak }, h("slot", { key: '6e9d4507b36716f04853d39ef66015441782aa88' })));
8951
+ return (h(Host, { key: '53d510e92a72d1f855e6d0cb0c0564c2f4351b64', id: this.id, class: "lido-cell", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "flex-direction": this.flexDirection, "disable-speak": this.disableSpeak }, h("slot", { key: '1af7a1f78e12bb1babcd91266eaf209b9d7530dc' })));
8952
8952
  }
8953
8953
  get el() { return getElement(this); }
8954
8954
  };
@@ -9026,7 +9026,7 @@ const LidoCol = class {
9026
9026
  };
9027
9027
  }
9028
9028
  render() {
9029
- return (h(Host, { key: '334206d6054442fec787cfb479a68ae164404730', id: this.id, class: "lido-col", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '590cd219bc5a02e6b96eafe108fb8b310daf941d' })));
9029
+ return (h(Host, { key: 'b2ecb19a78feed7275d9e996255db4144d5e0153', id: this.id, class: "lido-col", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '2d285d2c1557647e05abb470490da6c7c735a39d' })));
9030
9030
  }
9031
9031
  get el() { return getElement(this); }
9032
9032
  };
@@ -12352,7 +12352,7 @@ const LidoContainer = class {
12352
12352
  margin: this.margin,
12353
12353
  userSelect: 'none', // Prevent any field selection
12354
12354
  };
12355
- return (h(Host, { key: '1862e30fedda58726edc107f81fae1f63e96d009', id: "lido-container", Lang: this.Lang, "tab-index": 0, class: "lido-container", objective: this.objective, baseUrl: this.baseUrl, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, onTouch: this.onTouch, onInCorrect: this.onInCorrect, onCorrect: this.onCorrect, onEntry: this.onEntry, "show-check": `${this.showCheck}`, "is-continue-on-correct": `${this.isContinueOnCorrect}`, "is-allow-only-correct": `${this.isAllowOnlyCorrect}`, canplay: `${this.canplay}`, appendToDropOnCompletion: `${this.appendToDropOnCompletion}`, "show-prev-button": `${this.showPrevButton}`, "show-next-button": `${this.showNextButton}`, "show-drop-border": `${this.showDropBorder}`, "bg-image": this.bgImage, "exit-button-url": this.exitButtonUrl, "prev-button-url": this.prevButtonUrl, "next-button-url": this.nextButtonUrl, "speaker-button-url": this.speakerButtonUrl, "disable-speak": `${this.disableSpeak}`, "template-id": this.templateId, audio: this.audio, "highlight-word-by-word": `${this.highlightWordByWord}` }, h("lido-text", { key: '86fd014a61ba9cba6d67e2d921b2d8a8a289dbc7', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: 'c3128ea2164892757b32cb076d717436947f9a4c' })));
12355
+ return (h(Host, { key: '9dd374c6cdfcc88a5b18e7dc7fec527c853a4719', id: "lido-container", Lang: this.Lang, "tab-index": 0, class: "lido-container", objective: this.objective, baseUrl: this.baseUrl, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, onTouch: this.onTouch, onInCorrect: this.onInCorrect, onCorrect: this.onCorrect, onEntry: this.onEntry, "show-check": `${this.showCheck}`, "is-continue-on-correct": `${this.isContinueOnCorrect}`, "is-allow-only-correct": `${this.isAllowOnlyCorrect}`, canplay: `${this.canplay}`, appendToDropOnCompletion: `${this.appendToDropOnCompletion}`, "show-prev-button": `${this.showPrevButton}`, "show-next-button": `${this.showNextButton}`, "show-drop-border": `${this.showDropBorder}`, "bg-image": this.bgImage, "exit-button-url": this.exitButtonUrl, "prev-button-url": this.prevButtonUrl, "next-button-url": this.nextButtonUrl, "speaker-button-url": this.speakerButtonUrl, "disable-speak": `${this.disableSpeak}`, "template-id": this.templateId, audio: this.audio, "highlight-word-by-word": `${this.highlightWordByWord}` }, h("lido-text", { key: '8295782a74ce6ef8ca9a623de8a28b539d9f6d4f', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: 'eb3c995b777986e07dcb6aa935ef38d41aa1e7e7' })));
12356
12356
  }
12357
12357
  get el() { return getElement(this); }
12358
12358
  static get watchers() { return {
@@ -12509,7 +12509,7 @@ const LidoFlash = class {
12509
12509
  }
12510
12510
  /* ---------- Render ---------- */
12511
12511
  render() {
12512
- return (h(Host, { key: 'db8de4cdb5466700ca29fba17e2a5ffb01907559', value: this.value, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, type: this.type, onClick: this.handleFlip, "disable-speak": this.disableSpeak }, h("div", { key: 'ec3aeff247e581f4aef061b7fea5b752a64804b3', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: 'cb7ffa64077c89157a0d75720964605eed639363', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: '537e1b60c82be542b2a8a8426abc4b801865688e', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
12512
+ return (h(Host, { key: 'cd0d8539f24de1fd7805b271de839ee8efeb4287', value: this.value, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, type: this.type, onClick: this.handleFlip, "disable-speak": this.disableSpeak }, h("div", { key: 'a97eaa100216652cc4deaf8b6f73e9ea07a125f2', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: '7a6f94b89da76b2c7fc911c44d2aaa63a3d2164d', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: '15936f96d44db217c042584cc225a42dc3f74e98', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
12513
12513
  }
12514
12514
  get el() { return getElement(this); }
12515
12515
  static get watchers() { return {
@@ -12606,7 +12606,7 @@ const LidoFloat = class {
12606
12606
  };
12607
12607
  }
12608
12608
  render() {
12609
- return (h(Host, { key: 'c461f1142dd6addd9ceb41ade183b044b875681f', class: "lido-float", "float-direction": this.floatDirection, id: this.id, "tab-index": this.tabIndex, style: this.style, onEntry: this.onEntry }, h("slot", { key: '240439bfda6a9e4e2d67e6ae2b5c878d99e632b3' })));
12609
+ return (h(Host, { key: '26ada4c2834a58fe1f45348a32f9d1dcecb79a14', class: "lido-float", "float-direction": this.floatDirection, id: this.id, "tab-index": this.tabIndex, style: this.style, onEntry: this.onEntry }, h("slot", { key: '6f4ca358f564e268390f221cc1f84af1f303761b' })));
12610
12610
  }
12611
12611
  get el() { return getElement(this); }
12612
12612
  };
@@ -12644,9 +12644,9 @@ function requireJszip_min () {
12644
12644
  var jszip_minExports = requireJszip_min();
12645
12645
  var JSZip = /*@__PURE__*/getDefaultExportFromCjs(jszip_minExports);
12646
12646
 
12647
- const indexCss = () => `@font-face{font-family:'Baloo Bhai 2';font-style:normal;font-weight:400 800;font-display:swap;src:url('../assets/offline-assets/fonts/Baloo-Bhai-2/Baloo-Bhai-2-Variable.woff2') format('woff2')}body{overflow:hidden;background-position:center;background-size:cover;background-repeat:no-repeat;height:100vh}*{user-select:none}.lido-disable-check-button{pointer-events:none;background-color:#9393935c !important;color:white}.lido-element-selected{border:2px solid;background-color:#ffdf7d !important}.diagonal-target,.diagonal-drop *{transform:scale(0.8) !important;opacity:1 !important}.cloned-element{display:flex !important;position:absolute !important;filter:grayscale(100%);pointer-events:none}.removeShadow{box-shadow:0px 0px 0px 0px #ff8900 !important}.highlight-element{border:2px solid white;box-shadow:rgb(243, 77, 8) 0px 0px 40px !important}.drop-element.empty{border:4px dashed #f34d08 !important}.drop-element.filled{border:'none' !important}.drag-element{box-shadow:0px 15px 11px rgba(43, 0, 0, 0.3) !important}.drag-element.dropped{box-shadow:none !important}.click-element{background-color:var(--btn-bg-color, rgba(255, 172, 76, 1)) !important;box-shadow:var(--btn-shadow-px) var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;cursor:pointer;transition:box-shadow 0.1s ease-out, transform 0.2s ease-out;}.click-element:active{box-shadow:0px 0px 0px var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;transform:translateY(var(--btn-active));}.click-element:focus{outline:2px solid dodgerblue;outline-offset:3px}.after-drop-popup-container{width:200%;height:200%;background-color:rgba(0, 0, 0, 0.8);position:absolute;display:flex;flex-direction:row-reverse;align-items:center;justify-content:center !important;gap:80px}.after-drop-popup-drag-element{scale:1.5;border-radius:8px;transform:none !important;position:unset !important}.after-drop-popup-drop-element{scale:1.5;border:unset;border-radius:8px;transform:none !important;position:unset !important}@keyframes zoomFadeIn{0%{transform:scale(0.6);opacity:0}100%{transform:scale(1);opacity:1}}.zoom-fade-in{animation:zoomFadeIn 0.8s ease-out forwards}@keyframes zoomFadeOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0.6);opacity:0}}.zoom-fade-out{animation:zoomFadeOut 0.8s ease-in forwards}.slide-numbers{width:70px;height:70px;border:1px solid #f57139;background-color:white;font-weight:500;color:#f57139;font-size:44px;border-radius:40px;display:flex;align-items:center;justify-content:center;font-family:'Baloo Bhai 2', serif}.slide-numbers-bottom{position:absolute;display:flex;justify-content:space-around;align-items:center;bottom:-25px;width:100%;height:50px}.slide-numbers-left{position:absolute;display:flex;flex-direction:column;justify-content:space-around;height:100%;width:50px;left:-25px;bottom:0px}.lido-speak-icon{width:56px;height:56px;position:absolute;top:-25px;right:-25px;z-index:10;background-color:white;border:4px solid #F34D08;border-radius:16px;box-shadow:0px 4px 0px 0px #F34D08;background-size:contain;background-repeat:no-repeat;cursor:pointer}.lido-speak-icon:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px !important}.lido-strong-shake{animation:strongShake 0.3s ease}.lido-scaled-shake{animation:scaledShake 0.6s ease-in-out}.lido-horizontal-shake{animation:horizontalShake 0.6s ease-in-out;border-radius:20px}.lido-vertical-shake{animation:verticalShake 0.6s ease-in-out;border-radius:20px}.lido-diagonal-shake{animation:diagonalShake 0.5s ease-in-out;border-radius:20px;will-change:transform}.lido-glow{animation:glowPulse 1s infinite alternate;transition:opacity 0.5s ease-in-out}.lido-box-highlight{animation:topToPlace 0.3s linear}.lido-display-hiddenvalue{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;font-weight:1000;color:brown;-webkit-text-stroke:2px white;font-family:'Baloo Bhai 2', sans-serif;pointer-events:none}.lido-image-colorize{position:relative;display:inline-block}.lido-image-colorize::after{content:'';position:absolute;inset:0;background:var(--tint-color);mix-blend-mode:multiply;opacity:0.8;pointer-events:none;mask-image:var(--mask-url);mask-size:cover;mask-repeat:no-repeat;mask-position:center}.lido-tts-highlight-overlay{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;background:linear-gradient( 180deg, rgba(255, 235, 59, 0.95), rgba(255, 214, 0, 0.95) );border-radius:6px;box-shadow:0 2px 6px rgba(0, 0, 0, 0.18), inset 0 -1px 0 rgba(255, 255, 255, 0.25);transition:width 25ms ease-out, height 25ms ease-out, opacity 80ms ease-out;opacity:0.95;will-change:transform, width, height;contain:layout paint style}`;
12647
+ const indexCss = () => `@font-face{font-family:'Baloo Bhai 2';font-style:normal;font-weight:400 800;font-display:swap;src:url('../assets/offline-assets/fonts/Baloo-Bhai-2/Baloo-Bhai-2-Variable.woff2') format('woff2')}body{overflow:hidden;background-position:center;background-size:cover;background-repeat:no-repeat;height:100vh}*{user-select:none}.lido-disable-check-button{pointer-events:none;background-color:#9393935c !important;color:white}.lido-element-selected{border:2px solid;background-color:#ffdf7d !important}.diagonal-target,.diagonal-drop *{transform:scale(0.8) !important;opacity:1 !important}.cloned-element{display:flex !important;position:absolute !important;filter:grayscale(100%);pointer-events:none}.removeShadow{box-shadow:0px 0px 0px 0px #ff8900 !important}.highlight-element{border:2px solid white;box-shadow:rgb(243, 77, 8) 0px 0px 40px !important}.drop-element.empty{border:4px dashed #f34d08 !important}.drop-element.filled{border:'none' !important}.drag-element{box-shadow:0px 15px 11px rgba(43, 0, 0, 0.3) !important}.drag-element.dropped{box-shadow:none !important}.click-element{background-color:var(--btn-bg-color, rgba(255, 172, 76, 1)) !important;box-shadow:var(--btn-shadow-px) var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;cursor:pointer;transition:box-shadow 0.1s ease-out, transform 0.2s ease-out;}.click-element:active{box-shadow:0px 0px 0px var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;transform:translateY(var(--btn-active));}.click-element:focus{outline:2px solid dodgerblue;outline-offset:3px}.after-drop-popup-container{width:200%;height:200%;background-color:rgba(0, 0, 0, 0.8);position:absolute;display:flex;flex-direction:row-reverse;align-items:center;justify-content:center !important;gap:80px}.after-drop-popup-drag-element{scale:1.5;border-radius:8px;transform:none !important;position:unset !important}.after-drop-popup-drop-element{scale:1.5;border:unset;border-radius:8px;transform:none !important;position:unset !important}@keyframes zoomFadeIn{0%{transform:scale(0.6);opacity:0}100%{transform:scale(1);opacity:1}}.zoom-fade-in{animation:zoomFadeIn 0.8s ease-out forwards}@keyframes zoomFadeOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0.6);opacity:0}}.zoom-fade-out{animation:zoomFadeOut 0.8s ease-in forwards}.slide-numbers{width:70px;height:70px;border:1px solid #f57139;background-color:white;font-weight:500;color:#f57139;font-size:44px;border-radius:40px;display:flex;align-items:center;justify-content:center;font-family:'Baloo Bhai 2', serif}.slide-numbers-bottom{position:absolute;display:flex;justify-content:space-around;align-items:center;bottom:-25px;width:100%;height:50px}.slide-numbers-left{position:absolute;display:flex;flex-direction:column;justify-content:space-around;height:100%;width:50px;left:-25px;bottom:0px}.lido-speak-icon{width:56px;height:56px;position:absolute;top:-25px;right:-25px;z-index:10;background-color:white;border:4px solid #F34D08;border-radius:16px;box-shadow:0px 4px 0px 0px #F34D08;background-size:contain;background-repeat:no-repeat;cursor:pointer}.lido-speak-icon:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px !important}.lido-strong-shake{animation:strongShake 0.3s ease}.lido-scaled-shake{animation:scaledShake 0.6s ease-in-out}.lido-horizontal-shake{animation:horizontalShake 0.6s ease-in-out;border-radius:20px}.lido-vertical-shake{animation:verticalShake 0.6s ease-in-out;border-radius:20px}.lido-diagonal-shake{animation:diagonalShake 0.5s ease-in-out;border-radius:20px;will-change:transform}.lido-glow{animation:glowPulse 1s infinite alternate;transition:opacity 0.5s ease-in-out}.lido-box-highlight{animation:topToPlace 0.3s linear}.lido-display-hiddenvalue{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;font-weight:1000;color:brown;-webkit-text-stroke:2px white;font-family:'Baloo Bhai 2', sans-serif;pointer-events:none}.lido-image-colorize{position:relative;display:inline-block}.lido-image-colorize::after{content:'';position:absolute;inset:0;background:var(--tint-color);mix-blend-mode:multiply;opacity:0.8;pointer-events:none;mask-image:var(--mask-url);mask-size:cover;mask-repeat:no-repeat;mask-position:center}.lido-tts-highlight-overlay{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;background:linear-gradient( 180deg, rgba(255, 235, 59, 0.95), rgba(255, 214, 0, 0.95) );border-radius:6px;box-shadow:0 2px 6px rgba(0, 0, 0, 0.18), inset 0 -1px 0 rgba(255, 255, 255, 0.25);transition:width 25ms ease-out, height 25ms ease-out, opacity 80ms ease-out;opacity:0.95;will-change:transform, width, height;contain:layout paint style}.category-dropped-onCorrect{box-shadow:rgba(129, 193, 39, 1) 0px 8px 8px 0px !important}.category-dropped-onInCorrect{box-shadow:rgba(255, 4, 16, 1) 0px 8px 8px 0px !important}`;
12648
12648
 
12649
- const animationCss = () => `@keyframes rightToPlace{from{transform:translateX(2000px)}to{transform:translateX(0)}}@keyframes topToPlace{from{transform:translateY(-1000px)}to{transform:translateY(0)}}@keyframes bottomToPlace{from{transform:translateY(1000px)}to{transform:translateY(0)}}@keyframes placeToLeft{from{}to{transform:translateX(-2000px)}}@keyframes placeToRight{from{}to{transform:translateX(2000px)}}@keyframes leftToPlace{from{transform:translateX(-2000px)}to{transform:translateX(0)}}@keyframes shake{0%{transform:translateX(0)}10%{transform:translateX(-5px)}20%{transform:translateX(5px)}30%{transform:translateX(-5px)}40%{transform:translateX(5px)}50%{transform:translateX(-5px)}60%{transform:translateX(5px)}70%{transform:translateX(-5px)}80%{transform:translateX(5px)}90%{transform:translateX(-5px)}100%{transform:translateX(0)}}@keyframes fallAndBounce{0%{transform:translateY(-1000px)}25%{transform:translateY(0px)}50%{transform:translateY(-200px)}75%{transform:translateY(0)}90%{transform:translateY(-100px)}100%{transform:translateY(0)}}@keyframes placeToDown{0%{transform:translateY(0)}100%{transform:translateY(1000px)}}@keyframes strongShake{0%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}100%{transform:translateX(0)}}@keyframes scaledShake{0%{transform:scale(1) translateX(0);box-shadow:0 0 0 transparent}20%{transform:scale(1.10) translateX(-12px);box-shadow:0 0 10px red}40%{transform:scale(1.10) translateX(12px);box-shadow:0 0 12px red}60%{transform:scale(1.10) translateX(-8px);box-shadow:0 0 10px red}80%{transform:scale(1.10) translateX(8px);box-shadow:0 0 12px red}100%{transform:scale(1) translateX(0);box-shadow:none}}@keyframes horizontalShake{0%{transform:scale(1) translateX(0);background-color:transparent}20%{transform:translateX(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateX(20px);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateX(-10px);background-color:rgba(255, 0, 0, 0.3)}80%{transform:translateX(10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translateX(0);background-color:transparent}}@keyframes verticalShake{0%{transform:translateY(0);background-color:transparent}20%{transform:translateY(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateY(20px);background-color:rgba(255, 0, 0, 0.2)}80%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.1)}100%{transform:translateY(0);background-color:transparent}}@keyframes diagonalShake{0%{transform:translate(0, 0);background-color:transparent}25%{transform:translate(20px, -20px);background-color:rgba(255, 0, 0, 0.2)}50%{transform:translate(-20px, 20px);background-color:rgba(255, 0, 0, 0.3)}75%{transform:translate(10px, -10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translate(0, 0);background-color:transparent}}@keyframes glowPulse{0%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}50%{filter:drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 40px yellow) drop-shadow(0 0 50px orange)}100%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}}@keyframes trace-animation{0%{}100%{width:var(--trace-width, 100px);height:var(--trace-height, 100px)}}`;
12649
+ const animationCss = () => `@keyframes rightToPlace{from{transform:translateX(2000px)}to{transform:translateX(0)}}@keyframes topToPlace{from{transform:translateY(-1000px)}to{transform:translateY(0)}}@keyframes bottomToPlace{from{transform:translateY(1000px)}to{transform:translateY(0)}}@keyframes placeToLeft{from{}to{transform:translateX(-2000px)}}@keyframes placeToRight{from{}to{transform:translateX(2000px)}}@keyframes leftToPlace{from{transform:translateX(-2000px)}to{transform:translateX(0)}}@keyframes shake{0%{transform:translateX(0)}10%{transform:translateX(-5px)}20%{transform:translateX(5px)}30%{transform:translateX(-5px)}40%{transform:translateX(5px)}50%{transform:translateX(-5px)}60%{transform:translateX(5px)}70%{transform:translateX(-5px)}80%{transform:translateX(5px)}90%{transform:translateX(-5px)}100%{transform:translateX(0)}}@keyframes fallAndBounce{0%{transform:translateY(-1000px)}25%{transform:translateY(0px)}50%{transform:translateY(-200px)}75%{transform:translateY(0)}90%{transform:translateY(-100px)}100%{transform:translateY(0)}}@keyframes placeToDown{0%{transform:translateY(0)}100%{transform:translateY(1000px)}}@keyframes strongShake{0%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}100%{transform:translateX(0)}}@keyframes scaledShake{0%{transform:scale(1) translateX(0);box-shadow:0 0 0 transparent}20%{transform:scale(1.10) translateX(-12px);box-shadow:0 0 10px red}40%{transform:scale(1.10) translateX(12px);box-shadow:0 0 12px red}60%{transform:scale(1.10) translateX(-8px);box-shadow:0 0 10px red}80%{transform:scale(1.10) translateX(8px);box-shadow:0 0 12px red}100%{transform:scale(1) translateX(0);box-shadow:none}}@keyframes horizontalShake{0%{transform:scale(1) translateX(0);background-color:transparent}20%{transform:translateX(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateX(20px);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateX(-10px);background-color:rgba(255, 0, 0, 0.3)}80%{transform:translateX(10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translateX(0);background-color:transparent}}@keyframes verticalShake{0%{transform:translateY(0);background-color:transparent}20%{transform:translateY(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateY(20px);background-color:rgba(255, 0, 0, 0.2)}80%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.1)}100%{transform:translateY(0);background-color:transparent}}@keyframes diagonalShake{0%{transform:translate(0, 0);background-color:transparent}25%{transform:translate(20px, -20px);background-color:rgba(255, 0, 0, 0.2)}50%{transform:translate(-20px, 20px);background-color:rgba(255, 0, 0, 0.3)}75%{transform:translate(10px, -10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translate(0, 0);background-color:transparent}}@keyframes glowPulse{0%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}50%{filter:drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 40px yellow) drop-shadow(0 0 50px orange)}100%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}}@keyframes trace-animation{0%{}100%{width:var(--trace-width, 100px);height:var(--trace-height, 100px)}}`;
12650
12650
 
12651
12651
  const lidoHomeCss = () => `.lido-snackbar{visibility:visible;min-width:250px;background-color:#333;color:#fff;text-align:center;border-radius:2px;padding:16px;position:fixed;z-index:1;bottom:30px;left:50%;transform:translateX(-50%);font-size:17px}.lido-dot-container{display:flex;justify-content:space-between;align-items:center;visibility:hidden;position:absolute;left:50%;padding:0 5px;z-index:1;width:100vw;max-width:100vw;box-sizing:border-box;height:0px}.lido-dot{height:18px;width:18px;margin:0 4px;background-color:#bbb;border-radius:50%;display:inline-block;transition:background-color 0.3s;cursor:pointer;z-index:1}.lido-btn-dot-container{flex-shrink:1;flex-grow:1;display:flex;justify-content:center;align-items:center;text-align:center;z-index:1;min-width:0;height:0px}.lido-dot.completed{background-color:grey}.lido-dot.current{background-color:green}.lido-dot:not(.completed):not(.current){background-color:#bbb}#lido-arrow-left,#lido-arrow-right{width:88px;height:88px;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:1000;box-shadow:0px 8px 0px 0px #8b310f;background-color:#f34d08;cursor:pointer;visibility:hidden;flex-shrink:0}#lido-arrow-left:active,#lido-arrow-right:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px}.navbar{display:flex;justify-content:center}.lido-exit-button,#main-audio{width:80px;height:80px;z-index:1000;cursor:pointer;background-color:white;display:flex;align-items:center;justify-content:center;border:4px solid #f34d08;border-radius:16px;box-shadow:0px 8px #f34d08;flex-shrink:0;}#main-audio:active,.popup-button:active,.lido-exit-button:active{margin-bottom:-8px;box-shadow:0px 0px 0px 0px !important}.lido-alert-popup{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.5);display:flex;align-items:center;justify-content:center;z-index:1000}@media (max-width: 768px){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0 8px}.lido-exit-button,#main-audio{width:65px;height:65px;margin:0 8px}.lido-dot{height:16px;width:16px;margin:0 2.5px}}@media (max-width: 480px){#lido-arrow-left,#lido-arrow-right{width:74px;height:74px;margin:0px 5px}.lido-exit-button,#main-audio{width:65px;height:65px;margin:0px 5px}.lido-dot{height:15px;width:15px;margin:0 1.5px}.lido-dot-container{padding:0 3px}}@media (max-width: 375px){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0px 3px}.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 3px}.lido-dot{height:14px;width:14px;margin:0 1px}.lido-dot-container{padding:0 2px}}@media (max-width: 320px){#lido-arrow-left,#lido-arrow-right,.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 2px}.lido-dot{height:12px;width:12px;margin:0 0.5px}.lido-dot-container{padding:0 2px}}@media (max-width: 900px) and (orientation: landscape){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0px 5px}.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 5px}.lido-dot{height:14px;width:14px;margin:0 1px}.lido-dot-container{padding:0 5px}}.popup-exit-text{white-space:nowrap;font-size:22px;font-weight:600;margin-top:-8%}.lido-alert-parent{z-index:10000 !important;position:absolute;top:0;left:0}.popup-button{width:80px;height:80px;z-index:1000;cursor:pointer;display:flex;align-items:center;justify-content:center;border:4px solid #F34D08;border-radius:16px;box-shadow:0 8px 0 #F34D08}.nav-for-lanai{position:absolute;top:0%;left:0%;max-width:none;width:100%;height:auto;visibility:visible}`;
12652
12652
 
@@ -12952,7 +12952,7 @@ const LidoHome = class {
12952
12952
  }
12953
12953
  // Pure-JS fallback (no wasm asset required)
12954
12954
  try {
12955
- const brotliDecodeModule = await import('./decode-BgBfbPZu.js').then(function (n) { return n.d; });
12955
+ const brotliDecodeModule = await import('./decode-B_VrYFdJ.js').then(function (n) { return n.d; });
12956
12956
  const brotliDecompressBuffer = brotliDecodeModule.BrotliDecompressBuffer || ((_a = brotliDecodeModule.default) === null || _a === void 0 ? void 0 : _a.BrotliDecompressBuffer);
12957
12957
  if (typeof brotliDecompressBuffer !== 'function') {
12958
12958
  throw new Error('BrotliDecompressBuffer function not found in brotli/dec/decode');
@@ -16687,10 +16687,10 @@ const LidoKeyboard = class {
16687
16687
  const keysArray = this.keys.split(',').map(k => k.trim());
16688
16688
  const container = document.getElementById(LidoContainer$1);
16689
16689
  const showCheck = container.getAttribute('show-check') === 'true';
16690
- return (h(Host, { key: '4de3b75fa2905744ad610d147d9b4fe9912dd732', class: "lido-keyboard", style: { width: this.style.width, height: this.style.height, position: 'relative', margin: this.style.margin, zIndex: this.z } }, this.keyboardInput && (h("div", { key: '7b5d293c52747700cde9c1069cfbbdae065e64f9', class: "input-area" }, h("input", { key: '03a91cd87e6bb4f09bf698087258426dd9232f67', type: "text", value: this.inputString, class: "input-area", readonly: true }), h("lido-text", { key: 'd30e033a055df52b30b2f2775c2b3410ee37df63', visible: showCheck ? 'true' : 'false', string: "<<", "bg-color": "black", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "100px", height: "70px", type: "click", onClick: () => {
16690
+ return (h(Host, { key: '5773e8189c512e90d63217048f9372d00e4a7fe9', class: "lido-keyboard", style: { width: this.style.width, height: this.style.height, position: 'relative', margin: this.style.margin, zIndex: this.z } }, this.keyboardInput && (h("div", { key: '136fa3a2b0459a9a63e14ac8e212997e4bd32224', class: "input-area" }, h("input", { key: 'd9a1dc064d615b40b1e0e2b008dbf79ec70eb19b', type: "text", value: this.inputString, class: "input-area", readonly: true }), h("lido-text", { key: 'e6c53ea590c607b355d1f57d445d078c0bcf9085', visible: showCheck ? 'true' : 'false', string: "<<", "bg-color": "black", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "100px", height: "70px", type: "click", onClick: () => {
16691
16691
  this.inputString = this.inputString.slice(0, -1);
16692
16692
  this.inputValidation(event);
16693
- } }), h("lido-text", { key: '70d78aed7dedbe7d03a05c13c4c320029280bb03', visible: showCheck ? 'true' : 'false', id: "lido-checkButton", string: "Enter", "bg-color": "green", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "150px", height: "70px", type: "click" }))), this.letterLength && (h("lido-text", { key: '19306cd12bd98dc8dc7b54b20bad3f2f0318116f', visible: "true", string: `${this.numberOfClick}/${this.letterLength}`, "font-size": "60px", "font-color": "white", onEntry: "this.position='absolute'; this.right='0'; this.fontWeight='800';", x: "unset" })), h("div", { key: '826900d6ba26175eb45d2e7e4c02fccce2004db3', class: "keyboard-wrapper", style: {
16693
+ } }), h("lido-text", { key: '815877bd027aa3540871c511df5937cfb0b6f149', visible: showCheck ? 'true' : 'false', id: "lido-checkButton", string: "Enter", "bg-color": "green", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "150px", height: "70px", type: "click" }))), this.letterLength && (h("lido-text", { key: '73c08eac4f9c154f47371e812fb337de26b10691', visible: "true", string: `${this.numberOfClick}/${this.letterLength}`, "font-size": "60px", "font-color": "white", onEntry: "this.position='absolute'; this.right='0'; this.fontWeight='800';", x: "unset" })), h("div", { key: '1e7855724f15fdb432320f6186fc356518a29224', class: "keyboard-wrapper", style: {
16694
16694
  display: 'flex',
16695
16695
  flexWrap: 'wrap',
16696
16696
  justifyContent: 'center',
@@ -16925,7 +16925,7 @@ const LidoMathMatrix = class {
16925
16925
  render() {
16926
16926
  let slotNumber = 1;
16927
16927
  const slotData = this.getSlotData();
16928
- return (h(Host, { key: '8a17727416da00fda95c401c3a005cdea1e732d0', class: "math-matrix", style: {
16928
+ return (h(Host, { key: '2ef30835855363ba9fc7932122d1d505a451e055', class: "math-matrix", style: {
16929
16929
  height: this.style.height,
16930
16930
  width: this.style.width,
16931
16931
  z: this.style.z,
@@ -17072,7 +17072,7 @@ const LidoPos = class {
17072
17072
  };
17073
17073
  }
17074
17074
  render() {
17075
- return (h(Host, { key: 'cfd38900b31991e89c21a099fc4f91f77663ae94', id: this.id, class: "lido-pos", type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, value: this.value, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '73f7bfe2d8214693d6f40a4dab6d735906ad4eaa' })));
17075
+ return (h(Host, { key: '4c417a789cc167f7d701b8469890631f9871fe6f', id: this.id, class: "lido-pos", type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, value: this.value, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: 'd5026f61804b53e63aa1cc6c15b3de91543cf426' })));
17076
17076
  }
17077
17077
  get el() { return getElement(this); }
17078
17078
  };
@@ -17216,7 +17216,7 @@ const LidoRandom = class {
17216
17216
  backgroundColor: this.bgColor,
17217
17217
  margin: this.margin,
17218
17218
  };
17219
- return (h(Host, { key: 'a4cec45d407b57833a4296a20230717534adf39b', class: "lido-random", type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, minDrops: this.minDrops, maxDrops: this.maxDrops, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: 'b80726b68b7f1c009f35352b9d05cd573159f87b' })));
17219
+ return (h(Host, { key: 'e0ed354e54ea3c5112d0e068b2a94356ef437874', class: "lido-random", type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, minDrops: this.minDrops, maxDrops: this.maxDrops, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: 'ed0386cda3ba55d89fb08607775a49a4180f08b3' })));
17220
17220
  }
17221
17221
  get el() { return getElement(this); }
17222
17222
  };
@@ -17387,13 +17387,13 @@ const LidoRow = class {
17387
17387
  };
17388
17388
  }
17389
17389
  render() {
17390
- return (h(Host, { key: 'c69aea0b1b11d9aec167d1a4376f68073f91ca81', class: "lido-row", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, h("slot", { key: '8756ee0447057cddb949e23decbde5fe4d1d25c8' })));
17390
+ return (h(Host, { key: '30b1857fc65b826cfad9c08f71ea1c2f7cc966e4', class: "lido-row", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, h("slot", { key: '747f20051ad1fd1dd075ba457b612e9d8ef7d27d' })));
17391
17391
  }
17392
17392
  get el() { return getElement(this); }
17393
17393
  };
17394
17394
  LidoRow.style = lidoRowCss();
17395
17395
 
17396
- const lidoShapeCss = () => `.lido-shape{position:absolute;top:var(--y);left:var(--x);display:var(--display);z-index:var(--z);justify-content:center;align-items:center}.lido-rectangle{border-radius:0}.lido-circle{width:var(--width);height:var(--width);border-radius:50%;background-color:var(--bgColor)}.lido-ellipse{width:var(--width);height:var(--height);border-radius:50%;background-color:var(--bgColor)}.lido-triangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(50% 0%, 100% 100%, 0% 100%)}.lido-rightTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(100% 0%, 100% 100%, 0% 100%)}.lido-leftTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--triangleBgColor);clip-path:polygon(0% 0%, 100% 100%, 0% 100%)}.lido-parallelogram{width:var(--paralleWidth);height:var(--paralleHeight);transform:skew(20deg)}.lido-trapezium{width:var(--trapeziumWidth);height:var(--trapeziumHeight);background-color:var(--bgColor);clip-path:polygon( 20% 0%, 80% 0%, 100% 100%, 0% 100% )}.lido-hexagon{width:var(--hexagonWidth);height:var(--hexagonHeight);background-color:var(--bgColor);clip-path:polygon( 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50% )}.lido-cone{width:var(--coneWidth);height:var(--coneHeight);background-color:var(--bgColor);clip-path:polygon( 15% 10%, 25% 4%, 35% 1%, 50% 0%, 65% 1%, 75% 4%, 85% 10%, 50% 100% )}.lido-star{width:var(--starWidth);height:var(--starHeight);background-color:var(--starBgColor);clip-path:polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)}.lido-pentagon{width:var(--pentagonWidth);height:var(--pentagonHeight);background-color:var(--pentagonBgColor);clip-path:polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)}.lido-heptagon{width:var(--heptagonWidth);height:var(--heptagonHeight);background-color:var(--heptagonBgColor);clip-path:polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)}.lido-octagon{width:var(--octagonWidth);height:var(--octagonHeight);background-color:var(--octagonBgColor);clip-path:polygon(25% 0%, 75% 0%, 100% 25%, 100% 75%, 75% 100%, 25% 100%, 0% 75%, 0% 25%)}.lido-rhombus{width:var(--rhombusWidth);height:var(--rhombusHeight);background-color:var(--rhombusBgColor);clip-path:polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)}.lido-heart{height:var(--heartHeight);width:var(--heartWidth);border-image:radial-gradient(var(--heartBgColor) 69%, #0000 70%) 84.5%/50%;clip-path:polygon(-41% 0, 50% 91%, 141% 0)}.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(-20deg) rotateY(45deg)}.face{position:absolute;width:var(--face-width,150px);height:var(--face-width,150px);background:var(--face-bg-color,150px);box-shadow:inset -20px -20px 40px rgba(0,0,0,0.3)}.front{transform:rotateY( 0deg) translateZ(var(--face-translate, 75px))}.back{transform:rotateY(180deg) translateZ(var(--face-translate, 75px))}.right{transform:rotateY( 90deg) translateZ(var(--face-translate, 75px))}.left{transform:rotateY(-90deg) translateZ(var(--face-translate, 75px))}.top{transform:rotateX( 90deg) translateZ(var(--face-translate, 75px))}.bottom{transform:rotateX(-90deg) translateZ(var(--face-translate, 75px))}.lido-cylinder{width:var(--width);height:var(--height);border-radius:100% / 80px;background:radial-gradient(50% 40px at 50% 40px, #0003 99.99%, #0000 0), radial-gradient(50% 40px at 50% calc(100% - 40px), #fff3 99.99%, #0000 0), red}.lido-sphere{position:relative;width:var(--width);height:var(--width);border-radius:50%;background:radial-gradient(circle at 30% 18%, #22d4ff 0%, #18c2f4 9%, rgba(24, 194, 244, 0.2) 18%, transparent 30%), radial-gradient(circle at 36% 26%, #0f8fff 0%, #0b67e6 30%, #083fbe 62%, #120084 100%);box-shadow:inset -22px -26px 40px rgba(5, 0, 70, 0.38), inset 14px 14px 24px rgba(255, 255, 255, 0.05), 0 4px 2px rgba(0, 0, 0, 0.78);overflow:visible}.lido-sphere::after{content:'';position:absolute;top:50%;left:50%;width:100%;height:16%;border-radius:50%;border-top:2px dashed rgba(0, 0, 0, 0.65);border-bottom:3px solid rgba(0, 0, 0, 0.85);box-sizing:border-box;transform:translate(-50%, -50%);pointer-events:none}`;
17396
+ const lidoShapeCss = () => `.lido-shape{position:absolute;top:var(--y);left:var(--x);display:var(--display);z-index:var(--z);justify-content:center;align-items:center}.lido-rectangle{border-radius:0}.lido-circle{width:var(--width);height:var(--width);border-radius:50%;background-color:var(--bgColor)}.lido-ellipse{width:var(--width);height:var(--height);border-radius:50%;background-color:var(--bgColor)}.lido-triangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(50% 0%, 100% 100%, 0% 100%)}.lido-rightTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(100% 0%, 100% 100%, 0% 100%)}.lido-leftTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--triangleBgColor);clip-path:polygon(0% 0%, 100% 100%, 0% 100%)}.lido-parallelogram{width:var(--paralleWidth);height:var(--paralleHeight);transform:skew(20deg)}.lido-trapezium{width:var(--trapeziumWidth);height:var(--trapeziumHeight);background-color:var(--bgColor);clip-path:polygon( 20% 0%, 80% 0%, 100% 100%, 0% 100% )}.lido-hexagon{width:var(--hexagonWidth);height:var(--hexagonHeight);background-color:var(--bgColor);clip-path:polygon( 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50% )}.lido-cone{width:var(--coneWidth);height:var(--coneHeight);background-color:var(--bgColor);clip-path:polygon( 15% 10%, 25% 4%, 35% 1%, 50% 0%, 65% 1%, 75% 4%, 85% 10%, 50% 100% )}.lido-star{width:var(--starWidth);height:var(--starHeight);background-color:var(--starBgColor);clip-path:polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)}.lido-pentagon{width:var(--pentagonWidth);height:var(--pentagonHeight);background-color:var(--pentagonBgColor);clip-path:polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)}.lido-heptagon{width:var(--heptagonWidth);height:var(--heptagonHeight);background-color:var(--heptagonBgColor);clip-path:polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)}.lido-octagon{width:var(--octagonWidth);height:var(--octagonHeight);background-color:var(--octagonBgColor);clip-path:polygon(25% 0%, 75% 0%, 100% 25%, 100% 75%, 75% 100%, 25% 100%, 0% 75%, 0% 25%)}.lido-rhombus{width:var(--rhombusWidth);height:var(--rhombusHeight);background-color:var(--rhombusBgColor);clip-path:polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)}.lido-heart{height:var(--heartHeight);width:var(--heartWidth);border-image:radial-gradient(var(--heartBgColor) 69%, #0000 70%) 84.5%/50%;clip-path:polygon(-41% 0, 50% 91%, 141% 0)}.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(-20deg) rotateY(45deg)}.face{position:absolute;width:var(--face-width,150px);height:var(--face-width,150px);background:var(--face-bg-color,150px);box-shadow:inset -20px -20px 40px rgba(0,0,0,0.3)}.front{transform:rotateY( 0deg) translateZ(var(--face-translate, 75px))}.back{transform:rotateY(180deg) translateZ(var(--face-translate, 75px))}.right{transform:rotateY( 90deg) translateZ(var(--face-translate, 75px))}.left{transform:rotateY(-90deg) translateZ(var(--face-translate, 75px))}.top{transform:rotateX( 90deg) translateZ(var(--face-translate, 75px))}.bottom{transform:rotateX(-90deg) translateZ(var(--face-translate, 75px))}.lido-cylinder{width:var(--width);height:var(--height);border-radius:100% / 80px;background:radial-gradient(50% 40px at 50% 40px, #0003 99.99%, #0000 0), radial-gradient(50% 40px at 50% calc(100% - 40px), #fff3 99.99%, #0000 0), red}.lido-sphere{position:relative;width:var(--width);height:var(--width);border-radius:50%;background:radial-gradient(circle at 30% 18%, #22d4ff 0%, #18c2f4 9%, rgba(24, 194, 244, 0.2) 18%, transparent 30%), radial-gradient(circle at 36% 26%, #0f8fff 0%, #0b67e6 30%, #083fbe 62%, #120084 100%);box-shadow:inset -22px -26px 40px rgba(5, 0, 70, 0.38), inset 14px 14px 24px rgba(255, 255, 255, 0.05), 0 4px 2px rgba(0, 0, 0, 0.78);overflow:visible}.lido-sphere::after{content:'';position:absolute;top:50%;left:50%;width:100%;height:16%;border-radius:50%;border-top:2px dashed rgba(0, 0, 0, 0.65);border-bottom:3px solid rgba(0, 0, 0, 0.85);box-sizing:border-box;transform:translate(-50%, -50%);pointer-events:none}`;
17397
17397
 
17398
17398
  const LidoShape = class {
17399
17399
  constructor(hostRef) {
@@ -17545,8 +17545,8 @@ const LidoShape = class {
17545
17545
  backgroundColor: this.shapeType !== 'polygon' ? this.bgColor : 'transparent', // Apply background only if not a polygon
17546
17546
  margin: this.margin,
17547
17547
  };
17548
- return (h(Host, { key: 'b252b5dbf4624939ef2917a385fc95061695bc64', class: `lido-shape ${this.shapeType}`, value: this.value, type: this.type, "tab-index": this.tabIndex, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, this.shapeType === "lido-cube" &&
17549
- h("div", { key: '573e3aaee8ada8da25b434058962f034ee7bcd2a', class: "cube" }, h("div", { key: '4d5bb38b531a0a4cc6ffa9df25312b41718c81d2', class: "face top" }), h("div", { key: '01f93868cbc55844969e50256f505391323c4cbe', class: "face bottom" }), h("div", { key: '44ab31e212d6dd0e321a30154e0bd6cba61f5367', class: "face left" }), h("div", { key: '28b970d25d8ce54c4f96d418b05c559964a1e882', class: "face right" }), h("div", { key: '6da6d820eaa308e2401e3063de298be165428ff4', class: "face front" }), h("div", { key: 'caaee0b7580ad10f925a610650098cbe7abc31a4', class: "face back" }))));
17548
+ return (h(Host, { key: '326d0e58f7d2bd177ae04c4ac8eac74b277a0392', class: `lido-shape ${this.shapeType}`, value: this.value, type: this.type, "tab-index": this.tabIndex, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, this.shapeType === "lido-cube" &&
17549
+ h("div", { key: 'f5f762fa74733659b970d5c476da5da10cc9f4c5', class: "cube" }, h("div", { key: '5324a04af38cfbc5eca4c5aa32df51a3e0e5443c', class: "face top" }), h("div", { key: 'a265a3ebfe41e0da844ac934c6af1045cde6cfad', class: "face bottom" }), h("div", { key: '58ce610d7fb003313c3e8ce3be019142086919e5', class: "face left" }), h("div", { key: '9c8ee3317a0331f9c3eeb3527963999765c10144', class: "face right" }), h("div", { key: 'eb674c98aa795f89094b1d510b59f96f742d7c6a', class: "face front" }), h("div", { key: '918b2aa2d5babbb700838d08dbdad100fc846f54', class: "face back" }))));
17550
17550
  }
17551
17551
  get el() { return getElement(this); }
17552
17552
  };
@@ -17641,13 +17641,13 @@ const LidoSlideFill = class {
17641
17641
  const id = pathIndex === 1 ? 'glassPath' : pathIndex === 2 ? 'rulerPath' : `path${pathIndex}`;
17642
17642
  return `<path id="${id}"${attrs}>`;
17643
17643
  });
17644
- const clipPathDef = `
17645
- <clipPath id="clipGlass">
17646
- <use xlink:href="#glassPath" />
17647
- </clipPath>
17644
+ const clipPathDef = `
17645
+ <clipPath id="clipGlass">
17646
+ <use xlink:href="#glassPath" />
17647
+ </clipPath>
17648
17648
  `;
17649
- svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
17650
- ${clipPathDef}
17649
+ svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
17650
+ ${clipPathDef}
17651
17651
  `);
17652
17652
  svgText = svgText.replace(/<rect([^>]*)\/?>/, `<rect id="fillArea" $1 clip-path="url(#clipGlass)" />`);
17653
17653
  this.svgContent = svgText;
@@ -17772,7 +17772,7 @@ const LidoSlideFill = class {
17772
17772
  }
17773
17773
  }
17774
17774
  render() {
17775
- return (h(Host, { key: 'a19d35ba055a5ed9ab38adb02f37c9cb634c272d', id: this.id, class: "lido-slide-fill", src: this.src, fill: this.fill, fillDirection: this.fillDirection, slider: this.slider, style: this.style, min: this.min, max: this.max, division: this.division, numberType: this.numberType, onEntry: this.onEntry, type: this.type, "disable-speak": this.disableSpeak }, h("div", { key: '987f42b3c213f570714b2ddf600243e83c3b12ad', innerHTML: this.svgContent, class: "lido-svg-element" })));
17775
+ return (h(Host, { key: 'ba987e7ba4a36b96763c6e434be58f5e64f59d88', id: this.id, class: "lido-slide-fill", src: this.src, fill: this.fill, fillDirection: this.fillDirection, slider: this.slider, style: this.style, min: this.min, max: this.max, division: this.division, numberType: this.numberType, onEntry: this.onEntry, type: this.type, "disable-speak": this.disableSpeak }, h("div", { key: '904d482335451cf420b56a24f0ca3a279db4abc8', innerHTML: this.svgContent, class: "lido-svg-element" })));
17776
17776
  }
17777
17777
  get el() { return getElement(this); }
17778
17778
  static get watchers() { return {
@@ -18061,7 +18061,7 @@ const LidoText = class {
18061
18061
  }
18062
18062
  render() {
18063
18063
  const displayText = instance.t(this.string).replace(/_phonics?/gi, '');
18064
- return (h(Host, { key: '44bb34e461d90e1832066986454c5b0f8c392617', class: "lido-text", value: this.value, "required-drops": this.requiredDrops, type: this.type, "tab-index": this.tabIndex, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, minDrops: this.minDrops, maxDrops: this.maxDrops, id: this.id, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, move: this.move, "span-type": this.spanType, "disable-speak": `${this.disableSpeak}` }, this.spanType !== '' ? h("div", { class: "lido-text-content" }, " ", displayText) : displayText));
18064
+ return (h(Host, { key: '14a67034db7bf3d268e999404425879c95964b82', class: "lido-text", value: this.value, "required-drops": this.requiredDrops, type: this.type, "tab-index": this.tabIndex, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, minDrops: this.minDrops, maxDrops: this.maxDrops, id: this.id, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, move: this.move, "span-type": this.spanType, "disable-speak": `${this.disableSpeak}` }, this.spanType !== '' ? h("div", { class: "lido-text-content" }, " ", displayText) : displayText));
18065
18065
  }
18066
18066
  get el() { return getElement(this); }
18067
18067
  };
@@ -18179,6 +18179,7 @@ const LidoTrace = class {
18179
18179
  this.fileIndex = -1;
18180
18180
  this.isDragging = false;
18181
18181
  this.activePointerId = null;
18182
+ this.activeTraceState = null;
18182
18183
  // Counter for throttling free trace updates
18183
18184
  // This is only an internal counter. Keeping it out of @State prevents a
18184
18185
  // Stencil component re-render while the user is dragging.
@@ -18193,6 +18194,7 @@ const LidoTrace = class {
18193
18194
  // Handle the pointermove event with optimizations
18194
18195
  // Update the path trace as the red circle moves
18195
18196
  async initializeSVG() {
18197
+ this.cleanupTraceState(this.activeTraceState);
18196
18198
  let state = {
18197
18199
  fileIndex: -1,
18198
18200
  currentPathIndex: 0,
@@ -18215,7 +18217,10 @@ const LidoTrace = class {
18215
18217
  dragOffset: null,
18216
18218
  isCompletingPath: false,
18217
18219
  touchProximityThreshold: null,
18220
+ pointerTransform: null,
18221
+ pointerRect: null,
18218
18222
  };
18223
+ this.activeTraceState = state;
18219
18224
  const url = this.svgUrls[this.currentSvgIndex];
18220
18225
  if (!url || url.trim() === '') {
18221
18226
  console.error('No SVG URL provided or index out of bounds.');
@@ -18242,6 +18247,27 @@ const LidoTrace = class {
18242
18247
  disconnectedCallback() {
18243
18248
  window.removeEventListener('resize', this.handleWindowResize);
18244
18249
  window.removeEventListener('load', this.handleWindowLoad);
18250
+ this.cleanupTraceState(this.activeTraceState);
18251
+ this.activeTraceState = null;
18252
+ }
18253
+ /** Release listeners, pending frames, timers, and cached SVG geometry. */
18254
+ cleanupTraceState(state) {
18255
+ var _a;
18256
+ if (!state)
18257
+ return;
18258
+ (_a = state.cleanup) === null || _a === void 0 ? void 0 : _a.call(state);
18259
+ if (state.rafId)
18260
+ cancelAnimationFrame(state.rafId);
18261
+ state.rafId = null;
18262
+ state.pointerMoveEvent = null;
18263
+ state.pathSamples = [];
18264
+ state.paths = [];
18265
+ state.svg = null;
18266
+ if (this.idleTimer !== null) {
18267
+ clearTimeout(this.idleTimer);
18268
+ this.idleTimer = null;
18269
+ }
18270
+ this.hideFingerHint();
18245
18271
  }
18246
18272
  /** ───────────────────────────────────────────────────────────
18247
18273
  * Idle‑timer helpers
@@ -18440,6 +18466,18 @@ const LidoTrace = class {
18440
18466
  path._lidoTraceStart = path.getPointAtLength(0);
18441
18467
  path._lidoTraceEnd = path.getPointAtLength(pathLength);
18442
18468
  path._lidoTraceIsClosed = this.getDistanceSquared(path._lidoTraceStart, path._lidoTraceEnd) < 200;
18469
+ // Index the path once. Repeated getPointAtLength calls are expensive on
18470
+ // low-end SVG implementations and used to dominate every pointer frame.
18471
+ const sampleCount = 192;
18472
+ const sampleStep = pathLength / sampleCount || 1;
18473
+ const samples = [];
18474
+ for (let sampleIndex = 0; sampleIndex <= sampleCount; sampleIndex++) {
18475
+ const length = Math.min(pathLength, sampleIndex * sampleStep);
18476
+ const point = path.getPointAtLength(length);
18477
+ samples.push({ x: point.x, y: point.y, length });
18478
+ }
18479
+ path._lidoTraceSamples = samples;
18480
+ path._lidoTraceSampleStep = sampleStep;
18443
18481
  // /** give every path an id so <mpath> can follow it */
18444
18482
  path.setAttribute('id', 'lido-path-' + index); // ← NEW
18445
18483
  // Create green path for tracing effect
@@ -18474,7 +18512,7 @@ const LidoTrace = class {
18474
18512
  state.flowMarkers = this.createFlowMarkersForPath(path);
18475
18513
  }
18476
18514
  });
18477
- state.totalPathLength = state.paths[state.currentPathIndex].getTotalLength();
18515
+ state.totalPathLength = state.paths[state.currentPathIndex]._lidoTraceLength;
18478
18516
  }
18479
18517
  // Set up the draggable circle at the start of the first path
18480
18518
  setupDraggableCircle(state) {
@@ -18499,10 +18537,14 @@ const LidoTrace = class {
18499
18537
  return;
18500
18538
  state.svg.style.touchAction = 'none';
18501
18539
  state.circle.style.touchAction = 'none';
18502
- // Handle pointerdown on the circle to start dragging
18503
- state.circle.addEventListener('pointerdown', (evt) => {
18540
+ // Keep named handlers so the detached SVG can be fully released when the
18541
+ // next trace starts. Anonymous handlers here previously retained every
18542
+ // completed trace for the lifetime of the page.
18543
+ const onPointerDown = (evt) => {
18504
18544
  evt.preventDefault(); // Prevent default actions like text selection
18505
- const pointerPos = this.getPointerPosition(evt, state.svg);
18545
+ state.pointerRect = state.svg.getBoundingClientRect();
18546
+ state.pointerTransform = this.getSvgViewBoxTransform(state.svg, state.pointerRect);
18547
+ const pointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
18506
18548
  const circlePos = {
18507
18549
  x: parseFloat(state.circle.getAttribute('cx')),
18508
18550
  y: parseFloat(state.circle.getAttribute('cy')),
@@ -18527,9 +18569,9 @@ const LidoTrace = class {
18527
18569
  }
18528
18570
  this.hideFingerHint(); // ← NEW
18529
18571
  this.resetIdleTimer(state); // ← NEW
18530
- }, { passive: false });
18572
+ };
18531
18573
  // Handle pointermove on the SVG to update the circle position
18532
- (_a = state.svg) === null || _a === void 0 ? void 0 : _a.addEventListener('pointermove', (evt) => {
18574
+ const onPointerMove = (evt) => {
18533
18575
  if (!state.isDragging || evt.pointerId !== state.activePointerId)
18534
18576
  return;
18535
18577
  evt.preventDefault();
@@ -18540,7 +18582,7 @@ const LidoTrace = class {
18540
18582
  state.rafId = null;
18541
18583
  });
18542
18584
  }
18543
- });
18585
+ };
18544
18586
  // Handle pointerup and pointercancel on the SVG to stop dragging
18545
18587
  const endDrag = (evt) => {
18546
18588
  if (evt.pointerId === state.activePointerId) {
@@ -18552,12 +18594,25 @@ const LidoTrace = class {
18552
18594
  this.resetIdleTimer(state); // ← NEW
18553
18595
  }
18554
18596
  };
18555
- (_b = state.svg) === null || _b === void 0 ? void 0 : _b.addEventListener('pointerup', endDrag);
18556
- (_c = state.svg) === null || _c === void 0 ? void 0 : _c.addEventListener('pointercancel', endDrag);
18597
+ (_a = state.svg) === null || _a === void 0 ? void 0 : _a.addEventListener('pointerup', endDrag);
18598
+ (_b = state.svg) === null || _b === void 0 ? void 0 : _b.addEventListener('pointercancel', endDrag);
18557
18599
  // Optional: Prevent context menu on long press
18558
- (_d = state.svg) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', (evt) => {
18600
+ const onContextMenu = (evt) => {
18559
18601
  evt.preventDefault();
18560
- });
18602
+ };
18603
+ state.circle.addEventListener('pointerdown', onPointerDown, { passive: false });
18604
+ (_c = state.svg) === null || _c === void 0 ? void 0 : _c.addEventListener('pointermove', onPointerMove);
18605
+ (_d = state.svg) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', onContextMenu);
18606
+ state.cleanup = () => {
18607
+ var _a, _b, _c, _d, _e;
18608
+ (_a = state.circle) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', onPointerDown);
18609
+ (_b = state.svg) === null || _b === void 0 ? void 0 : _b.removeEventListener('pointermove', onPointerMove);
18610
+ (_c = state.svg) === null || _c === void 0 ? void 0 : _c.removeEventListener('pointerup', endDrag);
18611
+ (_d = state.svg) === null || _d === void 0 ? void 0 : _d.removeEventListener('pointercancel', endDrag);
18612
+ (_e = state.svg) === null || _e === void 0 ? void 0 : _e.removeEventListener('contextmenu', onContextMenu);
18613
+ state.isDragging = false;
18614
+ state.activePointerId = null;
18615
+ };
18561
18616
  }
18562
18617
  // Modified handlePointerMove function
18563
18618
  async handlePointerMove(state) {
@@ -18570,7 +18625,7 @@ const LidoTrace = class {
18570
18625
  return;
18571
18626
  this.hideFingerHint(); // user is active, remove hint
18572
18627
  const evt = state.pointerMoveEvent;
18573
- const rawPointerPos = this.getPointerPosition(evt, state.svg);
18628
+ const rawPointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
18574
18629
  const pointerPos = state.dragOffset
18575
18630
  ? {
18576
18631
  x: rawPointerPos.x - state.dragOffset.x,
@@ -18834,9 +18889,9 @@ const LidoTrace = class {
18834
18889
  triggerNextContainer();
18835
18890
  }
18836
18891
  // Get the pointer position relative to the SVG
18837
- getPointerPosition(evt, svg) {
18892
+ getPointerPosition(evt, svg, cachedTransform, cachedRect) {
18838
18893
  var _a;
18839
- const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg);
18894
+ const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect);
18840
18895
  if (viewBoxPoint)
18841
18896
  return viewBoxPoint;
18842
18897
  const svgPoint = svg.createSVGPoint();
@@ -18845,13 +18900,13 @@ const LidoTrace = class {
18845
18900
  const ctm = (_a = svg.getScreenCTM()) === null || _a === void 0 ? void 0 : _a.inverse();
18846
18901
  return ctm ? svgPoint.matrixTransform(ctm) : { x: evt.clientX, y: evt.clientY };
18847
18902
  }
18848
- getPointerPositionFromViewBox(evt, svg) {
18849
- const rect = svg.getBoundingClientRect();
18903
+ getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect) {
18904
+ const rect = cachedRect || svg.getBoundingClientRect();
18850
18905
  const viewBox = svg.viewBox.baseVal;
18851
18906
  if (!rect.width || !rect.height || !viewBox.width || !viewBox.height) {
18852
18907
  return null;
18853
18908
  }
18854
- const { offsetX, offsetY, scaleX, scaleY } = this.getSvgViewBoxTransform(svg, rect);
18909
+ const { offsetX, offsetY, scaleX, scaleY } = cachedTransform || this.getSvgViewBoxTransform(svg, rect);
18855
18910
  return {
18856
18911
  x: viewBox.x + (evt.clientX - rect.left - offsetX) / scaleX,
18857
18912
  y: viewBox.y + (evt.clientY - rect.top - offsetY) / scaleY,
@@ -18911,6 +18966,40 @@ const LidoTrace = class {
18911
18966
  getClosestPointOnPath(pathNode, point, lastLength) {
18912
18967
  var _a;
18913
18968
  const pathLength = (_a = pathNode._lidoTraceLength) !== null && _a !== void 0 ? _a : pathNode.getTotalLength();
18969
+ const samples = pathNode._lidoTraceSamples;
18970
+ const sampleStep = pathNode._lidoTraceSampleStep;
18971
+ if ((samples === null || samples === void 0 ? void 0 : samples.length) && sampleStep) {
18972
+ const searchWindow = lastLength === undefined ? pathLength : 150;
18973
+ const searchStart = lastLength === undefined ? 0 : Math.max(0, lastLength - searchWindow);
18974
+ const searchEnd = lastLength === undefined ? pathLength : Math.min(pathLength, lastLength + searchWindow);
18975
+ let nearest = samples[Math.max(0, Math.min(samples.length - 1, Math.round((lastLength || 0) / sampleStep)))];
18976
+ let nearestDistance = Infinity;
18977
+ for (const sample of samples) {
18978
+ if (sample.length < searchStart || sample.length > searchEnd)
18979
+ continue;
18980
+ const distance = this.getDistanceSquared(point, sample);
18981
+ if (distance < nearestDistance) {
18982
+ nearestDistance = distance;
18983
+ nearest = sample;
18984
+ }
18985
+ }
18986
+ // Refine only around the cached winner. This keeps the path accurate
18987
+ // while reducing hot-path geometry calls from roughly 50 to a handful.
18988
+ const refinementStep = 6;
18989
+ const refineStart = Math.max(searchStart, nearest.length - sampleStep);
18990
+ const refineEnd = Math.min(searchEnd, nearest.length + sampleStep);
18991
+ let closestPoint = Object.assign({}, nearest);
18992
+ let minDistanceSquared = nearestDistance;
18993
+ for (let length = refineStart; length <= refineEnd; length += refinementStep) {
18994
+ const candidate = pathNode.getPointAtLength(length);
18995
+ const distance = this.getDistanceSquared(point, candidate);
18996
+ if (distance < minDistanceSquared) {
18997
+ minDistanceSquared = distance;
18998
+ closestPoint = { x: candidate.x, y: candidate.y, length };
18999
+ }
19000
+ }
19001
+ return closestPoint;
19002
+ }
18914
19003
  let closestPoint = { x: 0, y: 0, length: 0 };
18915
19004
  let minDistanceSquared = Infinity;
18916
19005
  const coarseStep = 40;
@@ -19103,7 +19192,7 @@ const LidoTrace = class {
19103
19192
  };
19104
19193
  }
19105
19194
  render() {
19106
- return (h(Host, { key: '4955636a199ba56ca7f6d73144aca42ab4e3f411', class: "lido-trace", id: this.id, audio: this.audio, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, tabindex: this.tabIndex, "disable-speak": this.disableSpeak }, h("div", { key: 'b732946e97fefb0d4cb192e5c9b6863568ff64be', style: this.style, id: "lido-svgContainer" })));
19195
+ return (h(Host, { key: 'f4c270d9319e1115d966a6d9b697a4413ca87885', class: "lido-trace", id: this.id, audio: this.audio, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, tabindex: this.tabIndex, "disable-speak": this.disableSpeak }, h("div", { key: 'efbbaf5c796c9cfe8516fe5d47265e3a01b28a25', style: this.style, id: "lido-svgContainer" })));
19107
19196
  }
19108
19197
  static get assetsDirs() { return ["assets"]; }
19109
19198
  get el() { return getElement(this); }
@@ -19189,7 +19278,7 @@ const LidoWrap = class {
19189
19278
  };
19190
19279
  }
19191
19280
  render() {
19192
- return (h(Host, { key: '58b1e37a1787349d3ccd2bc6952d94a7d945e234', class: "lido-wrap", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, disableSpeak: this.disableSpeak }, h("slot", { key: '44389fcc3d2e86faf291b74bfe50b55d467a7278' })));
19281
+ return (h(Host, { key: '1b5a62590f56ae5623770a4333fe84fdffd5617f', class: "lido-wrap", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, disableSpeak: this.disableSpeak }, h("slot", { key: '081252d2c1074c0e1635b583f697d7d44aec1333' })));
19193
19282
  }
19194
19283
  get el() { return getElement(this); }
19195
19284
  };
@@ -1,8 +1,8 @@
1
- import { p as promiseResolve, g as globalScripts, b as bootstrapLazy } from './index-BeHFCsWf.js';
2
- export { s as setNonce } from './index-BeHFCsWf.js';
1
+ import { p as promiseResolve, g as globalScripts, b as bootstrapLazy } from './index-mMpK8062.js';
2
+ export { s as setNonce } from './index-mMpK8062.js';
3
3
 
4
4
  /*
5
- Stencil Client Patch Browser v4.44.2 | MIT Licensed | https://stenciljs.com
5
+ Stencil Client Patch Browser v4.43.5 | MIT Licensed | https://stenciljs.com
6
6
  */
7
7
 
8
8
  var patchBrowser = () => {
@@ -1,5 +1,5 @@
1
- import { g as globalScripts, b as bootstrapLazy } from './index-BeHFCsWf.js';
2
- export { s as setNonce } from './index-BeHFCsWf.js';
1
+ import { g as globalScripts, b as bootstrapLazy } from './index-mMpK8062.js';
2
+ export { s as setNonce } from './index-mMpK8062.js';
3
3
 
4
4
  const defineCustomElements = async (win, options) => {
5
5
  if (typeof window === 'undefined') return undefined;
@@ -1,9 +1,9 @@
1
- <svg width="120" height="60" viewBox="0 0 120 60" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <defs>
3
- <radialGradient id="shadowGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(60 34) rotate(90) scale(34 46)">
4
- <stop offset="0" stop-color="#000000" stop-opacity="0.35"/>
5
- <stop offset="1" stop-color="#000000" stop-opacity="0"/>
6
- </radialGradient>
7
- </defs>
8
- <ellipse cx="60" cy="34" rx="46" ry="14" fill="url(#shadowGradient)"/>
9
- </svg>
1
+ <svg width="120" height="60" viewBox="0 0 120 60" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <radialGradient id="shadowGradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(60 34) rotate(90) scale(34 46)">
4
+ <stop offset="0" stop-color="#000000" stop-opacity="0.35"/>
5
+ <stop offset="1" stop-color="#000000" stop-opacity="0"/>
6
+ </radialGradient>
7
+ </defs>
8
+ <ellipse cx="60" cy="34" rx="46" ry="14" fill="url(#shadowGradient)"/>
9
+ </svg>