lido-player 0.0.2-beta-19-dev → 0.0.2-beta-22-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 (237) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/{decode-Bny56MQ9.js → decode-Cr5DANqc.js} +1 -1
  3. package/dist/cjs/{index-BY9fvbr8.js → index-0BvcfeCt.js} +144 -68
  4. package/dist/cjs/{index-DjsCseV8.js → index-DnaH8sO-.js} +20 -67
  5. package/dist/cjs/index.cjs.js +2 -2
  6. package/dist/cjs/lido-avatar_22.cjs.entry.js +279 -66
  7. package/dist/cjs/lido-player.cjs.js +3 -3
  8. package/dist/cjs/loader.cjs.js +2 -2
  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 +46 -28
  25. package/dist/collection/components/flashCard/lido-flash-card.js +131 -14
  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 +9 -6
  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 +174 -145
  45. package/dist/collection/components/scale/lido-balance.js +54 -14
  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 +119 -23
  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 +323 -323
  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 +9 -12
  152. package/dist/collection/utils/utils.js +24 -8
  153. package/dist/collection/utils/utilsHandlers/dragDropHandler.js +16 -10
  154. package/dist/collection/utils/utilsHandlers/highlightHandler.js +54 -54
  155. package/dist/collection/utils/utilsHandlers/lidoBalanceHandler.js +58 -1
  156. package/dist/collection/utils/utilsHandlers/sortHandler.js +10 -10
  157. package/dist/components/index.js +1 -1
  158. package/dist/components/lido-avatar.js +1 -1
  159. package/dist/components/lido-balance.js +1 -1
  160. package/dist/components/lido-calculator.js +1 -1
  161. package/dist/components/lido-canvas.js +1 -1
  162. package/dist/components/lido-cell.js +1 -1
  163. package/dist/components/lido-col.js +1 -1
  164. package/dist/components/lido-container.js +1 -1
  165. package/dist/components/lido-flash-card.js +1 -1
  166. package/dist/components/lido-float.js +1 -1
  167. package/dist/components/lido-home.js +1 -1
  168. package/dist/components/lido-keyboard.js +1 -1
  169. package/dist/components/lido-math-matrix.js +1 -1
  170. package/dist/components/lido-pos.js +1 -1
  171. package/dist/components/lido-random.js +1 -1
  172. package/dist/components/lido-root.js +1 -1
  173. package/dist/components/lido-row.js +1 -1
  174. package/dist/components/lido-shape.js +1 -1
  175. package/dist/components/lido-slide-fill.js +1 -1
  176. package/dist/components/lido-text.js +1 -1
  177. package/dist/components/lido-trace.js +1 -1
  178. package/dist/components/lido-wrap.js +1 -1
  179. package/dist/components/{p-BOQDbCrm.js → p-BJiyBHYT.js} +1 -1
  180. package/dist/components/p-BUfCIPRa.js +1 -0
  181. package/dist/components/{p-CTlcpv4a.js → p-BfwUqpXc.js} +1 -1
  182. package/dist/components/p-BiBt9LGP.js +1 -0
  183. package/dist/components/{p-CgsPIpg0.js → p-Bw-OC9iR.js} +1 -1
  184. package/dist/components/{p-B4YAipq-.js → p-CFzvgrMa.js} +1 -1
  185. package/dist/components/{p-C5WmmkI6.js → p-CPYnt0P-.js} +1 -1
  186. package/dist/components/{p-CCR42e0i.js → p-ChfVUoX4.js} +1 -1
  187. package/dist/components/{p-CWwymnbk.js → p-CkxAm8rY.js} +2 -2
  188. package/dist/components/{p-BeRr8u5m.js → p-CwDTdXe5.js} +1 -1
  189. package/dist/components/{p-CXHPZN3m.js → p-CyGxEcn7.js} +1 -1
  190. package/dist/components/{p-BJMjg5wu.js → p-D2GhaM-T.js} +1 -1
  191. package/dist/components/{p-BBHM059l.js → p-DDS30M3y.js} +1 -1
  192. package/dist/components/p-DP6jQ5ML.js +1 -0
  193. package/dist/components/{p-CljvnHkI.js → p-DZRNZCPt.js} +1 -1
  194. package/dist/components/p-DbR5sNOj.js +1 -0
  195. package/dist/components/{p-B8nzzM8c.js → p-DdQ1eqJr.js} +1 -1
  196. package/dist/components/p-leIEepjl.js +1 -0
  197. package/dist/components/p-u3czV7QM.js +1 -0
  198. package/dist/components/{p-C70ykycD.js → p-useuhkjH.js} +1 -1
  199. package/dist/esm/{decode-Buyq-Iy5.js → decode-DkSXjv7K.js} +1 -1
  200. package/dist/esm/{index-CQXciux9.js → index-D9-TTsdZ.js} +144 -68
  201. package/dist/esm/{index-DQZfuGjI.js → index-Dvjbti-h.js} +20 -67
  202. package/dist/esm/index.js +2 -2
  203. package/dist/esm/lido-avatar_22.entry.js +279 -66
  204. package/dist/esm/lido-player.js +4 -4
  205. package/dist/esm/loader.js +3 -3
  206. package/dist/lido-player/assets/Shadow.svg +9 -9
  207. package/dist/lido-player/assets/Tracing-hand.svg +8 -8
  208. package/dist/lido-player/index.esm.js +1 -1
  209. package/dist/lido-player/lido-avatar.css +4 -4
  210. package/dist/lido-player/lido-avatar.tsx +207 -207
  211. package/dist/lido-player/lido-player.css +7 -7
  212. package/dist/lido-player/lido-player.esm.js +1 -1
  213. package/dist/lido-player/p-35fa0b8b.entry.js +12 -0
  214. package/dist/lido-player/p-D2iINRNN.js +1 -0
  215. package/dist/lido-player/{p-CFtq4Thh.js → p-Dc8j8Hxw.js} +1 -1
  216. package/dist/lido-player/p-Dvjbti-h.js +2 -0
  217. package/dist/lido-player/readme.md +49 -49
  218. package/dist/types/components/flashCard/lido-flash-card.d.ts +10 -0
  219. package/dist/types/components/scale/lido-balance.d.ts +5 -0
  220. package/dist/types/components/trace/lido-trace.d.ts +9 -1
  221. package/dist/types/components.d.ts +10 -0
  222. package/dist/types/stencil-public-runtime.d.ts +55 -73
  223. package/dist/types/types/json.d.ts +3 -3
  224. package/dist/types/utils/audioPlayer.d.ts +1 -1
  225. package/dist/types/utils/utilsHandlers/lidoBalanceHandler.d.ts +10 -0
  226. package/loader/index.d.ts +1 -1
  227. package/package.json +74 -74
  228. package/readme.md +113 -113
  229. package/dist/components/p-BfqihbR6.js +0 -1
  230. package/dist/components/p-CwIlwnQk.js +0 -1
  231. package/dist/components/p-DLyacZap.js +0 -1
  232. package/dist/components/p-DONbWJGn.js +0 -1
  233. package/dist/components/p-DVTigdH_.js +0 -1
  234. package/dist/components/p-DYFVwyRr.js +0 -1
  235. package/dist/lido-player/p-37736e11.entry.js +0 -12
  236. package/dist/lido-player/p-3Ry570XH.js +0 -1
  237. package/dist/lido-player/p-DQZfuGjI.js +0 -3
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DjsCseV8.js');
4
- var index$1 = require('./index-BY9fvbr8.js');
3
+ var index = require('./index-DnaH8sO-.js');
4
+ var index$1 = require('./index-0BvcfeCt.js');
5
5
 
6
6
  var rive$1 = {exports: {}};
7
7
 
@@ -8160,7 +8160,7 @@ const LidoAvatar = class {
8160
8160
  display: this.visible ? 'flex' : 'none',
8161
8161
  zIndex: this.z,
8162
8162
  };
