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.
- package/LICENSE +21 -21
- package/dist/cjs/{decode-BDs2S8om.js → decode-B7mZm_nK.js} +1 -1
- package/dist/cjs/{index-D5olYRJo.js → index-BCRDjbaz.js} +146 -77
- package/dist/cjs/{index-DnaH8sO-.js → index-DBCFoh1I.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/lido-avatar_22.cjs.entry.js +198 -46
- package/dist/cjs/lido-player.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/avatar/lido-avatar.css +4 -4
- package/dist/collection/components/avatar/lido-avatar.js +9 -2
- package/dist/collection/components/avatar/lido-avatar.tsx +214 -207
- package/dist/collection/components/avatar/readme.md +49 -49
- package/dist/collection/components/calculator/lido-calculator.css +89 -89
- package/dist/collection/components/calculator/lido-calculator.js +2 -2
- package/dist/collection/components/canvas/lido-canvas.css +33 -33
- package/dist/collection/components/canvas/lido-canvas.js +1 -1
- package/dist/collection/components/cell/lido-cell.css +100 -100
- package/dist/collection/components/cell/lido-cell.js +12 -12
- package/dist/collection/components/column/lido-col.css +19 -19
- package/dist/collection/components/column/lido-col.js +6 -6
- package/dist/collection/components/container/lido-container.css +34 -10
- package/dist/collection/components/container/lido-container.js +39 -8
- package/dist/collection/components/flashCard/lido-flash-card.css +72 -46
- package/dist/collection/components/flashCard/lido-flash-card.js +128 -14
- package/dist/collection/components/float/lido-float.css +30 -30
- package/dist/collection/components/float/lido-float.js +2 -2
- package/dist/collection/components/home/lido-home.css +309 -309
- package/dist/collection/components/home/lido-home.js +5 -5
- package/dist/collection/components/image/lido-image.css +17 -17
- package/dist/collection/components/image/lido-image.js +6 -6
- package/dist/collection/components/keyboard/lido-keyboard.css +38 -38
- package/dist/collection/components/keyboard/lido-keyboard.js +3 -3
- package/dist/collection/components/mathMatrix/lido-math-matrix.css +56 -56
- package/dist/collection/components/mathMatrix/lido-math-matrix.js +1 -1
- package/dist/collection/components/position/lido-pos.css +16 -16
- package/dist/collection/components/position/lido-pos.js +2 -2
- package/dist/collection/components/random/lido-random.css +8 -8
- package/dist/collection/components/random/lido-random.js +2 -2
- package/dist/collection/components/root/lido-root.js +5 -5
- package/dist/collection/components/row/lido-row.css +10 -10
- package/dist/collection/components/row/lido-row.js +6 -6
- package/dist/collection/components/scale/assets/Shadow.svg +9 -9
- package/dist/collection/components/scale/lido-balance.css +174 -174
- package/dist/collection/components/scale/lido-balance.js +13 -13
- package/dist/collection/components/shape/lido-shape.css +216 -216
- package/dist/collection/components/shape/lido-shape.js +6 -6
- package/dist/collection/components/slideFill/lido-slide-fill.css +3 -3
- package/dist/collection/components/slideFill/lido-slide-fill.js +13 -13
- package/dist/collection/components/text/lido-text.css +53 -53
- package/dist/collection/components/text/lido-text.js +5 -5
- package/dist/collection/components/trace/assets/Tracing-hand.svg +8 -8
- package/dist/collection/components/trace/lido-trace.css +97 -97
- package/dist/collection/components/trace/lido-trace.js +2 -2
- package/dist/collection/components/wrap/lido-wrap.css +18 -18
- package/dist/collection/components/wrap/lido-wrap.js +6 -6
- package/dist/collection/css/animation.css +211 -211
- package/dist/collection/css/index.css +323 -323
- package/dist/collection/stories/Templates/Fill-Up/fill-up.stories.js +61 -61
- package/dist/collection/stories/Templates/LetterPairing/LetterPairing.stories.js +123 -123
- package/dist/collection/stories/Templates/RocketGame/rocketGame.stories.js +48 -48
- package/dist/collection/stories/Templates/Tag/tagGame.stories.js +39 -39
- package/dist/collection/stories/Templates/arrangeLetters/arrangeLetters.stories.js +44 -44
- package/dist/collection/stories/Templates/balancing/balancing.stories.js +35 -35
- package/dist/collection/stories/Templates/balloonPop/balloonPop.stories.js +38 -38
- package/dist/collection/stories/Templates/blender/blender.stories.js +59 -59
- package/dist/collection/stories/Templates/bubbleType/bubbleType.stories.js +42 -42
- package/dist/collection/stories/Templates/calculator/calculator.stories.js +28 -28
- package/dist/collection/stories/Templates/categorize/categorize.stories.js +37 -37
- package/dist/collection/stories/Templates/categorize2/categorize2.stories.js +67 -67
- package/dist/collection/stories/Templates/checker-block/checkerBlock.stories.js +29 -29
- package/dist/collection/stories/Templates/checkerBlock/checkerBlock.stories.js +13 -13
- package/dist/collection/stories/Templates/create-sentence/createSentence.stories.js +74 -74
- package/dist/collection/stories/Templates/dragAndDrop/drag-drop.stories.js +69 -69
- package/dist/collection/stories/Templates/fillAnswer/fill-answer.stories.js +43 -43
- package/dist/collection/stories/Templates/fillBlank/fill-blank.stories.js +282 -282
- package/dist/collection/stories/Templates/foodJar/food-jar.stories.js +35 -35
- package/dist/collection/stories/Templates/grid/grid.stories.js +118 -118
- package/dist/collection/stories/Templates/gridGame/grid-game.stories.js +57 -57
- package/dist/collection/stories/Templates/imageMatch/imageMatch.stories.js +44 -44
- package/dist/collection/stories/Templates/jumpSentence/jumpSentence.stories.js +41 -41
- package/dist/collection/stories/Templates/letterboard/letterboard.stories.js +183 -183
- package/dist/collection/stories/Templates/makeSentence/make-sentence.stories.js +36 -36
- package/dist/collection/stories/Templates/matchBox/matchBox.stories.js +69 -69
- package/dist/collection/stories/Templates/matchBox/matchBox2.stories.js +84 -84
- package/dist/collection/stories/Templates/matchingCard/matching-card.stories.js +31 -31
- package/dist/collection/stories/Templates/multipleOption/mcqWithQuestionImage.stories.js +112 -112
- package/dist/collection/stories/Templates/multipleOption/multiple-option.stories.js +47 -47
- package/dist/collection/stories/Templates/multiplyBeeds/multiplyBeeds.stories.js +57 -57
- package/dist/collection/stories/Templates/nimbleTable/nimbleTable.stories.js +53 -53
- package/dist/collection/stories/Templates/numberBoard/numberBoard.stories.js +46 -46
- package/dist/collection/stories/Templates/numberBoardTwo/numberBoardTwo.stories.js +45 -45
- package/dist/collection/stories/Templates/numberIdentification/numberIdentificationimageTotext.stories.js +56 -56
- package/dist/collection/stories/Templates/numberIdentification/numberIdentificationtextTotext.stories.js +53 -53
- package/dist/collection/stories/Templates/numberPair/numberPair.stories.js +127 -127
- package/dist/collection/stories/Templates/openwindow/openwindow.stories.js +47 -47
- package/dist/collection/stories/Templates/openwindow/openwindow2.stories.js +38 -38
- package/dist/collection/stories/Templates/order-tractor/order-tractor-ascending-order.stories.js +97 -97
- package/dist/collection/stories/Templates/order-tractor/order-tractor.stories.js +90 -90
- package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaMultiOption.stories.js +63 -63
- package/dist/collection/stories/Templates/palEgmaCalculateSum/palEgmaSumTogether.stories.js +45 -45
- package/dist/collection/stories/Templates/palEgmaPatternMatching/palEgmaPatternMatching.stories.js +63 -63
- package/dist/collection/stories/Templates/palEgmaWordProblem/palEgmaWordProblem.stories.js +79 -79
- package/dist/collection/stories/Templates/palEgraInventedSpelling/pal_egra_invented_spelling_schema.stories.js +32 -32
- package/dist/collection/stories/Templates/palEgraMCQWithImage/palEgraMCQWithImage.stories.js +42 -42
- package/dist/collection/stories/Templates/palEgraOptionWithAudio/palEgraOptionWithAudio.stories.js +63 -63
- package/dist/collection/stories/Templates/palEgraStoryMaking/pal_egra_story_making.stories.js +44 -44
- package/dist/collection/stories/Templates/palEgraTemplate1/palEgraLetterIdentification.stories.js +34 -34
- package/dist/collection/stories/Templates/palEgraWordMatch/palEgraWordMatch.stories.js +52 -52
- package/dist/collection/stories/Templates/palEgra_OddOneOut/palEgra_oddOneOut.stories.js +33 -33
- package/dist/collection/stories/Templates/palEgra_arrange_pictures/palEgra_arrange_pictures.stories.js +40 -40
- package/dist/collection/stories/Templates/palEgra_build_word/palEgra_build_word.stories.js +48 -48
- package/dist/collection/stories/Templates/palEgra_word_formation/palEgra_WordFormation.stories.js +48 -48
- package/dist/collection/stories/Templates/palStorytale/palStorytale.stories.js +18 -18
- package/dist/collection/stories/Templates/phonic-tractor/phonic-tractor.stories.js +44 -44
- package/dist/collection/stories/Templates/pictureClues/pictureClues.stories.js +34 -34
- package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch1.stories.js +36 -36
- package/dist/collection/stories/Templates/pictureWordMatch/pictureWordMatch2.stories.js +30 -30
- package/dist/collection/stories/Templates/picturemeaning/pictureMeaningCocos.stories.js +20 -20
- package/dist/collection/stories/Templates/puzzleGame/puzzleGame.stories.js +17 -17
- package/dist/collection/stories/Templates/questionBoard/questionBoard.stories.js +58 -58
- package/dist/collection/stories/Templates/quizLiteracy/quizLiteracy.stories.js +50 -50
- package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWithText.stories.js +36 -36
- package/dist/collection/stories/Templates/quizLiteracy/quizLiteracyImageWord.stories.js +43 -43
- package/dist/collection/stories/Templates/quizMaths/quizMaths.stories.js +631 -631
- package/dist/collection/stories/Templates/reorder/reorder.stories.js +63 -63
- package/dist/collection/stories/Templates/rowBlocks/rowBlocks.stories.js +47 -47
- package/dist/collection/stories/Templates/sentenceMatch/sentenceMatch.stories.js +29 -29
- package/dist/collection/stories/Templates/sequenceBox/sequenceBox1.stories.js +64 -64
- package/dist/collection/stories/Templates/sequenceBox/sequenceBox2.stories.js +62 -62
- package/dist/collection/stories/Templates/shapePair/shape-pair.stories.js +106 -106
- package/dist/collection/stories/Templates/shapeTractor/shape-tractor.stories.js +50 -50
- package/dist/collection/stories/Templates/spellDoor/spellDoor.stories.js +41 -41
- package/dist/collection/stories/Templates/storyTale/storyTale.stories.js +39 -39
- package/dist/collection/stories/Templates/substraction/substractionWithimg.stories.js +62 -62
- package/dist/collection/stories/Templates/substraction/substractionWithoutImg.stories.js +42 -42
- package/dist/collection/stories/Templates/sumTogether/sumTogether.stories.js +50 -50
- package/dist/collection/stories/Templates/tenBox/tenBox.stories.js +88 -88
- package/dist/collection/stories/Templates/total/total.stories.js +28 -28
- package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithimg.stories.js +35 -35
- package/dist/collection/stories/Templates/wordBuilding/wordBuildingwithoutimg.stories.js +34 -34
- package/dist/collection/stories/Templates/writeCard/writeCard.stories.js +31 -31
- package/dist/collection/stories/Templates/writeLetter/writeLetter.stories.js +58 -58
- package/dist/collection/stories/Templates/writeNumber/writeNumber.stories.js +44 -44
- package/dist/collection/stories/Templates/writeSet/writeSet.stories.js +31 -31
- package/dist/collection/stories/Templates/writeWord/writeWord.stories.js +34 -34
- package/dist/collection/stories/components/flash-card.stories.js +48 -48
- package/dist/collection/stories/components/keyboard.stories.js +10 -10
- package/dist/collection/stories/components/slider.stories.js +4 -4
- package/dist/collection/stories/components/trace.stories.js +5 -5
- package/dist/collection/utils/audioPlayer.js +7 -4
- package/dist/collection/utils/utils.js +70 -14
- package/dist/collection/utils/utilsHandlers/clickHandler.js +4 -3
- package/dist/collection/utils/utilsHandlers/dragDropHandler.js +8 -8
- package/dist/collection/utils/utilsHandlers/highlightHandler.js +56 -56
- package/dist/collection/utils/utilsHandlers/slideHandler.js +17 -8
- package/dist/collection/utils/utilsHandlers/sortHandler.js +10 -10
- package/dist/components/index.js +1 -1
- package/dist/components/lido-avatar.js +1 -1
- package/dist/components/lido-balance.js +1 -1
- package/dist/components/lido-calculator.js +1 -1
- package/dist/components/lido-canvas.js +1 -1
- package/dist/components/lido-cell.js +1 -1
- package/dist/components/lido-col.js +1 -1
- package/dist/components/lido-container.js +1 -1
- package/dist/components/lido-flash-card.js +1 -1
- package/dist/components/lido-float.js +1 -1
- package/dist/components/lido-home.js +1 -1
- package/dist/components/lido-keyboard.js +1 -1
- package/dist/components/lido-math-matrix.js +1 -1
- package/dist/components/lido-pos.js +1 -1
- package/dist/components/lido-random.js +1 -1
- package/dist/components/lido-root.js +1 -1
- package/dist/components/lido-row.js +1 -1
- package/dist/components/lido-shape.js +1 -1
- package/dist/components/lido-slide-fill.js +1 -1
- package/dist/components/lido-text.js +1 -1
- package/dist/components/lido-trace.js +1 -1
- package/dist/components/lido-wrap.js +1 -1
- package/dist/components/p-B-mIxynb.js +1 -0
- package/dist/components/{p-DdQ1eqJr.js → p-B8nzzM8c.js} +1 -1
- package/dist/components/{p-D2GhaM-T.js → p-Bv1hunWk.js} +1 -1
- package/dist/components/{p-DDS30M3y.js → p-C-pHQRbp.js} +1 -1
- package/dist/components/{p-CPYnt0P-.js → p-C5WmmkI6.js} +1 -1
- package/dist/components/{p-useuhkjH.js → p-C70ykycD.js} +1 -1
- package/dist/components/{p-CFzvgrMa.js → p-CFPSty2U.js} +1 -1
- package/dist/components/{p-Lg85waqZ.js → p-CFWohOId.js} +1 -1
- package/dist/components/{p-BfwUqpXc.js → p-CTlcpv4a.js} +1 -1
- package/dist/components/{p-CyGxEcn7.js → p-CXHPZN3m.js} +1 -1
- package/dist/components/{p-Bw-OC9iR.js → p-CgsPIpg0.js} +1 -1
- package/dist/components/{p-ChfVUoX4.js → p-CsDu4kiC.js} +1 -1
- package/dist/components/{p-CwDTdXe5.js → p-DG0KR2iN.js} +1 -1
- package/dist/components/p-DLyacZap.js +1 -0
- package/dist/components/{p-BiBt9LGP.js → p-DNo3iX_r.js} +1 -1
- package/dist/components/p-DONbWJGn.js +1 -0
- package/dist/components/p-DXy70SGv.js +1 -0
- package/dist/components/{p-Ds-d6wd0.js → p-DfjbSSI2.js} +2 -2
- package/dist/components/{p-BJiyBHYT.js → p-Gwko4CTL.js} +1 -1
- package/dist/components/p-uuyVO2B1.js +1 -0
- package/dist/esm/{decode-CAwfe7ub.js → decode-CyhHNDvT.js} +1 -1
- package/dist/esm/{index-bo7729YG.js → index-CndbFQ5I.js} +146 -77
- package/dist/esm/{index-Dvjbti-h.js → index-mMpK8062.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/lido-avatar_22.entry.js +198 -46
- package/dist/esm/lido-player.js +2 -2
- package/dist/esm/loader.js +2 -2
- package/dist/lido-player/assets/Shadow.svg +9 -9
- package/dist/lido-player/assets/Tracing-hand.svg +8 -8
- package/dist/lido-player/index.esm.js +1 -1
- package/dist/lido-player/lido-avatar.css +4 -4
- package/dist/lido-player/lido-avatar.tsx +214 -207
- package/dist/lido-player/lido-player.css +7 -7
- package/dist/lido-player/lido-player.esm.js +1 -1
- package/dist/lido-player/p-77iyGppv.js +1 -0
- package/dist/lido-player/p-d760e67b.entry.js +12 -0
- package/dist/lido-player/{p-D4kAEWCU.js → p-etMb7U6W.js} +1 -1
- package/dist/lido-player/p-mMpK8062.js +2 -0
- package/dist/lido-player/readme.md +49 -49
- package/dist/types/components/container/lido-container.d.ts +4 -0
- package/dist/types/components/flashCard/lido-flash-card.d.ts +13 -0
- package/dist/types/types/json.d.ts +3 -3
- package/dist/types/utils/audioPlayer.d.ts +2 -1
- package/dist/types/utils/utils.d.ts +5 -1
- package/dist/types/utils/utilsHandlers/clickHandler.d.ts +1 -0
- package/dist/types/utils/utilsHandlers/slideHandler.d.ts +1 -1
- package/package.json +73 -74
- package/readme.md +113 -113
- package/dist/components/p-D0cGjo5e.js +0 -1
- package/dist/components/p-DP6jQ5ML.js +0 -1
- package/dist/components/p-DZRNZCPt.js +0 -1
- package/dist/components/p-DbR5sNOj.js +0 -1
- package/dist/components/p-leIEepjl.js +0 -1
- package/dist/lido-player/p-461a3d23.entry.js +0 -12
- package/dist/lido-player/p-Dvjbti-h.js +0 -2
- 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: '
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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: '
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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.\
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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: '
|
|
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.\
|
|
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).\
|
|
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.\
|
|
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;
|