lido-player 0.0.2-beta-23-dev → 0.0.2-beta-24-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 (234) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/{decode-BDs2S8om.js → decode-B7mZm_nK.js} +1 -1
  3. package/dist/cjs/{index-D5olYRJo.js → index-BCRDjbaz.js} +146 -77
  4. package/dist/cjs/{index-DnaH8sO-.js → index-DBCFoh1I.js} +1 -1
  5. package/dist/cjs/index.cjs.js +2 -2
  6. package/dist/cjs/lido-avatar_22.cjs.entry.js +198 -46
  7. package/dist/cjs/lido-player.cjs.js +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/components/avatar/lido-avatar.css +4 -4
  10. package/dist/collection/components/avatar/lido-avatar.js +9 -2
  11. package/dist/collection/components/avatar/lido-avatar.tsx +214 -207
  12. package/dist/collection/components/avatar/readme.md +49 -49
  13. package/dist/collection/components/calculator/lido-calculator.css +89 -89
  14. package/dist/collection/components/calculator/lido-calculator.js +2 -2
  15. package/dist/collection/components/canvas/lido-canvas.css +33 -33
  16. package/dist/collection/components/canvas/lido-canvas.js +1 -1
  17. package/dist/collection/components/cell/lido-cell.css +100 -100
  18. package/dist/collection/components/cell/lido-cell.js +12 -12
  19. package/dist/collection/components/column/lido-col.css +19 -19
  20. package/dist/collection/components/column/lido-col.js +6 -6
  21. package/dist/collection/components/container/lido-container.css +34 -10
  22. package/dist/collection/components/container/lido-container.js +39 -8
  23. package/dist/collection/components/flashCard/lido-flash-card.css +72 -46
  24. package/dist/collection/components/flashCard/lido-flash-card.js +128 -14
  25. package/dist/collection/components/float/lido-float.css +30 -30
  26. package/dist/collection/components/float/lido-float.js +2 -2
  27. package/dist/collection/components/home/lido-home.css +309 -309
  28. package/dist/collection/components/home/lido-home.js +5 -5
  29. package/dist/collection/components/image/lido-image.css +17 -17
  30. package/dist/collection/components/image/lido-image.js +6 -6
  31. package/dist/collection/components/keyboard/lido-keyboard.css +38 -38
  32. package/dist/collection/components/keyboard/lido-keyboard.js +3 -3
  33. package/dist/collection/components/mathMatrix/lido-math-matrix.css +56 -56
  34. package/dist/collection/components/mathMatrix/lido-math-matrix.js +1 -1
  35. package/dist/collection/components/position/lido-pos.css +16 -16
  36. package/dist/collection/components/position/lido-pos.js +2 -2
  37. package/dist/collection/components/random/lido-random.css +8 -8
  38. package/dist/collection/components/random/lido-random.js +2 -2
  39. package/dist/collection/components/root/lido-root.js +5 -5
  40. package/dist/collection/components/row/lido-row.css +10 -10
  41. package/dist/collection/components/row/lido-row.js +6 -6
  42. package/dist/collection/components/scale/assets/Shadow.svg +9 -9
  43. package/dist/collection/components/scale/lido-balance.css +174 -174
  44. package/dist/collection/components/scale/lido-balance.js +13 -13
  45. package/dist/collection/components/shape/lido-shape.css +216 -216
  46. package/dist/collection/components/shape/lido-shape.js +6 -6
  47. package/dist/collection/components/slideFill/lido-slide-fill.css +3 -3
  48. package/dist/collection/components/slideFill/lido-slide-fill.js +13 -13
  49. package/dist/collection/components/text/lido-text.css +53 -53
  50. package/dist/collection/components/text/lido-text.js +5 -5
  51. package/dist/collection/components/trace/assets/Tracing-hand.svg +8 -8
  52. package/dist/collection/components/trace/lido-trace.css +97 -97
  53. package/dist/collection/components/trace/lido-trace.js +2 -2
  54. package/dist/collection/components/wrap/lido-wrap.css +18 -18
  55. package/dist/collection/components/wrap/lido-wrap.js +6 -6
  56. package/dist/collection/css/animation.css +211 -211
  57. package/dist/collection/css/index.css +323 -323
  58. package/dist/collection/stories/Templates/Fill-Up/fill-up.stories.js +61 -61
  59. package/dist/collection/stories/Templates/LetterPairing/LetterPairing.stories.js +123 -123
  60. package/dist/collection/stories/Templates/RocketGame/rocketGame.stories.js +48 -48
  61. package/dist/collection/stories/Templates/Tag/tagGame.stories.js +39 -39
  62. package/dist/collection/stories/Templates/arrangeLetters/arrangeLetters.stories.js +44 -44
  63. package/dist/collection/stories/Templates/balancing/balancing.stories.js +35 -35
  64. package/dist/collection/stories/Templates/balloonPop/balloonPop.stories.js +38 -38
  65. package/dist/collection/stories/Templates/blender/blender.stories.js +59 -59
  66. package/dist/collection/stories/Templates/bubbleType/bubbleType.stories.js +42 -42
  67. package/dist/collection/stories/Templates/calculator/calculator.stories.js +28 -28
  68. package/dist/collection/stories/Templates/categorize/categorize.stories.js +37 -37
  69. package/dist/collection/stories/Templates/categorize2/categorize2.stories.js +67 -67
  70. package/dist/collection/stories/Templates/checker-block/checkerBlock.stories.js +29 -29
  71. package/dist/collection/stories/Templates/checkerBlock/checkerBlock.stories.js +13 -13
  72. package/dist/collection/stories/Templates/create-sentence/createSentence.stories.js +74 -74
  73. package/dist/collection/stories/Templates/dragAndDrop/drag-drop.stories.js +69 -69
  74. package/dist/collection/stories/Templates/fillAnswer/fill-answer.stories.js +43 -43
  75. package/dist/collection/stories/Templates/fillBlank/fill-blank.stories.js +282 -282
  76. package/dist/collection/stories/Templates/foodJar/food-jar.stories.js +35 -35
  77. package/dist/collection/stories/Templates/grid/grid.stories.js +118 -118
  78. package/dist/collection/stories/Templates/gridGame/grid-game.stories.js +57 -57
  79. package/dist/collection/stories/Templates/imageMatch/imageMatch.stories.js +44 -44
  80. package/dist/collection/stories/Templates/jumpSentence/jumpSentence.stories.js +41 -41
  81. package/dist/collection/stories/Templates/letterboard/letterboard.stories.js +183 -183
  82. package/dist/collection/stories/Templates/makeSentence/make-sentence.stories.js +36 -36
  83. package/dist/collection/stories/Templates/matchBox/matchBox.stories.js +69 -69
  84. package/dist/collection/stories/Templates/matchBox/matchBox2.stories.js +84 -84
  85. package/dist/collection/stories/Templates/matchingCard/matching-card.stories.js +31 -31
  86. package/dist/collection/stories/Templates/multipleOption/mcqWithQuestionImage.stories.js +112 -112
  87. package/dist/collection/stories/Templates/multipleOption/multiple-option.stories.js +47 -47
  88. package/dist/collection/stories/Templates/multiplyBeeds/multiplyBeeds.stories.js +57 -57
  89. package/dist/collection/stories/Templates/nimbleTable/nimbleTable.stories.js +53 -53
  90. package/dist/collection/stories/Templates/numberBoard/numberBoard.stories.js +46 -46
  91. package/dist/collection/stories/Templates/numberBoardTwo/numberBoardTwo.stories.js +45 -45
  92. package/dist/collection/stories/Templates/numberIdentification/numberIdentificationimageTotext.stories.js +56 -56
  93. package/dist/collection/stories/Templates/numberIdentification/numberIdentificationtextTotext.stories.js +53 -53
  94. package/dist/collection/stories/Templates/numberPair/numberPair.stories.js +127 -127
  95. package/dist/collection/stories/Templates/openwindow/openwindow.stories.js +47 -47
  96. package/dist/collection/stories/Templates/openwindow/openwindow2.stories.js +38 -38
  97. package/dist/collection/stories/Templates/order-tractor/order-tractor-ascending-order.stories.js +97 -97
  98. package/dist/collection/stories/Templates/order-tractor/order-tractor.stories.js +90 -90
  99. package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaMultiOption.stories.js +63 -63
  100. package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaSumTogether.stories.js +45 -45
  101. package/dist/collection/stories/Templates/palEgmaPatternMatching/palEgmaPatternMatching.stories.js +63 -63
  102. package/dist/collection/stories/Templates/palEgmaWordProblem/palEgmaWordProblem.stories.js +79 -79
  103. package/dist/collection/stories/Templates/palEgraInventedSpelling/pal_egra_invented_spelling_schema.stories.js +32 -32
  104. package/dist/collection/stories/Templates/palEgraMCQWithImage/palEgraMCQWithImage.stories.js +42 -42
  105. package/dist/collection/stories/Templates/palEgraOptionWithAudio/palEgraOptionWithAudio.stories.js +63 -63
  106. package/dist/collection/stories/Templates/palEgraStoryMaking/pal_egra_story_making.stories.js +44 -44
  107. package/dist/collection/stories/Templates/palEgraTemplate1/palEgraLetterIdentification.stories.js +34 -34
  108. package/dist/collection/stories/Templates/palEgraWordMatch/palEgraWordMatch.stories.js +52 -52
  109. package/dist/collection/stories/Templates/palEgra_OddOneOut/palEgra_oddOneOut.stories.js +33 -33
  110. package/dist/collection/stories/Templates/palEgra_arrange_pictures/palEgra_arrange_pictures.stories.js +40 -40
  111. package/dist/collection/stories/Templates/palEgra_build_word/palEgra_build_word.stories.js +48 -48
  112. package/dist/collection/stories/Templates/palEgra_word_formation/palEgra_WordFormation.stories.js +48 -48
  113. package/dist/collection/stories/Templates/palStorytale/palStorytale.stories.js +18 -18
  114. package/dist/collection/stories/Templates/phonic-tractor/phonic-tractor.stories.js +44 -44
  115. package/dist/collection/stories/Templates/pictureClues/pictureClues.stories.js +34 -34
  116. package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch1.stories.js +36 -36
  117. package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch2.stories.js +30 -30
  118. package/dist/collection/stories/Templates/picturemeaning/pictureMeaningCocos.stories.js +20 -20
  119. package/dist/collection/stories/Templates/puzzleGame/puzzleGame.stories.js +17 -17
  120. package/dist/collection/stories/Templates/questionBoard/questionBoard.stories.js +58 -58
  121. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracy.stories.js +50 -50
  122. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWithText.stories.js +36 -36
  123. package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWord.stories.js +43 -43
  124. package/dist/collection/stories/Templates/quizMaths/quizMaths.stories.js +631 -631
  125. package/dist/collection/stories/Templates/reorder/reorder.stories.js +63 -63
  126. package/dist/collection/stories/Templates/rowBlocks/rowBlocks.stories.js +47 -47
  127. package/dist/collection/stories/Templates/sentenceMatch/sentenceMatch.stories.js +29 -29
  128. package/dist/collection/stories/Templates/sequenceBox/sequenceBox1.stories.js +64 -64
  129. package/dist/collection/stories/Templates/sequenceBox/sequenceBox2.stories.js +62 -62
  130. package/dist/collection/stories/Templates/shapePair/shape-pair.stories.js +106 -106
  131. package/dist/collection/stories/Templates/shapeTractor/shape-tractor.stories.js +50 -50
  132. package/dist/collection/stories/Templates/spellDoor/spellDoor.stories.js +41 -41
  133. package/dist/collection/stories/Templates/storyTale/storyTale.stories.js +39 -39
  134. package/dist/collection/stories/Templates/substraction/substractionWithimg.stories.js +62 -62
  135. package/dist/collection/stories/Templates/substraction/substractionWithoutImg.stories.js +42 -42
  136. package/dist/collection/stories/Templates/sumTogether/sumTogether.stories.js +50 -50
  137. package/dist/collection/stories/Templates/tenBox/tenBox.stories.js +88 -88
  138. package/dist/collection/stories/Templates/total/total.stories.js +28 -28
  139. package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithimg.stories.js +35 -35
  140. package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithoutimg.stories.js +34 -34
  141. package/dist/collection/stories/Templates/writeCard/writeCard.stories.js +31 -31
  142. package/dist/collection/stories/Templates/writeLetter/writeLetter.stories.js +58 -58
  143. package/dist/collection/stories/Templates/writeNumber/writeNumber.stories.js +44 -44
  144. package/dist/collection/stories/Templates/writeSet/writeSet.stories.js +31 -31
  145. package/dist/collection/stories/Templates/writeWord/writeWord.stories.js +34 -34
  146. package/dist/collection/stories/components/flash-card.stories.js +48 -48
  147. package/dist/collection/stories/components/keyboard.stories.js +10 -10
  148. package/dist/collection/stories/components/slider.stories.js +4 -4
  149. package/dist/collection/stories/components/trace.stories.js +5 -5
  150. package/dist/collection/utils/audioPlayer.js +7 -4
  151. package/dist/collection/utils/utils.js +70 -14
  152. package/dist/collection/utils/utilsHandlers/clickHandler.js +4 -3
  153. package/dist/collection/utils/utilsHandlers/dragDropHandler.js +8 -8
  154. package/dist/collection/utils/utilsHandlers/highlightHandler.js +56 -56
  155. package/dist/collection/utils/utilsHandlers/slideHandler.js +17 -8
  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-B-mIxynb.js +1 -0
  180. package/dist/components/{p-DdQ1eqJr.js → p-B8nzzM8c.js} +1 -1
  181. package/dist/components/{p-D2GhaM-T.js → p-Bv1hunWk.js} +1 -1
  182. package/dist/components/{p-DDS30M3y.js → p-C-pHQRbp.js} +1 -1
  183. package/dist/components/{p-CPYnt0P-.js → p-C5WmmkI6.js} +1 -1
  184. package/dist/components/{p-useuhkjH.js → p-C70ykycD.js} +1 -1
  185. package/dist/components/{p-CFzvgrMa.js → p-CFPSty2U.js} +1 -1
  186. package/dist/components/{p-Lg85waqZ.js → p-CFWohOId.js} +1 -1
  187. package/dist/components/{p-BfwUqpXc.js → p-CTlcpv4a.js} +1 -1
  188. package/dist/components/{p-CyGxEcn7.js → p-CXHPZN3m.js} +1 -1
  189. package/dist/components/{p-Bw-OC9iR.js → p-CgsPIpg0.js} +1 -1
  190. package/dist/components/{p-ChfVUoX4.js → p-CsDu4kiC.js} +1 -1
  191. package/dist/components/{p-CwDTdXe5.js → p-DG0KR2iN.js} +1 -1
  192. package/dist/components/p-DLyacZap.js +1 -0
  193. package/dist/components/{p-BiBt9LGP.js → p-DNo3iX_r.js} +1 -1
  194. package/dist/components/p-DONbWJGn.js +1 -0
  195. package/dist/components/p-DXy70SGv.js +1 -0
  196. package/dist/components/{p-Ds-d6wd0.js → p-DfjbSSI2.js} +2 -2
  197. package/dist/components/{p-BJiyBHYT.js → p-Gwko4CTL.js} +1 -1
  198. package/dist/components/p-uuyVO2B1.js +1 -0
  199. package/dist/esm/{decode-CAwfe7ub.js → decode-CyhHNDvT.js} +1 -1
  200. package/dist/esm/{index-bo7729YG.js → index-CndbFQ5I.js} +146 -77
  201. package/dist/esm/{index-Dvjbti-h.js → index-mMpK8062.js} +1 -1
  202. package/dist/esm/index.js +2 -2
  203. package/dist/esm/lido-avatar_22.entry.js +198 -46
  204. package/dist/esm/lido-player.js +2 -2
  205. package/dist/esm/loader.js +2 -2
  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 +214 -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-77iyGppv.js +1 -0
  214. package/dist/lido-player/p-d760e67b.entry.js +12 -0
  215. package/dist/lido-player/{p-D4kAEWCU.js → p-etMb7U6W.js} +1 -1
  216. package/dist/lido-player/p-mMpK8062.js +2 -0
  217. package/dist/lido-player/readme.md +49 -49
  218. package/dist/types/components/container/lido-container.d.ts +4 -0
  219. package/dist/types/components/flashCard/lido-flash-card.d.ts +13 -0
  220. package/dist/types/types/json.d.ts +3 -3
  221. package/dist/types/utils/audioPlayer.d.ts +2 -1
  222. package/dist/types/utils/utils.d.ts +5 -1
  223. package/dist/types/utils/utilsHandlers/clickHandler.d.ts +1 -0
  224. package/dist/types/utils/utilsHandlers/slideHandler.d.ts +1 -1
  225. package/package.json +73 -74
  226. package/readme.md +113 -113
  227. package/dist/components/p-D0cGjo5e.js +0 -1
  228. package/dist/components/p-DP6jQ5ML.js +0 -1
  229. package/dist/components/p-DZRNZCPt.js +0 -1
  230. package/dist/components/p-DbR5sNOj.js +0 -1
  231. package/dist/components/p-leIEepjl.js +0 -1
  232. package/dist/lido-player/p-461a3d23.entry.js +0 -12
  233. package/dist/lido-player/p-Dvjbti-h.js +0 -2
  234. package/dist/lido-player/p-VRJMO_sg.js +0 -1