8163
- return (index.h(index.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 }, index.h("canvas", { key: '09824386b4f1c3622111abc86d66ddedb5980bc6', class: "lido-canvas" })));
8163
+ return (index.h(index.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 }, index.h("canvas", { key: '6f128e61bee6797c0cf83c15b3fd3ba4d1d7b1ea', class: "lido-canvas" })));
8164
8164
  }
8165
8165
  static get assetsDirs() { return ["."]; }
8166
8166
  get el() { return index.getElement(this); }
@@ -8168,7 +8168,7 @@ const LidoAvatar = class {
8168
8168
  LidoAvatar.RIVE_WASM_URL = 'https://unpkg.com/@rive-app/canvas@2.32.0/rive.wasm';
8169
8169
  LidoAvatar.style = lidoAvatarCss();
8170
8170
 
8171
- const lidoBalanceCss = () => `#lido-balance{position:relative;height:500px;width:1205px;top:20%;left:-91px;z-index:0}.lido-balance-symbol{position:absolute;top:64%;left:50%;transform:translate(-50%, -50%);font-size:5vw;font-weight:bold;color:black;pointer-events:none;z-index:999}@media (orientation: portrait){.lido-balance-shadow{height:100px;position:absolute;top:80%;left:28%}}@media (orientation: landscape){.lido-balance-shadow{height:100px;position:absolute;top:90%;left:33%}}@media (orientation: portrait){#pivotimg{position:absolute;height:auto;width:23%;bottom:18%;left:38%;z-index:100}}#pivotimg::after{content:"";position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);width:120%;height:60px;background-image:var(--lido-balance-shadow-url);background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;z-index:10}@media (orientation: landscape){#pivotimg{position:absolute;height:auto;width:23%;bottom:8%;left:38%;z-index:100}}.lido-balance .pivot svg{width:100%;height:auto}#scaleimg{position:absolute;width:73%;height:auto;top:61%;left:14%;z-index:90}.lido-balance .scale svg{width:100%;height:auto}@media (orientation: landscape){#handlerimg{position:absolute;width:35%;height:auto;top:49%;left:2%}}@media (orientation:portrait ){#handlerimg{position:absolute;width:35%;height:auto;top:53%;left:2%}}.lido-balance .handler svg{width:100%;height:auto;fill:brown}@media (orientation: landscape){#handimg{position:absolute;width:35%;height:auto;top:49%;right:2%}}@media (orientation:portrait){#handimg{position:absolute;width:35%;height:auto;top:53%;right:2%}}.lido-balance .hand svg{width:100%;height:auto;fill:brown}.pivot svg path:nth-of-type(1){fill:brown}.pivot svg path[d^="M78.9414"]{fill:white}`;
8171
+ const lidoBalanceCss = () => `#lido-balance{position:relative;height:500px;width:1205px;top:20%;left:-91px;z-index:0}.lido-balance-symbol{position:absolute;top:64%;left:50%;transform:translate(-50%, -50%);font-size:5vw;font-weight:bold;color:black;pointer-events:none;z-index:999}@media (orientation: portrait){.lido-balance-shadow{height:100px;position:absolute;top:80%;left:28%}}.balance-plate-feedback{position:absolute;top:52%;width:34%;height:12px;border-radius:0 0 8px 8px;opacity:0.95;box-shadow:0 9px 10px -2px rgba(70, 0, 0, 0.6);pointer-events:none;z-index:95}.balance-plate-feedback[aria-hidden='true']{display:none}.balance-plate-feedback.left{left:2.5%}.balance-plate-feedback.right{right:2.5%}.balance-plate-feedback::after{content:'';position:absolute;top:100%;left:4%;width:92%;height:11px;border-radius:0 0 8px 8px;background:inherit;opacity:0.75;filter:blur(5px);pointer-events:none}@media (orientation: landscape){.lido-balance-shadow{height:100px;position:absolute;top:90%;left:33%}}@media (orientation: portrait){#pivotimg{position:absolute;height:auto;width:23%;bottom:18%;left:38%;z-index:100}}#pivotimg::after{content:"";position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);width:120%;height:60px;background-image:var(--lido-balance-shadow-url);background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;z-index:10}@media (orientation: landscape){#pivotimg{position:absolute;height:auto;width:23%;bottom:8%;left:38%;z-index:100}}.lido-balance .pivot svg{width:100%;height:auto}#scaleimg{position:absolute;width:73%;height:auto;top:61%;left:14%;z-index:90}.lido-balance .scale svg{width:100%;height:auto}@media (orientation: landscape){#handlerimg{position:absolute;width:35%;height:auto;top:49%;left:2%}}@media (orientation:portrait ){#handlerimg{position:absolute;width:35%;height:auto;top:53%;left:2%}}.lido-balance .handler svg{width:100%;height:auto;fill:brown}@media (orientation: landscape){#handimg{position:absolute;width:35%;height:auto;top:49%;right:2%}}@media (orientation:portrait){#handimg{position:absolute;width:35%;height:auto;top:53%;right:2%}}.lido-balance .hand svg{width:100%;height:auto;fill:brown}.pivot svg path:nth-of-type(1){fill:brown}.pivot svg path[d^="M78.9414"]{fill:white}`;
8172
8172
 
8173
8173
  const LidoBalance = class {
8174
8174
  constructor(hostRef) {
@@ -8286,6 +8286,7 @@ const LidoBalance = class {
8286
8286
  * Current computed value of the right side of the balance.
8287
8287
  */
8288
8288
  this.rightVal = 0;
8289
+ this.feedbackColor = '';
8289
8290
  this.currentAngle = 0;
8290
8291
  }
8291
8292
  async revealSymbol() {
@@ -8294,12 +8295,24 @@ const LidoBalance = class {
8294
8295
  async hideSymbol() {
8295
8296
  this.showSymbol = false;
8296
8297
  }
8298
+ async setFeedbackColor(color = '') {
8299
+ this.feedbackColor = color;
8300
+ }
8297
8301
  async componentWillLoad() {
8302
+ this.initializeInitialSymbol();
8298
8303
  this.updateStyles();
8299
8304
  this.pivotSvg = await this.fetchAndApplyFill(index$1.convertUrlToRelative(this.pivotimage));
8300
8305
  this.scaleSvg = await this.fetchAndApplyFill(index$1.convertUrlToRelative(this.scaleimage));
8301
8306
  this.handlerSvg = await this.fetchAndApplyFill(index$1.convertUrlToRelative(this.handlerimage));
8302
8307
  }
8308
+ initializeInitialSymbol() {
8309
+ var _a, _b;
8310
+ const container = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('lido-container');
8311
+ const objective = (_b = container === null || container === void 0 ? void 0 : container.getAttribute('objective')) === null || _b === void 0 ? void 0 : _b.trim();
8312
+ if (objective === '>' || objective === '<' || objective === '=')
8313
+ this.balanceSymbol = objective;
8314
+ this.showSymbol = true;
8315
+ }
8303
8316
  componentDidLoad() {
8304
8317
  this.animateBalance();
8305
8318
  this.leftParentEl = document.getElementById("leftparent");
@@ -8364,6 +8377,11 @@ const LidoBalance = class {
8364
8377
  const offset = (this.currentAngle / this.maxTilt) * maxOffset;
8365
8378
  this.leftHandleEl.style.transform = `translateY(${-offset}px)`;
8366
8379
  this.rightHandleEl.style.transform = `translateY(${offset}px)`;
8380
+ const feedbackOffset = (this.currentAngle / this.maxTilt) * maxOffset;
8381
+ if (this.leftFeedbackEl)
8382
+ this.leftFeedbackEl.style.transform = `translateY(${-feedbackOffset}px)`;
8383
+ if (this.rightFeedbackEl)
8384
+ this.rightFeedbackEl.style.transform = `translateY(${feedbackOffset}px)`;
8367
8385
  }
8368
8386
  this.animationFrameId = requestAnimationFrame(rotate);
8369
8387
  };
@@ -8384,7 +8402,7 @@ const LidoBalance = class {
8384
8402
  };
8385
8403
  }
8386
8404
  render() {
8387
- return (index.h(index.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 }, index.h("div", { key: 'da588147b7aeafc8a529c8f8399e5acbabbf3bb7', innerHTML: this.pivotSvg, id: "pivotimg", class: "pivot" }), index.h("div", { key: 'f1a0aa6b8f080a0db945c44b2a1cbb715541db4f', innerHTML: this.scaleSvg, id: "scaleimg", class: "scale", ref: (el) => (this.scaleEl = el) }), index.h("div", { key: 'e1c742d85d924a6c24c6c8103dcfcf2d41533b88', innerHTML: this.handlerSvg, id: "handlerimg", class: "handler", ref: (el) => (this.leftHandleEl = el) }), index.h("div", { key: 'c1ea8165c0d2c590616edee9b189e8a3d4198c1a', innerHTML: this.handlerSvg, id: "handimg", class: "hand", ref: (el) => (this.rightHandleEl = el) }), index.h("div", { key: 'd666d445b0a5fd04394c335ea1494ac7e80f1b07', id: "balanceSymbol", class: "lido-balance-symbol", "aria-hidden": !this.showSymbol }, this.showSymbol ? this.balanceSymbol : '')));
8405
+ return (index.h(index.Host, { key: 'b455b2b5d330a2125f7fb8b4e2165d2e6e6bc1a0', 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 }, index.h("div", { key: '657f471d397dd7e3476d5b6e35ee4495c8f2db4c', innerHTML: this.pivotSvg, id: "pivotimg", class: "pivot" }), index.h("div", { key: '7b91e1919db1fdbcddf79f43a9ad51695b7c806f', innerHTML: this.scaleSvg, id: "scaleimg", class: "scale", ref: (el) => (this.scaleEl = el) }), index.h("div", { key: '137a1440d55776d0771d8cd71741202c224896db', innerHTML: this.handlerSvg, id: "handlerimg", class: "handler", ref: (el) => (this.leftHandleEl = el) }), index.h("div", { key: 'd6e0deae63a4e219757240e585d582fb5a72a071', innerHTML: this.handlerSvg, id: "handimg", class: "hand", ref: (el) => (this.rightHandleEl = el) }), index.h("div", { key: 'ef51f98937cf10c017c8289359c92c24e7316a16', class: "balance-plate-feedback left", ref: (el) => (this.leftFeedbackEl = el), style: { backgroundColor: this.feedbackColor }, "aria-hidden": !this.feedbackColor }), index.h("div", { key: 'f21aade8543977b657a4d2fbcd623cf8769459a0', class: "balance-plate-feedback right", ref: (el) => (this.rightFeedbackEl = el), style: { backgroundColor: this.feedbackColor }, "aria-hidden": !this.feedbackColor }), index.h("div", { key: '0470afcef443dbeb69a7d651220d5ff50be3836e', id: "balanceSymbol", class: "lido-balance-symbol", "aria-hidden": !this.showSymbol }, this.showSymbol ? this.balanceSymbol : '')));
8388
8406
  }
8389
8407
  static get assetsDirs() { return ["assets"]; }
8390
8408
  get el() { return index.getElement(this); }
@@ -8577,7 +8595,7 @@ const LidoCalculator = class {
8577
8595
  }
8578
8596
  render() {
8579
8597
  const numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '←', '0', 'OK'];
8580
- return (index.h(index.Host, { key: 'ae833326069dd4cf9588701995962b0d1b3b0091', onEntry: this.onEntry, id: "lidoCalculator", style: { width: this.width, height: this.height, backgroundColor: this.bgColor, left: this.x, top: this.y } }, index.h("lido-cell", { key: '135b08be24862393217a0a93d4afd3ec8647547c', visible: "true", height: "94px", width: "60px" }, index.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" }, index.h("img", { key: '2b6077ffad1046fdedb816402fdcb906539afa5c', src: index$1.convertUrlToRelative(this.penIcon), alt: "pen", style: { width: '100%', height: '100%' } }))), index.h("div", { key: '96dfabdab176f66e16d6b03efb2e8ecad74c9d45', class: "lido-calculator-displayParent" }, index.h("div", { key: '9c711dd53ada73ca9ddac1c37b0719c5c746a591', class: "lido-calculator-display" }, this.displayValue)), index.h("div", { key: '5d595bf410fc1a75fa57c485fd08a8e97064016a', class: "lido-calculator-buttons" }, numbers.map((num, i) => (index.h("lido-text", { id: `btn-${i}`, string: num, visible: "true", type: "click", class: {
8598
+ return (index.h(index.Host, { key: 'e8249dda090212d327b68b47d42a123de6a890c9', onEntry: this.onEntry, id: "lidoCalculator", style: { width: this.width, height: this.height, backgroundColor: this.bgColor, left: this.x, top: this.y } }, index.h("lido-cell", { key: '54d093a3dd6a6e5850c881d224290bd6cf9c3690', visible: "true", height: "94px", width: "60px" }, index.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" }, index.h("img", { key: '7242feedd5172b555df683c747bbef778a9cdcd7', src: index$1.convertUrlToRelative(this.penIcon), alt: "pen", style: { width: '100%', height: '100%' } }))), index.h("div", { key: '6145a4f89da352c3576e6d51a1e260e335778fbb', class: "lido-calculator-displayParent" }, index.h("div", { key: '04e07b724d912d43b08c7a1e15c605d0fd30c7be', class: "lido-calculator-display" }, this.displayValue)), index.h("div", { key: '19839d02863ca1e27fddb4093f191171e237f143', class: "lido-calculator-buttons" }, numbers.map((num, i) => (index.h("lido-text", { id: `btn-${i}`, string: num, visible: "true", type: "click", class: {
8581
8599
  'lido-calculator-btn-special': num === '←' || num === 'OK',
8582
8600
  'lido-calculator-btn-default': num !== '←' && num !== 'OK'
8583
8601
  }, onClick: () => this.handleClick(num) }))))));
@@ -8691,7 +8709,7 @@ const LidoCanvas = class {
8691
8709
  this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
8692
8710
  }
8693
8711
  render() {
8694
- return (index.h(index.Host, { key: 'ca88c99317fe079d25b16410d78cbd63e13d712c', id: "lido-canvas", class: "lido-canvas", style: this.style }, index.h("button", { key: '3e1085ff4be21ca281483367a41b51ba4ff49736', id: "lido-exit-button", onClick: () => this.clearCanvas() }), index.h("canvas", { key: '9c1f485a2a84b2da9468e8b83f1962cce7852efc', id: "lido-canvas" })));
8712
+ return (index.h(index.Host, { key: '6bb47f06656ce667d23236e9f3c3a8f383885a43', id: "lido-canvas", class: "lido-canvas", style: this.style }, index.h("button", { key: 'fd0d1217bda63071fbf6496c2538c2a944b14181', id: "lido-exit-button", onClick: () => this.clearCanvas() }), index.h("canvas", { key: 'ed0333972bb7ce0fc4e14c81bb466ea895ce65e0', id: "lido-canvas" })));
8695
8713
  }
8696
8714
  get el() { return index.getElement(this); }
8697
8715
  };
