lido-player 0.0.2-beta-24 → 0.0.2-beta-26-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-BCvdWRyT.js → decode-CE64w_Pc.js} +1 -1
- package/dist/cjs/{index-DjM03fsg.js → index-Cf9LHdIw.js} +238 -87
- package/dist/cjs/{index-DBCFoh1I.js → index-DnaH8sO-.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/lido-avatar_22.cjs.entry.js +214 -53
- package/dist/cjs/lido-player.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/components/avatar/lido-avatar.css +4 -4
- package/dist/collection/components/avatar/lido-avatar.js +1 -1
- package/dist/collection/components/avatar/lido-avatar.tsx +214 -214
- 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 +55 -9
- package/dist/collection/components/flashCard/lido-flash-card.css +72 -72
- package/dist/collection/components/flashCard/lido-flash-card.js +84 -15
- 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 +38 -14
- 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 +6 -6
- 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 +6 -6
- 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 +633 -633
- 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 +10 -3
- package/dist/collection/utils/constants.js +6 -0
- package/dist/collection/utils/utils.js +109 -14
- package/dist/collection/utils/utilsHandlers/dragDropHandler.js +8 -8
- package/dist/collection/utils/utilsHandlers/highlightHandler.js +54 -54
- package/dist/collection/utils/utilsHandlers/slideHandler.js +58 -19
- 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-image.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-B4iWvszS.js +1 -0
- package/dist/components/{p-C5jvgiPE.js → p-BA-XmR9g.js} +1 -1
- package/dist/components/p-BJt-z8VW.js +1 -0
- package/dist/components/{p-CTlcpv4a.js → p-BfwUqpXc.js} +1 -1
- package/dist/components/{p-DNo3iX_r.js → p-BiBt9LGP.js} +1 -1
- package/dist/components/{p-DG0KR2iN.js → p-BlN0IsR4.js} +1 -1
- package/dist/components/{p-CFPSty2U.js → p-BpVpANK9.js} +1 -1
- package/dist/components/{p-CgsPIpg0.js → p-Bw-OC9iR.js} +1 -1
- package/dist/components/p-C2J7-bcH.js +1 -0
- package/dist/components/{p-CFWohOId.js → p-CEmofYPx.js} +1 -1
- package/dist/components/{p-C5WmmkI6.js → p-CPYnt0P-.js} +1 -1
- package/dist/components/{p-CsDu4kiC.js → p-ChfVUoX4.js} +1 -1
- package/dist/components/p-CnQ-4EIw.js +1 -0
- package/dist/components/{p-CXHPZN3m.js → p-CyGxEcn7.js} +1 -1
- package/dist/components/{p-C-pHQRbp.js → p-D1cBkIab.js} +1 -1
- package/dist/components/p-DP6jQ5ML.js +1 -0
- package/dist/components/{p-Bv1hunWk.js → p-DV-k1ulI.js} +1 -1
- package/dist/components/p-Qhj9-H6e.js +12 -0
- package/dist/components/{p-Bh_vemY3.js → p-hUfX1As2.js} +1 -1
- package/dist/components/p-leIEepjl.js +1 -0
- package/dist/components/{p-B8nzzM8c.js → p-s4oGlKg6.js} +1 -1
- package/dist/components/{p-C70ykycD.js → p-useuhkjH.js} +1 -1
- package/dist/esm/{decode-BxzUG5XP.js → decode-DhjaTUf2.js} +1 -1
- package/dist/esm/{index-C_uxZLF-.js → index-Bc6Y7rds.js} +235 -88
- package/dist/esm/{index-mMpK8062.js → index-Dvjbti-h.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/lido-avatar_22.entry.js +214 -53
- package/dist/esm/lido-player.js +3 -3
- package/dist/esm/loader.js +3 -3
- 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 -214
- package/dist/lido-player/lido-player.css +7 -7
- package/dist/lido-player/lido-player.esm.js +1 -1
- package/dist/lido-player/{p-CsCr7DlS.js → p-CORilAH-.js} +1 -1
- package/dist/lido-player/p-D66K5DXn.js +1 -0
- package/dist/lido-player/p-Dvjbti-h.js +2 -0
- package/dist/lido-player/p-ca195982.entry.js +12 -0
- package/dist/lido-player/readme.md +49 -49
- package/dist/types/components/container/lido-container.d.ts +7 -0
- package/dist/types/components/flashCard/lido-flash-card.d.ts +2 -0
- package/dist/types/components.d.ts +1 -0
- package/dist/types/types/json.d.ts +3 -3
- package/dist/types/utils/audioPlayer.d.ts +1 -1
- package/dist/types/utils/constants.d.ts +2 -0
- package/dist/types/utils/utils.d.ts +11 -0
- package/dist/types/utils/utilsHandlers/slideHandler.d.ts +1 -1
- package/package.json +73 -73
- package/readme.md +113 -113
- package/dist/components/p-CgBwmr9A.js +0 -12
- package/dist/components/p-Ckb8QhUV.js +0 -1
- package/dist/components/p-DDwqmTYM.js +0 -1
- package/dist/components/p-DLyacZap.js +0 -1
- package/dist/components/p-DONbWJGn.js +0 -1
- package/dist/components/p-DXy70SGv.js +0 -1
- package/dist/components/p-Gwko4CTL.js +0 -1
- package/dist/lido-player/p-00993d1a.entry.js +0 -12
- package/dist/lido-player/p-mMpK8062.js +0 -2
- package/dist/lido-player/p-v3GBrpv9.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: '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' })));
|
|
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.\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
|
|
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`."
|
|
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.\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.\r\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.\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.\r\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.\nAccepts any valid CSS box-shadow value.\nExample: \"0px 4px 10px rgba(0, 0, 0, 0.1)\""
|
|
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)\""
|
|
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.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
|
|
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.)."
|
|
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
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
-
import { convertUrlToRelative, initEventsForElement, calculateScale } from "../../utils/utils";
|
|
2
|
+
import { convertUrlToRelative, initEventsForElement, calculateScale, initializePlayModeDragDropElements } from "../../utils/utils";
|
|
3
3
|
import i18next from "../../utils/i18n";
|
|
4
4
|
import { highlightElement } from "../../utils/utilsHandlers/highlightHandler";
|
|
5
5
|
import { LIDO_INTERACTION_CLEANUP_EVENT, TemplateID } from "../../utils/constants";
|
|
@@ -169,6 +169,33 @@ 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.shouldInitializePlayModeDragDrop = false;
|
|
173
|
+
this.isWriteCardContainer = () => this.templateId === 'writeCard';
|
|
174
|
+
this.syncWriteCardArrowHighlight = () => {
|
|
175
|
+
if (!this.isWriteCardContainer())
|
|
176
|
+
return;
|
|
177
|
+
const arrow = this.el.querySelector('#arrow');
|
|
178
|
+
if (!arrow)
|
|
179
|
+
return;
|
|
180
|
+
const style = window.getComputedStyle(arrow);
|
|
181
|
+
const hidden = style.display === 'none' ||
|
|
182
|
+
style.visibility === 'hidden' ||
|
|
183
|
+
style.opacity === '0';
|
|
184
|
+
arrow.classList.toggle('flash-card-next-glowing', !hidden);
|
|
185
|
+
};
|
|
186
|
+
this.observeWriteCardArrow = () => {
|
|
187
|
+
var _a;
|
|
188
|
+
if (!this.isWriteCardContainer())
|
|
189
|
+
return;
|
|
190
|
+
(_a = this.writeCardArrowObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
191
|
+
this.writeCardArrowObserver = new MutationObserver(() => this.syncWriteCardArrowHighlight());
|
|
192
|
+
this.writeCardArrowObserver.observe(this.el, {
|
|
193
|
+
subtree: true,
|
|
194
|
+
attributes: true,
|
|
195
|
+
attributeFilter: ['class', 'style', 'visible'],
|
|
196
|
+
});
|
|
197
|
+
this.syncWriteCardArrowHighlight();
|
|
198
|
+
};
|
|
172
199
|
}
|
|
173
200
|
cleanupInteractionHandlers() {
|
|
174
201
|
this.el.querySelectorAll('[type="drag"], [type="slide"], [move="true"]').forEach(element => {
|
|
@@ -179,6 +206,17 @@ export class LidoContainer {
|
|
|
179
206
|
const langToApply = newLang || this.resolveLanguage();
|
|
180
207
|
this.updateChildTextLanguage(langToApply);
|
|
181
208
|
}
|
|
209
|
+
canplayChanged(newValue, oldValue) {
|
|
210
|
+
if (this.templateId !== 'foodJar' || !newValue || oldValue !== false)
|
|
211
|
+
return;
|
|
212
|
+
this.shouldInitializePlayModeDragDrop = true;
|
|
213
|
+
}
|
|
214
|
+
componentDidRender() {
|
|
215
|
+
if (!this.shouldInitializePlayModeDragDrop || !this.canplay)
|
|
216
|
+
return;
|
|
217
|
+
this.shouldInitializePlayModeDragDrop = false;
|
|
218
|
+
void initializePlayModeDragDropElements(this.el);
|
|
219
|
+
}
|
|
182
220
|
componentWillLoad() {
|
|
183
221
|
const langToApply = this.resolveLanguage();
|
|
184
222
|
this.updateChildTextLanguage(langToApply);
|
|
@@ -414,10 +452,12 @@ export class LidoContainer {
|
|
|
414
452
|
setTimeout(() => {
|
|
415
453
|
this.el.setAttribute("onEntry", `${this.templateId}.speak='${!this.speakFlag}'; ` + this.el.getAttribute("onEntry"));
|
|
416
454
|
initEventsForElement(this.el, this.type);
|
|
455
|
+
this.observeWriteCardArrow();
|
|
417
456
|
}, 100);
|
|
418
457
|
}
|
|
419
458
|
else {
|
|
420
459
|
initEventsForElement(this.el, this.type);
|
|
460
|
+
this.observeWriteCardArrow();
|
|
421
461
|
}
|
|
422
462
|
if (this.customStyle) {
|
|
423
463
|
const styleElement = document.createElement('style');
|
|
@@ -433,9 +473,12 @@ export class LidoContainer {
|
|
|
433
473
|
Timer.getI().start();
|
|
434
474
|
}
|
|
435
475
|
disconnectedCallback() {
|
|
476
|
+
var _a;
|
|
436
477
|
this.cleanupInteractionHandlers();
|
|
437
478
|
window.removeEventListener('resize', this.handleWindowResize);
|
|
438
479
|
window.removeEventListener('load', this.handleWindowLoad);
|
|
480
|
+
(_a = this.writeCardArrowObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
481
|
+
this.writeCardArrowObserver = undefined;
|
|
439
482
|
document.body.style.backgroundColor = '';
|
|
440
483
|
document.body.style.backgroundImage = '';
|
|
441
484
|
resetFloatState();
|
|
@@ -452,7 +495,7 @@ export class LidoContainer {
|
|
|
452
495
|
margin: this.margin,
|
|
453
496
|
userSelect: 'none', // Prevent any field selection
|
|
454
497
|
};
|
|
455
|
-
return (h(Host, { key: '
|
|
498
|
+
return (h(Host, { key: '1ec8ce95f69ad27bc534b5cb5b3ccc19e8e1880d', 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: '4124095c478efa28590e9dc40a7e87831bf719fb', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: 'c078309c288e41c03828c3768d6033d2fae981cd' })));
|
|
456
499
|
}
|
|
457
500
|
static get is() { return "lido-container"; }
|
|
458
501
|
static get originalStyleUrls() {
|
|
@@ -579,7 +622,7 @@ export class LidoContainer {
|
|
|
579
622
|
"optional": false,
|
|
580
623
|
"docs": {
|
|
581
624
|
"tags": [],
|
|
582
|
-
"text": "Custom CSS styles to be applied to the container.\nAllows for dynamic styling through inline styles or class names."
|
|
625
|
+
"text": "Custom CSS styles to be applied to the container.\r\nAllows for dynamic styling through inline styles or class names."
|
|
583
626
|
},
|
|
584
627
|
"getter": false,
|
|
585
628
|
"setter": false,
|
|
@@ -1019,7 +1062,7 @@ export class LidoContainer {
|
|
|
1019
1062
|
"optional": false,
|
|
1020
1063
|
"docs": {
|
|
1021
1064
|
"tags": [],
|
|
1022
|
-
"text": "Determines if the activity should proceed automatically only after a correct response.\nAcceptable values: \"true\" or \"false\". Defaults to \"false\"."
|
|
1065
|
+
"text": "Determines if the activity should proceed automatically only after a correct response.\r\nAcceptable values: \"true\" or \"false\". Defaults to \"false\"."
|
|
1023
1066
|
},
|
|
1024
1067
|
"getter": false,
|
|
1025
1068
|
"setter": false,
|
|
@@ -1059,7 +1102,7 @@ export class LidoContainer {
|
|
|
1059
1102
|
"optional": false,
|
|
1060
1103
|
"docs": {
|
|
1061
1104
|
"tags": [],
|
|
1062
|
-
"text": "CSS margin value applied to each child element inside the container.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
|
|
1105
|
+
"text": "CSS margin value applied to each child element inside the container.\r\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
|
|
1063
1106
|
},
|
|
1064
1107
|
"getter": false,
|
|
1065
1108
|
"setter": false,
|
|
@@ -1079,7 +1122,7 @@ export class LidoContainer {
|
|
|
1079
1122
|
"optional": false,
|
|
1080
1123
|
"docs": {
|
|
1081
1124
|
"tags": [],
|
|
1082
|
-
"text": "Custom URL for the Exit button icon.\nFalls back to the default icon if not provided or invalid."
|
|
1125
|
+
"text": "Custom URL for the Exit button icon.\r\nFalls back to the default icon if not provided or invalid."
|
|
1083
1126
|
},
|
|
1084
1127
|
"getter": false,
|
|
1085
1128
|
"setter": false,
|
|
@@ -1098,7 +1141,7 @@ export class LidoContainer {
|
|
|
1098
1141
|
"optional": false,
|
|
1099
1142
|
"docs": {
|
|
1100
1143
|
"tags": [],
|
|
1101
|
-
"text": "Custom URL for the Previous button icon.\nFalls back to the default icon if not provided or invalid."
|
|
1144
|
+
"text": "Custom URL for the Previous button icon.\r\nFalls back to the default icon if not provided or invalid."
|
|
1102
1145
|
},
|
|
1103
1146
|
"getter": false,
|
|
1104
1147
|
"setter": false,
|
|
@@ -1117,7 +1160,7 @@ export class LidoContainer {
|
|
|
1117
1160
|
"optional": false,
|
|
1118
1161
|
"docs": {
|
|
1119
1162
|
"tags": [],
|
|
1120
|
-
"text": "Custom URL for the Next button icon.\nFalls back to the default icon if not provided or invalid."
|
|
1163
|
+
"text": "Custom URL for the Next button icon.\r\nFalls back to the default icon if not provided or invalid."
|
|
1121
1164
|
},
|
|
1122
1165
|
"getter": false,
|
|
1123
1166
|
"setter": false,
|
|
@@ -1136,7 +1179,7 @@ export class LidoContainer {
|
|
|
1136
1179
|
"optional": false,
|
|
1137
1180
|
"docs": {
|
|
1138
1181
|
"tags": [],
|
|
1139
|
-
"text": "Custom URL for the Speaker button icon.\nFalls back to the default icon if not provided or invalid."
|
|
1182
|
+
"text": "Custom URL for the Speaker button icon.\r\nFalls back to the default icon if not provided or invalid."
|
|
1140
1183
|
},
|
|
1141
1184
|
"getter": false,
|
|
1142
1185
|
"setter": false,
|
|
@@ -1276,6 +1319,9 @@ export class LidoContainer {
|
|
|
1276
1319
|
return [{
|
|
1277
1320
|
"propName": "Lang",
|
|
1278
1321
|
"methodName": "languageChanged"
|
|
1322
|
+
}, {
|
|
1323
|
+
"propName": "canplay",
|
|
1324
|
+
"methodName": "canplayChanged"
|
|
1279
1325
|
}];
|
|
1280
1326
|
}
|
|
1281
1327
|
}
|
|
@@ -1,72 +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
|
-
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
|
-
}
|
|
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
|
+
}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* controllable `flipped` prop.
|
|
5
5
|
* ------------------------------------------------------------------*/
|
|
6
6
|
import { Host, h } from "@stencil/core";
|
|
7
|
-
import { parseProp, initEventsForElement, setVisibilityWithDelay, executeActions } from "../../utils/utils";
|
|
7
|
+
import { parseProp, initEventsForElement, setVisibilityWithDelay, executeActions, getGoodJobAudio, shouldPlayGoodJobAudio } from "../../utils/utils";
|
|
8
8
|
import { AudioPlayer } from "../../utils/audioPlayer";
|
|
9
|
+
import { TemplateID } from "../../utils/constants";
|
|
9
10
|
export class LidoFlash {
|
|
10
11
|
constructor() {
|
|
11
12
|
/* ---------- Generic Lido props (mirrors lido‑row) ---------- */
|
|
@@ -88,6 +89,7 @@ export class LidoFlash {
|
|
|
88
89
|
this.narrationHandled = false;
|
|
89
90
|
this.instructionDone = false;
|
|
90
91
|
this.instructionStarted = false;
|
|
92
|
+
this.shouldPlayTemplateInstruction = true;
|
|
91
93
|
this.onAudioStarted = (event) => {
|
|
92
94
|
var _a;
|
|
93
95
|
const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
|
|
@@ -113,7 +115,7 @@ export class LidoFlash {
|
|
|
113
115
|
arrow.classList.add('flash-card-next-glowing');
|
|
114
116
|
};
|
|
115
117
|
this.onAudioEnded = (event) => {
|
|
116
|
-
var _a, _b, _c
|
|
118
|
+
var _a, _b, _c;
|
|
117
119
|
const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
|
|
118
120
|
const instruction = this.instructionText();
|
|
119
121
|
if (!target || (target !== instruction && target.id !== 'lido-avatar' && !this.el.contains(target)))
|
|
@@ -150,7 +152,6 @@ export class LidoFlash {
|
|
|
150
152
|
if (playbackContext !== this.goodJobPlaybackContext || playbackId !== this.goodJobPlaybackId)
|
|
151
153
|
return;
|
|
152
154
|
this.goodJobPlaybackId = undefined;
|
|
153
|
-
(_d = this.nextArrow()) === null || _d === void 0 ? void 0 : _d.classList.remove('flash-card-next-glowing');
|
|
154
155
|
executeActions("this.avatarAnimate='Idle'", target);
|
|
155
156
|
}
|
|
156
157
|
};
|
|
@@ -221,11 +222,19 @@ export class LidoFlash {
|
|
|
221
222
|
(_a = this.nextArrow()) === null || _a === void 0 ? void 0 : _a.classList.remove('flash-card-next-glowing');
|
|
222
223
|
};
|
|
223
224
|
this.speakFront = () => {
|
|
224
|
-
var _a;
|
|
225
|
+
var _a, _b;
|
|
225
226
|
const text = this.frontText();
|
|
226
227
|
if (this.instructionDone && !this.flipped && text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
227
228
|
this.startNarration(text);
|
|
228
229
|
}
|
|
230
|
+
else if (this.instructionDone && !this.flipped && (!text || !((_b = text.textContent) === null || _b === void 0 ? void 0 : _b.trim()))) {
|
|
231
|
+
if (this.autoFlipTimer)
|
|
232
|
+
window.clearTimeout(this.autoFlipTimer);
|
|
233
|
+
this.autoFlipTimer = window.setTimeout(() => {
|
|
234
|
+
if (!this.flipped)
|
|
235
|
+
this.handleFlip();
|
|
236
|
+
}, this.autoFlipAfter);
|
|
237
|
+
}
|
|
229
238
|
};
|
|
230
239
|
this.clearNarrationTimers = () => {
|
|
231
240
|
if (this.narrationGraceTimer)
|
|
@@ -286,16 +295,20 @@ export class LidoFlash {
|
|
|
286
295
|
if (!arrow.getAttribute('onTouch'))
|
|
287
296
|
arrow.setAttribute('onTouch', "this.nextBtn='true';");
|
|
288
297
|
const mascot = container.querySelector('#lido-avatar');
|
|
289
|
-
const
|
|
290
|
-
|
|
298
|
+
const originalAudio = (mascot === null || mascot === void 0 ? void 0 : mascot.getAttribute('audio')) || undefined;
|
|
299
|
+
const scaffoldAudio = getGoodJobAudio(arrow) || originalAudio;
|
|
300
|
+
const shouldPlayGoodJob = shouldPlayGoodJobAudio(arrow);
|
|
301
|
+
if (mascot && scaffoldAudio && shouldPlayGoodJob) {
|
|
291
302
|
mascot.setAttribute('audio', scaffoldAudio);
|
|
292
303
|
}
|
|
293
304
|
this.setArrowVisible(true);
|
|
294
|
-
|
|
305
|
+
// Keep the next action highlighted after mascot audio ends.
|
|
306
|
+
arrow.classList.add('flash-card-next-glowing');
|
|
307
|
+
if (mascot && shouldPlayGoodJob) {
|
|
295
308
|
this.goodJobPlaybackContext = {};
|
|
296
309
|
this.goodJobPlaybackId = undefined;
|
|
297
310
|
executeActions("this.avatarAnimate='Idle speak'", mascot);
|
|
298
|
-
AudioPlayer.getI().play(mascot, true, this.goodJobPlaybackContext);
|
|
311
|
+
AudioPlayer.getI().play(mascot, true, this.goodJobPlaybackContext, originalAudio);
|
|
299
312
|
}
|
|
300
313
|
};
|
|
301
314
|
this.setArrowVisible = (visible) => {
|
|
@@ -336,7 +349,7 @@ export class LidoFlash {
|
|
|
336
349
|
window.addEventListener('load', this.updateStyles);
|
|
337
350
|
}
|
|
338
351
|
componentDidLoad() {
|
|
339
|
-
var _a;
|
|
352
|
+
var _a, _b;
|
|
340
353
|
setVisibilityWithDelay(this.el, this.delayVisible);
|
|
341
354
|
initEventsForElement(this.el, this.type);
|
|
342
355
|
window.addEventListener('lidoAudioStarted', this.onAudioStarted);
|
|
@@ -344,9 +357,17 @@ export class LidoFlash {
|
|
|
344
357
|
window.addEventListener('lidoAudioEnded', this.onAudioEnded);
|
|
345
358
|
const container = this.el.closest('lido-container');
|
|
346
359
|
if ((container === null || container === void 0 ? void 0 : container.getAttribute('template-id')) === 'flashcardtemplate') {
|
|
347
|
-
|
|
360
|
+
const home = container.closest('lido-home');
|
|
361
|
+
const playedTemplates = ((_a = home === null || home === void 0 ? void 0 : home.getAttribute(TemplateID)) === null || _a === void 0 ? void 0 : _a.split(',').map(value => value.trim()).filter(Boolean)) || [];
|
|
362
|
+
this.shouldPlayTemplateInstruction = !playedTemplates.includes('flashcardtemplate');
|
|
363
|
+
(_b = container.querySelector('#lido-avatar')) === null || _b === void 0 ? void 0 : _b.setAttribute('disable-speak', 'true');
|
|
348
364
|
this.instructionStartTimer = window.setTimeout(() => {
|
|
349
365
|
if (!this.instructionStarted && !this.instructionDone) {
|
|
366
|
+
if (!this.shouldPlayTemplateInstruction) {
|
|
367
|
+
this.instructionDone = true;
|
|
368
|
+
this.speakFront();
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
350
371
|
const instruction = this.instructionText();
|
|
351
372
|
if (instruction)
|
|
352
373
|
this.startNarration(instruction);
|
|
@@ -369,14 +390,37 @@ export class LidoFlash {
|
|
|
369
390
|
window.removeEventListener('resize', this.updateStyles);
|
|
370
391
|
window.removeEventListener('load', this.updateStyles);
|
|
371
392
|
}
|
|
393
|
+
async replayGoodJobAudio() {
|
|
394
|
+
const container = this.el.closest('lido-container');
|
|
395
|
+
if ((container === null || container === void 0 ? void 0 : container.getAttribute('template-id')) !== 'flashcardtemplate')
|
|
396
|
+
return;
|
|
397
|
+
const arrow = this.nextArrow();
|
|
398
|
+
const mascot = container.querySelector('#lido-avatar');
|
|
399
|
+
if (!arrow || !mascot)
|
|
400
|
+
return;
|
|
401
|
+
const arrowVisible = arrow.getAttribute('visible') === 'true'
|
|
402
|
+
|| arrow.style.visibility === 'visible';
|
|
403
|
+
if (!arrowVisible)
|
|
404
|
+
return;
|
|
405
|
+
const originalAudio = mascot.getAttribute('audio') || undefined;
|
|
406
|
+
const localizedAudio = getGoodJobAudio(arrow);
|
|
407
|
+
const replayAudio = localizedAudio || originalAudio;
|
|
408
|
+
if (!replayAudio)
|
|
409
|
+
return;
|
|
410
|
+
mascot.setAttribute('audio', replayAudio);
|
|
411
|
+
this.goodJobPlaybackContext = {};
|
|
412
|
+
this.goodJobPlaybackId = undefined;
|
|
413
|
+
executeActions("this.avatarAnimate='Idle speak'", mascot);
|
|
414
|
+
await AudioPlayer.getI().play(mascot, true, this.goodJobPlaybackContext, originalAudio);
|
|
415
|
+
}
|
|
372
416
|
/* ---------- Render ---------- */
|
|
373
417
|
render() {
|
|
374
|
-
return (h(Host, { key: '
|
|
418
|
+
return (h(Host, { key: 'b6012ba4855d142b6fdbad9dcfd7251bfcbb932b', 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) => {
|
|
375
419
|
var _a, _b;
|
|
376
420
|
if ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest) === null || _b === void 0 ? void 0 : _b.call(_a, '#lido-avatar'))
|
|
377
421
|
return;
|
|
378
422
|
this.handleFlip();
|
|
379
|
-
}, "disable-speak": this.disableSpeak }, h("div", { key: '
|
|
423
|
+
}, "disable-speak": this.disableSpeak }, h("div", { key: 'fecb100c8ac0f227d8bd685d02f8314e9018fe02', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: 'e89512323ad8eb884548a1dead734f635c096c8f', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: '82820aaf5b5febcf8247f96faca59976b8fade8e', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
|
|
380
424
|
}
|
|
381
425
|
static get is() { return "lido-flash-card"; }
|
|
382
426
|
static get originalStyleUrls() {
|
|
@@ -743,7 +787,7 @@ export class LidoFlash {
|
|
|
743
787
|
"optional": false,
|
|
744
788
|
"docs": {
|
|
745
789
|
"tags": [],
|
|
746
|
-
"text": "The number of child elements that should be displayed inside the row.\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
|
|
790
|
+
"text": "The number of child elements that should be displayed inside the row.\r\nThis value is dynamically adjusted based on `minLength` and `maxLength`."
|
|
747
791
|
},
|
|
748
792
|
"getter": false,
|
|
749
793
|
"setter": false,
|
|
@@ -819,7 +863,7 @@ export class LidoFlash {
|
|
|
819
863
|
"optional": false,
|
|
820
864
|
"docs": {
|
|
821
865
|
"tags": [],
|
|
822
|
-
"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."
|
|
866
|
+
"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."
|
|
823
867
|
},
|
|
824
868
|
"getter": false,
|
|
825
869
|
"setter": false,
|
|
@@ -859,7 +903,7 @@ export class LidoFlash {
|
|
|
859
903
|
"optional": false,
|
|
860
904
|
"docs": {
|
|
861
905
|
"tags": [],
|
|
862
|
-
"text": "CSS margin value applied to each child element inside the container.\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
|
|
906
|
+
"text": "CSS margin value applied to each child element inside the container.\r\nAccepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.)."
|
|
863
907
|
},
|
|
864
908
|
"getter": false,
|
|
865
909
|
"setter": false,
|
|
@@ -914,6 +958,31 @@ export class LidoFlash {
|
|
|
914
958
|
"style": {}
|
|
915
959
|
};
|
|
916
960
|
}
|
|
961
|
+
static get methods() {
|
|
962
|
+
return {
|
|
963
|
+
"replayGoodJobAudio": {
|
|
964
|
+
"complexType": {
|
|
965
|
+
"signature": "() => Promise<void>",
|
|
966
|
+
"parameters": [],
|
|
967
|
+
"references": {
|
|
968
|
+
"Promise": {
|
|
969
|
+
"location": "global",
|
|
970
|
+
"id": "global::Promise"
|
|
971
|
+
},
|
|
972
|
+
"HTMLElement": {
|
|
973
|
+
"location": "global",
|
|
974
|
+
"id": "global::HTMLElement"
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
"return": "Promise<void>"
|
|
978
|
+
},
|
|
979
|
+
"docs": {
|
|
980
|
+
"text": "",
|
|
981
|
+
"tags": []
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
};
|
|
985
|
+
}
|
|
917
986
|
static get elementRef() { return "el"; }
|
|
918
987
|
static get watchers() {
|
|
919
988
|
return [{
|