@@ -78,7 +78,7 @@ export class LidoCol {
78
78
  };
79
79
  }
80
80
  render() {
81
- return (h(Host, { key: '334206d6054442fec787cfb479a68ae164404730', id: this.id, class: "lido-col", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '590cd219bc5a02e6b96eafe108fb8b310daf941d' })));
81
+ return (h(Host, { key: 'b2ecb19a78feed7275d9e996255db4144d5e0153', id: this.id, class: "lido-col", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '2d285d2c1557647e05abb470490da6c7c735a39d' })));
82
82
  }
83
83
  static get is() { return "lido-col"; }
84
84
  static get originalStyleUrls() {
@@ -467,7 +467,7 @@ export class LidoCol {
467
467
  "optional": false,
468
468
  "docs": {
469
469
  "tags": [],
470
- "text": "The number of child elements that should be displayed inside the row.\r\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
470
+ "text": "The number of child elements that should be displayed inside the row.\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
471
471
  },
472
472
  "getter": false,
473
473
  "setter": false,
@@ -486,7 +486,7 @@ export class LidoCol {
486
486
  "optional": false,
487
487
  "docs": {
488
488
  "tags": [],
489
- "text": "The minimum number of child elements that must be displayed inside the row.\r\nIf `childElementsLength` is less than this value, additional elements may be shown to meet this minimum."
489
+ "text": "The minimum number of child elements that must be displayed inside the row.\nIf `childElementsLength` is less than this value, additional elements may be shown to meet this minimum."
490
490
  },
491
491
  "getter": false,
492
492
  "setter": false,
@@ -505,7 +505,7 @@ export class LidoCol {
505
505
  "optional": false,
506
506
  "docs": {
507
507
  "tags": [],
508
- "text": "The maximum number of child elements that can be displayed inside the row.\r\nIf `childElementsLength` exceeds this value, excess elements will be hidden."
508
+ "text": "The maximum number of child elements that can be displayed inside the row.\nIf `childElementsLength` exceeds this value, excess elements will be hidden."
509
509
  },
510
510
  "getter": false,
511
511
  "setter": false,
@@ -562,7 +562,7 @@ export class LidoCol {
562
562
  "optional": true,
563
563
  "docs": {
564
564
  "tags": [],
565
- "text": "Applies a CSS box-shadow to the component.\r\nAccepts any valid CSS box-shadow value.\r\nExample: \"0px 4px 10px rgba(0, 0, 0, 0.1)\""
565
+ "text": "Applies a CSS box-shadow to the component.\nAccepts any valid CSS box-shadow value.\nExample: \"0px 4px 10px rgba(0, 0, 0, 0.1)\""
566
566
  },
567
567
  "getter": false,
568
568
  "setter": false,
@@ -621,7 +621,7 @@ export class LidoCol {
621
621
  "optional": false,
622
622
  "docs": {
623
623
  "tags": [],
624
- "text": "CSS margin value applied to each child element inside the container.\r\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
624
+ "text": "CSS margin value applied to each child element inside the container.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
625
625
  },
626
626
  "getter": false,
627
627
  "setter": false,
@@ -1,10 +1,34 @@
1
- .lido-container {
2
- position: relative;
3
- height: 100%;
4
- width: 100%;
5
- background-color: var(--bgColor, transparent);
6
- display: flex;
7
- flex-direction: column;
8
- justify-content: center;
9
- align-items: center;
10
- }
1
+ .lido-container {
2
+ position: relative;
3
+ height: 100%;
4
+ width: 100%;
5
+ background-color: var(--bgColor, transparent);
6
+ display: flex;
7
+ flex-direction: column;
8
+ justify-content: center;
9
+ align-items: center;
10
+ }
11
+
12
+ /* Reuse the Flash Card attention treatment for generated Write Card arrows. */
13
+ lido-container[template-id="writeCard"] #arrow {
14
+ box-sizing: border-box;
15
+ border: 10px solid transparent;
16
+ box-shadow: 0px 8px 0px 0px #8b310f;
17
+ animation: flash-card-next-attention 1.4s ease-in-out infinite;
18
+ }
19
+
20
+ lido-container[template-id="writeCard"] #arrow.fading {
21
+ opacity: 1 !important;
22
+ }
23
+
24
+ @keyframes flash-card-next-attention {
25
+ 0%,
26
+ 100% {
27
+ border-color: #ffc34d;
28
+ filter: drop-shadow(0 0 0 rgba(255, 195, 77, 0));
29
+ }
30
+ 50% {
31
+ border-color: #fff1a8;
32
+ filter: drop-shadow(0 0 10px rgba(255, 195, 77, 0.95));
33
+ }
34
+ }
@@ -169,6 +169,32 @@ export class LidoContainer {
169
169
  this.speakFlag = false;
170
170
  this.handleWindowResize = () => this.scaleContainer(this.el);
171
171
  this.handleWindowLoad = () => this.scaleContainer(this.el);
172
+ this.isWriteCardContainer = () => this.templateId === 'writeCard';
173
+ this.syncWriteCardArrowHighlight = () => {
174
+ if (!this.isWriteCardContainer())
175
+ return;
176
+ const arrow = this.el.querySelector('#arrow');
177
+ if (!arrow)
178
+ return;
179
+ const style = window.getComputedStyle(arrow);
180
+ const hidden = style.display === 'none' ||
181
+ style.visibility === 'hidden' ||
182
+ style.opacity === '0';
183
+ arrow.classList.toggle('flash-card-next-glowing', !hidden);
184
+ };
185
+ this.observeWriteCardArrow = () => {
186
+ var _a;
187
+ if (!this.isWriteCardContainer())
188
+ return;
189
+ (_a = this.writeCardArrowObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
190
+ this.writeCardArrowObserver = new MutationObserver(() => this.syncWriteCardArrowHighlight());
191
+ this.writeCardArrowObserver.observe(this.el, {
192
+ subtree: true,
193
+ attributes: true,
194
+ attributeFilter: ['class', 'style', 'visible'],
195
+ });
196
+ this.syncWriteCardArrowHighlight();
197
+ };
172
198
  }
173
199
  cleanupInteractionHandlers() {
174
200
  this.el.querySelectorAll('[type="drag"], [type="slide"], [move="true"]').forEach(element => {
@@ -414,10 +440,12 @@ export class LidoContainer {
414
440
  setTimeout(() => {
415
441
  this.el.setAttribute("onEntry", `${this.templateId}.speak='${!this.speakFlag}'; ` + this.el.getAttribute("onEntry"));
416
442
  initEventsForElement(this.el, this.type);
443
+ this.observeWriteCardArrow();
417
444
  }, 100);
418
445
  }
419
446
  else {
420
447
  initEventsForElement(this.el, this.type);
448
+ this.observeWriteCardArrow();
421
449
  }
422
450
  if (this.customStyle) {
423
451
  const styleElement = document.createElement('style');
@@ -433,9 +461,12 @@ export class LidoContainer {
433
461
  Timer.getI().start();
434
462
  }
435
463
  disconnectedCallback() {
464
+ var _a;
436
465
  this.cleanupInteractionHandlers();
437
466
  window.removeEventListener('resize', this.handleWindowResize);
438
467
  window.removeEventListener('load', this.handleWindowLoad);
468
+ (_a = this.writeCardArrowObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
469
+ this.writeCardArrowObserver = undefined;
439
470
  document.body.style.backgroundColor = '';
440
471
  document.body.style.backgroundImage = '';
441
472
  resetFloatState();
@@ -452,7 +483,7 @@ export class LidoContainer {
452
483
  margin: this.margin,
453
484
  userSelect: 'none', // Prevent any field selection
454
485
  };
455
- return (h(Host, { key: '1862e30fedda58726edc107f81fae1f63e96d009', id: "lido-container", Lang: this.Lang, "tab-index": 0, class: "lido-container", objective: this.objective, baseUrl: this.baseUrl, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, onTouch: this.onTouch, onInCorrect: this.onInCorrect, onCorrect: this.onCorrect, onEntry: this.onEntry, "show-check": `${this.showCheck}`, "is-continue-on-correct": `${this.isContinueOnCorrect}`, "is-allow-only-correct": `${this.isAllowOnlyCorrect}`, canplay: `${this.canplay}`, appendToDropOnCompletion: `${this.appendToDropOnCompletion}`, "show-prev-button": `${this.showPrevButton}`, "show-next-button": `${this.showNextButton}`, "show-drop-border": `${this.showDropBorder}`, "bg-image": this.bgImage, "exit-button-url": this.exitButtonUrl, "prev-button-url": this.prevButtonUrl, "next-button-url": this.nextButtonUrl, "speaker-button-url": this.speakerButtonUrl, "disable-speak": `${this.disableSpeak}`, "template-id": this.templateId, audio: this.audio, "highlight-word-by-word": `${this.highlightWordByWord}` }, h("lido-text", { key: '86fd014a61ba9cba6d67e2d921b2d8a8a289dbc7', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: 'c3128ea2164892757b32cb076d717436947f9a4c' })));
486
+ return (h(Host, { key: '403faa36329230b28c8c0e3a627c20b48fc1a9d0', id: "lido-container", Lang: this.Lang, "tab-index": 0, class: "lido-container", objective: this.objective, baseUrl: this.baseUrl, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, onTouch: this.onTouch, onInCorrect: this.onInCorrect, onCorrect: this.onCorrect, onEntry: this.onEntry, "show-check": `${this.showCheck}`, "is-continue-on-correct": `${this.isContinueOnCorrect}`, "is-allow-only-correct": `${this.isAllowOnlyCorrect}`, canplay: `${this.canplay}`, appendToDropOnCompletion: `${this.appendToDropOnCompletion}`, "show-prev-button": `${this.showPrevButton}`, "show-next-button": `${this.showNextButton}`, "show-drop-border": `${this.showDropBorder}`, "bg-image": this.bgImage, "exit-button-url": this.exitButtonUrl, "prev-button-url": this.prevButtonUrl, "next-button-url": this.nextButtonUrl, "speaker-button-url": this.speakerButtonUrl, "disable-speak": `${this.disableSpeak}`, "template-id": this.templateId, audio: this.audio, "highlight-word-by-word": `${this.highlightWordByWord}` }, h("lido-text", { key: '683740c0a8495c875c988b41b8281a362f7713b8', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: '743c0652d70b294513dcdb3cfdd9674b694cd2e8' })));
456
487
  }
457
488
  static get is() { return "lido-container"; }
458
489
  static get originalStyleUrls() {
@@ -579,7 +610,7 @@ export class LidoContainer {
579
610
  "optional": false,
580
611
  "docs": {
581
612
  "tags": [],
582
- "text": "Custom CSS styles to be applied to the container.\r\nAllows for dynamic styling through inline styles or class names."
613
+ "text": "Custom CSS styles to be applied to the container.\nAllows for dynamic styling through inline styles or class names."
583
614
  },
584
615
  "getter": false,
585
616
  "setter": false,
@@ -1019,7 +1050,7 @@ export class LidoContainer {
1019
1050
  "optional": false,
1020
1051
  "docs": {
1021
1052
  "tags": [],
1022
- "text": "Determines if the activity should proceed automatically only after a correct response.\r\nAcceptable values: \"true\" or \"false\". Defaults to \"false\"."
1053
+ "text": "Determines if the activity should proceed automatically only after a correct response.\nAcceptable values: \"true\" or \"false\". Defaults to \"false\"."
1023
1054
  },
1024
1055
  "getter": false,
1025
1056
  "setter": false,
@@ -1059,7 +1090,7 @@ export class LidoContainer {
1059
1090
  "optional": false,
1060
1091
  "docs": {
1061
1092
  "tags": [],
1062
- "text": "CSS margin value applied to each child element inside the container.\r\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
1093
+ "text": "CSS margin value applied to each child element inside the container.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
1063
1094
  },
1064
1095
  "getter": false,
1065
1096
  "setter": false,
@@ -1079,7 +1110,7 @@ export class LidoContainer {
1079
1110
  "optional": false,
1080
1111
  "docs": {
1081
1112
  "tags": [],
1082
- "text": "Custom URL for the Exit button icon.\r\nFalls back to the default icon if not provided or invalid."
1113
+ "text": "Custom URL for the Exit button icon.\nFalls back to the default icon if not provided or invalid."
1083
1114
  },
1084
1115
  "getter": false,
1085
1116
  "setter": false,
@@ -1098,7 +1129,7 @@ export class LidoContainer {
1098
1129
  "optional": false,
1099
1130
  "docs": {
1100
1131
  "tags": [],
1101
- "text": "Custom URL for the Previous button icon.\r\nFalls back to the default icon if not provided or invalid."
1132
+ "text": "Custom URL for the Previous button icon.\nFalls back to the default icon if not provided or invalid."
1102
1133
  },
1103
1134
  "getter": false,
1104
1135
  "setter": false,
@@ -1117,7 +1148,7 @@ export class LidoContainer {
1117
1148
  "optional": false,
1118
1149
  "docs": {
1119
1150
  "tags": [],
1120
- "text": "Custom URL for the Next button icon.\r\nFalls back to the default icon if not provided or invalid."
1151
+ "text": "Custom URL for the Next button icon.\nFalls back to the default icon if not provided or invalid."
1121
1152
  },
1122
1153
  "getter": false,
1123
1154
  "setter": false,
@@ -1136,7 +1167,7 @@ export class LidoContainer {
1136
1167
  "optional": false,
1137
1168
  "docs": {
1138
1169
  "tags": [],
1139
- "text": "Custom URL for the Speaker button icon.\r\nFalls back to the default icon if not provided or invalid."
1170
+ "text": "Custom URL for the Speaker button icon.\nFalls back to the default icon if not provided or invalid."
1140
1171
  },
1141
1172
  "getter": false,
1142
1173
  "setter": false,
@@ -1,46 +1,72 @@
1
-
2
-
3
- .card {
4
- position: relative;
5
- width: 100%;
6
- height: 100%;
7
- transform-style: preserve-3d;
8
- transition: transform 0.6s ease;
9
- cursor: pointer;
10
- }
11
-
12
- .card.flipped {
13
- transform: rotateY(180deg);
14
- }
15
-
16
- .card-face {
17
- position: absolute;
18
- width: 100%;
19
- height: 100%;
20
- backface-visibility: hidden;
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- }
25
-
26
- .card-back {
27
- transform: rotateY(180deg);
28
- }
29
-
30
- /* Flash Card's local next button is positioned against the 1600x900 Lido
31
- canvas, rather than against the viewport or the global navigation bar. */
32
- lido-container[template-id="flashcardtemplate"] #arrow {
33
- position: absolute !important;
34
- left: auto !important;
35
- top: 50% !important;
36
- right: 13.3% !important;
37
- transform: translateY(-50%);
38
- z-index: 4 !important;
39
- overflow: visible;
40
- }
41
-
42
- @media (orientation: portrait) {
43
- lido-container[template-id="flashcardtemplate"] #arrow {
44
- right: -4.3% !important;
45
- }
46
- }
1
+
2
+
3
+ .card {
4
+ position: relative;
5
+ width: 100%;
6
+ height: 100%;
7
+ transform-style: preserve-3d;
8
+ transition: transform 0.6s ease;
9
+ cursor: pointer;
10
+ }
11
+
12
+ .card.flipped {
13
+ transform: rotateY(180deg);
14
+ }
15
+
16
+ .card-face {
17
+ position: absolute;
18
+ width: 100%;
19
+ height: 100%;
20
+ backface-visibility: hidden;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ }
25
+
26
+ .card-back {
27
+ transform: rotateY(180deg);
28
+ }
29
+
30
+ /* Flash Card's local next button is positioned against the 1600x900 Lido
31
+ canvas, rather than against the viewport or the global navigation bar. */
32
+ lido-container[template-id="flashcardtemplate"] #arrow {
33
+ position: absolute !important;
34
+ left: auto !important;
35
+ top: 50% !important;
36
+ right: 13.3% !important;
37
+ transform: translateY(-50%);
38
+ z-index: 4 !important;
39
+ overflow: visible;
40
+ box-sizing: border-box;
41
+ border: 10px solid transparent;
42
+ box-shadow: 0px 8px 0px 0px #8b310f !important;
43
+ }
44
+
45
+ lido-container[template-id="flashcardtemplate"] #arrow.flash-card-next-glowing {
46
+ animation: flash-card-next-attention 1.4s ease-in-out infinite;
47
+ }
48
+
49
+ @keyframes flash-card-next-attention {
50
+ 0%,
51
+ 100% {
52
+ border-color: #ffc34d;
53
+ filter: drop-shadow(0 0 0 rgba(255, 195, 77, 0));
54
+ }
55
+ 50% {
56
+ border-color: #fff1a8;
57
+ filter: drop-shadow(0 0 10px rgba(255, 195, 77, 0.95));
58
+ }
59
+ }
60
+
61
+ /* Match the shared top Next arrow's raised press behavior without changing
62
+ the Flash Card arrow's existing size or right-side positioning. */
63
+ lido-container[template-id="flashcardtemplate"] #arrow:active {
64
+ transform: translateY(calc(-50% + 8px)) !important;
65
+ box-shadow: 0px 0px 0px 0px !important;
66
+ }
67
+
68
+ @media (orientation: portrait) {
69
+ lido-container[template-id="flashcardtemplate"] #arrow {
70
+ right: -4.3% !important;
71
+ }
72
+ }
@@ -84,6 +84,8 @@ export class LidoFlash {
84
84
  */
85
85
  this.flipped = false;
86
86
  this.autoFlipAfter = 4500;
87
+ this.narrationTarget = null;
88
+ this.narrationHandled = false;
87
89
  this.instructionDone = false;
88
90
  this.instructionStarted = false;
89
91
  this.onAudioStarted = (event) => {
@@ -91,13 +93,37 @@ export class LidoFlash {
91
93
  const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
92
94
  if (target === this.instructionText())
93
95
  this.instructionStarted = true;
96
+ if (target && target === this.narrationTarget && !this.narrationHandled) {
97
+ if (this.narrationGraceTimer)
98
+ window.clearTimeout(this.narrationGraceTimer);
99
+ this.narrationGraceTimer = undefined;
100
+ }
101
+ };
102
+ this.onAudioPlaying = (event) => {
103
+ const detail = event.detail;
104
+ const target = detail === null || detail === void 0 ? void 0 : detail.target;
105
+ if ((target === null || target === void 0 ? void 0 : target.id) !== 'lido-avatar')
106
+ return;
107
+ if (detail.playbackContext !== this.goodJobPlaybackContext)
108
+ return;
109
+ const arrow = this.nextArrow();
110
+ if (!arrow || !this.flipped)
111
+ return;
112
+ this.goodJobPlaybackId = detail.playbackId;
113
+ arrow.classList.add('flash-card-next-glowing');
94
114
  };
95
115
  this.onAudioEnded = (event) => {
96
- var _a;
116
+ var _a, _b, _c;
97
117
  const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
98
118
  const instruction = this.instructionText();
99
119
  if (!target || (target !== instruction && target.id !== 'lido-avatar' && !this.el.contains(target)))
100
120
  return;
121
+ if (target === this.narrationTarget && !this.narrationHandled) {
122
+ this.finishNarration(target);
123
+ return;
124
+ }
125
+ if (this.narrationHandled && target === this.narrationTarget)
126
+ return;
101
127
  if (target === this.instructionText()) {
102
128
  this.instructionDone = true;
103
129
  this.frontStartTimer = window.setTimeout(() => {
@@ -119,6 +145,11 @@ export class LidoFlash {
119
145
  this.showArrow();
120
146
  }
121
147
  else if (target.id === 'lido-avatar') {
148
+ const playbackId = (_b = event.detail) === null || _b === void 0 ? void 0 : _b.playbackId;
149
+ const playbackContext = (_c = event.detail) === null || _c === void 0 ? void 0 : _c.playbackContext;
150
+ if (playbackContext !== this.goodJobPlaybackContext || playbackId !== this.goodJobPlaybackId)
151
+ return;
152
+ this.goodJobPlaybackId = undefined;
122
153
  executeActions("this.avatarAnimate='Idle'", target);
123
154
  }
124
155
  };
@@ -158,13 +189,15 @@ export class LidoFlash {
158
189
  if (this.autoFlipTimer)
159
190
  window.clearTimeout(this.autoFlipTimer);
160
191
  AudioPlayer.getI().stop();
192
+ this.clearNarrationTimers();
161
193
  const goingBack = !this.flipped;
162
194
  this.flipped = !this.flipped;
195
+ this.stopGoodJobGlow();
163
196
  this.setArrowVisible(false);
164
197
  if (goingBack) {
165
198
  const text = this.backText();
166
199
  if (text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
167
- executeActions("this.speak='true'", text);
200
+ this.startNarration(text);
168
201
  else
169
202
  this.showArrow();
170
203
  }
@@ -179,37 +212,106 @@ export class LidoFlash {
179
212
  };
180
213
  this.frontText = () => this.el.querySelector('.card-front lido-text');
181
214
  this.backText = () => this.el.querySelector('.card-back lido-text');
182
- this.speakFront = () => {
215
+ this.nextArrow = () => { var _a; return (_a = this.el.closest('lido-container')) === null || _a === void 0 ? void 0 : _a.querySelector('#arrow'); };
216
+ this.stopGoodJobGlow = () => {
183
217
  var _a;
218
+ this.goodJobPlaybackId = undefined;
219
+ this.goodJobPlaybackContext = undefined;
220
+ (_a = this.nextArrow()) === null || _a === void 0 ? void 0 : _a.classList.remove('flash-card-next-glowing');
221
+ };
222
+ this.speakFront = () => {
223
+ var _a, _b;
184
224
  const text = this.frontText();
185
225
  if (this.instructionDone && !this.flipped && text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
186
- executeActions("this.speak='true'", text);
226
+ this.startNarration(text);
227
+ }
228
+ else if (this.instructionDone && !this.flipped && (!text || !((_b = text.textContent) === null || _b === void 0 ? void 0 : _b.trim()))) {
229
+ if (this.autoFlipTimer)
230
+ window.clearTimeout(this.autoFlipTimer);
231
+ this.autoFlipTimer = window.setTimeout(() => {
232
+ if (!this.flipped)
233
+ this.handleFlip();
234
+ }, this.autoFlipAfter);
187
235
  }
188
236
  };
237
+ this.clearNarrationTimers = () => {
238
+ if (this.narrationGraceTimer)
239
+ window.clearTimeout(this.narrationGraceTimer);
240
+ this.narrationGraceTimer = undefined;
241
+ this.narrationTarget = null;
242
+ this.narrationHandled = false;
243
+ };
244
+ this.continueAfterNarration = (target) => {
245
+ if (target === this.instructionText()) {
246
+ this.instructionDone = true;
247
+ this.frontStartTimer = window.setTimeout(() => this.speakFront(), 1200);
248
+ }
249
+ else if (target === this.frontText()) {
250
+ if (this.flipped)
251
+ return;
252
+ if (this.autoFlipTimer)
253
+ window.clearTimeout(this.autoFlipTimer);
254
+ this.autoFlipTimer = window.setTimeout(() => {
255
+ if (!this.flipped)
256
+ this.handleFlip();
257
+ }, this.autoFlipAfter);
258
+ }
259
+ else if (target === this.backText()) {
260
+ if (this.flipped)
261
+ this.showArrow();
262
+ }
263
+ };
264
+ this.finishNarration = (target) => {
265
+ if (target !== this.narrationTarget || this.narrationHandled)
266
+ return;
267
+ this.narrationHandled = true;
268
+ if (this.narrationGraceTimer)
269
+ window.clearTimeout(this.narrationGraceTimer);
270
+ this.narrationGraceTimer = undefined;
271
+ this.continueAfterNarration(target);
272
+ };
273
+ this.startNarration = (target) => {
274
+ this.clearNarrationTimers();
275
+ this.narrationTarget = target;
276
+ this.narrationGraceTimer = window.setTimeout(() => {
277
+ if (!this.narrationHandled)
278
+ this.finishNarration(target);
279
+ }, LidoFlash.narrationStartGrace);
280
+ executeActions("this.speak='true'", target);
281
+ };
189
282
  this.showArrow = () => {
190
283
  if (!this.flipped)
191
284
  return;
192
- const arrow = document.getElementById('arrow');
285
+ const container = this.el.closest('lido-container');
286
+ if ((container === null || container === void 0 ? void 0 : container.getAttribute('template-id')) !== 'flashcardtemplate')
287
+ return;
288
+ const arrow = this.nextArrow();
193
289
  if (!arrow)
194
290
  return;
195
291
  // Existing ZIPs may not have the newer template onTouch action. Reuse
196
292
  // the same direct nextBtn action as the shared home arrow for them.
197
293
  if (!arrow.getAttribute('onTouch'))
198
294
  arrow.setAttribute('onTouch', "this.nextBtn='true';");
199
- const mascot = document.getElementById('lido-avatar');
295
+ const mascot = container.querySelector('#lido-avatar');
200
296
  const scaffoldAudio = arrow.getAttribute('audio');
201
297
  if (mascot && scaffoldAudio) {
202
298
  mascot.setAttribute('audio', scaffoldAudio);
203
- arrow.removeAttribute('audio');
204
299
  }
205
300
  this.setArrowVisible(true);
301
+ // Keep the next action highlighted after mascot audio ends.
302
+ arrow.classList.add('flash-card-next-glowing');
206
303
  if (mascot) {
304
+ this.goodJobPlaybackContext = {};
305
+ this.goodJobPlaybackId = undefined;
207
306
  executeActions("this.avatarAnimate='Idle speak'", mascot);
208
- AudioPlayer.getI().play(mascot, true);
307
+ AudioPlayer.getI().play(mascot, true, this.goodJobPlaybackContext);
209
308
  }
210
309
  };
211
310
  this.setArrowVisible = (visible) => {
212
- const arrow = document.getElementById('arrow');
311
+ const container = this.el.closest('lido-container');
312
+ if ((container === null || container === void 0 ? void 0 : container.getAttribute('template-id')) !== 'flashcardtemplate')
313
+ return;
314
+ const arrow = container.querySelector('#arrow');
213
315
  if (!arrow)
214
316
  return;
215
317
  arrow.visible = visible;
@@ -220,6 +322,7 @@ export class LidoFlash {
220
322
  arrow.style.display = visible ? 'block' : 'none';
221
323
  arrow.style.visibility = visible ? 'visible' : 'hidden';
222
324
  arrow.style.opacity = visible ? '1' : '0';
325
+ arrow.style.pointerEvents = visible ? 'auto' : 'none';
223
326
  const arrowImage = arrow.querySelector('lido-image');
224
327
  if (arrowImage) {
225
328
  arrowImage.style.display = visible ? 'flex' : 'none';
@@ -242,17 +345,20 @@ export class LidoFlash {
242
345
  window.addEventListener('load', this.updateStyles);
243
346
  }
244
347
  componentDidLoad() {
348
+ var _a;
245
349
  setVisibilityWithDelay(this.el, this.delayVisible);
246
350
  initEventsForElement(this.el, this.type);
247
351
  window.addEventListener('lidoAudioStarted', this.onAudioStarted);
352
+ window.addEventListener('lidoAudioPlaying', this.onAudioPlaying);
248
353
  window.addEventListener('lidoAudioEnded', this.onAudioEnded);
249
354
  const container = this.el.closest('lido-container');
250
355
  if ((container === null || container === void 0 ? void 0 : container.getAttribute('template-id')) === 'flashcardtemplate') {
356
+ (_a = container.querySelector('#lido-avatar')) === null || _a === void 0 ? void 0 : _a.setAttribute('disable-speak', 'true');
251
357
  this.instructionStartTimer = window.setTimeout(() => {
252
358
  if (!this.instructionStarted && !this.instructionDone) {
253
359
  const instruction = this.instructionText();
254
360
  if (instruction)
255
- executeActions("this.speak='true';", instruction);
361
+ this.startNarration(instruction);
256
362
  }
257
363
  }, 150);
258
364
  }
@@ -260,6 +366,7 @@ export class LidoFlash {
260
366
  }
261
367
  disconnectedCallback() {
262
368
  window.removeEventListener('lidoAudioEnded', this.onAudioEnded);
369
+ window.removeEventListener('lidoAudioPlaying', this.onAudioPlaying);
263
370
  window.removeEventListener('lidoAudioStarted', this.onAudioStarted);
264
371
  if (this.autoFlipTimer)
265
372
  window.clearTimeout(this.autoFlipTimer);
@@ -267,12 +374,18 @@ export class LidoFlash {
267
374
  window.clearTimeout(this.instructionStartTimer);
268
375
  if (this.frontStartTimer)
269
376
  window.clearTimeout(this.frontStartTimer);
377
+ this.clearNarrationTimers();
270
378
  window.removeEventListener('resize', this.updateStyles);
271
379
  window.removeEventListener('load', this.updateStyles);
272
380
  }
273
381
  /* ---------- Render ---------- */
274
382
  render() {
275
- return (h(Host, { key: '6650cc9f75b42c06eacbad9c56112fd343b8d02c', value: this.value, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, type: this.type, onClick: this.handleFlip, "disable-speak": this.disableSpeak }, h("div", { key: 'e680750d80c7b7b44149d11940059114a4293b3d', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: '0ab8261e7aa931809add9cf1677f8cb594f990d6', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: '3cf08684c987fcca398f1f491f254f80c7cff518', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
383
+ return (h(Host, { key: '57b9dc5ecf618dc381a58e107fa2990b84f5517a', 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: (event) => {
384
+ var _a, _b;
385
+ if ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest) === null || _b === void 0 ? void 0 : _b.call(_a, '#lido-avatar'))
386
+ return;
387
+ this.handleFlip();
388
+ }, "disable-speak": this.disableSpeak }, h("div", { key: '3712fc66e33323bdd55e0abb747370ee461dc808', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: 'eb8af2e445393592c0e8a3e4c5934c71dcab4b4e', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: 'efa14cc7ea506714342151b12a9724bdcdb1eba8', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
276
389
  }
277
390
  static get is() { return "lido-flash-card"; }
278
391
  static get originalStyleUrls() {
@@ -639,7 +752,7 @@ export class LidoFlash {
639
752
  "optional": false,
640
753
  "docs": {
641
754
  "tags": [],
642
- "text": "The number of child elements that should be displayed inside the row.\r\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
755
+ "text": "The number of child elements that should be displayed inside the row.\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
643
756
  },
644
757
  "getter": false,
645
758
  "setter": false,
@@ -715,7 +828,7 @@ export class LidoFlash {
715
828
  "optional": false,
716
829
  "docs": {
717
830
  "tags": [],
718
- "text": "Whether the card is flipped (back side visible).\r\n`mutable` lets the component toggle itself on click;\r\n`reflect` keeps the `<lido-flash-card flipped>` attribute in sync."
831
+ "text": "Whether the card is flipped (back side visible).\n`mutable` lets the component toggle itself on click;\n`reflect` keeps the `<lido-flash-card flipped>` attribute in sync."
719
832
  },
720
833
  "getter": false,
721
834
  "setter": false,
@@ -755,7 +868,7 @@ export class LidoFlash {
755
868
  "optional": false,
756
869
  "docs": {
757
870
  "tags": [],
758
- "text": "CSS margin value applied to each child element inside the container.\r\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
871
+ "text": "CSS margin value applied to each child element inside the container.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
759
872
  },
760
873
  "getter": false,
761
874
  "setter": false,
@@ -818,3 +931,4 @@ export class LidoFlash {
818
931
  }];
819
932
  }
820
933
  }
934
+ LidoFlash.narrationStartGrace = 800;