@@ -8950,7 +8968,7 @@ const LidoCell = class {
8950
8968
  this.el.className = `lido-${index$1.parseProp(this.layout, orientation)}`;
8951
8969
  }
8952
8970
  render() {
8953
- return (index.h(index.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 }, index.h("slot", { key: '1af7a1f78e12bb1babcd91266eaf209b9d7530dc' })));
8971
+ return (index.h(index.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 }, index.h("slot", { key: '6e9d4507b36716f04853d39ef66015441782aa88' })));
8954
8972
  }
8955
8973
  get el() { return index.getElement(this); }
8956
8974
  };
@@ -9028,7 +9046,7 @@ const LidoCol = class {
9028
9046
  };
9029
9047
  }
9030
9048
  render() {
9031
- return (index.h(index.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 }, index.h("slot", { key: '2d285d2c1557647e05abb470490da6c7c735a39d' })));
9049
+ return (index.h(index.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 }, index.h("slot", { key: '590cd219bc5a02e6b96eafe108fb8b310daf941d' })));
9032
9050
  }
9033
9051
  get el() { return index.getElement(this); }
9034
9052
  };
@@ -12354,7 +12372,7 @@ const LidoContainer = class {
12354
12372
  margin: this.margin,
12355
12373
  userSelect: 'none', // Prevent any field selection
12356
12374
  };
