lido-player 0.0.2-beta-22-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-Cr5DANqc.js → decode-B7mZm_nK.js} +1 -1
- package/dist/cjs/{index-0BvcfeCt.js → index-BCRDjbaz.js} +276 -98
- 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 +231 -59
- 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 +156 -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 +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 +7 -14
- 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 +137 -28
- 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-CFWohOId.js +1 -0
- 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-CkxAm8rY.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-DkSXjv7K.js → decode-CyhHNDvT.js} +1 -1
- package/dist/esm/{index-D9-TTsdZ.js → index-CndbFQ5I.js} +276 -98
- 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 +231 -59
- 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-Dc8j8Hxw.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 +17 -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-BUfCIPRa.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/components/p-u3czV7QM.js +0 -1
- package/dist/lido-player/p-35fa0b8b.entry.js +0 -12
- package/dist/lido-player/p-D2iINRNN.js +0 -1
- package/dist/lido-player/p-Dvjbti-h.js +0 -2
|
@@ -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,16 +84,49 @@ 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
|
-
this.
|
|
90
|
+
this.instructionStarted = false;
|
|
91
|
+
this.onAudioStarted = (event) => {
|
|
89
92
|
var _a;
|
|
90
93
|
const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
|
|
94
|
+
if (target === this.instructionText())
|
|
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');
|
|
114
|
+
};
|
|
115
|
+
this.onAudioEnded = (event) => {
|
|
116
|
+
var _a, _b, _c;
|
|
117
|
+
const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
|
|
91
118
|
const instruction = this.instructionText();
|
|
92
119
|
if (!target || (target !== instruction && target.id !== 'lido-avatar' && !this.el.contains(target)))
|
|
93
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;
|
|
94
127
|
if (target === this.instructionText()) {
|
|
95
128
|
this.instructionDone = true;
|
|
96
|
-
window.setTimeout(() => {
|
|
129
|
+
this.frontStartTimer = window.setTimeout(() => {
|
|
97
130
|
this.speakFront();
|
|
98
131
|
}, 1200);
|
|
99
132
|
}
|
|
@@ -112,6 +145,11 @@ export class LidoFlash {
|
|
|
112
145
|
this.showArrow();
|
|
113
146
|
}
|
|
114
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;
|
|
115
153
|
executeActions("this.avatarAnimate='Idle'", target);
|
|
116
154
|
}
|
|
117
155
|
};
|
|
@@ -151,13 +189,15 @@ export class LidoFlash {
|
|
|
151
189
|
if (this.autoFlipTimer)
|
|
152
190
|
window.clearTimeout(this.autoFlipTimer);
|
|
153
191
|
AudioPlayer.getI().stop();
|
|
192
|
+
this.clearNarrationTimers();
|
|
154
193
|
const goingBack = !this.flipped;
|
|
155
194
|
this.flipped = !this.flipped;
|
|
195
|
+
this.stopGoodJobGlow();
|
|
156
196
|
this.setArrowVisible(false);
|
|
157
197
|
if (goingBack) {
|
|
158
198
|
const text = this.backText();
|
|
159
199
|
if (text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
|
|
160
|
-
|
|
200
|
+
this.startNarration(text);
|
|
161
201
|
else
|
|
162
202
|
this.showArrow();
|
|
163
203
|
}
|
|
@@ -165,40 +205,113 @@ export class LidoFlash {
|
|
|
165
205
|
this.speakFront();
|
|
166
206
|
}
|
|
167
207
|
};
|
|
168
|
-
this.instructionText = () => {
|
|
208
|
+
this.instructionText = () => {
|
|
209
|
+
const container = this.el.closest('lido-container');
|
|
210
|
+
const id = container === null || container === void 0 ? void 0 : container.getAttribute('template-id');
|
|
211
|
+
return id ? container === null || container === void 0 ? void 0 : container.querySelector(`[id="${id}"]`) : null;
|
|
212
|
+
};
|
|
169
213
|
this.frontText = () => this.el.querySelector('.card-front lido-text');
|
|
170
214
|
this.backText = () => this.el.querySelector('.card-back lido-text');
|
|
171
|
-
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 = () => {
|
|
172
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;
|
|
173
224
|
const text = this.frontText();
|
|
174
225
|
if (this.instructionDone && !this.flipped && text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
175
|
-
|
|
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);
|
|
176
235
|
}
|
|
177
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
|
+
};
|
|
178
282
|
this.showArrow = () => {
|
|
179
283
|
if (!this.flipped)
|
|
180
284
|
return;
|
|
181
|
-
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();
|
|
182
289
|
if (!arrow)
|
|
183
290
|
return;
|
|
184
291
|
// Existing ZIPs may not have the newer template onTouch action. Reuse
|
|
185
292
|
// the same direct nextBtn action as the shared home arrow for them.
|
|
186
293
|
if (!arrow.getAttribute('onTouch'))
|
|
187
294
|
arrow.setAttribute('onTouch', "this.nextBtn='true';");
|
|
188
|
-
const mascot =
|
|
295
|
+
const mascot = container.querySelector('#lido-avatar');
|
|
189
296
|
const scaffoldAudio = arrow.getAttribute('audio');
|
|
190
297
|
if (mascot && scaffoldAudio) {
|
|
191
298
|
mascot.setAttribute('audio', scaffoldAudio);
|
|
192
|
-
arrow.removeAttribute('audio');
|
|
193
299
|
}
|
|
194
300
|
this.setArrowVisible(true);
|
|
301
|
+
// Keep the next action highlighted after mascot audio ends.
|
|
302
|
+
arrow.classList.add('flash-card-next-glowing');
|
|
195
303
|
if (mascot) {
|
|
304
|
+
this.goodJobPlaybackContext = {};
|
|
305
|
+
this.goodJobPlaybackId = undefined;
|
|
196
306
|
executeActions("this.avatarAnimate='Idle speak'", mascot);
|
|
197
|
-
AudioPlayer.getI().play(mascot, true);
|
|
307
|
+
AudioPlayer.getI().play(mascot, true, this.goodJobPlaybackContext);
|
|
198
308
|
}
|
|
199
309
|
};
|
|
200
310
|
this.setArrowVisible = (visible) => {
|
|
201
|
-
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');
|
|
202
315
|
if (!arrow)
|
|
203
316
|
return;
|
|
204
317
|
arrow.visible = visible;
|
|
@@ -209,6 +322,7 @@ export class LidoFlash {
|
|
|
209
322
|
arrow.style.display = visible ? 'block' : 'none';
|
|
210
323
|
arrow.style.visibility = visible ? 'visible' : 'hidden';
|
|
211
324
|
arrow.style.opacity = visible ? '1' : '0';
|
|
325
|
+
arrow.style.pointerEvents = visible ? 'auto' : 'none';
|
|
212
326
|
const arrowImage = arrow.querySelector('lido-image');
|
|
213
327
|
if (arrowImage) {
|
|
214
328
|
arrowImage.style.display = visible ? 'flex' : 'none';
|
|
@@ -231,21 +345,47 @@ export class LidoFlash {
|
|
|
231
345
|
window.addEventListener('load', this.updateStyles);
|
|
232
346
|
}
|
|
233
347
|
componentDidLoad() {
|
|
348
|
+
var _a;
|
|
234
349
|
setVisibilityWithDelay(this.el, this.delayVisible);
|
|
235
350
|
initEventsForElement(this.el, this.type);
|
|
351
|
+
window.addEventListener('lidoAudioStarted', this.onAudioStarted);
|
|
352
|
+
window.addEventListener('lidoAudioPlaying', this.onAudioPlaying);
|
|
236
353
|
window.addEventListener('lidoAudioEnded', this.onAudioEnded);
|
|
354
|
+
const container = this.el.closest('lido-container');
|
|
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');
|
|
357
|
+
this.instructionStartTimer = window.setTimeout(() => {
|
|
358
|
+
if (!this.instructionStarted && !this.instructionDone) {
|
|
359
|
+
const instruction = this.instructionText();
|
|
360
|
+
if (instruction)
|
|
361
|
+
this.startNarration(instruction);
|
|
362
|
+
}
|
|
363
|
+
}, 150);
|
|
364
|
+
}
|
|
237
365
|
// handlingChildElements(this.el, this.minLength, this.maxLength, this.childElementsLength, 'inline-block');
|
|
238
366
|
}
|
|
239
367
|
disconnectedCallback() {
|
|
240
368
|
window.removeEventListener('lidoAudioEnded', this.onAudioEnded);
|
|
369
|
+
window.removeEventListener('lidoAudioPlaying', this.onAudioPlaying);
|
|
370
|
+
window.removeEventListener('lidoAudioStarted', this.onAudioStarted);
|
|
241
371
|
if (this.autoFlipTimer)
|
|
242
372
|
window.clearTimeout(this.autoFlipTimer);
|
|
373
|
+
if (this.instructionStartTimer)
|
|
374
|
+
window.clearTimeout(this.instructionStartTimer);
|
|
375
|
+
if (this.frontStartTimer)
|
|
376
|
+
window.clearTimeout(this.frontStartTimer);
|
|
377
|
+
this.clearNarrationTimers();
|
|
243
378
|
window.removeEventListener('resize', this.updateStyles);
|
|
244
379
|
window.removeEventListener('load', this.updateStyles);
|
|
245
380
|
}
|
|
246
381
|
/* ---------- Render ---------- */
|
|
247
382
|
render() {
|
|
248
|
-
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" })))));
|
|
249
389
|
}
|
|
250
390
|
static get is() { return "lido-flash-card"; }
|
|
251
391
|
static get originalStyleUrls() {
|
|
@@ -612,7 +752,7 @@ export class LidoFlash {
|
|
|
612
752
|
"optional": false,
|
|
613
753
|
"docs": {
|
|
614
754
|
"tags": [],
|
|
615
|
-
"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`."
|
|
616
756
|
},
|
|
617
757
|
"getter": false,
|
|
618
758
|
"setter": false,
|
|
@@ -688,7 +828,7 @@ export class LidoFlash {
|
|
|
688
828
|
"optional": false,
|
|
689
829
|
"docs": {
|
|
690
830
|
"tags": [],
|
|
691
|
-
"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."
|
|
692
832
|
},
|
|
693
833
|
"getter": false,
|
|
694
834
|
"setter": false,
|
|
@@ -728,7 +868,7 @@ export class LidoFlash {
|
|
|
728
868
|
"optional": false,
|
|
729
869
|
"docs": {
|
|
730
870
|
"tags": [],
|
|
731
|
-
"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.)."
|
|
732
872
|
},
|
|
733
873
|
"getter": false,
|
|
734
874
|
"setter": false,
|
|
@@ -791,3 +931,4 @@ export class LidoFlash {
|
|
|
791
931
|
}];
|
|
792
932
|
}
|
|
793
933
|
}
|
|
934
|
+
LidoFlash.narrationStartGrace = 800;
|