lido-player 0.0.2-beta-19-dev → 0.0.2-beta-22-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/dist/cjs/{decode-Bny56MQ9.js → decode-Cr5DANqc.js} +1 -1
- package/dist/cjs/{index-BY9fvbr8.js → index-0BvcfeCt.js} +144 -68
- package/dist/cjs/{index-DjsCseV8.js → index-DnaH8sO-.js} +20 -67
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/lido-avatar_22.cjs.entry.js +279 -66
- package/dist/cjs/lido-player.cjs.js +3 -3
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- 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 +207 -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 +10 -10
- package/dist/collection/components/container/lido-container.js +8 -8
- package/dist/collection/components/flashCard/lido-flash-card.css +46 -28
- package/dist/collection/components/flashCard/lido-flash-card.js +131 -14
- package/dist/collection/components/float/lido-float.css +30 -30
- package/dist/collection/components/float/lido-float.js +2 -2
- package/dist/collection/components/home/lido-home.css +309 -309
- package/dist/collection/components/home/lido-home.js +9 -6
- 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 -145
- package/dist/collection/components/scale/lido-balance.js +54 -14
- 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 +119 -23
- 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 +9 -12
- package/dist/collection/utils/utils.js +24 -8
- package/dist/collection/utils/utilsHandlers/dragDropHandler.js +16 -10
- package/dist/collection/utils/utilsHandlers/highlightHandler.js +54 -54
- package/dist/collection/utils/utilsHandlers/lidoBalanceHandler.js +58 -1
- 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-BOQDbCrm.js → p-BJiyBHYT.js} +1 -1
- package/dist/components/p-BUfCIPRa.js +1 -0
- package/dist/components/{p-CTlcpv4a.js → p-BfwUqpXc.js} +1 -1
- package/dist/components/p-BiBt9LGP.js +1 -0
- package/dist/components/{p-CgsPIpg0.js → p-Bw-OC9iR.js} +1 -1
- package/dist/components/{p-B4YAipq-.js → p-CFzvgrMa.js} +1 -1
- package/dist/components/{p-C5WmmkI6.js → p-CPYnt0P-.js} +1 -1
- package/dist/components/{p-CCR42e0i.js → p-ChfVUoX4.js} +1 -1
- package/dist/components/{p-CWwymnbk.js → p-CkxAm8rY.js} +2 -2
- package/dist/components/{p-BeRr8u5m.js → p-CwDTdXe5.js} +1 -1
- package/dist/components/{p-CXHPZN3m.js → p-CyGxEcn7.js} +1 -1
- package/dist/components/{p-BJMjg5wu.js → p-D2GhaM-T.js} +1 -1
- package/dist/components/{p-BBHM059l.js → p-DDS30M3y.js} +1 -1
- package/dist/components/p-DP6jQ5ML.js +1 -0
- package/dist/components/{p-CljvnHkI.js → p-DZRNZCPt.js} +1 -1
- package/dist/components/p-DbR5sNOj.js +1 -0
- package/dist/components/{p-B8nzzM8c.js → p-DdQ1eqJr.js} +1 -1
- package/dist/components/p-leIEepjl.js +1 -0
- package/dist/components/p-u3czV7QM.js +1 -0
- package/dist/components/{p-C70ykycD.js → p-useuhkjH.js} +1 -1
- package/dist/esm/{decode-Buyq-Iy5.js → decode-DkSXjv7K.js} +1 -1
- package/dist/esm/{index-CQXciux9.js → index-D9-TTsdZ.js} +144 -68
- package/dist/esm/{index-DQZfuGjI.js → index-Dvjbti-h.js} +20 -67
- package/dist/esm/index.js +2 -2
- package/dist/esm/lido-avatar_22.entry.js +279 -66
- package/dist/esm/lido-player.js +4 -4
- 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 +207 -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-35fa0b8b.entry.js +12 -0
- package/dist/lido-player/p-D2iINRNN.js +1 -0
- package/dist/lido-player/{p-CFtq4Thh.js → p-Dc8j8Hxw.js} +1 -1
- package/dist/lido-player/p-Dvjbti-h.js +2 -0
- package/dist/lido-player/readme.md +49 -49
- package/dist/types/components/flashCard/lido-flash-card.d.ts +10 -0
- package/dist/types/components/scale/lido-balance.d.ts +5 -0
- package/dist/types/components/trace/lido-trace.d.ts +9 -1
- package/dist/types/components.d.ts +10 -0
- package/dist/types/stencil-public-runtime.d.ts +55 -73
- package/dist/types/types/json.d.ts +3 -3
- package/dist/types/utils/audioPlayer.d.ts +1 -1
- package/dist/types/utils/utilsHandlers/lidoBalanceHandler.d.ts +10 -0
- package/loader/index.d.ts +1 -1
- package/package.json +74 -74
- package/readme.md +113 -113
- package/dist/components/p-BfqihbR6.js +0 -1
- package/dist/components/p-CwIlwnQk.js +0 -1
- package/dist/components/p-DLyacZap.js +0 -1
- package/dist/components/p-DONbWJGn.js +0 -1
- package/dist/components/p-DVTigdH_.js +0 -1
- package/dist/components/p-DYFVwyRr.js +0 -1
- package/dist/lido-player/p-37736e11.entry.js +0 -12
- package/dist/lido-player/p-3Ry570XH.js +0 -1
- package/dist/lido-player/p-DQZfuGjI.js +0 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as registerInstance, h, H as Host, a as getElement, c as getAssetPath, d as createEvent } from './index-
|
|
2
|
-
import { R as RiveService, s as setVisibilityWithDelay, i as initEventsForElement, c as convertUrlToRelative, p as parseProp, e as equationCheck, S as SelectedValuesKey, a as storingEachActivityScore, A as AudioPlayer, b as executeActions, d as calculateScore, t as triggerNextContainer, C as CalculatorOk, h as handlingChildElements, f as attachSpeakIcon, L as LIDO_INTERACTION_CLEANUP_EVENT, T as TemplateID, j as calculateScale, k as highlightElement, l as Timer, r as resetFloatState, m as handleFloatElementPosition, n as handleElementClick, o as commonjsGlobal, g as getDefaultExportFromCjs, q as generateUUIDFallback, u as ActivityScoreKey, v as dispatchActivityChangeEvent, G as GameScore, w as dispatchGameExitEvent, x as speakUrl, y as nextUrl, z as prevUrl, B as exitUrl, N as NextContainerKey, P as PrevContainerKey, D as LIDO_COMMON_AUDIO_PATH, E as LidoContainer$1, F as getCancelBtnPopup, H as matchStringPattern, I as triggerPrevcontainer, J as setActiveZipAssets, K as clearActiveZipAssets, M as setCancelBtnPopup, O as tinycolor, Q as stopHighlightForSpeakingElement, U as DropAction, V as validateObjectiveStatus, W as fraction, X as LIDO_COMMON_AUDIO_READY_EVENT, Y as TraceMode, Z as speakIcon, _ as fingerUrl } from './index-
|
|
1
|
+
import { r as registerInstance, h, H as Host, a as getElement, c as getAssetPath, d as createEvent } from './index-Dvjbti-h.js';
|
|
2
|
+
import { R as RiveService, s as setVisibilityWithDelay, i as initEventsForElement, c as convertUrlToRelative, p as parseProp, e as equationCheck, S as SelectedValuesKey, a as storingEachActivityScore, A as AudioPlayer, b as executeActions, d as calculateScore, t as triggerNextContainer, C as CalculatorOk, h as handlingChildElements, f as attachSpeakIcon, L as LIDO_INTERACTION_CLEANUP_EVENT, T as TemplateID, j as calculateScale, k as highlightElement, l as Timer, r as resetFloatState, m as handleFloatElementPosition, n as handleElementClick, o as commonjsGlobal, g as getDefaultExportFromCjs, q as generateUUIDFallback, u as ActivityScoreKey, v as dispatchActivityChangeEvent, G as GameScore, w as dispatchGameExitEvent, x as speakUrl, y as nextUrl, z as prevUrl, B as exitUrl, N as NextContainerKey, P as PrevContainerKey, D as LIDO_COMMON_AUDIO_PATH, E as LidoContainer$1, F as getCancelBtnPopup, H as matchStringPattern, I as triggerPrevcontainer, J as setActiveZipAssets, K as clearActiveZipAssets, M as setCancelBtnPopup, O as tinycolor, Q as stopHighlightForSpeakingElement, U as DropAction, V as validateObjectiveStatus, W as fraction, X as LIDO_COMMON_AUDIO_READY_EVENT, Y as TraceMode, Z as speakIcon, _ as fingerUrl } from './index-D9-TTsdZ.js';
|
|
3
3
|
|
|
4
4
|
var rive$1 = {exports: {}};
|
|
5
5
|
|
|
@@ -8158,7 +8158,7 @@ const LidoAvatar = class {
|
|
|
8158
8158
|
display: this.visible ? 'flex' : 'none',
|
|
8159
8159
|
zIndex: this.z,
|
|
8160
8160
|
};
|
|
8161
|
-
return (h(Host, { key: '
|
|
8161
|
+
return (h(Host, { key: '14599bbd626e766d35b9611f80dd401ee76717b4', id: this.id, type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, src: this.src }, h("canvas", { key: '6f128e61bee6797c0cf83c15b3fd3ba4d1d7b1ea', class: "lido-canvas" })));
|
|
8162
8162
|
}
|
|
8163
8163
|
static get assetsDirs() { return ["."]; }
|
|
8164
8164
|
get el() { return getElement(this); }
|
|
@@ -8166,7 +8166,7 @@ const LidoAvatar = class {
|
|
|
8166
8166
|
LidoAvatar.RIVE_WASM_URL = 'https://unpkg.com/@rive-app/canvas@2.32.0/rive.wasm';
|
|
8167
8167
|
LidoAvatar.style = lidoAvatarCss();
|
|
8168
8168
|
|
|
8169
|
-
const lidoBalanceCss = () => `#lido-balance{position:relative;height:500px;width:1205px;top:20%;left:-91px;z-index:0}.lido-balance-symbol{position:absolute;top:64%;left:50%;transform:translate(-50%, -50%);font-size:5vw;font-weight:bold;color:black;pointer-events:none;z-index:999}@media (orientation: portrait){.lido-balance-shadow{height:100px;position:absolute;top:80%;left:28%}}@media (orientation: landscape){.lido-balance-shadow{height:100px;position:absolute;top:90%;left:33%}}@media (orientation: portrait){#pivotimg{position:absolute;height:auto;width:23%;bottom:18%;left:38%;z-index:100}}#pivotimg::after{content:"";position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);width:120%;height:60px;background-image:var(--lido-balance-shadow-url);background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;z-index:10}@media (orientation: landscape){#pivotimg{position:absolute;height:auto;width:23%;bottom:8%;left:38%;z-index:100}}.lido-balance .pivot svg{width:100%;height:auto}#scaleimg{position:absolute;width:73%;height:auto;top:61%;left:14%;z-index:90}.lido-balance .scale svg{width:100%;height:auto}@media (orientation: landscape){#handlerimg{position:absolute;width:35%;height:auto;top:49%;left:2%}}@media (orientation:portrait ){#handlerimg{position:absolute;width:35%;height:auto;top:53%;left:2%}}.lido-balance .handler svg{width:100%;height:auto;fill:brown}@media (orientation: landscape){#handimg{position:absolute;width:35%;height:auto;top:49%;right:2%}}@media (orientation:portrait){#handimg{position:absolute;width:35%;height:auto;top:53%;right:2%}}.lido-balance .hand svg{width:100%;height:auto;fill:brown}.pivot svg path:nth-of-type(1){fill:brown}.pivot svg path[d^="M78.9414"]{fill:white}`;
|
|
8169
|
+
const lidoBalanceCss = () => `#lido-balance{position:relative;height:500px;width:1205px;top:20%;left:-91px;z-index:0}.lido-balance-symbol{position:absolute;top:64%;left:50%;transform:translate(-50%, -50%);font-size:5vw;font-weight:bold;color:black;pointer-events:none;z-index:999}@media (orientation: portrait){.lido-balance-shadow{height:100px;position:absolute;top:80%;left:28%}}.balance-plate-feedback{position:absolute;top:52%;width:34%;height:12px;border-radius:0 0 8px 8px;opacity:0.95;box-shadow:0 9px 10px -2px rgba(70, 0, 0, 0.6);pointer-events:none;z-index:95}.balance-plate-feedback[aria-hidden='true']{display:none}.balance-plate-feedback.left{left:2.5%}.balance-plate-feedback.right{right:2.5%}.balance-plate-feedback::after{content:'';position:absolute;top:100%;left:4%;width:92%;height:11px;border-radius:0 0 8px 8px;background:inherit;opacity:0.75;filter:blur(5px);pointer-events:none}@media (orientation: landscape){.lido-balance-shadow{height:100px;position:absolute;top:90%;left:33%}}@media (orientation: portrait){#pivotimg{position:absolute;height:auto;width:23%;bottom:18%;left:38%;z-index:100}}#pivotimg::after{content:"";position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);width:120%;height:60px;background-image:var(--lido-balance-shadow-url);background-size:contain;background-repeat:no-repeat;background-position:center;pointer-events:none;z-index:10}@media (orientation: landscape){#pivotimg{position:absolute;height:auto;width:23%;bottom:8%;left:38%;z-index:100}}.lido-balance .pivot svg{width:100%;height:auto}#scaleimg{position:absolute;width:73%;height:auto;top:61%;left:14%;z-index:90}.lido-balance .scale svg{width:100%;height:auto}@media (orientation: landscape){#handlerimg{position:absolute;width:35%;height:auto;top:49%;left:2%}}@media (orientation:portrait ){#handlerimg{position:absolute;width:35%;height:auto;top:53%;left:2%}}.lido-balance .handler svg{width:100%;height:auto;fill:brown}@media (orientation: landscape){#handimg{position:absolute;width:35%;height:auto;top:49%;right:2%}}@media (orientation:portrait){#handimg{position:absolute;width:35%;height:auto;top:53%;right:2%}}.lido-balance .hand svg{width:100%;height:auto;fill:brown}.pivot svg path:nth-of-type(1){fill:brown}.pivot svg path[d^="M78.9414"]{fill:white}`;
|
|
8170
8170
|
|
|
8171
8171
|
const LidoBalance = class {
|
|
8172
8172
|
constructor(hostRef) {
|
|
@@ -8284,6 +8284,7 @@ const LidoBalance = class {
|
|
|
8284
8284
|
* Current computed value of the right side of the balance.
|
|
8285
8285
|
*/
|
|
8286
8286
|
this.rightVal = 0;
|
|
8287
|
+
this.feedbackColor = '';
|
|
8287
8288
|
this.currentAngle = 0;
|
|
8288
8289
|
}
|
|
8289
8290
|
async revealSymbol() {
|
|
@@ -8292,12 +8293,24 @@ const LidoBalance = class {
|
|
|
8292
8293
|
async hideSymbol() {
|
|
8293
8294
|
this.showSymbol = false;
|
|
8294
8295
|
}
|
|
8296
|
+
async setFeedbackColor(color = '') {
|
|
8297
|
+
this.feedbackColor = color;
|
|
8298
|
+
}
|
|
8295
8299
|
async componentWillLoad() {
|
|
8300
|
+
this.initializeInitialSymbol();
|
|
8296
8301
|
this.updateStyles();
|
|
8297
8302
|
this.pivotSvg = await this.fetchAndApplyFill(convertUrlToRelative(this.pivotimage));
|
|
8298
8303
|
this.scaleSvg = await this.fetchAndApplyFill(convertUrlToRelative(this.scaleimage));
|
|
8299
8304
|
this.handlerSvg = await this.fetchAndApplyFill(convertUrlToRelative(this.handlerimage));
|
|
8300
8305
|
}
|
|
8306
|
+
initializeInitialSymbol() {
|
|
8307
|
+
var _a, _b;
|
|
8308
|
+
const container = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('lido-container');
|
|
8309
|
+
const objective = (_b = container === null || container === void 0 ? void 0 : container.getAttribute('objective')) === null || _b === void 0 ? void 0 : _b.trim();
|
|
8310
|
+
if (objective === '>' || objective === '<' || objective === '=')
|
|
8311
|
+
this.balanceSymbol = objective;
|
|
8312
|
+
this.showSymbol = true;
|
|
8313
|
+
}
|
|
8301
8314
|
componentDidLoad() {
|
|
8302
8315
|
this.animateBalance();
|
|
8303
8316
|
this.leftParentEl = document.getElementById("leftparent");
|
|
@@ -8362,6 +8375,11 @@ const LidoBalance = class {
|
|
|
8362
8375
|
const offset = (this.currentAngle / this.maxTilt) * maxOffset;
|
|
8363
8376
|
this.leftHandleEl.style.transform = `translateY(${-offset}px)`;
|
|
8364
8377
|
this.rightHandleEl.style.transform = `translateY(${offset}px)`;
|
|
8378
|
+
const feedbackOffset = (this.currentAngle / this.maxTilt) * maxOffset;
|
|
8379
|
+
if (this.leftFeedbackEl)
|
|
8380
|
+
this.leftFeedbackEl.style.transform = `translateY(${-feedbackOffset}px)`;
|
|
8381
|
+
if (this.rightFeedbackEl)
|
|
8382
|
+
this.rightFeedbackEl.style.transform = `translateY(${feedbackOffset}px)`;
|
|
8365
8383
|
}
|
|
8366
8384
|
this.animationFrameId = requestAnimationFrame(rotate);
|
|
8367
8385
|
};
|
|
@@ -8382,7 +8400,7 @@ const LidoBalance = class {
|
|
|
8382
8400
|
};
|
|
8383
8401
|
}
|
|
8384
8402
|
render() {
|
|
8385
|
-
return (h(Host, { key: '
|
|
8403
|
+
return (h(Host, { key: 'b455b2b5d330a2125f7fb8b4e2165d2e6e6bc1a0', id: "lido-balance", "bg-color": "red", onEntry: this.onEntry, class: "lido-balance", tilt: this.tilt.toString(), style: this.style, operation: this.operation.toString(), "pivot-image": this.pivotSvg, "scale-image": this.scaleSvg, "handler-image": this.handlerSvg }, h("div", { key: '657f471d397dd7e3476d5b6e35ee4495c8f2db4c', innerHTML: this.pivotSvg, id: "pivotimg", class: "pivot" }), h("div", { key: '7b91e1919db1fdbcddf79f43a9ad51695b7c806f', innerHTML: this.scaleSvg, id: "scaleimg", class: "scale", ref: (el) => (this.scaleEl = el) }), h("div", { key: '137a1440d55776d0771d8cd71741202c224896db', innerHTML: this.handlerSvg, id: "handlerimg", class: "handler", ref: (el) => (this.leftHandleEl = el) }), h("div", { key: 'd6e0deae63a4e219757240e585d582fb5a72a071', innerHTML: this.handlerSvg, id: "handimg", class: "hand", ref: (el) => (this.rightHandleEl = el) }), h("div", { key: 'ef51f98937cf10c017c8289359c92c24e7316a16', class: "balance-plate-feedback left", ref: (el) => (this.leftFeedbackEl = el), style: { backgroundColor: this.feedbackColor }, "aria-hidden": !this.feedbackColor }), h("div", { key: 'f21aade8543977b657a4d2fbcd623cf8769459a0', class: "balance-plate-feedback right", ref: (el) => (this.rightFeedbackEl = el), style: { backgroundColor: this.feedbackColor }, "aria-hidden": !this.feedbackColor }), h("div", { key: '0470afcef443dbeb69a7d651220d5ff50be3836e', id: "balanceSymbol", class: "lido-balance-symbol", "aria-hidden": !this.showSymbol }, this.showSymbol ? this.balanceSymbol : '')));
|
|
8386
8404
|
}
|
|
8387
8405
|
static get assetsDirs() { return ["assets"]; }
|
|
8388
8406
|
get el() { return getElement(this); }
|
|
@@ -8575,7 +8593,7 @@ const LidoCalculator = class {
|
|
|
8575
8593
|
}
|
|
8576
8594
|
render() {
|
|
8577
8595
|
const numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '←', '0', 'OK'];
|
|
8578
|
-
return (h(Host, { key: '
|
|
8596
|
+
return (h(Host, { key: 'e8249dda090212d327b68b47d42a123de6a890c9', onEntry: this.onEntry, id: "lidoCalculator", style: { width: this.width, height: this.height, backgroundColor: this.bgColor, left: this.x, top: this.y } }, h("lido-cell", { key: '54d093a3dd6a6e5850c881d224290bd6cf9c3690', visible: "true", height: "94px", width: "60px" }, h("lido-text", { key: '7145c80b2477493a8a87f6d098164293732861bf', visible: "true", id: "lido-calculator-penIcon", type: "click", height: "80px", x: "204%", width: "89px", onEntry: "this.position='relative';", class: "top-icon" }, h("img", { key: '7242feedd5172b555df683c747bbef778a9cdcd7', src: convertUrlToRelative(this.penIcon), alt: "pen", style: { width: '100%', height: '100%' } }))), h("div", { key: '6145a4f89da352c3576e6d51a1e260e335778fbb', class: "lido-calculator-displayParent" }, h("div", { key: '04e07b724d912d43b08c7a1e15c605d0fd30c7be', class: "lido-calculator-display" }, this.displayValue)), h("div", { key: '19839d02863ca1e27fddb4093f191171e237f143', class: "lido-calculator-buttons" }, numbers.map((num, i) => (h("lido-text", { id: `btn-${i}`, string: num, visible: "true", type: "click", class: {
|
|
8579
8597
|
'lido-calculator-btn-special': num === '←' || num === 'OK',
|
|
8580
8598
|
'lido-calculator-btn-default': num !== '←' && num !== 'OK'
|
|
8581
8599
|
}, onClick: () => this.handleClick(num) }))))));
|
|
@@ -8689,7 +8707,7 @@ const LidoCanvas = class {
|
|
|
8689
8707
|
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
8690
8708
|
}
|
|
8691
8709
|
render() {
|
|
8692
|
-
return (h(Host, { key: '
|
|
8710
|
+
return (h(Host, { key: '6bb47f06656ce667d23236e9f3c3a8f383885a43', id: "lido-canvas", class: "lido-canvas", style: this.style }, h("button", { key: 'fd0d1217bda63071fbf6496c2538c2a944b14181', id: "lido-exit-button", onClick: () => this.clearCanvas() }), h("canvas", { key: 'ed0333972bb7ce0fc4e14c81bb466ea895ce65e0', id: "lido-canvas" })));
|
|
8693
8711
|
}
|
|
8694
8712
|
get el() { return getElement(this); }
|
|
8695
8713
|
};
|
|
@@ -8948,7 +8966,7 @@ const LidoCell = class {
|
|
|
8948
8966
|
this.el.className = `lido-${parseProp(this.layout, orientation)}`;
|
|
8949
8967
|
}
|
|
8950
8968
|
render() {
|
|
8951
|
-
return (h(Host, { key: '
|
|
8969
|
+
return (h(Host, { key: '73bdf9dd33fdd8322c35465de011697da112193a', id: this.id, class: "lido-cell", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, minDrops: this.minDrops, maxDrops: this.maxDrops, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "flex-direction": this.flexDirection, "disable-speak": this.disableSpeak }, h("slot", { key: '6e9d4507b36716f04853d39ef66015441782aa88' })));
|
|
8952
8970
|
}
|
|
8953
8971
|
get el() { return getElement(this); }
|
|
8954
8972
|
};
|
|
@@ -9026,7 +9044,7 @@ const LidoCol = class {
|
|
|
9026
9044
|
};
|
|
9027
9045
|
}
|
|
9028
9046
|
render() {
|
|
9029
|
-
return (h(Host, { key: '
|
|
9047
|
+
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' })));
|
|
9030
9048
|
}
|
|
9031
9049
|
get el() { return getElement(this); }
|
|
9032
9050
|
};
|
|
@@ -12352,7 +12370,7 @@ const LidoContainer = class {
|
|
|
12352
12370
|
margin: this.margin,
|
|
12353
12371
|
userSelect: 'none', // Prevent any field selection
|
|
12354
12372
|
};
|
|
12355
|
-
return (h(Host, { key: '
|
|
12373
|
+
return (h(Host, { key: '1862e30fedda58726edc107f81fae1f63e96d009', id: "lido-container", Lang: this.Lang, "tab-index": 0, class: "lido-container", objective: this.objective, baseUrl: this.baseUrl, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, onTouch: this.onTouch, onInCorrect: this.onInCorrect, onCorrect: this.onCorrect, onEntry: this.onEntry, "show-check": `${this.showCheck}`, "is-continue-on-correct": `${this.isContinueOnCorrect}`, "is-allow-only-correct": `${this.isAllowOnlyCorrect}`, canplay: `${this.canplay}`, appendToDropOnCompletion: `${this.appendToDropOnCompletion}`, "show-prev-button": `${this.showPrevButton}`, "show-next-button": `${this.showNextButton}`, "show-drop-border": `${this.showDropBorder}`, "bg-image": this.bgImage, "exit-button-url": this.exitButtonUrl, "prev-button-url": this.prevButtonUrl, "next-button-url": this.nextButtonUrl, "speaker-button-url": this.speakerButtonUrl, "disable-speak": `${this.disableSpeak}`, "template-id": this.templateId, audio: this.audio, "highlight-word-by-word": `${this.highlightWordByWord}` }, h("lido-text", { key: '86fd014a61ba9cba6d67e2d921b2d8a8a289dbc7', visible: "false", id: this.templateId, audio: "", string: this.instructName }), h("slot", { key: 'c3128ea2164892757b32cb076d717436947f9a4c' })));
|
|
12356
12374
|
}
|
|
12357
12375
|
get el() { return getElement(this); }
|
|
12358
12376
|
static get watchers() { return {
|
|
@@ -12363,7 +12381,7 @@ const LidoContainer = class {
|
|
|
12363
12381
|
};
|
|
12364
12382
|
LidoContainer.style = lidoContainerCss();
|
|
12365
12383
|
|
|
12366
|
-
const lidoFlashCardCss = () => `.card{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 0.6s ease;cursor:pointer}.card.flipped{transform:rotateY(180deg)}.card-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center}.card-back{transform:rotateY(180deg)}`;
|
|
12384
|
+
const lidoFlashCardCss = () => `.card{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform 0.6s ease;cursor:pointer}.card.flipped{transform:rotateY(180deg)}.card-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center}.card-back{transform:rotateY(180deg)}lido-container[template-id="flashcardtemplate"] #arrow{position:absolute !important;left:auto !important;top:50% !important;right:13.3% !important;transform:translateY(-50%);z-index:4 !important;overflow:visible}@media (orientation: portrait){lido-container[template-id="flashcardtemplate"] #arrow{right:-4.3% !important}}`;
|
|
12367
12385
|
|
|
12368
12386
|
const LidoFlash = class {
|
|
12369
12387
|
constructor(hostRef) {
|
|
@@ -12443,6 +12461,38 @@ const LidoFlash = class {
|
|
|
12443
12461
|
* `reflect` keeps the `<lido-flash-card flipped>` attribute in sync.
|
|
12444
12462
|
*/
|
|
12445
12463
|
this.flipped = false;
|
|
12464
|
+
this.autoFlipAfter = 4500;
|
|
12465
|
+
this.instructionDone = false;
|
|
12466
|
+
this.onAudioEnded = (event) => {
|
|
12467
|
+
var _a;
|
|
12468
|
+
const target = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.target;
|
|
12469
|
+
const instruction = this.instructionText();
|
|
12470
|
+
if (!target || (target !== instruction && target.id !== 'lido-avatar' && !this.el.contains(target)))
|
|
12471
|
+
return;
|
|
12472
|
+
if (target === this.instructionText()) {
|
|
12473
|
+
this.instructionDone = true;
|
|
12474
|
+
window.setTimeout(() => {
|
|
12475
|
+
this.speakFront();
|
|
12476
|
+
}, 1200);
|
|
12477
|
+
}
|
|
12478
|
+
else if (target === this.frontText()) {
|
|
12479
|
+
if (this.flipped)
|
|
12480
|
+
return;
|
|
12481
|
+
if (this.autoFlipTimer)
|
|
12482
|
+
window.clearTimeout(this.autoFlipTimer);
|
|
12483
|
+
this.autoFlipTimer = window.setTimeout(() => {
|
|
12484
|
+
if (!this.flipped)
|
|
12485
|
+
this.handleFlip();
|
|
12486
|
+
}, this.autoFlipAfter);
|
|
12487
|
+
}
|
|
12488
|
+
else if (target === this.backText()) {
|
|
12489
|
+
if (this.flipped)
|
|
12490
|
+
this.showArrow();
|
|
12491
|
+
}
|
|
12492
|
+
else if (target.id === 'lido-avatar') {
|
|
12493
|
+
executeActions("this.avatarAnimate='Idle'", target);
|
|
12494
|
+
}
|
|
12495
|
+
};
|
|
12446
12496
|
/**
|
|
12447
12497
|
* CSS margin value applied to each child element inside the container.
|
|
12448
12498
|
* Accepts standard CSS margin formats (e.g., '10px', '5px 10px', etc.).
|
|
@@ -12475,7 +12525,76 @@ const LidoFlash = class {
|
|
|
12475
12525
|
};
|
|
12476
12526
|
/** Toggle the card when it is clicked. */
|
|
12477
12527
|
this.handleFlip = () => {
|
|
12528
|
+
var _a;
|
|
12529
|
+
if (this.autoFlipTimer)
|
|
12530
|
+
window.clearTimeout(this.autoFlipTimer);
|
|
12531
|
+
AudioPlayer.getI().stop();
|
|
12532
|
+
const goingBack = !this.flipped;
|
|
12478
12533
|
this.flipped = !this.flipped;
|
|
12534
|
+
this.setArrowVisible(false);
|
|
12535
|
+
if (goingBack) {
|
|
12536
|
+
const text = this.backText();
|
|
12537
|
+
if (text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
|
|
12538
|
+
executeActions("this.speak='true'", text);
|
|
12539
|
+
else
|
|
12540
|
+
this.showArrow();
|
|
12541
|
+
}
|
|
12542
|
+
else {
|
|
12543
|
+
this.speakFront();
|
|
12544
|
+
}
|
|
12545
|
+
};
|
|
12546
|
+
this.instructionText = () => { var _a; return document.getElementById(((_a = this.el.closest('lido-container')) === null || _a === void 0 ? void 0 : _a.getAttribute('template-id')) || ''); };
|
|
12547
|
+
this.frontText = () => this.el.querySelector('.card-front lido-text');
|
|
12548
|
+
this.backText = () => this.el.querySelector('.card-back lido-text');
|
|
12549
|
+
this.speakFront = () => {
|
|
12550
|
+
var _a;
|
|
12551
|
+
const text = this.frontText();
|
|
12552
|
+
if (this.instructionDone && !this.flipped && text && ((_a = text.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
12553
|
+
executeActions("this.speak='true'", text);
|
|
12554
|
+
}
|
|
12555
|
+
};
|
|
12556
|
+
this.showArrow = () => {
|
|
12557
|
+
if (!this.flipped)
|
|
12558
|
+
return;
|
|
12559
|
+
const arrow = document.getElementById('arrow');
|
|
12560
|
+
if (!arrow)
|
|
12561
|
+
return;
|
|
12562
|
+
// Existing ZIPs may not have the newer template onTouch action. Reuse
|
|
12563
|
+
// the same direct nextBtn action as the shared home arrow for them.
|
|
12564
|
+
if (!arrow.getAttribute('onTouch'))
|
|
12565
|
+
arrow.setAttribute('onTouch', "this.nextBtn='true';");
|
|
12566
|
+
const mascot = document.getElementById('lido-avatar');
|
|
12567
|
+
const scaffoldAudio = arrow.getAttribute('audio');
|
|
12568
|
+
if (mascot && scaffoldAudio) {
|
|
12569
|
+
mascot.setAttribute('audio', scaffoldAudio);
|
|
12570
|
+
arrow.removeAttribute('audio');
|
|
12571
|
+
}
|
|
12572
|
+
this.setArrowVisible(true);
|
|
12573
|
+
if (mascot) {
|
|
12574
|
+
executeActions("this.avatarAnimate='Idle speak'", mascot);
|
|
12575
|
+
AudioPlayer.getI().play(mascot, true);
|
|
12576
|
+
}
|
|
12577
|
+
};
|
|
12578
|
+
this.setArrowVisible = (visible) => {
|
|
12579
|
+
const arrow = document.getElementById('arrow');
|
|
12580
|
+
if (!arrow)
|
|
12581
|
+
return;
|
|
12582
|
+
arrow.visible = visible;
|
|
12583
|
+
arrow.setAttribute('visible', String(visible));
|
|
12584
|
+
// lido-cell's visible prop is a non-reflected string prop; keep the
|
|
12585
|
+
// rendered host in sync as well so an attribute update cannot leave its
|
|
12586
|
+
// previous inline display:none in place.
|
|
12587
|
+
arrow.style.display = visible ? 'block' : 'none';
|
|
12588
|
+
arrow.style.visibility = visible ? 'visible' : 'hidden';
|
|
12589
|
+
arrow.style.opacity = visible ? '1' : '0';
|
|
12590
|
+
const arrowImage = arrow.querySelector('lido-image');
|
|
12591
|
+
if (arrowImage) {
|
|
12592
|
+
arrowImage.style.display = visible ? 'flex' : 'none';
|
|
12593
|
+
arrowImage.style.visibility = visible ? 'visible' : 'hidden';
|
|
12594
|
+
arrowImage.style.opacity = visible ? '1' : '0';
|
|
12595
|
+
}
|
|
12596
|
+
if (typeof arrow.updateStyles === 'function')
|
|
12597
|
+
arrow.updateStyles();
|
|
12479
12598
|
};
|
|
12480
12599
|
}
|
|
12481
12600
|
/* ---------- Watches ---------- */
|
|
@@ -12491,25 +12610,20 @@ const LidoFlash = class {
|
|
|
12491
12610
|
}
|
|
12492
12611
|
componentDidLoad() {
|
|
12493
12612
|
setVisibilityWithDelay(this.el, this.delayVisible);
|
|
12494
|
-
const card = this.el.querySelector('.card');
|
|
12495
|
-
if (card) {
|
|
12496
|
-
setTimeout(() => {
|
|
12497
|
-
card.classList.add('flipped');
|
|
12498
|
-
setTimeout(() => {
|
|
12499
|
-
card.classList.remove('flipped');
|
|
12500
|
-
}, 500);
|
|
12501
|
-
}, 500);
|
|
12502
|
-
}
|
|
12503
12613
|
initEventsForElement(this.el, this.type);
|
|
12614
|
+
window.addEventListener('lidoAudioEnded', this.onAudioEnded);
|
|
12504
12615
|
// handlingChildElements(this.el, this.minLength, this.maxLength, this.childElementsLength, 'inline-block');
|
|
12505
12616
|
}
|
|
12506
12617
|
disconnectedCallback() {
|
|
12618
|
+
window.removeEventListener('lidoAudioEnded', this.onAudioEnded);
|
|
12619
|
+
if (this.autoFlipTimer)
|
|
12620
|
+
window.clearTimeout(this.autoFlipTimer);
|
|
12507
12621
|
window.removeEventListener('resize', this.updateStyles);
|
|
12508
12622
|
window.removeEventListener('load', this.updateStyles);
|
|
12509
12623
|
}
|
|
12510
12624
|
/* ---------- Render ---------- */
|
|
12511
12625
|
render() {
|
|
12512
|
-
return (h(Host, { key: '
|
|
12626
|
+
return (h(Host, { key: '8d65b494352e0c0aefb3815c87a798967ccb65aa', value: this.value, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, type: this.type, onClick: this.handleFlip, "disable-speak": this.disableSpeak }, h("div", { key: 'db3d4fce4f9f54437485ab1274b1f9bd3b3486bc', class: `card ${this.flipped ? 'flipped' : ''}` }, h("div", { key: 'd37770b0b08eac533265d7f8049c598df047aa37', class: "card-face card-front" }, this.front != null ? this.front : h("slot", { name: "front" })), h("div", { key: '2f8431017cfed9f9adb679442be833a65704d41e', class: "card-face card-back" }, this.back != null ? this.back : h("slot", { name: "back" })))));
|
|
12513
12627
|
}
|
|
12514
12628
|
get el() { return getElement(this); }
|
|
12515
12629
|
static get watchers() { return {
|
|
@@ -12606,7 +12720,7 @@ const LidoFloat = class {
|
|
|
12606
12720
|
};
|
|
12607
12721
|
}
|
|
12608
12722
|
render() {
|
|
12609
|
-
return (h(Host, { key: '
|
|
12723
|
+
return (h(Host, { key: 'c461f1142dd6addd9ceb41ade183b044b875681f', class: "lido-float", "float-direction": this.floatDirection, id: this.id, "tab-index": this.tabIndex, style: this.style, onEntry: this.onEntry }, h("slot", { key: '240439bfda6a9e4e2d67e6ae2b5c878d99e632b3' })));
|
|
12610
12724
|
}
|
|
12611
12725
|
get el() { return getElement(this); }
|
|
12612
12726
|
};
|
|
@@ -12644,9 +12758,9 @@ function requireJszip_min () {
|
|
|
12644
12758
|
var jszip_minExports = requireJszip_min();
|
|
12645
12759
|
var JSZip = /*@__PURE__*/getDefaultExportFromCjs(jszip_minExports);
|
|
12646
12760
|
|
|
12647
|
-
const indexCss = () => `@font-face{font-family:'Baloo Bhai 2';font-style:normal;font-weight:400 800;font-display:swap;src:url('../assets/offline-assets/fonts/Baloo-Bhai-2/Baloo-Bhai-2-Variable.woff2') format('woff2')}body{overflow:hidden;background-position:center;background-size:cover;background-repeat:no-repeat;height:100vh}*{user-select:none}.lido-disable-check-button{pointer-events:none;background-color:#9393935c !important;color:white}.lido-element-selected{border:2px solid;background-color:#ffdf7d !important}.diagonal-target,.diagonal-drop *{transform:scale(0.8) !important;opacity:1 !important}.cloned-element{display:flex !important;position:absolute !important;filter:grayscale(100%);pointer-events:none}.removeShadow{box-shadow:0px 0px 0px 0px #ff8900 !important}.highlight-element{border:2px solid white;box-shadow:rgb(243, 77, 8) 0px 0px 40px !important}.drop-element.empty{border:4px dashed #f34d08 !important}.drop-element.filled{border:'none' !important}.drag-element{box-shadow:0px 15px 11px rgba(43, 0, 0, 0.3) !important}.drag-element.dropped{box-shadow:none !important}.click-element{background-color:var(--btn-bg-color, rgba(255, 172, 76, 1)) !important;box-shadow:var(--btn-shadow-px) var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;cursor:pointer;transition:box-shadow 0.1s ease-out, transform 0.2s ease-out;}.click-element:active{box-shadow:0px 0px 0px var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;transform:translateY(var(--btn-active));}.click-element:focus{outline:2px solid dodgerblue;outline-offset:3px}.after-drop-popup-container{width:200%;height:200%;background-color:rgba(0, 0, 0, 0.8);position:absolute;display:flex;flex-direction:row-reverse;align-items:center;justify-content:center !important;gap:80px}.after-drop-popup-drag-element{scale:1.5;border-radius:8px;transform:none !important;position:unset !important}.after-drop-popup-drop-element{scale:1.5;border:unset;border-radius:8px;transform:none !important;position:unset !important}@keyframes zoomFadeIn{0%{transform:scale(0.6);opacity:0}100%{transform:scale(1);opacity:1}}.zoom-fade-in{animation:zoomFadeIn 0.8s ease-out forwards}@keyframes zoomFadeOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0.6);opacity:0}}.zoom-fade-out{animation:zoomFadeOut 0.8s ease-in forwards}.slide-numbers{width:70px;height:70px;border:1px solid #f57139;background-color:white;font-weight:500;color:#f57139;font-size:44px;border-radius:40px;display:flex;align-items:center;justify-content:center;font-family:'Baloo Bhai 2', serif}.slide-numbers-bottom{position:absolute;display:flex;justify-content:space-around;align-items:center;bottom:-25px;width:100%;height:50px}.slide-numbers-left{position:absolute;display:flex;flex-direction:column;justify-content:space-around;height:100%;width:50px;left:-25px;bottom:0px}.lido-speak-icon{width:56px;height:56px;position:absolute;top:-25px;right:-25px;z-index:10;background-color:white;border:4px solid #F34D08;border-radius:16px;box-shadow:0px 4px 0px 0px #F34D08;background-size:contain;background-repeat:no-repeat;cursor:pointer}.lido-speak-icon:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px !important}.lido-strong-shake{animation:strongShake 0.3s ease}.lido-scaled-shake{animation:scaledShake 0.6s ease-in-out}.lido-horizontal-shake{animation:horizontalShake 0.6s ease-in-out;border-radius:20px}.lido-vertical-shake{animation:verticalShake 0.6s ease-in-out;border-radius:20px}.lido-diagonal-shake{animation:diagonalShake 0.5s ease-in-out;border-radius:20px;will-change:transform}.lido-glow{animation:glowPulse 1s infinite alternate;transition:opacity 0.5s ease-in-out}.lido-box-highlight{animation:topToPlace 0.3s linear}.lido-display-hiddenvalue{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;font-weight:1000;color:brown;-webkit-text-stroke:2px white;font-family:'Baloo Bhai 2', sans-serif;pointer-events:none}.lido-image-colorize{position:relative;display:inline-block}.lido-image-colorize::after{content:'';position:absolute;inset:0;background:var(--tint-color);mix-blend-mode:multiply;opacity:0.8;pointer-events:none;mask-image:var(--mask-url);mask-size:cover;mask-repeat:no-repeat;mask-position:center}.lido-tts-highlight-overlay{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;background:linear-gradient(
|
|
12761
|
+
const indexCss = () => `@font-face{font-family:'Baloo Bhai 2';font-style:normal;font-weight:400 800;font-display:swap;src:url('../assets/offline-assets/fonts/Baloo-Bhai-2/Baloo-Bhai-2-Variable.woff2') format('woff2')}body{overflow:hidden;background-position:center;background-size:cover;background-repeat:no-repeat;height:100vh}*{user-select:none}.lido-disable-check-button{pointer-events:none;background-color:#9393935c !important;color:white}.lido-element-selected{border:2px solid;background-color:#ffdf7d !important}.diagonal-target,.diagonal-drop *{transform:scale(0.8) !important;opacity:1 !important}.cloned-element{display:flex !important;position:absolute !important;filter:grayscale(100%);pointer-events:none}.removeShadow{box-shadow:0px 0px 0px 0px #ff8900 !important}.highlight-element{border:2px solid white;box-shadow:rgb(243, 77, 8) 0px 0px 40px !important}.drop-element.empty{border:4px dashed #f34d08 !important}.drop-element.filled{border:'none' !important}.drag-element{box-shadow:0px 15px 11px rgba(43, 0, 0, 0.3) !important}.drag-element.dropped{box-shadow:none !important}.click-element{background-color:var(--btn-bg-color, rgba(255, 172, 76, 1)) !important;box-shadow:var(--btn-shadow-px) var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;cursor:pointer;transition:box-shadow 0.1s ease-out, transform 0.2s ease-out;}.click-element:active{box-shadow:0px 0px 0px var(--btn-shadow-color, rgba(225, 121, 76, 1)) !important;transform:translateY(var(--btn-active));}.click-element:focus{outline:2px solid dodgerblue;outline-offset:3px}.after-drop-popup-container{width:200%;height:200%;background-color:rgba(0, 0, 0, 0.8);position:absolute;display:flex;flex-direction:row-reverse;align-items:center;justify-content:center !important;gap:80px}.after-drop-popup-drag-element{scale:1.5;border-radius:8px;transform:none !important;position:unset !important}.after-drop-popup-drop-element{scale:1.5;border:unset;border-radius:8px;transform:none !important;position:unset !important}@keyframes zoomFadeIn{0%{transform:scale(0.6);opacity:0}100%{transform:scale(1);opacity:1}}.zoom-fade-in{animation:zoomFadeIn 0.8s ease-out forwards}@keyframes zoomFadeOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0.6);opacity:0}}.zoom-fade-out{animation:zoomFadeOut 0.8s ease-in forwards}.slide-numbers{width:70px;height:70px;border:1px solid #f57139;background-color:white;font-weight:500;color:#f57139;font-size:44px;border-radius:40px;display:flex;align-items:center;justify-content:center;font-family:'Baloo Bhai 2', serif}.slide-numbers-bottom{position:absolute;display:flex;justify-content:space-around;align-items:center;bottom:-25px;width:100%;height:50px}.slide-numbers-left{position:absolute;display:flex;flex-direction:column;justify-content:space-around;height:100%;width:50px;left:-25px;bottom:0px}.lido-speak-icon{width:56px;height:56px;position:absolute;top:-25px;right:-25px;z-index:10;background-color:white;border:4px solid #F34D08;border-radius:16px;box-shadow:0px 4px 0px 0px #F34D08;background-size:contain;background-repeat:no-repeat;cursor:pointer}.lido-speak-icon:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px !important}.lido-strong-shake{animation:strongShake 0.3s ease}.lido-scaled-shake{animation:scaledShake 0.6s ease-in-out}.lido-horizontal-shake{animation:horizontalShake 0.6s ease-in-out;border-radius:20px}.lido-vertical-shake{animation:verticalShake 0.6s ease-in-out;border-radius:20px}.lido-diagonal-shake{animation:diagonalShake 0.5s ease-in-out;border-radius:20px;will-change:transform}.lido-glow{animation:glowPulse 1s infinite alternate;transition:opacity 0.5s ease-in-out}.lido-box-highlight{animation:topToPlace 0.3s linear}.lido-display-hiddenvalue{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;font-weight:1000;color:brown;-webkit-text-stroke:2px white;font-family:'Baloo Bhai 2', sans-serif;pointer-events:none}.lido-image-colorize{position:relative;display:inline-block}.lido-image-colorize::after{content:'';position:absolute;inset:0;background:var(--tint-color);mix-blend-mode:multiply;opacity:0.8;pointer-events:none;mask-image:var(--mask-url);mask-size:cover;mask-repeat:no-repeat;mask-position:center}.lido-tts-highlight-overlay{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;background:linear-gradient( 180deg, rgba(255, 235, 59, 0.95), rgba(255, 214, 0, 0.95) );border-radius:6px;box-shadow:0 2px 6px rgba(0, 0, 0, 0.18), inset 0 -1px 0 rgba(255, 255, 255, 0.25);transition:width 25ms ease-out, height 25ms ease-out, opacity 80ms ease-out;opacity:0.95;will-change:transform, width, height;contain:layout paint style}.category-dropped-onCorrect{box-shadow:rgba(129, 193, 39, 1) 0px 8px 8px 0px !important}.category-dropped-onInCorrect{box-shadow:rgba(255, 4, 16, 1) 0px 8px 8px 0px !important}`;
|
|
12648
12762
|
|
|
12649
|
-
const animationCss = () => `@keyframes rightToPlace{from{transform:translateX(2000px)}to{transform:translateX(0)}}@keyframes topToPlace{from{transform:translateY(-1000px)}to{transform:translateY(0)}}@keyframes bottomToPlace{from{transform:translateY(1000px)}to{transform:translateY(0)}}@keyframes placeToLeft{from{}to{transform:translateX(-2000px)}}@keyframes placeToRight{from{}to{transform:translateX(2000px)}}@keyframes leftToPlace{from{transform:translateX(-2000px)}to{transform:translateX(0)}}@keyframes shake{0%{transform:translateX(0)}10%{transform:translateX(-5px)}20%{transform:translateX(5px)}30%{transform:translateX(-5px)}40%{transform:translateX(5px)}50%{transform:translateX(-5px)}60%{transform:translateX(5px)}70%{transform:translateX(-5px)}80%{transform:translateX(5px)}90%{transform:translateX(-5px)}100%{transform:translateX(0)}}@keyframes fallAndBounce{0%{transform:translateY(-1000px)}25%{transform:translateY(0px)}50%{transform:translateY(-200px)}75%{transform:translateY(0)}90%{transform:translateY(-100px)}100%{transform:translateY(0)}}@keyframes placeToDown{0%{transform:translateY(0)}100%{transform:translateY(1000px)}}@keyframes strongShake{0%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}100%{transform:translateX(0)}}@keyframes scaledShake{0%{transform:scale(1) translateX(0);box-shadow:0 0 0 transparent}20%{transform:scale(1.10) translateX(-12px);box-shadow:0 0 10px red}40%{transform:scale(1.10) translateX(12px);box-shadow:0 0 12px red}60%{transform:scale(1.10) translateX(-8px);box-shadow:0 0 10px red}80%{transform:scale(1.10) translateX(8px);box-shadow:0 0 12px red}100%{transform:scale(1) translateX(0);box-shadow:none}}@keyframes horizontalShake{0%{transform:scale(1) translateX(0);background-color:transparent}20%{transform:translateX(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateX(20px);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateX(-10px);background-color:rgba(255, 0, 0, 0.3)}80%{transform:translateX(10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translateX(0);background-color:transparent}}@keyframes verticalShake{0%{transform:translateY(0);background-color:transparent}20%{transform:translateY(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateY(20px);background-color:rgba(255, 0, 0, 0.2)}80%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.1)}100%{transform:translateY(0);background-color:transparent}}@keyframes diagonalShake{0%{transform:translate(0, 0);background-color:transparent}25%{transform:translate(20px, -20px);background-color:rgba(255, 0, 0, 0.2)}50%{transform:translate(-20px, 20px);background-color:rgba(255, 0, 0, 0.3)}75%{transform:translate(10px, -10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translate(0, 0);background-color:transparent}}@keyframes glowPulse{0%{filter:drop-shadow(0 0 5px yellow)
|
|
12763
|
+
const animationCss = () => `@keyframes rightToPlace{from{transform:translateX(2000px)}to{transform:translateX(0)}}@keyframes topToPlace{from{transform:translateY(-1000px)}to{transform:translateY(0)}}@keyframes bottomToPlace{from{transform:translateY(1000px)}to{transform:translateY(0)}}@keyframes placeToLeft{from{}to{transform:translateX(-2000px)}}@keyframes placeToRight{from{}to{transform:translateX(2000px)}}@keyframes leftToPlace{from{transform:translateX(-2000px)}to{transform:translateX(0)}}@keyframes shake{0%{transform:translateX(0)}10%{transform:translateX(-5px)}20%{transform:translateX(5px)}30%{transform:translateX(-5px)}40%{transform:translateX(5px)}50%{transform:translateX(-5px)}60%{transform:translateX(5px)}70%{transform:translateX(-5px)}80%{transform:translateX(5px)}90%{transform:translateX(-5px)}100%{transform:translateX(0)}}@keyframes fallAndBounce{0%{transform:translateY(-1000px)}25%{transform:translateY(0px)}50%{transform:translateY(-200px)}75%{transform:translateY(0)}90%{transform:translateY(-100px)}100%{transform:translateY(0)}}@keyframes placeToDown{0%{transform:translateY(0)}100%{transform:translateY(1000px)}}@keyframes strongShake{0%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}100%{transform:translateX(0)}}@keyframes scaledShake{0%{transform:scale(1) translateX(0);box-shadow:0 0 0 transparent}20%{transform:scale(1.10) translateX(-12px);box-shadow:0 0 10px red}40%{transform:scale(1.10) translateX(12px);box-shadow:0 0 12px red}60%{transform:scale(1.10) translateX(-8px);box-shadow:0 0 10px red}80%{transform:scale(1.10) translateX(8px);box-shadow:0 0 12px red}100%{transform:scale(1) translateX(0);box-shadow:none}}@keyframes horizontalShake{0%{transform:scale(1) translateX(0);background-color:transparent}20%{transform:translateX(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateX(20px);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateX(-10px);background-color:rgba(255, 0, 0, 0.3)}80%{transform:translateX(10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translateX(0);background-color:transparent}}@keyframes verticalShake{0%{transform:translateY(0);background-color:transparent}20%{transform:translateY(-20px);background-color:rgba(255, 0, 0, 0.2)}40%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.4)}60%{transform:translateY(20px);background-color:rgba(255, 0, 0, 0.2)}80%{transform:translateY(0);background-color:rgba(255, 0, 0, 0.1)}100%{transform:translateY(0);background-color:transparent}}@keyframes diagonalShake{0%{transform:translate(0, 0);background-color:transparent}25%{transform:translate(20px, -20px);background-color:rgba(255, 0, 0, 0.2)}50%{transform:translate(-20px, 20px);background-color:rgba(255, 0, 0, 0.3)}75%{transform:translate(10px, -10px);background-color:rgba(255, 0, 0, 0.2)}100%{transform:translate(0, 0);background-color:transparent}}@keyframes glowPulse{0%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}50%{filter:drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 40px yellow) drop-shadow(0 0 50px orange)}100%{filter:drop-shadow(0 0 5px yellow) drop-shadow(0 0 10px yellow) drop-shadow(0 0 20px yellow) drop-shadow(0 0 30px orange)}}@keyframes trace-animation{0%{}100%{width:var(--trace-width, 100px);height:var(--trace-height, 100px)}}`;
|
|
12650
12764
|
|
|
12651
12765
|
const lidoHomeCss = () => `.lido-snackbar{visibility:visible;min-width:250px;background-color:#333;color:#fff;text-align:center;border-radius:2px;padding:16px;position:fixed;z-index:1;bottom:30px;left:50%;transform:translateX(-50%);font-size:17px}.lido-dot-container{display:flex;justify-content:space-between;align-items:center;visibility:hidden;position:absolute;left:50%;padding:0 5px;z-index:1;width:100vw;max-width:100vw;box-sizing:border-box;height:0px}.lido-dot{height:18px;width:18px;margin:0 4px;background-color:#bbb;border-radius:50%;display:inline-block;transition:background-color 0.3s;cursor:pointer;z-index:1}.lido-btn-dot-container{flex-shrink:1;flex-grow:1;display:flex;justify-content:center;align-items:center;text-align:center;z-index:1;min-width:0;height:0px}.lido-dot.completed{background-color:grey}.lido-dot.current{background-color:green}.lido-dot:not(.completed):not(.current){background-color:#bbb}#lido-arrow-left,#lido-arrow-right{width:88px;height:88px;display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:1000;box-shadow:0px 8px 0px 0px #8b310f;background-color:#f34d08;cursor:pointer;visibility:hidden;flex-shrink:0}#lido-arrow-left:active,#lido-arrow-right:active{transform:translateY(8px);box-shadow:0px 0px 0px 0px}.navbar{display:flex;justify-content:center}.lido-exit-button,#main-audio{width:80px;height:80px;z-index:1000;cursor:pointer;background-color:white;display:flex;align-items:center;justify-content:center;border:4px solid #f34d08;border-radius:16px;box-shadow:0px 8px #f34d08;flex-shrink:0;}#main-audio:active,.popup-button:active,.lido-exit-button:active{margin-bottom:-8px;box-shadow:0px 0px 0px 0px !important}.lido-alert-popup{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.5);display:flex;align-items:center;justify-content:center;z-index:1000}@media (max-width: 768px){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0 8px}.lido-exit-button,#main-audio{width:65px;height:65px;margin:0 8px}.lido-dot{height:16px;width:16px;margin:0 2.5px}}@media (max-width: 480px){#lido-arrow-left,#lido-arrow-right{width:74px;height:74px;margin:0px 5px}.lido-exit-button,#main-audio{width:65px;height:65px;margin:0px 5px}.lido-dot{height:15px;width:15px;margin:0 1.5px}.lido-dot-container{padding:0 3px}}@media (max-width: 375px){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0px 3px}.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 3px}.lido-dot{height:14px;width:14px;margin:0 1px}.lido-dot-container{padding:0 2px}}@media (max-width: 320px){#lido-arrow-left,#lido-arrow-right,.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 2px}.lido-dot{height:12px;width:12px;margin:0 0.5px}.lido-dot-container{padding:0 2px}}@media (max-width: 900px) and (orientation: landscape){#lido-arrow-left,#lido-arrow-right{width:70px;height:70px;margin:0px 5px}.lido-exit-button,#main-audio{width:70px;height:70px;margin:0px 5px}.lido-dot{height:14px;width:14px;margin:0 1px}.lido-dot-container{padding:0 5px}}.popup-exit-text{white-space:nowrap;font-size:22px;font-weight:600;margin-top:-8%}.lido-alert-parent{z-index:10000 !important;position:absolute;top:0;left:0}.popup-button{width:80px;height:80px;z-index:1000;cursor:pointer;display:flex;align-items:center;justify-content:center;border:4px solid #F34D08;border-radius:16px;box-shadow:0 8px 0 #F34D08}.nav-for-lanai{position:absolute;top:0%;left:0%;max-width:none;width:100%;height:auto;visibility:visible}`;
|
|
12652
12766
|
|
|
@@ -12860,6 +12974,10 @@ const LidoHome = class {
|
|
|
12860
12974
|
* between containers and parses the XML data into containers.
|
|
12861
12975
|
*/
|
|
12862
12976
|
async componentWillLoad() {
|
|
12977
|
+
// Publish the current player's common-audio path before parsing XML so
|
|
12978
|
+
// child lido-text components cannot resolve auto-audio against the
|
|
12979
|
+
// previous player's global path.
|
|
12980
|
+
this.publishCommonAudioPath(this.commonAudioPath);
|
|
12863
12981
|
this.navBarIcons = {
|
|
12864
12982
|
exit: this.exitButtonUrl || exitUrl,
|
|
12865
12983
|
prev: this.prevButtonUrl || prevUrl,
|
|
@@ -12952,7 +13070,7 @@ const LidoHome = class {
|
|
|
12952
13070
|
}
|
|
12953
13071
|
// Pure-JS fallback (no wasm asset required)
|
|
12954
13072
|
try {
|
|
12955
|
-
const brotliDecodeModule = await import('./decode-
|
|
13073
|
+
const brotliDecodeModule = await import('./decode-DkSXjv7K.js').then(function (n) { return n.d; });
|
|
12956
13074
|
const brotliDecompressBuffer = brotliDecodeModule.BrotliDecompressBuffer || ((_a = brotliDecodeModule.default) === null || _a === void 0 ? void 0 : _a.BrotliDecompressBuffer);
|
|
12957
13075
|
if (typeof brotliDecompressBuffer !== 'function') {
|
|
12958
13076
|
throw new Error('BrotliDecompressBuffer function not found in brotli/dec/decode');
|
|
@@ -13025,7 +13143,6 @@ const LidoHome = class {
|
|
|
13025
13143
|
return `${this.baseUrl.replace(/\/+$/, '')}/${path}`;
|
|
13026
13144
|
}
|
|
13027
13145
|
componentDidLoad() {
|
|
13028
|
-
this.publishCommonAudioPath(this.commonAudioPath);
|
|
13029
13146
|
setTimeout(() => {
|
|
13030
13147
|
this.showDotsandbtn = true;
|
|
13031
13148
|
}, 10);
|
|
@@ -16687,10 +16804,10 @@ const LidoKeyboard = class {
|
|
|
16687
16804
|
const keysArray = this.keys.split(',').map(k => k.trim());
|
|
16688
16805
|
const container = document.getElementById(LidoContainer$1);
|
|
16689
16806
|
const showCheck = container.getAttribute('show-check') === 'true';
|
|
16690
|
-
return (h(Host, { key: '
|
|
16807
|
+
return (h(Host, { key: '4de3b75fa2905744ad610d147d9b4fe9912dd732', class: "lido-keyboard", style: { width: this.style.width, height: this.style.height, position: 'relative', margin: this.style.margin, zIndex: this.z } }, this.keyboardInput && (h("div", { key: '7b5d293c52747700cde9c1069cfbbdae065e64f9', class: "input-area" }, h("input", { key: '03a91cd87e6bb4f09bf698087258426dd9232f67', type: "text", value: this.inputString, class: "input-area", readonly: true }), h("lido-text", { key: 'd30e033a055df52b30b2f2775c2b3410ee37df63', visible: showCheck ? 'true' : 'false', string: "<<", "bg-color": "black", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "100px", height: "70px", type: "click", onClick: () => {
|
|
16691
16808
|
this.inputString = this.inputString.slice(0, -1);
|
|
16692
16809
|
this.inputValidation(event);
|
|
16693
|
-
} }), h("lido-text", { key: '
|
|
16810
|
+
} }), h("lido-text", { key: '70d78aed7dedbe7d03a05c13c4c320029280bb03', visible: showCheck ? 'true' : 'false', id: "lido-checkButton", string: "Enter", "bg-color": "green", "font-color": "white", "border-radius": "20px", "font-size": "30px", width: "150px", height: "70px", type: "click" }))), this.letterLength && (h("lido-text", { key: '19306cd12bd98dc8dc7b54b20bad3f2f0318116f', visible: "true", string: `${this.numberOfClick}/${this.letterLength}`, "font-size": "60px", "font-color": "white", onEntry: "this.position='absolute'; this.right='0'; this.fontWeight='800';", x: "unset" })), h("div", { key: '826900d6ba26175eb45d2e7e4c02fccce2004db3', class: "keyboard-wrapper", style: {
|
|
16694
16811
|
display: 'flex',
|
|
16695
16812
|
flexWrap: 'wrap',
|
|
16696
16813
|
justifyContent: 'center',
|
|
@@ -16925,7 +17042,7 @@ const LidoMathMatrix = class {
|
|
|
16925
17042
|
render() {
|
|
16926
17043
|
let slotNumber = 1;
|
|
16927
17044
|
const slotData = this.getSlotData();
|
|
16928
|
-
return (h(Host, { key: '
|
|
17045
|
+
return (h(Host, { key: '8a17727416da00fda95c401c3a005cdea1e732d0', class: "math-matrix", style: {
|
|
16929
17046
|
height: this.style.height,
|
|
16930
17047
|
width: this.style.width,
|
|
16931
17048
|
z: this.style.z,
|
|
@@ -17072,7 +17189,7 @@ const LidoPos = class {
|
|
|
17072
17189
|
};
|
|
17073
17190
|
}
|
|
17074
17191
|
render() {
|
|
17075
|
-
return (h(Host, { key: '
|
|
17192
|
+
return (h(Host, { key: 'cfd38900b31991e89c21a099fc4f91f77663ae94', id: this.id, class: "lido-pos", type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, value: this.value, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: '73f7bfe2d8214693d6f40a4dab6d735906ad4eaa' })));
|
|
17076
17193
|
}
|
|
17077
17194
|
get el() { return getElement(this); }
|
|
17078
17195
|
};
|
|
@@ -17216,7 +17333,7 @@ const LidoRandom = class {
|
|
|
17216
17333
|
backgroundColor: this.bgColor,
|
|
17217
17334
|
margin: this.margin,
|
|
17218
17335
|
};
|
|
17219
|
-
return (h(Host, { key: '
|
|
17336
|
+
return (h(Host, { key: 'a4cec45d407b57833a4296a20230717534adf39b', class: "lido-random", type: this.type, "tab-index": this.tabIndex, value: this.value, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, minDrops: this.minDrops, maxDrops: this.maxDrops, onInCorrect: this.onInCorrect, onEntry: this.onEntry }, h("slot", { key: 'b80726b68b7f1c009f35352b9d05cd573159f87b' })));
|
|
17220
17337
|
}
|
|
17221
17338
|
get el() { return getElement(this); }
|
|
17222
17339
|
};
|
|
@@ -17387,13 +17504,13 @@ const LidoRow = class {
|
|
|
17387
17504
|
};
|
|
17388
17505
|
}
|
|
17389
17506
|
render() {
|
|
17390
|
-
return (h(Host, { key: '
|
|
17507
|
+
return (h(Host, { key: 'c69aea0b1b11d9aec167d1a4376f68073f91ca81', class: "lido-row", type: this.type, "tab-index": this.tabIndex, value: this.value, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, minDrops: this.minDrops, maxDrops: this.maxDrops, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, h("slot", { key: '8756ee0447057cddb949e23decbde5fe4d1d25c8' })));
|
|
17391
17508
|
}
|
|
17392
17509
|
get el() { return getElement(this); }
|
|
17393
17510
|
};
|
|
17394
17511
|
LidoRow.style = lidoRowCss();
|
|
17395
17512
|
|
|
17396
|
-
const lidoShapeCss = () => `.lido-shape{position:absolute;top:var(--y);left:var(--x);display:var(--display);z-index:var(--z);justify-content:center;align-items:center}.lido-rectangle{border-radius:0}.lido-circle{width:var(--width);height:var(--width);border-radius:50%;background-color:var(--bgColor)}.lido-ellipse{width:var(--width);height:var(--height);border-radius:50%;background-color:var(--bgColor)}.lido-triangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(50% 0%, 100% 100%, 0% 100%)}.lido-rightTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(100% 0%, 100% 100%, 0% 100%)}.lido-leftTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--triangleBgColor);clip-path:polygon(0% 0%, 100% 100%, 0% 100%)}.lido-parallelogram{width:var(--paralleWidth);height:var(--paralleHeight);transform:skew(20deg)}.lido-trapezium{width:var(--trapeziumWidth);height:var(--trapeziumHeight);background-color:var(--bgColor);clip-path:polygon(
|
|
17513
|
+
const lidoShapeCss = () => `.lido-shape{position:absolute;top:var(--y);left:var(--x);display:var(--display);z-index:var(--z);justify-content:center;align-items:center}.lido-rectangle{border-radius:0}.lido-circle{width:var(--width);height:var(--width);border-radius:50%;background-color:var(--bgColor)}.lido-ellipse{width:var(--width);height:var(--height);border-radius:50%;background-color:var(--bgColor)}.lido-triangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(50% 0%, 100% 100%, 0% 100%)}.lido-rightTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--bgColor);clip-path:polygon(100% 0%, 100% 100%, 0% 100%)}.lido-leftTriangle{width:var(--triangleWidth);height:var(--triangleHeight);background-color:var(--triangleBgColor);clip-path:polygon(0% 0%, 100% 100%, 0% 100%)}.lido-parallelogram{width:var(--paralleWidth);height:var(--paralleHeight);transform:skew(20deg)}.lido-trapezium{width:var(--trapeziumWidth);height:var(--trapeziumHeight);background-color:var(--bgColor);clip-path:polygon( 20% 0%, 80% 0%, 100% 100%, 0% 100% )}.lido-hexagon{width:var(--hexagonWidth);height:var(--hexagonHeight);background-color:var(--bgColor);clip-path:polygon( 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50% )}.lido-cone{width:var(--coneWidth);height:var(--coneHeight);background-color:var(--bgColor);clip-path:polygon( 15% 10%, 25% 4%, 35% 1%, 50% 0%, 65% 1%, 75% 4%, 85% 10%, 50% 100% )}.lido-star{width:var(--starWidth);height:var(--starHeight);background-color:var(--starBgColor);clip-path:polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)}.lido-pentagon{width:var(--pentagonWidth);height:var(--pentagonHeight);background-color:var(--pentagonBgColor);clip-path:polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)}.lido-heptagon{width:var(--heptagonWidth);height:var(--heptagonHeight);background-color:var(--heptagonBgColor);clip-path:polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)}.lido-octagon{width:var(--octagonWidth);height:var(--octagonHeight);background-color:var(--octagonBgColor);clip-path:polygon(25% 0%, 75% 0%, 100% 25%, 100% 75%, 75% 100%, 25% 100%, 0% 75%, 0% 25%)}.lido-rhombus{width:var(--rhombusWidth);height:var(--rhombusHeight);background-color:var(--rhombusBgColor);clip-path:polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)}.lido-heart{height:var(--heartHeight);width:var(--heartWidth);border-image:radial-gradient(var(--heartBgColor) 69%, #0000 70%) 84.5%/50%;clip-path:polygon(-41% 0, 50% 91%, 141% 0)}.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(-20deg) rotateY(45deg)}.face{position:absolute;width:var(--face-width,150px);height:var(--face-width,150px);background:var(--face-bg-color,150px);box-shadow:inset -20px -20px 40px rgba(0,0,0,0.3)}.front{transform:rotateY( 0deg) translateZ(var(--face-translate, 75px))}.back{transform:rotateY(180deg) translateZ(var(--face-translate, 75px))}.right{transform:rotateY( 90deg) translateZ(var(--face-translate, 75px))}.left{transform:rotateY(-90deg) translateZ(var(--face-translate, 75px))}.top{transform:rotateX( 90deg) translateZ(var(--face-translate, 75px))}.bottom{transform:rotateX(-90deg) translateZ(var(--face-translate, 75px))}.lido-cylinder{width:var(--width);height:var(--height);border-radius:100% / 80px;background:radial-gradient(50% 40px at 50% 40px, #0003 99.99%, #0000 0), radial-gradient(50% 40px at 50% calc(100% - 40px), #fff3 99.99%, #0000 0), red}.lido-sphere{position:relative;width:var(--width);height:var(--width);border-radius:50%;background:radial-gradient(circle at 30% 18%, #22d4ff 0%, #18c2f4 9%, rgba(24, 194, 244, 0.2) 18%, transparent 30%), radial-gradient(circle at 36% 26%, #0f8fff 0%, #0b67e6 30%, #083fbe 62%, #120084 100%);box-shadow:inset -22px -26px 40px rgba(5, 0, 70, 0.38), inset 14px 14px 24px rgba(255, 255, 255, 0.05), 0 4px 2px rgba(0, 0, 0, 0.78);overflow:visible}.lido-sphere::after{content:'';position:absolute;top:50%;left:50%;width:100%;height:16%;border-radius:50%;border-top:2px dashed rgba(0, 0, 0, 0.65);border-bottom:3px solid rgba(0, 0, 0, 0.85);box-sizing:border-box;transform:translate(-50%, -50%);pointer-events:none}`;
|
|
17397
17514
|
|
|
17398
17515
|
const LidoShape = class {
|
|
17399
17516
|
constructor(hostRef) {
|
|
@@ -17545,8 +17662,8 @@ const LidoShape = class {
|
|
|
17545
17662
|
backgroundColor: this.shapeType !== 'polygon' ? this.bgColor : 'transparent', // Apply background only if not a polygon
|
|
17546
17663
|
margin: this.margin,
|
|
17547
17664
|
};
|
|
17548
|
-
return (h(Host, { key: '
|
|
17549
|
-
h("div", { key: '
|
|
17665
|
+
return (h(Host, { key: '90b323eacac8b702168f612f79000da757109ec1', class: `lido-shape ${this.shapeType}`, value: this.value, type: this.type, "tab-index": this.tabIndex, style: style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, "disable-speak": this.disableSpeak }, this.shapeType === "lido-cube" &&
|
|
17666
|
+
h("div", { key: '16b4a96f302cd6b1c80023a29253e85fe0937622', class: "cube" }, h("div", { key: '9ce4dfa0021b463aa5dba4c0651d144f844c2db0', class: "face top" }), h("div", { key: 'f10410ef05cbde0a024ccbdbfb4fb7099c1bd9d3', class: "face bottom" }), h("div", { key: '2a08b1857613efd1db596d72a9324ac5b3379628', class: "face left" }), h("div", { key: '4922b4b63dc9538e68d143109bfa12782382ee48', class: "face right" }), h("div", { key: '983bc6815a3b5e6023d76394e0bdeb12c493b771', class: "face front" }), h("div", { key: 'eab0224f427b8a345d3c3285d8d2828b39871eaa', class: "face back" }))));
|
|
17550
17667
|
}
|
|
17551
17668
|
get el() { return getElement(this); }
|
|
17552
17669
|
};
|
|
@@ -17641,13 +17758,13 @@ const LidoSlideFill = class {
|
|
|
17641
17758
|
const id = pathIndex === 1 ? 'glassPath' : pathIndex === 2 ? 'rulerPath' : `path${pathIndex}`;
|
|
17642
17759
|
return `<path id="${id}"${attrs}>`;
|
|
17643
17760
|
});
|
|
17644
|
-
const clipPathDef = `
|
|
17645
|
-
<clipPath id="clipGlass">
|
|
17646
|
-
<use xlink:href="#glassPath" />
|
|
17647
|
-
</clipPath>
|
|
17761
|
+
const clipPathDef = `
|
|
17762
|
+
<clipPath id="clipGlass">
|
|
17763
|
+
<use xlink:href="#glassPath" />
|
|
17764
|
+
</clipPath>
|
|
17648
17765
|
`;
|
|
17649
|
-
svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
|
|
17650
|
-
${clipPathDef}
|
|
17766
|
+
svgText = svgText.replace(/<svg([^>]*)>/, `<svg class="lido-slide-svg"$1>
|
|
17767
|
+
${clipPathDef}
|
|
17651
17768
|
`);
|
|
17652
17769
|
svgText = svgText.replace(/<rect([^>]*)\/?>/, `<rect id="fillArea" $1 clip-path="url(#clipGlass)" />`);
|
|
17653
17770
|
this.svgContent = svgText;
|
|
@@ -17772,7 +17889,7 @@ const LidoSlideFill = class {
|
|
|
17772
17889
|
}
|
|
17773
17890
|
}
|
|
17774
17891
|
render() {
|
|
17775
|
-
return (h(Host, { key: '
|
|
17892
|
+
return (h(Host, { key: 'df8a5474f641fec4d842013a04ef9e3d422a8ab2', id: this.id, class: "lido-slide-fill", src: this.src, fill: this.fill, fillDirection: this.fillDirection, slider: this.slider, style: this.style, min: this.min, max: this.max, division: this.division, numberType: this.numberType, onEntry: this.onEntry, type: this.type, "disable-speak": this.disableSpeak }, h("div", { key: 'e7b6bcc17f8caea30b074f24596b6b044833d170', innerHTML: this.svgContent, class: "lido-svg-element" })));
|
|
17776
17893
|
}
|
|
17777
17894
|
get el() { return getElement(this); }
|
|
17778
17895
|
static get watchers() { return {
|
|
@@ -18061,7 +18178,7 @@ const LidoText = class {
|
|
|
18061
18178
|
}
|
|
18062
18179
|
render() {
|
|
18063
18180
|
const displayText = instance.t(this.string).replace(/_phonics?/gi, '');
|
|
18064
|
-
return (h(Host, { key: '
|
|
18181
|
+
return (h(Host, { key: 'ecef6ae20a67e2296570fe3a65cc5c99f96a1f7c', class: "lido-text", value: this.value, "required-drops": this.requiredDrops, type: this.type, "tab-index": this.tabIndex, audio: this.audio, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, minDrops: this.minDrops, maxDrops: this.maxDrops, id: this.id, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, move: this.move, "span-type": this.spanType, "disable-speak": `${this.disableSpeak}` }, this.spanType !== '' ? h("div", { class: "lido-text-content" }, " ", displayText) : displayText));
|
|
18065
18182
|
}
|
|
18066
18183
|
get el() { return getElement(this); }
|
|
18067
18184
|
};
|
|
@@ -18179,6 +18296,7 @@ const LidoTrace = class {
|
|
|
18179
18296
|
this.fileIndex = -1;
|
|
18180
18297
|
this.isDragging = false;
|
|
18181
18298
|
this.activePointerId = null;
|
|
18299
|
+
this.activeTraceState = null;
|
|
18182
18300
|
// Counter for throttling free trace updates
|
|
18183
18301
|
// This is only an internal counter. Keeping it out of @State prevents a
|
|
18184
18302
|
// Stencil component re-render while the user is dragging.
|
|
@@ -18193,6 +18311,7 @@ const LidoTrace = class {
|
|
|
18193
18311
|
// Handle the pointermove event with optimizations
|
|
18194
18312
|
// Update the path trace as the red circle moves
|
|
18195
18313
|
async initializeSVG() {
|
|
18314
|
+
this.cleanupTraceState(this.activeTraceState);
|
|
18196
18315
|
let state = {
|
|
18197
18316
|
fileIndex: -1,
|
|
18198
18317
|
currentPathIndex: 0,
|
|
@@ -18215,7 +18334,10 @@ const LidoTrace = class {
|
|
|
18215
18334
|
dragOffset: null,
|
|
18216
18335
|
isCompletingPath: false,
|
|
18217
18336
|
touchProximityThreshold: null,
|
|
18337
|
+
pointerTransform: null,
|
|
18338
|
+
pointerRect: null,
|
|
18218
18339
|
};
|
|
18340
|
+
this.activeTraceState = state;
|
|
18219
18341
|
const url = this.svgUrls[this.currentSvgIndex];
|
|
18220
18342
|
if (!url || url.trim() === '') {
|
|
18221
18343
|
console.error('No SVG URL provided or index out of bounds.');
|
|
@@ -18242,6 +18364,27 @@ const LidoTrace = class {
|
|
|
18242
18364
|
disconnectedCallback() {
|
|
18243
18365
|
window.removeEventListener('resize', this.handleWindowResize);
|
|
18244
18366
|
window.removeEventListener('load', this.handleWindowLoad);
|
|
18367
|
+
this.cleanupTraceState(this.activeTraceState);
|
|
18368
|
+
this.activeTraceState = null;
|
|
18369
|
+
}
|
|
18370
|
+
/** Release listeners, pending frames, timers, and cached SVG geometry. */
|
|
18371
|
+
cleanupTraceState(state) {
|
|
18372
|
+
var _a;
|
|
18373
|
+
if (!state)
|
|
18374
|
+
return;
|
|
18375
|
+
(_a = state.cleanup) === null || _a === void 0 ? void 0 : _a.call(state);
|
|
18376
|
+
if (state.rafId)
|
|
18377
|
+
cancelAnimationFrame(state.rafId);
|
|
18378
|
+
state.rafId = null;
|
|
18379
|
+
state.pointerMoveEvent = null;
|
|
18380
|
+
state.pathSamples = [];
|
|
18381
|
+
state.paths = [];
|
|
18382
|
+
state.svg = null;
|
|
18383
|
+
if (this.idleTimer !== null) {
|
|
18384
|
+
clearTimeout(this.idleTimer);
|
|
18385
|
+
this.idleTimer = null;
|
|
18386
|
+
}
|
|
18387
|
+
this.hideFingerHint();
|
|
18245
18388
|
}
|
|
18246
18389
|
/** ───────────────────────────────────────────────────────────
|
|
18247
18390
|
* Idle‑timer helpers
|
|
@@ -18440,6 +18583,18 @@ const LidoTrace = class {
|
|
|
18440
18583
|
path._lidoTraceStart = path.getPointAtLength(0);
|
|
18441
18584
|
path._lidoTraceEnd = path.getPointAtLength(pathLength);
|
|
18442
18585
|
path._lidoTraceIsClosed = this.getDistanceSquared(path._lidoTraceStart, path._lidoTraceEnd) < 200;
|
|
18586
|
+
// Index the path once. Repeated getPointAtLength calls are expensive on
|
|
18587
|
+
// low-end SVG implementations and used to dominate every pointer frame.
|
|
18588
|
+
const sampleCount = 192;
|
|
18589
|
+
const sampleStep = pathLength / sampleCount || 1;
|
|
18590
|
+
const samples = [];
|
|
18591
|
+
for (let sampleIndex = 0; sampleIndex <= sampleCount; sampleIndex++) {
|
|
18592
|
+
const length = Math.min(pathLength, sampleIndex * sampleStep);
|
|
18593
|
+
const point = path.getPointAtLength(length);
|
|
18594
|
+
samples.push({ x: point.x, y: point.y, length });
|
|
18595
|
+
}
|
|
18596
|
+
path._lidoTraceSamples = samples;
|
|
18597
|
+
path._lidoTraceSampleStep = sampleStep;
|
|
18443
18598
|
// /** give every path an id so <mpath> can follow it */
|
|
18444
18599
|
path.setAttribute('id', 'lido-path-' + index); // ← NEW
|
|
18445
18600
|
// Create green path for tracing effect
|
|
@@ -18474,7 +18629,7 @@ const LidoTrace = class {
|
|
|
18474
18629
|
state.flowMarkers = this.createFlowMarkersForPath(path);
|
|
18475
18630
|
}
|
|
18476
18631
|
});
|
|
18477
|
-
state.totalPathLength = state.paths[state.currentPathIndex].
|
|
18632
|
+
state.totalPathLength = state.paths[state.currentPathIndex]._lidoTraceLength;
|
|
18478
18633
|
}
|
|
18479
18634
|
// Set up the draggable circle at the start of the first path
|
|
18480
18635
|
setupDraggableCircle(state) {
|
|
@@ -18499,10 +18654,14 @@ const LidoTrace = class {
|
|
|
18499
18654
|
return;
|
|
18500
18655
|
state.svg.style.touchAction = 'none';
|
|
18501
18656
|
state.circle.style.touchAction = 'none';
|
|
18502
|
-
//
|
|
18503
|
-
|
|
18657
|
+
// Keep named handlers so the detached SVG can be fully released when the
|
|
18658
|
+
// next trace starts. Anonymous handlers here previously retained every
|
|
18659
|
+
// completed trace for the lifetime of the page.
|
|
18660
|
+
const onPointerDown = (evt) => {
|
|
18504
18661
|
evt.preventDefault(); // Prevent default actions like text selection
|
|
18505
|
-
|
|
18662
|
+
state.pointerRect = state.svg.getBoundingClientRect();
|
|
18663
|
+
state.pointerTransform = this.getSvgViewBoxTransform(state.svg, state.pointerRect);
|
|
18664
|
+
const pointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
|
|
18506
18665
|
const circlePos = {
|
|
18507
18666
|
x: parseFloat(state.circle.getAttribute('cx')),
|
|
18508
18667
|
y: parseFloat(state.circle.getAttribute('cy')),
|
|
@@ -18527,9 +18686,9 @@ const LidoTrace = class {
|
|
|
18527
18686
|
}
|
|
18528
18687
|
this.hideFingerHint(); // ← NEW
|
|
18529
18688
|
this.resetIdleTimer(state); // ← NEW
|
|
18530
|
-
}
|
|
18689
|
+
};
|
|
18531
18690
|
// Handle pointermove on the SVG to update the circle position
|
|
18532
|
-
|
|
18691
|
+
const onPointerMove = (evt) => {
|
|
18533
18692
|
if (!state.isDragging || evt.pointerId !== state.activePointerId)
|
|
18534
18693
|
return;
|
|
18535
18694
|
evt.preventDefault();
|
|
@@ -18540,7 +18699,7 @@ const LidoTrace = class {
|
|
|
18540
18699
|
state.rafId = null;
|
|
18541
18700
|
});
|
|
18542
18701
|
}
|
|
18543
|
-
}
|
|
18702
|
+
};
|
|
18544
18703
|
// Handle pointerup and pointercancel on the SVG to stop dragging
|
|
18545
18704
|
const endDrag = (evt) => {
|
|
18546
18705
|
if (evt.pointerId === state.activePointerId) {
|
|
@@ -18552,12 +18711,25 @@ const LidoTrace = class {
|
|
|
18552
18711
|
this.resetIdleTimer(state); // ← NEW
|
|
18553
18712
|
}
|
|
18554
18713
|
};
|
|
18555
|
-
(
|
|
18556
|
-
(
|
|
18714
|
+
(_a = state.svg) === null || _a === void 0 ? void 0 : _a.addEventListener('pointerup', endDrag);
|
|
18715
|
+
(_b = state.svg) === null || _b === void 0 ? void 0 : _b.addEventListener('pointercancel', endDrag);
|
|
18557
18716
|
// Optional: Prevent context menu on long press
|
|
18558
|
-
|
|
18717
|
+
const onContextMenu = (evt) => {
|
|
18559
18718
|
evt.preventDefault();
|
|
18560
|
-
}
|
|
18719
|
+
};
|
|
18720
|
+
state.circle.addEventListener('pointerdown', onPointerDown, { passive: false });
|
|
18721
|
+
(_c = state.svg) === null || _c === void 0 ? void 0 : _c.addEventListener('pointermove', onPointerMove);
|
|
18722
|
+
(_d = state.svg) === null || _d === void 0 ? void 0 : _d.addEventListener('contextmenu', onContextMenu);
|
|
18723
|
+
state.cleanup = () => {
|
|
18724
|
+
var _a, _b, _c, _d, _e;
|
|
18725
|
+
(_a = state.circle) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', onPointerDown);
|
|
18726
|
+
(_b = state.svg) === null || _b === void 0 ? void 0 : _b.removeEventListener('pointermove', onPointerMove);
|
|
18727
|
+
(_c = state.svg) === null || _c === void 0 ? void 0 : _c.removeEventListener('pointerup', endDrag);
|
|
18728
|
+
(_d = state.svg) === null || _d === void 0 ? void 0 : _d.removeEventListener('pointercancel', endDrag);
|
|
18729
|
+
(_e = state.svg) === null || _e === void 0 ? void 0 : _e.removeEventListener('contextmenu', onContextMenu);
|
|
18730
|
+
state.isDragging = false;
|
|
18731
|
+
state.activePointerId = null;
|
|
18732
|
+
};
|
|
18561
18733
|
}
|
|
18562
18734
|
// Modified handlePointerMove function
|
|
18563
18735
|
async handlePointerMove(state) {
|
|
@@ -18570,7 +18742,7 @@ const LidoTrace = class {
|
|
|
18570
18742
|
return;
|
|
18571
18743
|
this.hideFingerHint(); // user is active, remove hint
|
|
18572
18744
|
const evt = state.pointerMoveEvent;
|
|
18573
|
-
const rawPointerPos = this.getPointerPosition(evt, state.svg);
|
|
18745
|
+
const rawPointerPos = this.getPointerPosition(evt, state.svg, state.pointerTransform, state.pointerRect);
|
|
18574
18746
|
const pointerPos = state.dragOffset
|
|
18575
18747
|
? {
|
|
18576
18748
|
x: rawPointerPos.x - state.dragOffset.x,
|
|
@@ -18602,9 +18774,16 @@ const LidoTrace = class {
|
|
|
18602
18774
|
const proximitySquared = proximityThreshold * proximityThreshold;
|
|
18603
18775
|
// Calculate the distance between the pointer and the draggable circle
|
|
18604
18776
|
const distanceSquared = this.getDistanceSquared(pointerPos, circlePos);
|
|
18605
|
-
//
|
|
18606
|
-
|
|
18607
|
-
|
|
18777
|
+
// The red circle can lag behind a touch pointer when a lower-end device
|
|
18778
|
+
// drops frames. Do not reject the touch solely because it has moved ahead
|
|
18779
|
+
// of the circle: the path-distance check below still ensures the pointer
|
|
18780
|
+
// remains on the trace. This prevents long, narrow curves from becoming
|
|
18781
|
+
// stuck halfway through a stroke.
|
|
18782
|
+
const pointerLeadThreshold = evt.pointerType === 'touch'
|
|
18783
|
+
? Math.max(proximityThreshold * 4, 180)
|
|
18784
|
+
: Math.max(proximityThreshold * 2, 120);
|
|
18785
|
+
if (distanceSquared > pointerLeadThreshold * pointerLeadThreshold) {
|
|
18786
|
+
return;
|
|
18608
18787
|
}
|
|
18609
18788
|
const isFreeTraceMode = state.mode === TraceMode.FreeTrace || state.mode === TraceMode.BlindFreeTrace;
|
|
18610
18789
|
const closestPoint = this.getClosestPointOnPath(currentPath, pointerPos, isFreeTraceMode ? undefined : state.lastLength);
|
|
@@ -18680,7 +18859,7 @@ const LidoTrace = class {
|
|
|
18680
18859
|
// In normal modes, allow movement and drawing only within the general proximity threshold
|
|
18681
18860
|
const BACKWARD_TOLERANCE = 20; // allow slight backward movement
|
|
18682
18861
|
const MAX_FORWARD_JUMP = 80; // prevent jumping to wrong segment
|
|
18683
|
-
const RECOVERY_FORWARD_JUMP = Math.min(320, Math.max(160, state.totalPathLength * 0.45)); // recover on long strokes without skipping short paths
|
|
18862
|
+
const RECOVERY_FORWARD_JUMP = Math.min(evt.pointerType === 'touch' ? 480 : 320, Math.max(evt.pointerType === 'touch' ? 220 : 160, state.totalPathLength * 0.45)); // recover on long strokes without skipping short paths
|
|
18684
18863
|
const RECOVERY_END_BUFFER = Math.min(60, Math.max(24, state.totalPathLength * 0.12)); // don't let recovery auto-finish the last part
|
|
18685
18864
|
const RECOVERY_POINTER_MOVE_THRESHOLD = 8; // only recover after a meaningful drag, not during slow tracing
|
|
18686
18865
|
let guidedClosestPoint = closestPoint;
|
|
@@ -18834,9 +19013,9 @@ const LidoTrace = class {
|
|
|
18834
19013
|
triggerNextContainer();
|
|
18835
19014
|
}
|
|
18836
19015
|
// Get the pointer position relative to the SVG
|
|
18837
|
-
getPointerPosition(evt, svg) {
|
|
19016
|
+
getPointerPosition(evt, svg, cachedTransform, cachedRect) {
|
|
18838
19017
|
var _a;
|
|
18839
|
-
const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg);
|
|
19018
|
+
const viewBoxPoint = this.getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect);
|
|
18840
19019
|
if (viewBoxPoint)
|
|
18841
19020
|
return viewBoxPoint;
|
|
18842
19021
|
const svgPoint = svg.createSVGPoint();
|
|
@@ -18845,13 +19024,13 @@ const LidoTrace = class {
|
|
|
18845
19024
|
const ctm = (_a = svg.getScreenCTM()) === null || _a === void 0 ? void 0 : _a.inverse();
|
|
18846
19025
|
return ctm ? svgPoint.matrixTransform(ctm) : { x: evt.clientX, y: evt.clientY };
|
|
18847
19026
|
}
|
|
18848
|
-
getPointerPositionFromViewBox(evt, svg) {
|
|
18849
|
-
const rect = svg.getBoundingClientRect();
|
|
19027
|
+
getPointerPositionFromViewBox(evt, svg, cachedTransform, cachedRect) {
|
|
19028
|
+
const rect = cachedRect || svg.getBoundingClientRect();
|
|
18850
19029
|
const viewBox = svg.viewBox.baseVal;
|
|
18851
19030
|
if (!rect.width || !rect.height || !viewBox.width || !viewBox.height) {
|
|
18852
19031
|
return null;
|
|
18853
19032
|
}
|
|
18854
|
-
const { offsetX, offsetY, scaleX, scaleY } = this.getSvgViewBoxTransform(svg, rect);
|
|
19033
|
+
const { offsetX, offsetY, scaleX, scaleY } = cachedTransform || this.getSvgViewBoxTransform(svg, rect);
|
|
18855
19034
|
return {
|
|
18856
19035
|
x: viewBox.x + (evt.clientX - rect.left - offsetX) / scaleX,
|
|
18857
19036
|
y: viewBox.y + (evt.clientY - rect.top - offsetY) / scaleY,
|
|
@@ -18911,6 +19090,40 @@ const LidoTrace = class {
|
|
|
18911
19090
|
getClosestPointOnPath(pathNode, point, lastLength) {
|
|
18912
19091
|
var _a;
|
|
18913
19092
|
const pathLength = (_a = pathNode._lidoTraceLength) !== null && _a !== void 0 ? _a : pathNode.getTotalLength();
|
|
19093
|
+
const samples = pathNode._lidoTraceSamples;
|
|
19094
|
+
const sampleStep = pathNode._lidoTraceSampleStep;
|
|
19095
|
+
if ((samples === null || samples === void 0 ? void 0 : samples.length) && sampleStep) {
|
|
19096
|
+
const searchWindow = lastLength === undefined ? pathLength : 150;
|
|
19097
|
+
const searchStart = lastLength === undefined ? 0 : Math.max(0, lastLength - searchWindow);
|
|
19098
|
+
const searchEnd = lastLength === undefined ? pathLength : Math.min(pathLength, lastLength + searchWindow);
|
|
19099
|
+
let nearest = samples[Math.max(0, Math.min(samples.length - 1, Math.round((lastLength || 0) / sampleStep)))];
|
|
19100
|
+
let nearestDistance = Infinity;
|
|
19101
|
+
for (const sample of samples) {
|
|
19102
|
+
if (sample.length < searchStart || sample.length > searchEnd)
|
|
19103
|
+
continue;
|
|
19104
|
+
const distance = this.getDistanceSquared(point, sample);
|
|
19105
|
+
if (distance < nearestDistance) {
|
|
19106
|
+
nearestDistance = distance;
|
|
19107
|
+
nearest = sample;
|
|
19108
|
+
}
|
|
19109
|
+
}
|
|
19110
|
+
// Refine only around the cached winner. This keeps the path accurate
|
|
19111
|
+
// while reducing hot-path geometry calls from roughly 50 to a handful.
|
|
19112
|
+
const refinementStep = 6;
|
|
19113
|
+
const refineStart = Math.max(searchStart, nearest.length - sampleStep);
|
|
19114
|
+
const refineEnd = Math.min(searchEnd, nearest.length + sampleStep);
|
|
19115
|
+
let closestPoint = Object.assign({}, nearest);
|
|
19116
|
+
let minDistanceSquared = nearestDistance;
|
|
19117
|
+
for (let length = refineStart; length <= refineEnd; length += refinementStep) {
|
|
19118
|
+
const candidate = pathNode.getPointAtLength(length);
|
|
19119
|
+
const distance = this.getDistanceSquared(point, candidate);
|
|
19120
|
+
if (distance < minDistanceSquared) {
|
|
19121
|
+
minDistanceSquared = distance;
|
|
19122
|
+
closestPoint = { x: candidate.x, y: candidate.y, length };
|
|
19123
|
+
}
|
|
19124
|
+
}
|
|
19125
|
+
return closestPoint;
|
|
19126
|
+
}
|
|
18914
19127
|
let closestPoint = { x: 0, y: 0, length: 0 };
|
|
18915
19128
|
let minDistanceSquared = Infinity;
|
|
18916
19129
|
const coarseStep = 40;
|
|
@@ -19103,7 +19316,7 @@ const LidoTrace = class {
|
|
|
19103
19316
|
};
|
|
19104
19317
|
}
|
|
19105
19318
|
render() {
|
|
19106
|
-
return (h(Host, { key: '
|
|
19319
|
+
return (h(Host, { key: 'fecd265e2c8a5f7d391fe99e35739f76759da5b6', class: "lido-trace", id: this.id, audio: this.audio, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, tabindex: this.tabIndex, "disable-speak": this.disableSpeak }, h("div", { key: '677681edfa9da3e7f8bea5f79d62900322262460', style: this.style, id: "lido-svgContainer" })));
|
|
19107
19320
|
}
|
|
19108
19321
|
static get assetsDirs() { return ["assets"]; }
|
|
19109
19322
|
get el() { return getElement(this); }
|
|
@@ -19189,7 +19402,7 @@ const LidoWrap = class {
|
|
|
19189
19402
|
};
|
|
19190
19403
|
}
|
|
19191
19404
|
render() {
|
|
19192
|
-
return (h(Host, { key: '
|
|
19405
|
+
return (h(Host, { key: '8d8ea2a16213d6a54c947d2fa20dd094024d30d1', class: "lido-wrap", value: this.value, type: this.type, "tab-index": this.tabIndex, style: this.style, "aria-label": this.ariaLabel, "aria-hidden": this.ariaHidden, audio: this.audio, minDrops: this.minDrops, maxDrops: this.maxDrops, onTouch: this.onTouch, onCorrect: this.onCorrect, onInCorrect: this.onInCorrect, onEntry: this.onEntry, disableSpeak: this.disableSpeak }, h("slot", { key: 'f42ddae95ef36fe6e7a42d2ccfcb58bf09243b08' })));
|
|
19193
19406
|
}
|
|
19194
19407
|
get el() { return getElement(this); }
|
|
19195
19408
|
};
|