12357
- return (index.h(index.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}` }, index.h("lido-text", { key: '8295782a74ce6ef8ca9a623de8a28b539d9f6d4f', visible: "false", id: this.templateId, audio: "", string: this.instructName }), index.h("slot", { key: 'eb3c995b777986e07dcb6aa935ef38d41aa1e7e7' })));
12375
+ return (index.h(index.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}` }, index.h("lido-text", { key: '86fd014a61ba9cba6d67e2d921b2d8a8a289dbc7', visible: "false", id: this.templateId, audio: "", string: this.instructName }), index.h("slot", { key: 'c3128ea2164892757b32cb076d717436947f9a4c' })));
12358
12376
  }
12359
12377
  get el() { return index.getElement(this); }
12360
12378
  static get watchers() { return {
@@ -12365,7 +12383,7 @@ const LidoContainer = class {
12365
12383
  };
12366
12384
  LidoContainer.style = lidoContainerCss();
12367
12385
 
12368
- const lidoFlashCardCss = () => `.card{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 0.6s ease;cursor:pointer}.card.flipped{transform:rotateY(180deg)}.card-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center}.card-back{transform:rotateY(180deg)}`;
12386
+ const lidoFlashCardCss = () => `.card{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 0.6s ease;cursor:pointer}.card.flipped{transform:rotateY(180deg)}.card-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center}.card-back{transform:rotateY(180deg)}lido-container[template-id="flashcardtemplate"] #arrow{position:absolute !important;left:auto !important;top:50% !important;right:13.3% !important;transform:translateY(-50%);z-index:4 !important;overflow:visible}@media (orientation: portrait){lido-container[template-id="flashcardtemplate"] #arrow{right:-4.3% !important}}`;
12369
12387
 
12370
12388
  const LidoFlash = class {
12371
12389
  constructor(hostRef) {
@@ -12445,6 +12463,38 @@ const LidoFlash = class {
12445
12463
  * `reflect` keeps the `<lido-flash-card flipped>` attribute in sync.
12446
12464
  */
12447
12465
  this.flipped = false;
12466
+ this.autoFlipAfter = 4500;
12467
+ this.instructionDone = false;
12468
+ this.onAudioEnded = (event) => {
12469
+ var _a;
12470
+ const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
12471
+ const instruction = this.instructionText();
12472
+ if (!target || (target !== instruction && target.id !== 'lido-avatar' && !this.el.contains(target)))
12473
+ return;
12474
+ if (target === this.instructionText()) {
12475
+ this.instructionDone = true;
12476
+ window.setTimeout(() => {
12477
+ this.speakFront();
12478
+ }, 1200);
12479
+ }
12480
+ else if (target === this.frontText()) {
12481
+ if (this.flipped)
12482
+ return;
12483
+ if (this.autoFlipTimer)
12484
+ window.clearTimeout(this.autoFlipTimer);
12485
+ this.autoFlipTimer = window.setTimeout(() => {
12486
+ if (!this.flipped)
12487
+ this.handleFlip();
12488
+ }, this.autoFlipAfter);
12489
+ }
12490
+ else if (target === this.backText()) {
12491
+ if (this.flipped)
12492
+ this.showArrow();
12493
+ }
12494
+ else if (target.id === 'lido-avatar') {
12495
+ index$1.executeActions("this.avatarAnimate='Idle'", target);
12496
+ }
12497
+ };
12448
12498
  /**
12449
12499
  * CSS margin value applied to each child element inside the container.
12450
12500
  * Accepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.).
@@ -12477,7 +12527,76 @@ const LidoFlash = class {
12477
12527
  };
12478
12528
  /** Toggle the card when it is clicked. */
12479
12529
  this.handleFlip = () => {
12530
+ var _a;
12531
+ if (this.autoFlipTimer)
12532
+ window.clearTimeout(this.autoFlipTimer);
12533
+ index$1.AudioPlayer.getI().stop();
12534
+ const goingBack = !this.flipped;
12480
12535
  this.flipped = !this.flipped;
12536
+ this.setArrowVisible(false);
12537
+ if (goingBack) {
12538
+ const text = this.backText();
12539
+ if (text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
12540
+ index$1.executeActions("this.speak='true'", text);
12541
+ else
12542
+ this.showArrow();
12543
+ }
12544
+ else {
12545
+ this.speakFront();
12546
+ }
12547
+ };
12548
+ this.instructionText = () => { var _a; return document.getElementById(((_a = this.el.closest('lido-container')) === null || _a === void 0 ? void 0 : _a.getAttribute('template-id')) || ''); };
12549
+ this.frontText = () => this.el.querySelector('.card-front lido-text');
12550
+ this.backText = () => this.el.querySelector('.card-back lido-text');
12551
+ this.speakFront = () => {
12552
+ var _a;
12553
+ const text = this.frontText();
12554
+ if (this.instructionDone && !this.flipped && text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
12555
+ index$1.executeActions("this.speak='true'", text);
12556
+ }
12557
+ };
12558
+ this.showArrow = () => {
12559
+ if (!this.flipped)
12560
+ return;
12561
+ const arrow = document.getElementById('arrow');
12562
+ if (!arrow)
12563
+ return;
12564
+ // Existing ZIPs may not have the newer template onTouch action. Reuse
12565
+ // the same direct nextBtn action as the shared home arrow for them.
12566
+ if (!arrow.getAttribute('onTouch'))
12567
+ arrow.setAttribute('onTouch', "this.nextBtn='true';");
12568
+ const mascot = document.getElementById('lido-avatar');
12569
+ const scaffoldAudio = arrow.getAttribute('audio');
12570
+ if (mascot && scaffoldAudio) {
12571
+ mascot.setAttribute('audio', scaffoldAudio);
12572
+ arrow.removeAttribute('audio');
12573
+ }
12574
+ this.setArrowVisible(true);
12575
+ if (mascot) {
12576
+ index$1.executeActions("this.avatarAnimate='Idle speak'", mascot);
12577
+ index$1.AudioPlayer.getI().play(mascot, true);
12578
+ }
12579
+ };
12580
+ this.setArrowVisible = (visible) => {
12581
+ const arrow = document.getElementById('arrow');
12582
+ if (!arrow)
12583
+ return;
12584
+ arrow.visible = visible;
12585
+ arrow.setAttribute('visible', String(visible));
12586
+ // lido-cell's visible prop is a non-reflected string prop; keep the
12587
+ // rendered host in sync as well so an attribute update cannot leave its
12588
+ // previous inline display:none in place.
12589
+ arrow.style.display = visible ? 'block' : 'none';
12590
+ arrow.style.visibility = visible ? 'visible' : 'hidden';
12591
+ arrow.style.opacity = visible ? '1' : '0';
12592
+ const arrowImage = arrow.querySelector('lido-image');
12593
+ if (arrowImage) {
12594
+ arrowImage.style.display = visible ? 'flex' : 'none';
12595
+ arrowImage.style.visibility = visible ? 'visible' : 'hidden';
12596
+ arrowImage.style.opacity = visible ? '1' : '0';
12597
+ }
12598
+ if (typeof arrow.updateStyles === 'function')
12599
+ arrow.updateStyles();
12481
12600
  };
12482
12601
  }
12483
12602
  /* ---------- Watches ---------- */
@@ -12493,25 +12612,20 @@ const LidoFlash = class {
12493
12612
  }
12494
12613
  componentDidLoad() {
12495
12614
  index$1.setVisibilityWithDelay(this.el, this.delayVisible);
12496
- const card = this.el.querySelector('.card');
12497
- if (card) {
12498
- setTimeout(() => {
12499
- card.classList.add('flipped');
12500
- setTimeout(() => {
12501
- card.classList.remove('flipped');
12502
- }, 500);
12503
- }, 500);
12504
- }
12505
12615
  index$1.initEventsForElement(this.el, this.type);
12616
+ window.addEventListener('lidoAudioEnded', this.onAudioEnded);
12506
12617
  // handlingChildElements(this.el, this.minLength, this.maxLength, this.childElementsLength, 'inline-block');
12507
12618
  }
12508
12619
  disconnectedCallback() {
12620
+ window.removeEventListener('lidoAudioEnded', this.onAudioEnded);
12621
+ if (this.autoFlipTimer)
12622
+ window.clearTimeout(this.autoFlipTimer);
12509
12623
  window.removeEventListener('resize', this.updateStyles);
12510
12624
  window.removeEventListener('load', this.updateStyles);
12511
12625
  }
12512
12626
  /* ---------- Render ---------- */
12513
12627
  render() {
12514
- return (index.h(index.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 }, index.h("div", { key: 'a97eaa100216652cc4deaf8b6f73e9ea07a125f2', class: `card ${this.flipped ? 'flipped' : ''}` }, index.h("div", { key: '7a6f94b89da76b2c7fc911c44d2aaa63a3d2164d', class: "card-face card-front" }, this.front != null ? this.front : index.h("slot", { name: "front" })), index.h("div", { key: '15936f96d44db217c042584cc225a42dc3f74e98', class: "card-face card-back" }, this.back != null ? this.back : index.h("slot", { name: "back" })))));
12628
+ return (index.h(index.Host, { key: '8d65b494352e0c0aefb3815c87a798967ccb65aa', 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 }, index.h("div", { key: 'db3d4fce4f9f54437485ab1274b1f9bd3b3486bc', class: `card ${this.flipped ? 'flipped' : ''}` }, index.h("div", { key: 'd37770b0b08eac533265d7f8049c598df047aa37', class: "card-face card-front" }, this.front != null ? this.front : index.h("slot", { name: "front" })), index.h("div", { key: '2f8431017cfed9f9adb679442be833a65704d41e', class: "card-face card-back" }, this.back != null ? this.back : index.h("slot", { name: "back" })))));
12515
12629
  }
12516
12630
  get el() { return index.getElement(this); }
12517
12631
  static get watchers() { return {
@@ -12608,7 +12722,7 @@ const LidoFloat = class {
12608
12722
  };
12609
12723
  }
12610
12724
  render() {
12611
- return (index.h(index.Host, { key: '26ada4c2834a58fe1f45348a32f9d1dcecb79a14', class: "lido-float", "float-direction": this.floatDirection, id: this.id, "tab-index": this.tabIndex, style: this.style, onEntry: this.onEntry }, index.h("slot", { key: '6f4ca358f564e268390f221cc1f84af1f303761b' })));
12725
+ return (index.h(index.Host, { key: 'c461f1142dd6addd9ceb41ade183b044b875681f', class: "lido-float", "float-direction": this.floatDirection, id: this.id, "tab-index": this.tabIndex, style: this.style, onEntry: this.onEntry }, index.h("slot", { key: '240439bfda6a9e4e2d67e6ae2b5c878d99e632b3' })));
12612
12726
  }
12613
12727
  get el() { return index.getElement(this); }
12614
12728
  };
@@ -12646,9 +12760,9 @@ function requireJszip_min () {
12646
12760
  var jszip_minExports = requireJszip_min();
12647
12761
  var JSZip = /*@__PURE__*/index$1.getDefaultExportFromCjs(jszip_minExports);
12648
12762
 
12649
- 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}`;
12763
+ 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}`;
12650
12764
 
12651
- 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)}}`;
12765
+ 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)}}`;
12652
12766
 
12653
12767
  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}`;
12654
12768
 
@@ -12862,6 +12976,10 @@ const LidoHome = class {
12862
12976
  * between containers and parses the XML data into containers.
12863
12977
  */
12864
12978
  async componentWillLoad() {
12979
+ // Publish the current player's common-audio path before parsing XML so
12980
+ // child lido-text components cannot resolve auto-audio against the
12981
+ // previous player's global path.
12982
+ this.publishCommonAudioPath(this.commonAudioPath);
12865
12983
  this.navBarIcons = {
12866
12984
  exit: this.exitButtonUrl || index$1.exitUrl,
12867
12985
  prev: this.prevButtonUrl || index$1.prevUrl,
@@ -12954,7 +13072,7 @@ const LidoHome = class {
12954
13072
  }
12955
13073
  // Pure-JS fallback (no wasm asset required)
12956
13074
  try {
12957
- const brotliDecodeModule = await Promise.resolve().then(function () { return require('./decode-Bny56MQ9.js'); }).then(function (n) { return n.decode; });
13075
+ const brotliDecodeModule = await Promise.resolve().then(function () { return require('./decode-Cr5DANqc.js'); }).then(function (n) { return n.decode; });
12958
13076
  const brotliDecompressBuffer = brotliDecodeModule.BrotliDecompressBuffer || ((_a = brotliDecodeModule.default) === null || _a === void 0 ? void 0 : _a.BrotliDecompressBuffer);
12959
13077
  if (typeof brotliDecompressBuffer !== 'function') {
12960
13078
  throw new Error('BrotliDecompressBuffer function not found in brotli/dec/decode');
@@ -13027,7 +13145,6 @@ const LidoHome = class {
13027
13145
  return `${this.baseUrl.replace(/\/+$/, '')}/${path}`;
13028
13146
  }
13029
13147
  componentDidLoad() {
13030
- this.publishCommonAudioPath(this.commonAudioPath);
13031
13148
  setTimeout(() => {
13032
13149
  this.showDotsandbtn = true;
13033
13150
  }, 10);
@@ -16689,10 +16806,10 @@ const LidoKeyboard = class {
16689
16806
  const keysArray = this.keys.split(',').map(k => k.trim());
16690
16807
  const container = document.getElementById(index$1.LidoContainer);
16691
16808
  const showCheck = container.getAttribute('show-check') === 'true';
16692
- return (index.h(index.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 && (index.h("div", { key: '136fa3a2b0459a9a63e14ac8e212997e4bd32224', class: "input-area" }, index.h("input", { key: 'd9a1dc064d615b40b1e0e2b008dbf79ec70eb19b', type: "text", value: this.inputString, class: "input-area", readonly: true }), index.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: () => {
16809
+ return (index.h(index.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 && (index.h("div", { key: '7b5d293c52747700cde9c1069cfbbdae065e64f9', class: "input-area" }, index.h("input", { key: '03a91cd87e6bb4f09bf698087258426dd9232f67', type: "text", value: this.inputString, class: "input-area", readonly: true }), index.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: () => {
16693
16810
  this.inputString = this.inputString.slice(0, -1);
16694
16811
  this.inputValidation(event);
16695
- } }), index.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 && (index.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" })), index.h("div", { key: '1e7855724f15fdb432320f6186fc356518a29224', class: "keyboard-wrapper", style: {
16812
+ } }), index.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 && (index.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" })), index.h("div", { key: '826900d6ba26175eb45d2e7e4c02fccce2004db3', class: "keyboard-wrapper", style: {
16696
16813
  display: 'flex',
16697
16814
  flexWrap: 'wrap',
16698
16815
  justifyContent: 'center',
@@ -16927,7 +17044,7 @@ const LidoMathMatrix = class {
16927
17044
  render() {
16928
17045
  let slotNumber = 1;
16929
17046
  const slotData = this.getSlotData();
16930
- return (index.h(index.Host, { key: '2ef30835855363ba9fc7932122d1d505a451e055', class: "math-matrix", style: {
17047
+ return (index.h(index.Host, { key: '8a17727416da00fda95c401c3a005cdea1e732d0', class: "math-matrix", style: {
16931
17048
  height: this.style.height,
16932
17049
  width: this.style.width,
16933
17050
  z: this.style.z,
@@ -17074,7 +17191,7 @@ const LidoPos = class {
17074
17191
  };
17075
17192
  }
17076
17193
  render() {
17077
- return (index.h(index.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 }, index.h("slot", { key: 'd5026f61804b53e63aa1cc6c15b3de91543cf426' })));
17194
+ return (index.h(index.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 }, index.h("slot", { key: '73f7bfe2d8214693d6f40a4dab6d735906ad4eaa' })));
17078
17195
  }
17079
17196
  get el() { return index.getElement(this); }
17080
17197
  };
@@ -17218,7 +17335,7 @@ const LidoRandom = class {
17218
17335
  backgroundColor: this.bgColor,
17219
17336
  margin: this.margin,
17220
17337
  };
17221
- return (index.h(index.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 }, index.h("slot", { key: 'ed0386cda3ba55d89fb08607775a49a4180f08b3' })));
17338
+ return (index.h(index.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 }, index.h("slot", { key: 'b80726b68b7f1c009f35352b9d05cd573159f87b' })));
17222
17339
  }
17223
17340
  get el() { return index.getElement(this); }
17224
17341
  };
@@ -17389,13 +17506,13 @@ const LidoRow = class {
17389
17506
  };
17390
17507
  }
17391
17508
  render() {
17392
- return (index.h(index.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 }, index.h("slot", { key: '747f20051ad1fd1dd075ba457b612e9d8ef7d27d' })));
17509
+ return (index.h(index.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 }, index.h("slot", { key: '8756ee0447057cddb949e23decbde5fe4d1d25c8' })));
17393
17510
  }
17394
17511
  get el() { return index.getElement(this); }
17395
17512
  };
17396
17513
  LidoRow.style = lidoRowCss();
17397
17514
 
17398
- 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}`;
17515
+ 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}`;
17399
17516
 
17400
17517
  const LidoShape = class {
17401
17518
  constructor(hostRef) {
@@ -17547,8 +17664,8 @@ const LidoShape = class {
17547
17664
  backgroundColor: this.shapeType !== 'polygon' ? this.bgColor : 'transparent', // Apply background only if not a polygon
17548
17665
  margin: this.margin,
17549
17666
  };
17550
- return (index.h(index.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" &&
17551
- index.h("div", { key: 'f5f762fa74733659b970d5c476da5da10cc9f4c5', class: "cube" }, index.h("div", { key: '5324a04af38cfbc5eca4c5aa32df51a3e0e5443c', class: "face top" }), index.h("div", { key: 'a265a3ebfe41e0da844ac934c6af1045cde6cfad', class: "face bottom" }), index.h("div", { key: '58ce610d7fb003313c3e8ce3be019142086919e5', class: "face left" }), index.h("div", { key: '9c8ee3317a0331f9c3eeb3527963999765c10144', class: "face right" }), index.h("div", { key: 'eb674c98aa795f89094b1d510b59f96f742d7c6a', class: "face front" }), index.h("div", { key: '918b2aa2d5babbb700838d08dbdad100fc846f54', class: "face back" }))));
17667
+ return (index.h(index.Host, { key: '90b323eacac8b702168f612f79000da757109ec1', 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" &&
17668
+ index.h("div", { key: '16b4a96f302cd6b1c80023a29253e85fe0937622', class: "cube" }, index.h("div", { key: '9ce4dfa0021b463aa5dba4c0651d144f844c2db0', class: "face top" }), index.h("div", { key: 'f10410ef05cbde0a024ccbdbfb4fb7099c1bd9d3', class: "face bottom" }), index.h("div", { key: '2a08b1857613efd1db596d72a9324ac5b3379628', class: "face left" }), index.h("div", { key: '4922b4b63dc9538e68d143109bfa12782382ee48', class: "face right" }), index.h("div", { key: '983bc6815a3b5e6023d76394e0bdeb12c493b771', class: "face front" }), index.h("div", { key: 'eab0224f427b8a345d3c3285d8d2828b39871eaa', class: "face back" }))));
17552
17669
  }
17553
17670
  get el() { return index.getElement(this); }
17554
17671
  };
@@ -17643,13 +17760,13 @@ const LidoSlideFill = class {
17643
17760
  const id = pathIndex === 1 ? 'glassPath' : pathIndex === 2 ? 'rulerPath' : `path${pathIndex}`;
17644
17761
  return `<path id="${id}"${attrs}>`;
17645
17762
  });
17646
- const clipPathDef = `
17647
- <clipPath id="clipGlass">
17648
- <use xlink:href="#glassPath" />
17649
- </clipPath>
17763
+ const clipPathDef = `
17764
+ <clipPath id="clipGlass">
17765
+ <use xlink:href="#glassPath" />
17766
+ </clipPath>
17650
17767
  `;
17651
- svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
17652
- ${clipPathDef}
17768
+ svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
17769
+ ${clipPathDef}
17653
17770
  `);
17654
17771
  svgText = svgText.replace(/<rect([^>]*)\/?>/, `<rect id="fillArea" $1 clip-path="url(#clipGlass)" />`);
17655
17772
  this.svgContent = svgText;
@@ -17774,7 +17891,7 @@ const LidoSlideFill = class {
17774
17891
  }
17775
17892
  }
17776
17893
  render() {
17777
- return (index.h(index.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 }, index.h("div", { key: '904d482335451cf420b56a24f0ca3a279db4abc8', innerHTML: this.svgContent, class: "lido-svg-element" })));
17894
+ return (index.h(index.Host, { key: 'df8a5474f641fec4d842013a04ef9e3d422a8ab2', 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 }, index.h("div", { key: 'e7b6bcc17f8caea30b074f24596b6b044833d170', innerHTML: this.svgContent, class: "lido-svg-element" })));
17778
17895
  }
17779
17896
  get el() { return index.getElement(this); }
17780
17897
  static get watchers() { return {
@@ -18063,7 +18180,7 @@ const LidoText = class {
18063
18180
  }
18064
18181
  render() {
18065
18182
  const displayText = instance.t(this.string).replace(/_phonics?/gi, '');
18066
- return (index.h(index.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 !== '' ? index.h("div", { class: "lido-text-content" }, " ", displayText) : displayText));
18183
+ return (index.h(index.Host, { key: 'ecef6ae20a67e2296570fe3a65cc5c99f96a1f7c', 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 !== '' ? index.h("div", { class: "lido-text-content" }, " ", displayText) : displayText));
18067
18184
  }
18068
18185
  get el() { return index.getElement(this); }
18069
18186
  };
@@ -18181,6 +18298,7 @@ const LidoTrace = class {
18181
18298
  this.fileIndex = -1;
18182
18299
  this.isDragging = false;
18183
18300
  this.activePointerId = null;
18301
+ this.activeTraceState = null;
18184
18302
  // Counter for throttling free trace updates
18185
18303
  // This is only an internal counter. Keeping it out of @State prevents a
18186
18304
  // Stencil component re-render while the user is dragging.
@@ -18195,6 +18313,7 @@ const LidoTrace = class {
18195
18313
  // Handle the pointermove event with optimizations
18196
18314
  // Update the path trace as the red circle moves
18197
18315
  async initializeSVG() {
18316
+ this.cleanupTraceState(this.activeTraceState);
18198
18317
  let state = {
18199
18318
  fileIndex: -1,
18200
18319
  currentPathIndex: 0,
@@ -18217,7 +18336,10 @@ const LidoTrace = class {
18217
18336
  dragOffset: null,
18218
18337
  isCompletingPath: false,
18219
18338
  touchProximityThreshold: null,
18339
+ pointerTransform: null,
18340
+ pointerRect: null,
18220
18341
  };
18342
+ this.activeTraceState = state;
18221
18343
  const url = this.svgUrls[this.currentSvgIndex];
18222
18344
  if (!url || url.trim() === '') {
18223
18345
  console.error('No SVG URL provided or index out of bounds.');
@@ -18244,6 +18366,27 @@ const LidoTrace = class {
18244
18366
  disconnectedCallback() {
18245
18367
  window.removeEventListener('resize', this.handleWindowResize);
18246
18368
  window.removeEventListener('load', this.handleWindowLoad);
18369
+ this.cleanupTraceState(this.activeTraceState);
18370
+ this.activeTraceState = null;
18371
+ }
18372
+ /** Release listeners, pending frames, timers, and cached SVG geometry. */
18373
+ cleanupTraceState(state) {
18374
+ var _a;
18375
+ if (!state)
18376
+ return;
18377
+ (_a = state.cleanup) === null || _a === void 0 ? void 0 : _a.call(state);
18378
+ if (state.rafId)
18379
+ cancelAnimationFrame(state.rafId);
18380
+ state.rafId = null;
18381
+ state.pointerMoveEvent = null;
18382
+ state.pathSamples = [];
18383
+ state.paths = [];
18384
+ state.svg = null;
18385
+ if (this.idleTimer !== null) {
18386
+ clearTimeout(this.idleTimer);
18387
+ this.idleTimer = null;
18388
+ }
18389
+ this.hideFingerHint();
18247
18390
  }
18248
18391
  /** ───────────────────────────────────────────────────────────
18249
18392
  * Idle‑timer helpers
@@ -18442,6 +18585,18 @@ const LidoTrace = class {
18442
18585
  path._lidoTraceStart = path.getPointAtLength(0);
18443
18586
  path._lidoTraceEnd = path.getPointAtLength(pathLength);
18444
18587
  path._lidoTraceIsClosed = this.getDistanceSquared(path._lidoTraceStart, path._lidoTraceEnd) < 200;
18588
+ // Index the path once. Repeated getPointAtLength calls are expensive on
18589
+ // low-end SVG implementations and used to dominate every pointer frame.
18590
+ const sampleCount = 192;
18591
+ const sampleStep = pathLength / sampleCount || 1;
18592
+ const samples = [];
18593
+ for (let sampleIndex = 0; sampleIndex <= sampleCount; sampleIndex++) {
18594
+ const length = Math.min(pathLength, sampleIndex * sampleStep);
18595
+ const point = path.getPointAtLength(length);
18596
+ samples.push({ x: point.x, y: point.y, length });
18597
+ }
18598
+ path._lidoTraceSamples = samples;
18599
+ path._lidoTraceSampleStep = sampleStep;
18445
18600
  // /** give every path an id so <mpath> can follow it */
18446
18601
  path.setAttribute('id', 'lido-path-' + index); // ← NEW
18447
18602
  // Create green path for tracing effect
@@ -18476,7 +18631,7 @@ const LidoTrace = class {
18476
18631
  state.flowMarkers = this.createFlowMarkersForPath(path);
18477
18632
  }
18478
18633
  });
18479
- state.totalPathLength = state.paths[state.currentPathIndex].getTotalLength();
18634
+ state.totalPathLength = state.paths[state.currentPathIndex]._lidoTraceLength;
18480
18635
  }
18481
18636
  // Set up the draggable circle at the start of the first path
18482
18637
  setupDraggableCircle(state) {
@@ -18501,10 +18656,14 @@ const LidoTrace = class {
18501
18656
  return;
18502
18657
  state.svg.style.touchAction = 'none';
18503
18658
  state.circle.style.touchAction = 'none';
18504
- // Handle pointerdown on the circle to start dragging
18505
- state.circle.addEventListener('pointerdown', (evt) => {
18659
+ // Keep named handlers so the detached SVG can be fully released when the
18660
+ // next trace starts. Anonymous handlers here previously retained every
18661
+ // completed trace for the lifetime of the page.
18662
+ const onPointerDown = (evt) => {
18506
18663
  evt.preventDefault(); // Prevent default actions like text selection
18507
- const pointerPos = this.getPointerPosition(evt, state.svg);
18664
+ state.pointerRect = state.svg.getBoundingClientRect();
18665
+ state.pointerTransform = this.getSvgViewBoxTransform(state.svg, state.pointerRect);
18666
+ const pointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
18508
18667
  const circlePos = {
18509
18668
  x: parseFloat(state.circle.getAttribute('cx')),
18510
18669
  y: parseFloat(state.circle.getAttribute('cy')),
@@ -18529,9 +18688,9 @@ const LidoTrace = class {
18529
18688
  }
18530
18689
  this.hideFingerHint(); // ← NEW
18531
18690
  this.resetIdleTimer(state); // ← NEW
18532
- }, { passive: false });
18691
+ };
18533
18692
  // Handle pointermove on the SVG to update the circle position
18534
- (_a = state.svg) === null || _a === void 0 ? void 0 : _a.addEventListener('pointermove', (evt) => {
18693
+ const onPointerMove = (evt) => {
18535
18694
  if (!state.isDragging || evt.pointerId !== state.activePointerId)
18536
18695
  return;
18537
18696
  evt.preventDefault();
@@ -18542,7 +18701,7 @@ const LidoTrace = class {
18542
18701
  state.rafId = null;
18543
18702
  });
18544
18703
  }
18545
- });
18704
+ };
18546
18705
  // Handle pointerup and pointercancel on the SVG to stop dragging
18547
18706
  const endDrag = (evt) => {
18548
18707
  if (evt.pointerId === state.activePointerId) {
@@ -18554,12 +18713,25 @@ const LidoTrace = class {
18554
18713
  this.resetIdleTimer(state); // ← NEW
18555
18714
  }
18556
18715
  };
18557
- (_b = state.svg) === null || _b === void 0 ? void 0 : _b.addEventListener('pointerup', endDrag);
18558
- (_c = state.svg) === null || _c === void 0 ? void 0 : _c.addEventListener('pointercancel', endDrag);
18716
+ (_a = state.svg) === null || _a === void 0 ? void 0 : _a.addEventListener('pointerup', endDrag);
18717
+ (_b = state.svg) === null || _b === void 0 ? void 0 : _b.addEventListener('pointercancel', endDrag);
18559
18718
  // Optional: Prevent context menu on long press
18560
- (_d = state.svg) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', (evt) => {
18719
+ const onContextMenu = (evt) => {
18561
18720
  evt.preventDefault();
18562
- });
18721
+ };
18722
+ state.circle.addEventListener('pointerdown', onPointerDown, { passive: false });
18723
+ (_c = state.svg) === null || _c === void 0 ? void 0 : _c.addEventListener('pointermove', onPointerMove);
18724
+ (_d = state.svg) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', onContextMenu);
18725
+ state.cleanup = () => {
18726
+ var _a, _b, _c, _d, _e;
18727
+ (_a = state.circle) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', onPointerDown);
18728
+ (_b = state.svg) === null || _b === void 0 ? void 0 : _b.removeEventListener('pointermove', onPointerMove);
18729
+ (_c = state.svg) === null || _c === void 0 ? void 0 : _c.removeEventListener('pointerup', endDrag);
18730
+ (_d = state.svg) === null || _d === void 0 ? void 0 : _d.removeEventListener('pointercancel', endDrag);
18731
+ (_e = state.svg) === null || _e === void 0 ? void 0 : _e.removeEventListener('contextmenu', onContextMenu);
18732
+ state.isDragging = false;
18733
+ state.activePointerId = null;
18734
+ };
18563
18735
  }
18564
18736
  // Modified handlePointerMove function
18565
18737
  async handlePointerMove(state) {
@@ -18572,7 +18744,7 @@ const LidoTrace = class {
18572
18744
  return;
18573
18745
  this.hideFingerHint(); // user is active, remove hint
18574
18746
  const evt = state.pointerMoveEvent;
18575
- const rawPointerPos = this.getPointerPosition(evt, state.svg);
18747
+ const rawPointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
18576
18748
  const pointerPos = state.dragOffset
18577
18749
  ? {
18578
18750
  x: rawPointerPos.x - state.dragOffset.x,
@@ -18604,9 +18776,16 @@ const LidoTrace = class {
18604
18776
  const proximitySquared = proximityThreshold * proximityThreshold;
18605
18777
  // Calculate the distance between the pointer and the draggable circle
18606
18778
  const distanceSquared = this.getDistanceSquared(pointerPos, circlePos);
18607
- // If the pointer is outside the proximity threshold, do not proceed with drawing or moving
18608
- if (distanceSquared > proximitySquared) {
18609
- return; // Skip any further actions
18779
+ // The red circle can lag behind a touch pointer when a lower-end device
18780
+ // drops frames. Do not reject the touch solely because it has moved ahead
18781
+ // of the circle: the path-distance check below still ensures the pointer
18782
+ // remains on the trace. This prevents long, narrow curves from becoming
18783
+ // stuck halfway through a stroke.
18784
+ const pointerLeadThreshold = evt.pointerType === 'touch'
18785
+ ? Math.max(proximityThreshold * 4, 180)
18786
+ : Math.max(proximityThreshold * 2, 120);
18787
+ if (distanceSquared > pointerLeadThreshold * pointerLeadThreshold) {
18788
+ return;
18610
18789
  }
18611
18790
  const isFreeTraceMode = state.mode === index$1.TraceMode.FreeTrace || state.mode === index$1.TraceMode.BlindFreeTrace;
18612
18791
  const closestPoint = this.getClosestPointOnPath(currentPath, pointerPos, isFreeTraceMode ? undefined : state.lastLength);
@@ -18682,7 +18861,7 @@ const LidoTrace = class {
18682
18861
  // In normal modes, allow movement and drawing only within the general proximity threshold
18683
18862
  const BACKWARD_TOLERANCE = 20; // allow slight backward movement
18684
18863
  const MAX_FORWARD_JUMP = 80; // prevent jumping to wrong segment
18685
- const RECOVERY_FORWARD_JUMP = Math.min(320, Math.max(160, state.totalPathLength * 0.45)); // recover on long strokes without skipping short paths
18864
+ const RECOVERY_FORWARD_JUMP = Math.min(evt.pointerType === 'touch' ? 480 : 320, Math.max(evt.pointerType === 'touch' ? 220 : 160, state.totalPathLength * 0.45)); // recover on long strokes without skipping short paths
18686
18865
  const RECOVERY_END_BUFFER = Math.min(60, Math.max(24, state.totalPathLength * 0.12)); // don't let recovery auto-finish the last part
18687
18866
  const RECOVERY_POINTER_MOVE_THRESHOLD = 8; // only recover after a meaningful drag, not during slow tracing
18688
18867
  let guidedClosestPoint = closestPoint;
@@ -18836,9 +19015,9 @@ const LidoTrace = class {
18836
19015
  index$1.triggerNextContainer();
18837
19016
  }
18838
19017
  // Get the pointer position relative to the SVG
18839
- getPointerPosition(evt, svg) {
19018
+ getPointerPosition(evt, svg, cachedTransform, cachedRect) {
18840
19019
  var _a;
18841
- const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg);
19020
+ const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect);
18842
19021
  if (viewBoxPoint)
18843
19022
  return viewBoxPoint;
18844
19023
  const svgPoint = svg.createSVGPoint();
@@ -18847,13 +19026,13 @@ const LidoTrace = class {
18847
19026
  const ctm = (_a = svg.getScreenCTM()) === null || _a === void 0 ? void 0 : _a.inverse();
18848
19027
  return ctm ? svgPoint.matrixTransform(ctm) : { x: evt.clientX, y: evt.clientY };
18849
19028
  }
18850
- getPointerPositionFromViewBox(evt, svg) {
18851
- const rect = svg.getBoundingClientRect();
19029
+ getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect) {
19030
+ const rect = cachedRect || svg.getBoundingClientRect();
18852
19031
  const viewBox = svg.viewBox.baseVal;
18853
19032
  if (!rect.width || !rect.height || !viewBox.width || !viewBox.height) {
18854
19033
  return null;
18855
19034
  }
18856
- const { offsetX, offsetY, scaleX, scaleY } = this.getSvgViewBoxTransform(svg, rect);
19035
+ const { offsetX, offsetY, scaleX, scaleY } = cachedTransform || this.getSvgViewBoxTransform(svg, rect);
18857
19036
  return {
18858
19037
  x: viewBox.x + (evt.clientX - rect.left - offsetX) / scaleX,
18859
19038
  y: viewBox.y + (evt.clientY - rect.top - offsetY) / scaleY,
@@ -18913,6 +19092,40 @@ const LidoTrace = class {
18913
19092
  getClosestPointOnPath(pathNode, point, lastLength) {
18914
19093
  var _a;
18915
19094
  const pathLength = (_a = pathNode._lidoTraceLength) !== null && _a !== void 0 ? _a : pathNode.getTotalLength();
19095
+ const samples = pathNode._lidoTraceSamples;
19096
+ const sampleStep = pathNode._lidoTraceSampleStep;
19097
+ if ((samples === null || samples === void 0 ? void 0 : samples.length) && sampleStep) {
19098
+ const searchWindow = lastLength === undefined ? pathLength : 150;
19099
+ const searchStart = lastLength === undefined ? 0 : Math.max(0, lastLength - searchWindow);
19100
+ const searchEnd = lastLength === undefined ? pathLength : Math.min(pathLength, lastLength + searchWindow);
19101
+ let nearest = samples[Math.max(0, Math.min(samples.length - 1, Math.round((lastLength || 0) / sampleStep)))];
19102
+ let nearestDistance = Infinity;
19103
+ for (const sample of samples) {
19104
+ if (sample.length < searchStart || sample.length > searchEnd)
19105
+ continue;
19106
+ const distance = this.getDistanceSquared(point, sample);
19107
+ if (distance < nearestDistance) {
19108
+ nearestDistance = distance;
19109
+ nearest = sample;
19110
+ }
19111
+ }
19112
+ // Refine only around the cached winner. This keeps the path accurate
19113
+ // while reducing hot-path geometry calls from roughly 50 to a handful.
19114
+ const refinementStep = 6;
19115
+ const refineStart = Math.max(searchStart, nearest.length - sampleStep);
19116
+ const refineEnd = Math.min(searchEnd, nearest.length + sampleStep);
19117
+ let closestPoint = Object.assign({}, nearest);
19118
+ let minDistanceSquared = nearestDistance;
19119
+ for (let length = refineStart; length <= refineEnd; length += refinementStep) {
19120
+ const candidate = pathNode.getPointAtLength(length);
19121
+ const distance = this.getDistanceSquared(point, candidate);
19122
+ if (distance < minDistanceSquared) {
19123
+ minDistanceSquared = distance;
19124
+ closestPoint = { x: candidate.x, y: candidate.y, length };
19125
+ }
19126
+ }
19127
+ return closestPoint;
19128
+ }
18916
19129
  let closestPoint = { x: 0, y: 0, length: 0 };
18917
19130
  let minDistanceSquared = Infinity;
18918
19131
  const coarseStep = 40;
@@ -19105,7 +19318,7 @@ const LidoTrace = class {
19105
19318
  };
19106
19319
  }
19107
19320
  render() {
19108
- return (index.h(index.Host, { key: '2f62ab117a595ba9af7f926ad7240902caf7fd99', 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 }, index.h("div", { key: '5a14b9bc1ff4d71ffc740c8afaa1d07754044a9d', style: this.style, id: "lido-svgContainer" })));
19321
+ return (index.h(index.Host, { key: 'fecd265e2c8a5f7d391fe99e35739f76759da5b6', 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 }, index.h("div", { key: '677681edfa9da3e7f8bea5f79d62900322262460', style: this.style, id: "lido-svgContainer" })));
19109
19322
  }
19110
19323
  static get assetsDirs() { return ["assets"]; }
19111
19324
  get el() { return index.getElement(this); }
@@ -19191,7 +19404,7 @@ const LidoWrap = class {
19191
19404
  };
19192
19405
  }
19193
19406
  render() {
19194
- return (index.h(index.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 }, index.h("slot", { key: '081252d2c1074c0e1635b583f697d7d44aec1333' })));
19407
+ return (index.h(index.Host, { key: '8d8ea2a16213d6a54c947d2fa20dd094024d30d1', 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 }, index.h("slot", { key: 'f42ddae95ef36fe6e7a42d2ccfcb58bf09243b08' })));
19195
19408
  }
19196
19409
  get el() { return index.getElement(this); }
19197
19410
  };